From 6ca729d57f8ff3f02f4ce423d1f5420dbdee9ab1 Mon Sep 17 00:00:00 2001 From: Markus Christian Schulze <markus.schulze@cern.ch> Date: Fri, 3 Aug 2018 11:28:12 +0200 Subject: [PATCH] Added DCuhre, CubaCuhre, Foam --- Cuba/COPYING | 165 + Cuba/ChangeLog | 598 +++ Cuba/Cuhre | Bin 0 -> 53008 bytes Cuba/Divonne | Bin 0 -> 165936 bytes Cuba/Suave | Bin 0 -> 67120 bytes Cuba/Vegas | Bin 0 -> 58800 bytes Cuba/config.guess | 1530 +++++++ Cuba/config.h | 135 + Cuba/config.h.in | 134 + Cuba/config.log | 923 ++++ Cuba/config.status | 1029 +++++ Cuba/config.sub | 1773 ++++++++ Cuba/configure | 6043 +++++++++++++++++++++++++ Cuba/configure.ac | 134 + Cuba/cuba.h | 125 + Cuba/cuba.pdf | Bin 0 -> 359802 bytes Cuba/cuba.tex | 2433 ++++++++++ Cuba/demo/cuba.F | 104 + Cuba/demo/demo-c.c | 176 + Cuba/demo/demo-c.out | 8 + Cuba/demo/demo-fortran.F | 187 + Cuba/demo/demo-math.m | 36 + Cuba/demo/testsuite.m | 133 + Cuba/install-sh | 323 ++ Cuba/libcuba.a | Bin 0 -> 1147094 bytes Cuba/makefile | 354 ++ Cuba/makefile.in | 354 ++ Cuba/src/common/CSample.c | 82 + Cuba/src/common/ChiSquare.c | 67 + Cuba/src/common/Data.c | 18 + Cuba/src/common/Erf.c | 51 + Cuba/src/common/Fork.c | 164 + Cuba/src/common/Global.c | 58 + Cuba/src/common/MSample.c | 90 + Cuba/src/common/Parallel.c | 441 ++ Cuba/src/common/Random.c | 344 ++ Cuba/src/common/sock.h | 65 + Cuba/src/common/stddecl.h | 561 +++ Cuba/src/cuhre/Cuhre.c | 84 + Cuba/src/cuhre/Cuhre.tm | 218 + Cuba/src/cuhre/Integrate.c | 282 ++ Cuba/src/cuhre/Rule.c | 757 ++++ Cuba/src/cuhre/common.c | 23 + Cuba/src/cuhre/decl.h | 89 + Cuba/src/divonne/Divonne.c | 119 + Cuba/src/divonne/Divonne.tm | 346 ++ Cuba/src/divonne/Explore.c | 160 + Cuba/src/divonne/FindMinimum.c | 694 +++ Cuba/src/divonne/Integrate.c | 501 ++ Cuba/src/divonne/Iterate.c | 132 + Cuba/src/divonne/KorobovCoeff.c | 1 + Cuba/src/divonne/KorobovCoeff.c-16033 | 1370 ++++++ Cuba/src/divonne/KorobovCoeff.c-2423 | 267 ++ Cuba/src/divonne/KorobovCoeff.c-3319 | 356 ++ Cuba/src/divonne/KorobovCoeff.c-5879 | 571 +++ Cuba/src/divonne/KorobovCoeff.c-9689 | 881 ++++ Cuba/src/divonne/Rule.c | 711 +++ Cuba/src/divonne/Sample.c | 269 ++ Cuba/src/divonne/Split.c | 312 ++ Cuba/src/divonne/common.c | 73 + Cuba/src/divonne/decl.h | 161 + Cuba/src/suave/Fluct.c | 76 + Cuba/src/suave/Grid.c | 137 + Cuba/src/suave/Integrate.c | 353 ++ Cuba/src/suave/Sample.c | 164 + Cuba/src/suave/Suave.c | 94 + Cuba/src/suave/Suave.tm | 260 ++ Cuba/src/suave/common.c | 41 + Cuba/src/suave/decl.h | 78 + Cuba/src/vegas/Grid.c | 99 + Cuba/src/vegas/Integrate.c | 227 + Cuba/src/vegas/Vegas.c | 94 + Cuba/src/vegas/Vegas.tm | 254 ++ Cuba/src/vegas/common.c | 25 + Cuba/src/vegas/decl.h | 63 + Cuba/tools/fcc | 73 + Cuba/tools/mcc | 119 + Cuba/tools/mkdist.c | 183 + Cuba/tools/mkstatic | 31 + Cuba/tools/partview.cpp | 265 ++ Cuba/tools/partview.m | 40 + Cuba/tools/partview.pro | 6 + Cuba/tools/print.xpm | 258 ++ Cuba/tools/quit.xpm | 346 ++ DCuhre/d07hre.f | 152 + DCuhre/d09hre.f | 208 + DCuhre/d113re.f | 179 + DCuhre/d132re.f | 171 + DCuhre/dadhre.f | 453 ++ DCuhre/dchhre.f | 259 ++ DCuhre/dcuhre.f | 473 ++ DCuhre/dfshre.f | 119 + DCuhre/dinhre.f | 111 + DCuhre/drlhre.f | 209 + DCuhre/dtrhre.f | 176 + DCuhre/manual.pdf | Bin 0 -> 103624 bytes Foam/DemoFoam.f | 307 ++ Foam/DemoMCell.f | 304 ++ Foam/FoamA.f | 2209 +++++++++ Foam/FoamA.h | 97 + Foam/GLK.f | 4565 +++++++++++++++++++ Foam/GLK.h | 78 + Foam/MCellA.f | 1537 +++++++ Foam/MCellA.h | 80 + Foam/Makefile | 76 + Foam/PseuMar.f | 173 + Foam/PseuMar.h | 32 + Foam/README | 37 + Foam/WtLimit.f | 135 + Foam/demo-cell-map.txp | 484 ++ Foam/output-DemoFoam | 172 + Foam/output-DemoFoam-linux | 172 + Foam/output-DemoMCell | 248 + Foam/output-DemoMCell-linux | 247 + Foam/ranlux.f | 309 ++ Vegas/nvegas.c | 4 +- main.f90 | 88 +- makefile | 16 +- mod_Integrand.f90 | 89 +- mod_LoopSpace.f90 | 4 +- 120 files changed, 44247 insertions(+), 27 deletions(-) create mode 100644 Cuba/COPYING create mode 100644 Cuba/ChangeLog create mode 100755 Cuba/Cuhre create mode 100755 Cuba/Divonne create mode 100755 Cuba/Suave create mode 100755 Cuba/Vegas create mode 100755 Cuba/config.guess create mode 100644 Cuba/config.h create mode 100644 Cuba/config.h.in create mode 100644 Cuba/config.log create mode 100755 Cuba/config.status create mode 100755 Cuba/config.sub create mode 100755 Cuba/configure create mode 100644 Cuba/configure.ac create mode 100644 Cuba/cuba.h create mode 100644 Cuba/cuba.pdf create mode 100644 Cuba/cuba.tex create mode 100644 Cuba/demo/cuba.F create mode 100755 Cuba/demo/demo-c.c create mode 100644 Cuba/demo/demo-c.out create mode 100755 Cuba/demo/demo-fortran.F create mode 100644 Cuba/demo/demo-math.m create mode 100644 Cuba/demo/testsuite.m create mode 100755 Cuba/install-sh create mode 100644 Cuba/libcuba.a create mode 100755 Cuba/makefile create mode 100644 Cuba/makefile.in create mode 100644 Cuba/src/common/CSample.c create mode 100644 Cuba/src/common/ChiSquare.c create mode 100644 Cuba/src/common/Data.c create mode 100644 Cuba/src/common/Erf.c create mode 100644 Cuba/src/common/Fork.c create mode 100644 Cuba/src/common/Global.c create mode 100644 Cuba/src/common/MSample.c create mode 100644 Cuba/src/common/Parallel.c create mode 100644 Cuba/src/common/Random.c create mode 100644 Cuba/src/common/sock.h create mode 100644 Cuba/src/common/stddecl.h create mode 100644 Cuba/src/cuhre/Cuhre.c create mode 100644 Cuba/src/cuhre/Cuhre.tm create mode 100644 Cuba/src/cuhre/Integrate.c create mode 100644 Cuba/src/cuhre/Rule.c create mode 100644 Cuba/src/cuhre/common.c create mode 100644 Cuba/src/cuhre/decl.h create mode 100644 Cuba/src/divonne/Divonne.c create mode 100644 Cuba/src/divonne/Divonne.tm create mode 100644 Cuba/src/divonne/Explore.c create mode 100644 Cuba/src/divonne/FindMinimum.c create mode 100644 Cuba/src/divonne/Integrate.c create mode 100644 Cuba/src/divonne/Iterate.c create mode 120000 Cuba/src/divonne/KorobovCoeff.c create mode 100644 Cuba/src/divonne/KorobovCoeff.c-16033 create mode 100644 Cuba/src/divonne/KorobovCoeff.c-2423 create mode 100644 Cuba/src/divonne/KorobovCoeff.c-3319 create mode 100644 Cuba/src/divonne/KorobovCoeff.c-5879 create mode 100644 Cuba/src/divonne/KorobovCoeff.c-9689 create mode 100644 Cuba/src/divonne/Rule.c create mode 100644 Cuba/src/divonne/Sample.c create mode 100644 Cuba/src/divonne/Split.c create mode 100644 Cuba/src/divonne/common.c create mode 100644 Cuba/src/divonne/decl.h create mode 100644 Cuba/src/suave/Fluct.c create mode 100644 Cuba/src/suave/Grid.c create mode 100644 Cuba/src/suave/Integrate.c create mode 100644 Cuba/src/suave/Sample.c create mode 100644 Cuba/src/suave/Suave.c create mode 100644 Cuba/src/suave/Suave.tm create mode 100644 Cuba/src/suave/common.c create mode 100644 Cuba/src/suave/decl.h create mode 100644 Cuba/src/vegas/Grid.c create mode 100644 Cuba/src/vegas/Integrate.c create mode 100755 Cuba/src/vegas/Vegas.c create mode 100644 Cuba/src/vegas/Vegas.tm create mode 100644 Cuba/src/vegas/common.c create mode 100644 Cuba/src/vegas/decl.h create mode 100755 Cuba/tools/fcc create mode 100755 Cuba/tools/mcc create mode 100644 Cuba/tools/mkdist.c create mode 100755 Cuba/tools/mkstatic create mode 100644 Cuba/tools/partview.cpp create mode 100644 Cuba/tools/partview.m create mode 100644 Cuba/tools/partview.pro create mode 100644 Cuba/tools/print.xpm create mode 100644 Cuba/tools/quit.xpm create mode 100644 DCuhre/d07hre.f create mode 100644 DCuhre/d09hre.f create mode 100644 DCuhre/d113re.f create mode 100644 DCuhre/d132re.f create mode 100644 DCuhre/dadhre.f create mode 100644 DCuhre/dchhre.f create mode 100755 DCuhre/dcuhre.f create mode 100644 DCuhre/dfshre.f create mode 100644 DCuhre/dinhre.f create mode 100644 DCuhre/drlhre.f create mode 100644 DCuhre/dtrhre.f create mode 100644 DCuhre/manual.pdf create mode 100644 Foam/DemoFoam.f create mode 100644 Foam/DemoMCell.f create mode 100644 Foam/FoamA.f create mode 100644 Foam/FoamA.h create mode 100644 Foam/GLK.f create mode 100644 Foam/GLK.h create mode 100644 Foam/MCellA.f create mode 100644 Foam/MCellA.h create mode 100644 Foam/Makefile create mode 100644 Foam/PseuMar.f create mode 100644 Foam/PseuMar.h create mode 100644 Foam/README create mode 100644 Foam/WtLimit.f create mode 100644 Foam/demo-cell-map.txp create mode 100644 Foam/output-DemoFoam create mode 100644 Foam/output-DemoFoam-linux create mode 100644 Foam/output-DemoMCell create mode 100644 Foam/output-DemoMCell-linux create mode 100644 Foam/ranlux.f diff --git a/Cuba/COPYING b/Cuba/COPYING new file mode 100644 index 0000000..65c5ca8 --- /dev/null +++ b/Cuba/COPYING @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/Cuba/ChangeLog b/Cuba/ChangeLog new file mode 100644 index 0000000..cd0d52c --- /dev/null +++ b/Cuba/ChangeLog @@ -0,0 +1,598 @@ +25 Sep 15: + +- Fixed bug in Suave.tm (oversight of 'nmin' argument). + + +7 May 15: + +- Fixed sign error in Cuhre's Rule.c (copy-&-paste error from + higher-precision weights in degree-9 rule). + + +31 Mar 15: + +- Version 4.2: Added flag for resetting the state even if a state + file is available in Vegas (Bit 5 of 'flags'). Together with + Bit 4 (retain state file) the grid adapted for one integrand + can be re-used on another integrand. + +- Added --with-real=10 and --with-real=16 configuration options + for higher-precision versions of Cuba. + + +26 Nov 14: + +- Divonne now applies Flatten to the Given list, hence either + a list of coordinates (as before) or a list of points can be + given. + +- Tweaked MathLink code for compatibility with older Mathematica + versions. + + +25 Nov 14: + +- Version 4.1: Added 'ninsuf' argument to Suave. + When computing the integral value of a subregion, samples from a + former pass contribute only of their number is larger than ninsuf. + Increasing ninsuf may reduce jumps in the chi^2 value. + + +25 Nov 14: + +- Fixed subtle bug in Cuhre which could lead to longer run times + than in versions 1 and 2. + +- Fixed miscounting of degrees of freedom in rare cases in Suave. + + +9 Oct 14: + +- Divonne now passes the userdata argument to the peakfinder + function, too. + + +27 Aug 14: + +- Fixed problem due to which CUBACORESMAX was effectively ignored. + +- Fixed issues with MathLink compile for Mathematica 10. + + +15 Aug 14: + +- Version 4.0: distinguishes Accelerators (GPUs) and Cores. + New distribution strategy (see manual), e.g. can now prescribe + maximum number of points per core, necessary for accelerators, + allows for load-levelling on cores. + +- No. of cores/accelerators and max. points per core/accel + can be set with environment variables + CUBACORES (as before) and CUBACORESMAX (or API call cubacores), + CUBAACCEL and CUBAACCELMAX (or API call cubaaccel). + API calls generally supersede the environment. + +- Can choose minimum verbosity level via environment variable + CUBAVERBOSE = 0..3 (or API call cubaverbose). + +- Can start cores/accels explicitly via cubafork/cubawait calls, + or have the integrator keep them running at exit. + + +18 Apr 14: + +- Fixed uninitialized variable in update of Apr 11 that could lead + to a potential segfault in Divonne. + + +11 Apr 14: + +- Added invocation of worker init/exit functions also for the master + whenever the number of samples is too small to be distributed. + + +21 Mar 14: + +- Fixed glitch in Sobol quasi-random numbers for the long long int + versions introduced in the last update (forgotten typecast). + + +18 Mar 14: + +- Fixed infinite loop in Sobol quasi-random numbers for maxeval + values >~ 2^30 (32-bit versions) or 2^62 (64-bit 'll' versions). + + +22 Jan 14: + +- Removed 'Chop' from the Mathematica sampling procedure, which would + introduce an absolute lower scale for integrals quite close to zero. + + +8 Jan 14: + +- Restricted detection of Qt to version 4. + + +18 Dec 13: + +- Minor fixes in the MacOS build of partview (thanks to Hong Xu). + + +11 Dec 13: + +- Version 3.3: Added new argument 'nvec' to let the integrand + function have more than one point at a time, e.g. to take advantage + of vectorization. + + +5 Nov 13: + +- Fixed MathLink compilation issues with MacOS 10.9/clang++. + +- Fixed spurious warning in partview. + + +25 Sep 13: + +- Fixed issue with distribution of points to cores. Because of + rounding up the number of points for each core it could happen + that the last one got nothing and kept waiting indefinitely. + +- Fixed bug in shared memory allocation of Divonne. + +- Added Korobov tables for Divonne extending the integration + dimension up to 257. + + +17 Sep 13: + +- More compliance: Repaired some compiler hiccups. + + +7 Aug 13: + +- Version 3.2: Moved all variable-size arrays to alloca and + cleaned up other bits that would lead to compiler warnings + on select systems. + +- Cuba now compiles with clang and icc (and even C89 compilers). + +- Fixed bug in chi-square determination in Cuhre introduced in 3.1. + +- Fixed bug in Ranlux for luxury level > 24. + + +6 Jun 13: + +- Fixed segfault in repeated invocation of Divonne. + + +4 May 13: + +- Version 3.1: Added check-pointing (state file) for Suave, + Divonne, Cuhre, too. Implementation by B. Chokoufe. + +- The Suave, Divonne, and Cuhre API calls have changed w.r.t. + Version 3.0 ('statefile' argument added). + +- Improved handling of infinities by Divonne. + + +28 Mar 13: + +- Fixed segfault in parallel Divonne for integration rules + (key = 7, 9, 11, 13). + + +25 Mar 13: + +- Fixed segfault in parallel Divonne for non-Korobov random numbers. + + +9 Jan 13: + +- Fixed bug for parallel Divonne, the 'children' fd_set was not + properly initialized. + + +21 Dec 12: + +- Fixed bug for parallel Divonne and ncomp > 1. + (Workers transmitted only partial results and thus the master + waited indefinitely for data.) + + +27 Nov 12: + +- Fixed bug when running Divonne with ngiven != 0 and CUBACORES > 1. + + +6 Sep 12: + +- Added functions for (de)initialization of worker processes + (e.g. close file descriptors before exit). + + +3 Jul 12: + +- Added fflush(NULL) before fork to avoid multiple write-out + of buffered content at child's exit(0). + + +17 Apr 12: + +- Added 'keep state file' flag (bit 5) to not remove the state + file in Vegas even if the integration terminated normally. + + +19 Mar 12: + +- Fixed two bugs in MathLink interfacing, obvious oversight from + last release. + + +16 Feb 12: + +- Added shared memory communication for the processes running + in parallel. + + +24 Nov 11: + +- Significantly rearranged Divonne, e.g. unrolled the recursion + on regions, for better parallelizability. + +- Improved parallelization through DoSample. + +- Automatic detection and usage of the free cores on a machine, + or else set CUBACORES to the number of cores one wishes to + utilize, with negative numbers meaning "up to" depending on + availability (e.g. -2 means "use up to two free cores"). + + +12 Aug 11: + +- Version 3.0: Added parallelization, currently 'only' through + the DoSample routine. Uses fork/wait so integrands do not have + to be reentrant. + + Specify number of cores in environment variable CUBACORES. + C/C++/Fortran only, Mathematica users need to replace MapSample + by ParallelMap or similar (as before). + + +18 Jun 11: + +- Fixed problem with inner integration bounds depending on outer + ones in the MathLink executables. + + +15 Feb 11: + +- Moved partview to Qt 4. + +- Rectified error reporting via longjmp, in particular avoiding + sending $Failed twice in MathLink which would upset the + following communications. + + +13 Sep 10: + +- Added iteration number to integrand's optional parameters + (Vegas and Suave). + +- Fixed initialization problem when using state file in Vegas. + +- Added tests for MathLink to configure. + + +20 Jul 10: + +- Fixed severe bug in divonne/Split.c (wrong sign in SignedDelta + macro). + + +14 Jul 10: + +- Disabled optimization for gcc 4.2.x and 4.4.3, which would lead + to an Internal Compiler Error when compiling Cuba, see + http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40237 + http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42956 + + +21 Jun 10: + +- Fixed problem with bashy syntax in tools/mcc. + + +8 Jun 10: + +- All Cuba functions now reentrant, except for gridptr_ and griddim_ + in Vegas, which are intentionally preserved across calls. + + +19 May 10: + +- Version 2.0: Changed invocations. + +- Added void *userdata to be passed to integrator. + +- Promoted integrand to int function, has to return 0 if successful, + otherwise integrator terminates immediately. + +- Moved all global variables (common blocks) to argument list. + + +12 Feb 10: + +- Added Ranlux pseudo-random number generator. + Luxury level 0 (mis)used for Mersenne Twister branch + (but observe that Luxury level 24 = Luxury level 0). + +- Changed external variable mersenneseed to + struct { unsigned int level, seed; } cubarandom; + + +22 Jul 09: + +- Fixed potential segfault in Split.c of Divonne, thanks to + Andreas v. Manteuffel. + + +29 May 09: + +- Added flushing of grids in Vegas through a negative grid number. + + +25 May 09: + +- Removed explicit pointer reference from reallocatable + "region_" array. + + +8 May 09: + +- Improved memory handling in Divonne. + + +8 Apr 09: + +- Version 1.6: Improved memory handling in Cuhre. + Thanks to Valery Yundin for pointing out the problem. + + +6 Mar 09: + +- Fixed segfault in Divonne if all samples from a region returned NaN. + +- Reinstated fcc to fix static linkage problem with mcc 7. + + +10 Feb 09: + +- Removed dependence on fcc script. + + +19 Jan 09: + +- Added missing #include <stdlib.h> to partview.cpp. + + +15 Jan 09: + +- Fixed problem with MathLink compilation for Mathematica 7. + + +5 Dec 08 + +- Version 1.5: Added possibility to set Mersenne Twister + random seed. + +- Introduced function MapSample to map the integrand over + the points, whose default value Map can be replaced e.g. + by ParallelMap. + + +15 Feb 08 + +- Added further check to Suave for sharp-edged functions. + + +15 Jan 08 + +- Fixed bug in makefile.in w.r.t. DESTDIR. + + +2 Jan 08 + +- Fixed minor bug in invocation of IniRandom in Suave. + + +19 Dec 07 + +- Version 1.4: Added new flag (bit 4), to turn off smoothing of + the importance function for sharp-edged functions. + +- Improved configure for Cygwin. Now compiles MathLink + executables `out of the box'. + + +30 Nov 07 + +- Fixed detection of variable-size arrays in configure.ac. + +- Minor fixes for autoconf 2.60. + + +30 Aug 07 + +- Added passing of weight information to the integrand routine + in Vegas and Suave. Mathematica versions use $Weight. + + +7 Mar 07 + +- Documented the ll versions in the manual. + + +1 Mar 06 + +- Version 1.3: added long long int versions, i.e. all + number-of-points-like quantities are now long long int + instead of int. The corresponding names are prefixed with + "ll", e.g. llVegas. + + +5 Jan 06 + +- Corrected a number of declarations so that changing the "number" + typedef in stddecl.h to a longer integer should work now. + Note that this bugfix has NO EFFECT if the "number" typedef + was not changed by hand! + + +31 Aug 05 + +- A small patch considerably reduces the "mysterious" problem + in Vegas and Suave that further iterations on a more or less + optimal grid would often degrade the grid. + + +2 Jun 05 + +- Added some #ifdefs to make the compile completely silent. + +- Changed HUGE_VAL to DBL_MAX to avoid problems with icc. + + +7 Mar 05 + +- Extended Divonne's Korobov tables. + +- partview now sorts the list of rectangles so that the smallest + ones come on top. + + +2 Mar 05 + +- Fixed "mysterious" problem where Divonne would report a + larger-than-requested error even though enough samples were + available. + + +17 Feb 05 + +- Rewrote partview.cpp with tabbed window. + +- Moved sources to src/{vegas,suave,divonne,cuhre}. + The original names would get into the way of the Mathematica + executables on OSX's case-insensitive file system. + + +15 Feb 05 + +- configure now disables compilation of demo-fortran if no + Fortran compiler is found. + + +9 Feb 05 + +- Added some explicit typecasts and other tidbits such that + Cuba compiles successfully also with a C++ compiler now. + + +7 Feb 05 + +- Added erf implementation in case some "C99 compliant" compiler + like M$ Visual C++ in fact has no erf. + + +4 Feb 05 + +- Added partview.m for Mathematica. + + +3 Feb 05 + +- Added proper autoconf configure. + +- Added cuba.F, a Fortran chooser which makes the invocation + of the Cuba routines still simpler from Fortran. + +- Straightened out the contexts of the MathLink executables. + + +2 Feb 05 + +- Substituted preprocessor variable NBATCH by run-time configurable + global variable vegasbatch_. + +- Added checks on ncomp. + + +1 Feb 05 + +- Added a partition viewer which displays the tesselation of the + integration region on screen. Needs Qt. + + +27 Jan 05 + +- Added a preprocessor flag NO_LONG_DOUBLE to disable the use + of long doubles on systems that don't have it. + + +25 Jan 05 + +- Rearranged Vegas to sample in batches of NBATCH points to + reduce memory consumption. + + +21 Jan 05 + +- Fixed bug in Divonne: Final result was wrong if not enough + samples left for Phase 3. + + +19 Jan 05 + +- Updated manual re pseudo-random sampling. + + +17 Jan 05 + +- Introduced "number" typedef, might be useful when using wide ints. + Not well tested, though. + +- Substituted [sd]rand48 by Mersenne Twister generator. + + +14 Jan 05 + +- Added pseudo-rng (bit 3 in flags). + +- Collected common declarations in stddecl.h. + +- Better checking of dimension (e.g. in Divonne, all cases). + + +12 Jan 05 + +- Updated manual re vegas{grid,state}. + + +23 Dec 04 + +- Fixed a memory leak in Cuhre. + + +18 Nov 04 + +- Added vegasstate load/restore of internal state. + + +16 Jul 04 + +- Added vegasgrid. + diff --git a/Cuba/Cuhre b/Cuba/Cuhre new file mode 100755 index 0000000000000000000000000000000000000000..7b468b64a2ea53909d53ebb0ff8f353c3b6ce1b6 GIT binary patch literal 53008 zcmd3Pd0-RO7I#t_C<so9RB=Hg7A?xs@&GAVlRyI#OtrE|v6Qx?2~@h7CQyZ9A+0cm zXyt+OR1|mgDWDG&QRu?bg7_>5inve_HKFjRh)@yf_dEB_q|-tHzwe)KAi4LPd+yop zz2`17nLcK*jSkalHOdvHxm!b!{zel+@o$Z$yoP}?ZkVRC#-zDX(@WD47#%()RzfMy zDQT0;T1g{hx(-Og@fjAz5yQevETg11aI{8A6%8pRc`cVo&hpgsF$a}YqcJc9)gxUO zZDJtO43<&ST3NC3D|xw6kJO`jtK@pC<a$b)EbFhNihX1oeJ04|6T(b@2sTloNo3zG zDbdoE{F6J2@~^$mK%^#?QPRb-Ba~FBcR%Wpo|k*+Wx{c?y!QN3B<ruFvUttFoa|{s z2M^52>YtOH=PBx6G;C=9p@Rn$<_{Re>?Zz1JLcYrOcJ%Xa*@tG@F5(PpX_q&p{(WQ z51%+Usk-Ujvj_j0a%|oxl#R!St}A$=xfZF2k76^)xDB5X_;kgGuDkKMj^%g@_DB9+ z8NOLghs!A?G5Czd=RN{(CE{blhx*uPe7fN?1|PaCJki{O^iF&R;d2K*)JGHWxe=d{ z_;kmIuFgEsB+Dr!vG|Z}$~8>R^hO$w&+Yh_@c9QmbeZu9bxDS~_?Nm5+;eeKR;sio zHFKAX&{JErcL^wnlnbNev?tPD_)t63bw56xSgz&kCS?1{U>~IY@QK6cYJ7&^b3Hz{ z;-ieIfygJ}GZ>${@S)4d6U{g|9e~s-=P8NC=Nf#jB0#=|A|-psKV(1o>_BCPR+DJz zOgQQ<r0+<}zM~s|Trziz>5k6N?E9|o2LG>De*JLD4M)B>er4G`)<qy`_v!|RD*ZrB zbg&(KEEKsAedl)YZ@0szxE=hL?eLl04*oyw@F|Be7t-^qcIdmq(HEjmYzKd`9X^@u z==pRz__y29^H@9lceH~a(vF@twnM+79epOX!-vMmh5Yk#JN)l%hyPdY@R`w$-0*hr z)$PblYDaECJM=ULFJ#yI?a)&ky%7Bs?dX}?4nD6PJ)P~)8``1IZb#4C+Tla-`a=4j zYzO~9JNOsdk-M-RxvSdI|MhnGe9{j6b?xw9&<>wD?eOumW7mdu_)Kj_?umBzpKXUv zT|4-)cKE!|j-DU3ga5Q0{MdH%|D_#znlvudPi}69kEb0xtqBbHw7u?XhyLnz{4lB= z`mXKZ9T0dS{TG8?kCj*Q_Ka34y~Oa>YkKZ#jgMySC1_4aCPq*5K3#)kd_SLw!5>3! zx@djSomP3*ng|SC|CIT+m0QQ`#R_qWDMU+|1eyO`PjNi0IoO5uY?5v0;A~pMYSPoE z=jP|77rHZD?(}p`l5KR3r*MWQJv%Sk4ankh<-3qh%FK3;&Ue|e^Jbdu?(A9F?ni*V z*HPq7&a}^T5NV==>SSl;WIyTvnCx+nb7bZW9c;@kq~h@o_vCCxPS$8o9vI~30cFl{ zxTt81!#&>Z%FdgPJQEm#P-4w<JEl8GhjES^M`od;6<0_Z|48n%{G68ZQ04my9C;yN zf-5tx(CKhliV9qg!a}Y9YPYZlK=yEb+6qx=O>E7s>2`c(ftWN<lpmFoUr4rF)s7ei ztzC*AN9E_`IqW3lUdQZ^>tH4q2>b*`p<8rhW^vZTMrON5&B%0R+T9LUA#iYG67<iU z?hrHcvfw~Xx)Xj!i6t*fW{3tZaL;go3GGs1HI&l;>2ebsN7<|#zJW<kceq@6`RO_N z_Dt3)PJ5m^N8|BiXQfYf<T+fKZU=`7GF`BZ6?pO(knSlcfP8Q(bZ6P`xPv$jB`}xg z3hkLW)AG>697P38NwBg*35~<$B(mvtdwO9=BRj9;bh7^EC_?uuEI_AlJ2i!9yDW{< z?LyZfeIS*3r6&&?vYDFc4tGIzmL_**q1%yL0ApuogBr47lcvz^%5mgra`N-0KZL^c zLWi5uTt}|G;1P|}&Ke9v?tD*<CYRUo<YpGmgxYrZBL$B1Y2+Ic0+(o<uqn@}an5#S zLk}R`*}0B<XIADTkeip8>(Dr5ot;_v=qKP(grVg|3WH%T8)mtg*?AhL%i++ZJF+s} znJArBSjY>3g7#x<){&#q2MvfD63Px5(31a02pdN`gfO<or<Fe6FCtJN-ywwO5W##m zK;=|R$Li6ZK&ioV;i3HtaZySY-kdMzL40^lO-XXJZT=A^Op}fxL@Ks7T=w)c5ZzJp z8W<4Hb6s|4+VQTDS!=<0sZ4J|`BmB3*rImQd@R#1W%YHMZLR8eP}SFJ4k0!YZ@M`D zuuyqZMFzu@{T7zvUp*@`Scdj+a!6*dL4_v^l`BSthbo~fR)y!j<3+<%cwLBEqcN%Q zq?2-qD!h7MnXJMq`$nphqQb+Wp({g$SMPsksPI>Ws5P1b6&|xu=qgg->C8a6N>q6D zK7Nr3Py1)(Dp%o^HlniSDtx3ujC7?6ub!7zsqpH(?^+dJ*_#u)4Jy2{hbMfc3QzlT z<*HTTX@9L;bt*ia0Vvmg6`sy<l&fBaSI%vyETF>EIe>CCs_=B~qFhZXJngAMS5*ef zQXir78Rd#l;prSgx%4W$K|vzzslwl^!W&fh-YR^I3V(|VAFIOC*@SWpQ{ic?qg*Bx z{#FHvR8-+_Q{j_U_!t#FMTPIH!e^-PboQiNGgNrmn<-a;3LjcKp|D7W@2?OeEm7g= zY(}{jsql2Jqg>@Ge5`^*x?F`<){0cTQiUI+qF<%LD`#m`yjF#$SwgussPJ_5q+FFM zJe?aUSFH+vr-DRUr@|{|dsMt%g{N~q<*HZV)#s7{6`syFm8(&OSI)qwtVxBZv&hg@ zox!ry|LJU0xgu0}<qVC=^eVhbAx7F$g*U741{Hp!3Lm4wk5b`dRro{|ewYeBT7@^M z@MBbXQH2*(_+%B{s=}wJ@MBeY(R(yP^y!YhVbF+Wm2O?&-<Xv|@79PdoTz!oArv+D zIgD@NCKGZ5&!EC!eKW2;2ME>@T*u%&1cwn^$>5y?cOZBzgR2RqsV}&a!5aytDKA*g z;P(lpsV-Q;;I|3xL~sFvUm=*LwqOQ>pCg#2v|uuWmk>--S<uAbCkUn~EEvn+1q9R7 z6*MsTQG#j83hEi`BABMCpoYN@5lmB5u<;xaeWnpiQ&X^>!4DElQ&O;w!Q%*~sVG>< z;IRbL6ck*`;E@E=)Dv9E;Nb+*loKpx@F0R|stJ}b_;!M6iU}4lxHrKxwFEO5d>z3w zr38~1+?`;WN`fW^cOjUjkYFr>!w9CSBWPgonb!f+lo8Z3_yoZ;RRlE*K0+`}5y8g4 z$o@kF8wjpv@BxBvCb*8ldkF4La3zCx5=>J-a4mzY363UsC4)B-Od&s5&fxb6rcfU& zVes1o-$rl&gI^(-LVGZS!Osy)Aw8JP;3Wi8C=Z$#`~<-i!h^94UO+H~?x2Cej}lBF zJE&){i(m@XK@Ec+BA7ySu<<Nwe}XAA2kRO9Ai)%pgLMoZM=*urU?qdc5=<dDxR${q z38v5+T*=_!1XIWjmNR$|!4ztPB@DiuU<$Fp0tWXcm_lnXgTdDkOd&Ox%;4?>Qz#9Z z7~F+m3ZcPR28R($p)+V;@R`>DQ^*YJ8GM3Z3Y9?(gO3nQAu`zbCu@I#O$667_yECX zg6kN(hhPeY!Ab`2B$z^Aa4mzY2~H$<C4)B-Y$3Ru!S54HAuw3N;I|1LLvR6uUm=)6 zUND2fgI+OcoaKPoCEA-ssZsO~J|{{w!Oc@O8s`Avrczc$@k>}eCHm}qTl85|i3Y%g z=(AhY1e&;GR%!QCQ92}g4>u-Hu+~)8KW);8HB|*Hsj2H_(gbdUA5J=jn_$I;N!v3t z6UF{?{vvvtt`w!8W{0J1*+2p*pq@;tprYn_;U)+KJwXb6RZ|Dhi&C{%b;KxY>%`qn z9#q~)gksqqR2HS}y#67%eo4YxZyK;|iJXX<fq76QZM*InptQejA^SvcLhXwnaNihG zp~u9Em7AcQ^iy+PT5t}k2sdehg*^41)4H#pD|pX!cx-TuZX+>*aN@;%R>PSCSEGAD zE^Vl9aT%A|0z<98#<NMq-l>A3sOZ08TM4Do_W>gs3{DYBU)2HOi>mNZ`QV;4Oy~(g zKjbGrQ6^(bih7$0rDQ#_Z}MzUWMAW11F|pkYz(q5B6~uJ{D1`2bPQ+W9v~)uM)LqM zd4gw&$wHnbCZ#+}Oy*No`+ckW9$rlKT|7(m^Ldu)=kRO{luw8y<$Y0^KmqLE7a)|{ zOiG3L0<oGQB&J^iryZhWb~8N(agHQsAkUJVemqNh_NA<%r((6p`9*Ou(ziR$5+8wQ ziBDIaB|e=gtMHNQ|MdiL64T=h&r<!<$dZB67jw%f1r_l-%!;^?L^6RF5&zx9K>NL7 zG50G$i(1-eJr_dyzR$BHZw=29|95zn_`OA0#*ewQRXZ)?WW;9)&k~=fc$WAq=2^5; z<Yp!x?M*1+ryueLT+xbOF3J?wQc6{*P0P6ZNX|IUk>uRRvn0pHv!t(;vWkDnZfbW* zRrdGi<iziGo+W;_@htI+=2_x*Gi4QiN_+ESs^6VwslI?LHO4`n4xv<Tud@=<fq4+R zFkcYqR!$NF0buYwsA@V!aDCaRQqlHb$!Q}%xCw-Ef7!^hB>zL6CH>d&Eb0FqWl4YH zE9?I{FDCt8;aRHx63<fo7kHN1Z8iB1sHcIVMk9Za>OAFbMC$XAP{^o49kYK2QaZko zDr&g?By=LDVogH4jsaE-*Z2Pg5ZIAQgL#%zisRWBQL>0o%abBXo@8W-GiodaG!Y`7 zJ40CbA+k<k5+;-?u<mn$22Y}(@Ae1UpE9~SV4OnC?-aL_q}q>Y(R{)z=uLX3S%~@C zDGc1^76_5j6NpLsPY6@@gZ{sw{}D`b)olJbA>7^_+!N14oDe2&IU%GZ?u-z%2gLX< zox+5zz*PfRTS)b4L~oTA>>^W!S-q8@pISwbDMj@Dq4PX$)qZV@|F7V6VPc>SKx*2S zis&Vn?Y{oKxw(R7g+TKunmaJ-wG;2Vfk++i??X)%?+banU*n~6b-ee(7jnFRjtY6a zf0k#-?@M`>{Qfl0QdfEsS$J8F_Z>+rZ}nnE!{XPYJWEVw^DHrO^DHrWn6lI#RrMXb zn7YO^o~8QfJWKVb@GSbHJ|Sfx82F;@2MS>S9RQ(JOS~t(K=6Lc_3O`RhrCWzd7SOd zIg*^4c$Vbcz_X<1wUkx#RIHZm)p0V?H;iYAPxAuCo%o#PS>p2tWfeYh{bRhC>L1}* zs{aeJWMC&|k-k5rs6hPovZBziN;vsAD<b|?#6TVIyUO;Xjg|I!oeLp(ukb9%dx>X> z{|h`z{QgB*b-X8jvfgE!jQA|zS>p2;&k~=xJd1V;#ruZ|#pC^GXx%CfrJ+o5Ev2L~ zrL?YuNRl&>k?4nX=N6N^JGl^&H<)Kh?>NdTajq>>(m%x57uAhdBmP}@miTt!S>hYc zv&2_RS%t6chu`Oi^gDqp8g0m<WxVkgAO#iiJIIRoaJhhWBxkE!JCWBSc^?sPl1H0O zl^uNk<aTUk4)R4UBU<jKB|J-VpW<2KznEu<uS8jeFG8|x%A=fuTrrzxiG`bI4P@B{ zEJ<mgQHr8W6sgow+HAGlW;8^HEaO!Y<g`Df6u0G&?MXq%evF$}oB?JOw<`dv;`VSp z2om;Se6jc)j|_!v7Q?%u^#9-ZUA`3Y``Sh&ej9&1FMgXJFi$jZ(!yl(1gms*;&|V{ ziq3#+_TQ!8SpN;bmr&6c*ra?PC^^o;Ip#B=G#$YWbI&%uboWo_Pc0KQm3)LLZYWY| zH*&plIHvznbY8%HUf}SMxh$PrhZ(9CAIxo&>oHSBMRPpn>6C6wtd2sH5~XKlDcu5X z@ERGvpW!2u^(TZW2S}aM93f)F5tqo6o}^M7Cy)9e#3m)`JC;v@%8|(is><UW)k@h1 zc4SMpI!^RoB8n0H;lwTK3(lohg4C3~r1pC%zMEJ+k~C21^<jvDsgx46njuu;DNcfW z0#CX4mpQK2N4z%N7P*01hxNl!*3n5XEqtkuDg_Z!shf+F!;;Cm$2p6HCs~>j<z%VM zMu3{M&H!V5f}2z5rf>=|hWnI^FblWCC6Olh3F<R>kwp<COrK!k<V6fH$pHB&VT25j zcN1=v0dUnP^yL7v1>6{;ZWK?cum@5bbM=&6fOP~zZV}_z%p$;)?I;*Bherd(#cye* zm5oU2s7bZLnp(EbiJ<Sb%wtqY9J=j8Ex-F|t-r^+@FcCiBG*#vH%k%zq;qJ^T4GU2 z0^SFyu%>$B0~04sWc*_2TQpeVaAXQ1%#udSR4Hea%#A-m94jS<40#L%5>tk$S@p+F ztc)}nG81K|k06)uFmen}t{RdGsP9e&ledO^A#-GELbe(Hg7~5c?Fkg?CV<@RpBqKa z>vkV;5~gAaICUr0y@|p41eTJ{Oe-y6iAB$l)C3);9MVUYR>X`AIgbe^>a`SXp+(s- zf=m$>iF<{6p5YAKgD8f}i6};RvH`Vh(h0HZP)D0~rzq8lRrPm?RRLpsKp3;l`&UP) zN(u-I*J(+A{g9`ig|~^VU6~5P<L{xw+Z4uBp!O0Te~V!{FbpXrJpONn31^t)4D&F< z=on@t!xRI<z*PV@Bc^HMx4D!1ZZk_;q~PwLS=wpQ?s4Bf*1z;XNjMApy5aNjly0TB zQY(6^^-iJh$j10uS7V~~OLP1YcND2xj~PX@pCZ2N8cV<v$b{#M@$hbZRgz?j7KzA9 zu#^~`Ok{JTQ_Rxb=mN^Sqcb=PQ_<U~jH&394ZQ}za}AiWDd>Z_OqX-cavTuxeS@GM z9ojZ*cV7wesjYSmpVO|vChe5Zk=ofeSmW!?+c#`u`vxI$>M+r}J%Vi;gvil+*RTi! z)*4?ac-`1Fq^6mtnA6Ntx0LPhjEJj@I~Dv7PLMalZ<^ril!LQ1!RIL#M!Bachn;~Y zxR7!kC|8V}R2%Gwq+%`2Ua3K4_L_gBxw(A&Mq(mLe{LSR1f~98FeOO`Hxj?i_Y-E0 zj3KhkDTK)eh7o{pa~feLahlCf6VRoBvDlnRz+aF-{79G0xrDjnyxP~wwONH-tO7Qj z2Ln$-(~vGDRQLGLD#?oo^Bpjx2CG}ng>7C+CEfrpVLHu{OBj&Nfxr)_+t5R9KW|f{ z`x>0%1+JG%?WkW?3ErN=fle|mpW%e1mBI&=sW{S0)Zpk*`pG<rW__#lmwCc?asJT& zY)$mt>AM?!MtAg4@~&r*)&Aw_gV@XMD?zC!O)Lp405hx45+V8~mLLL`MbJLc=UJ5G zb0p)eRg}sKfHC_l1yUK^nK27%wp+BP#N{^sT{WnPH5U=lO&AP#$oeFm@vf>57yXGH zsbhV@&PYY63UqYy2F$`mdmV8S{XNFvvs)@lAqM`@5u&s#hO+TQO}B0^!Qm6RsVDNn z;~!$TfT6P^Zb#f6_zCh%5HSU~f!L0x*9v2Hirz}Sw^}R4Ghws8mHg4f(8qMN#n%f9 z*P|DS{tXmiZ2oelu8)}sc2SWS!8U2rFsdUJFCt-BTEaK_{<p%54LxaHXvJP!o3_a6 zA6a6J-zqGa0*+?ixDuT19=7<BG*<suy(sxbFfseh%~Dx1a#sJ`>WH{Xb9~jj(Xbzj z&20z?`WyBjV1|nwmXWohFR27U2qw|4|2vFPm^XPOeO(6xkdfvla1f=WlE*e$%614( zk{QG&460Vc4{Rn16BgDY?ukCjqK011a%hh;<jM#l0Si+T(FqG*CzALkPrcduhj!jb z;xdvJ3j@Q11+QE|)yv3)k7(32T+jWju}WJwtAVCQVL>)nNW1;_YZK#ldg^_CGL*DB zfT1qhtKv>s{XME}60D_uN_u#=YrR2OsK1Wbh~6VGE;6MFUn3*pe|_xRHoo<~22M5~ zYY?CAw{n99N6lrYx{!7WTLH4r!Q;lnAIXCWt3%k;GzN{p`j%1W6@BXqkf7&Hq}q>z zE-;_Qy)WTW%FFfhC?7n`@Y9eN{S(VYzh`B@@)M0lp)>>1eQY@RlFGr&5^mNenc}O2 zvRhGN^LbW^_T4tA84cS(N?K%-P6ZwWJ73ZwNYaBNFw)Mz0~9uVWxT($-YR&@BKX8I zd^U4GjTf7J1&t1i&jbHWVFLkUgLP2esjXE%c7QL3S;|hKpb`E;S7}E7ItZt3Y9iPy zOuk8Y@?`{V)(%N_OSq4Xi?}`L6MN7auhRe<>mR%gZLP6l_*(tpcQ$n4?FL@7R_+>$ z%ofpqS1bfXoERxgq1EzaEa6hB7<3b+8QsB0Xp9a-UyP~6nB0jmiScODRwl-u@T`Zy zO!XSeN|GejSXRmDS~=ynIBG1F1WO{ej{aEaX7!IjbSTr1N8*1F7Jh=+0Xh}0q`A|x zmcDa0I1_OqM%m(3^zEp`ccf<#edm_6oNxK!%bJDKL~uy5PYgFpP3GMJqJJ1mohr&? z>n++Hl$qRftiQ)T(uAP<4fJh|5lSCLzxOtG5*~jT84Q`2bM$ot#gQzQSuv(<62@7N zX2LC_aRJ~M0W2=Woq~T(Q>DMK+<2GzB@v@Fj-jB23jQQ(SYQI?Cxz7tP8#zako)lY z4AnPL@1`n$P?hiL3nLEPknvL)1|58bX1O|CZ`0N##&1W>M%0-6n^Q>nuL7I^fFnj; z@+*Mv86Zq1eI_>o5y0nX*IJ;rB}%9lbxdj!g*7M0FU;`7zO|HRTB2WoK4vS(4%@Wn z65~IoBIXMe)uU(&ioQYbOgTy=%rPjTb4_%gDD=w|2SRTOjESiNVh8eRi||E3F6Arw zsufDF#%crBbriK<Vm(PVSAxFjghiOVoqGOX;GKf%)E!gKAgv=T9g|M}g1&ZAm3owY zfzK`?{z)ji7M+9eH2F+~$jBsB|M8E(VJg;&*g06WHKO)wYy2+3`v&eTlNqeP>2phv zkF>0$Z`K<lStpIm-9Q*erRcY;6n&d$xUz+ljSptgFGeKA!#9(5%r?=tC^gw6L~Z@# z2z*6`;wa98G4|*n7*3p^%brC}m~5i0qBR~{)^wZ?vu2O%EP87YXsaT;=X9P|!9<?r z*+2xCv=$Yis1QkRw5)<p^l2&Z6Z|n5t{+I-jENhB1^cjo0*cPCzYrGG5Cr#GGJsRF z6upcyLId^=%6N}waZY%g9sxx-r(q1PD=0c4ZV{iGgr~A_E0M>g;9g`Ad`fBPVPziN z)<hGFS^6Ba%Dki`e>i59FXPbA^1O0mqW@uvb9w``qj~aH0Fgb-!l?gRq;tS^6h_vu z_5Jn;bKmV&Zy+KuzH#n0u){W`0|o`u=}C26SBUmKh<+3m+1}=Q@(ffM2^B)}cyGg` z8-upOfDvK>WW<li(9Ur(Gl}+3lhI5mhk&MDm(oZW#L|@G_<T*6y`Gz?pKYhFzaYu6 zh;oOJODhTf6J3hWyIfue@S(mx8OIfT*b?wNfZr7j8UP#xP){XblM+(tYXAp4w-Ea( z`oc~)GM7pFk>r*H`!H#Ip62qxWxXeViMqQL;hzCuF@r?>1|TFHTiq7nKLGfV%c~}N ze?W?d$vaGvOM>h1D1y>{T%HahnEP-8FXezD90wCE!aoHN5{}(*i|`<Tqg>t=l6MAD zl9;@oNODQga-O`75WyVvGwOyM^&Nnaa0&_`%URICa7fvP&wo9)k(jOY^(Q1uWU}f> zYDw^Gb^oQPaI4co4UC}lEq(2!uaoq37G6Z?LGB02?IgPGsFCs~ec^785`PG+XU|Vi zs6T3x(13bJiG;P2K5Y@<zM`+%;PErci6Atq0t1xF{&18~?x)~zQZMuj1)>GW(yOUG zEi;1s;3uro4c__=-lh(2LG(NJr}AB(IX!KQ*@rpPXVLh>ldI}GipvoS^<v+x80mV9 zYMVbRTCn0d3wZ@@lYX3K-25C?VpeHeLl@TGn=1iAm_7+p`oRsf&m+j9v3j@Z1FOHr zx@ftm-C~P>*94BU>nw4{z+JUavia6iN#R}cctquUBh21yTCgKd9TTM^n-4$;<8AeB z?-@vG;kuqU&EAQ{nD_Bk3&<Ws<4ed5VfTVX;M{(Oodm2+`Z=)X00TvUfm?WmyD0x5 z$H!7W^;^)i_F7FD?L#P<1@nI+4p=4n62d@@rQkiFxB82VHq*mNfdtO==Q415k8?dh zd7VPFf~c+mmCcv7D6Wz%frIgAQh6VV{a{mQOUU<w5#h8S9AilI%?KBzO+6t<l-4go zOJk!_#FAwtND`$j-XA+i2c;D~7|9l^eH)G=u<{a#$RA#UaEZO0*b}Jbgz{F#QtSH@ zqi+MNRSZ>+^Z&8{Wu-EDAj{W5s+P(UIfq#kaH)XTzESjoT;V`@sVoL{%zjH)Reh(H z{>3Dq+}o_RvR&s&Fc6-60WKANqlP8=?uky65Cru1^xPb=3>{3+kJ8gJ90xLb->7~_ zB7CD_r0{6gD*~gxf_}b)$4XoE0X@fNhp?;<ocWT`jt3UwF7R*OB@zJ!ZsHY&QT{(1 z-;eT>&~k~snc=XbIiVTTp0My!JP|1RR*>@(eYcol(7A+jtmI9UkiI>kCq|;~iCj7g z>xQvAs;5vo4~^$-x<V*z?nIf+LMfeFd7C;3Wp-qe>}M0DAI$6|2B-UfmB1qvSeN36 z|7SYlUqKqu#%0>oY@pqa*6N{pJ|_XfM)|u&LxHGx<dG&sBK5niv~27(gyZ_iX}7;} zh=$gKnDm6nh(GM8|0rT2%@dyk#%xNr08*lUWwa^XcC%D<T;9kLbcjxe@$xbL$cGqf zTJT{KpMt2Q@Af5U5w)GyFvS3=Q}`LAE~q>fT=d=6bApky@))Zp%ztDIszi=85GH#j zvrqRjFL{D|#g<a~ZqG2(lp5kVh3*H?zMC_OTENQmL!RI??9Ra~j!SqWn^;c4tf=qL z=_1EL1%1>eW{fO&1EY>yLISa_qp&;@i?ss?SGRA+Vfb~-5Etpbk!Z~R3DLBmiDV}f zEW@_?;M*Upgf%<w@%N}8{0tH{qzQ&$YevhMgp<hQu$u}CBDB9!@vnsP55^JV)cvCL z2NmHwp9l<M)em<iN{0x@h{3V1SQRvy<9Au4ShFyCm)U!^BO3Dy-XfEGZD0<ZtYayv zBr`E7df0@8;Uspbjk^da!HpSwi!s8&@2=ube*q5ho?%D6C1j)U_(v%5o?%D6C1jrP z_zH$$N4_QH3^Si$*pY7uKk{`j3_J2IS;=Uuz>u^O+D(4M`hNUg_auvS$Si$n?z_h# z?KbZYTBJ`c+Hc%<jP-wVntsd#n{+1F6Ss#>jJ!24qVJeS9A&tUCu+a8#DBq#eiME| z1B><@#Q&4p5(vP$oyIWy+U;M{xoHwoTYM#MqlwZO(I$;aMnm40g0C?d((D2PaP<2g zD#J;~XcDfZRYA9xSs&5&d5fnB?>U)TzuTnGl_TIWdaFd+mV;QGZexeQ>Ff{~>pA(+ z5ed5`z7A&3jf7)`qIztk?eXu|v`VO?^IyI(_=7p}!C~wW7&eZ~@JM)WBq_dD@Om)Q zNR18s(F?+a(xvbjavg-y{dfvcj%1i}13o%q8C8IwMiEagkg6@(qo?;I3Tx^+jE}b3 z&x%#QbdYwR{u;MPZr<&m5TTXEM+a8!Wx+|5Mnwpvi}l2|jLlB|qN2cWC@ia#%GOb& zFWZfUf@tT{h;Id(J}?*A{5c)4%~(OxO_FrfT6MUK6_J$=3-;3tgF`Gz{NeJ<HKhY? zK{F9HU&gScvcvAH%q4e4YlO0!$*3CBFf<a<vN}|gvyDpDw~2TL8orQ~E*pk^Ae2_( zQF6Ic;E;(;d^J>+8XKEdz3w3g2<+F?jG<RzXlhImR9G{*D?y^a0NXRHq39e?TP?=d z6?R8|VK}6wCNaKx_W!VHBDY{ZGuMnUQT2chC&E^HCkQ4jAg0fF-Wz-UnZ-ooXp!dX z37v3=!lz?zWlu4F3tU5wP0yNwI%9DvNXu7!7<8acE7sy32!$bW1G*8kk2KZOS0#O| z#pHzZp2*|?eKpco6Z#F7_LFM>6xHF&v>zg7za}eemA*Hh8e`~yEj5NE^dQOB`0c{u z;hor+)lctfiQ5ym2g6IBu7@H~#TWz1z5tO`k2{#y;VxvhQNK>dqIha8Mg#hJ`tC$w z%pOu5Ll|slV}GF6{b?ur2UZK-S0L2v8)GuZkHIY}eHYeF<Sz6WTA7GtSg}rz@TGPY zO6i=(YNx$+)ETsw&3}VQ`kqeL%1+I*lB4~T$XRs6tR>Id5G(z*PB_$U=*;w`Le$nm zG@UoV8R@%i!k9y#w`qem?UDFK&o`pa2%+won>Coa8(vdJk#9~!V8U+FYmOMW2N~ZA z>h-jWlv=I6+4xJjf{ny5p==fr@ihgF#QQN~T1H~<VU#+{=l@BvgwjRuxXu2Jf0Q;! zSo59i0b7R^<PWP|Ku4m5SE96x9-5a%bv66Kqpkkb2%EHm9-GHR5e`$Ves@=lE`J12 zW~`>n7`j&b7<9BACOYyA<bF;oQ(nc#$WSFZ!s?%cQ}LaFd#TvYWXKY+tiHz|K2EeJ z*02Q|d~5Z04Tmeun1WNx=oOQ7Z%(5~8=2UFW@WQJ(23o#`5prza26-2)IQWEBi6GH z=ARHAfyU_&Av|8nPUjzEXLq_EGN}iwCp+c7h#`84A|g7uKH)(Wdw(Ix{X1a{h3>2A zX(99=DHBFv+lriC)YFa({cTD|#Pfl)C9jpo0d7*G$L<4%S-10!kV4!4sk`xo96J<< zBzBYU$5$kMaqjzRX4qRsr%n%2U;CEKClWJ3sEHGLpiCH_Q$|w`k)P0!grQYeI@VHC zapa(<Cmyh^OcbW#AOp`ofR4^{=<FdmhA=VEW%3@9w-aT+Pf3mi0f_V|!$3vHON`nC zYG6Q(87DFs;1m!=CX1df<TsiZ@5i8_!yXJn+)jilk>Xm4BA8@)(pX=(5$8N+FQT8- z``9q_#2_{+@IQrE^Z^R5;>Z0{*o7NYJp)~K;n1?F88>Xp&Z3arf)GltK})ipwsF+N zk!Flm6DqS&ES*E+$0B<2ZeXD2?tRNv5nrhj#(%6dCW69%G)9j>vg=bOmbNb#{MTC9 z=9LG9o?_WI?uj<(-2y6<*3Up<mA*@oe#UU2*q`Wooit+O-6s7{lnx|HzXToy$0T1a z?hJiz?Yljx?3m}rB<ZBh$JzK88`#VCLMx~~`XC9k*~PBXL5#-Fa2MAm`72Qr=nrN# zAInPz@9}r-D)y}sanl52u9nI-{g>*qyoj4Er6({gV_sw%w$8Oe=@P(J-=twE+|cWv zCQLA!>L6=#8097Z1`;nMHpW#3M(rd{33F$++5&asSZ4^!wm_$MFxq5bMgMwY7<i5O zF(Cn{Ku=yNj`Httd>_gue};g>b@MUN-uiPl*Rm-=VrZfCmp_Q}3fj(@efODgkIXkI zc5}=#CXFTTFa@<2Alha}i}J}sdjNe(l(x(ohjz+9tt4q5YY%E@bl>qJzV5+!z*ZWy z9c<EZoGfF7yEz3cH^4c#8MY-kFq#ZnZq;tH#(zJ1E82=!!5ewAT6v?nmSIyuSmuo& z!>%WtQDp=Q1J7^|45WM)?yOrV|02g<L-~>D*NPc5F3#di5wjngp+<~}78Xx{FKp6p z;)oR##%#XVsh0?k7f}=QRSQhgjmluF&V)bH@Pqa^RCqUnx#6!Q=@*|V7S*VBqQ3z5 z9%E5r&fXpX2aMF)u|vB(Fv=f(3TbVk)ab3(;=U|skl)=Tl?_G~<M-VZmf~q*EK=W@ z!WO02NJRRR8J=#~O~vV3<fdVqetir}?{5Tdy&n1Cr|>gd>tYFn3Gs;FeV$<kF5|5A zjFqsk3|RC0bEKc}q!A;W44jtEDpSSk*-l`}IRDAjftPAX!IUyCSl<n|e^F&>83_fs zt`p$d|3H<fJ}pe@X5Wl(rn?@Pz};vMvg*rJs>ot?x3Q=M{}zFV)w?wrce5h9#^5w6 z!WRFd@VJK-p1!h0DCLLM`tWEX36BA`1Xws$k0mF^5ilWI6rMUqx85LVJzA;Z<r>!8 zVXP+DfJd$ox%Q(bCfl`00{@~8Q&ySiW1vt<?>)qrpw_p<eS-xX3r|wd4RDYqXhyfO z`eqN4V`t!b_(ZhV22UZZ`ux<IklV|{44iy`V#GRBJ0aZPfKZRK%gAMophUW&iKp-O zBqgGugc&~`0ujQ<QLes1Ql<e38noB{U=Ap@1lF^b(6hRz)&Vm8L<CRw|A-UeD0TAw zd3{mBBz{DL4;_zIM`yfMVVFujO^ipsnu`83`QY5cgn$gNNdG)I6AF+Z(lY=(QJ{Mm zd;@nuu#fdr(iAs+=3z$DGa5EiKmr}v{)R11JUTFSRNM+eQ+sd{tndHbWKv>E5G0>9 zJbm71t6|#>^0Tmznp_@tr%Z+tp^SPf?HO)>>#0c^I^ujDF-r8^6j(;BQ1*?d5e?T9 zWmw8Z1WE`=Yr5G?X<F0K9qb!f7np+>-R#Ed)8PG4@9q@$O|UEQfyLV}e!>`qyit+I z_gSVy=^X6J5Ouaaj6g+)r~Hwa2ewkcSkEOVtU@8fn|%+&28N>yb_5_D+WSmhrLrdE zh0^;OE7rRZMe501sjM7{Zy6Dk?Gc{b0tu)~NQyQ74D2QntRdNPm{kG?wovTuh=N!Y zU_IyWp$YUsjD&RT2NSMSv<a*QrPY3=)jm3$)|1$mnUehdx?25HwrQ;K-xZqZeg{U7 z1u_$UEHEgO4KoxYk`@<bH2W|j3O8l@0R=X|y|(y<*;~xs8m+Cv>tsseh)vAOvU|9d zWP<3UpYX{>3Z+BP$7+}_Xo(!`$Ow7sVdD7>Gp%YheG4A7wPCjZmTZu=`%PFG|7`U? zpiQ#lkr=FgTAyX&W;_Y>zD`La_Cu6ny_%#w7qIdMp~k{0qmC(7fZlLQD18=EME^1q ziuf-yR)CiJ%sdpFDw_<vRw#X#sQ8Q!cS`gX4a0PP7<ysVWR|uHr2%wch+M@uvn{Dq zW0TGV%F(xM@l8S*J#B|h%(_d<da8zX1+=(^pC^j6u;)uFk!>}p3jx7aSn-{NQhLoU zt$<>-1J4&Bw$6=0=`+075c?!Nm>@4f>Xw=yG<n#D;1Xo`B4l$FS(0!%uhq1>h+}^U zVcE3n;@D4tRTd#P!Dv+9094?gy!ai;-^TGPDgP-v2rY!N5sgILvKQtX;b1bHS)sw| zAW&7Uc>NdDuUNYbxOYRiFM#_PU8Fgfbpko`o#x<!$oa-#Ot6t>i9IEaHu=UxNTXvL z`pWwUn}jKO{eJSCv>ndEQ<8xQ>Hy1a*bz=j!s=B%SXe?zm*E(x#<R0xKM9Ww34egf z+O`k-J^A@q7gPgJYAj0}o-|~!O0-YvY8BS(!wG{~ShhWA0Z~N>S^X*e#{1f@5ciP| zZ5RCbC~_DRn&5ksqsSe6lX4Vsf-5LTF*3LuIXoNK3w!t-K_7sMa?-mf#PUV3ly(OH zY@k(h396``SK~J)Qdn2C=%w{bNpJfptMs$9shskDmSB<uAo<r3N-C>mCE>qc4PF!g zRsu%qUxhSLD%-#k|0hJn?=4vIgWSGbt<qt9vqk$4HtA4cAGVDcSBnxL-d9!$a-Y8r z-~72kUxFhCA(WmMG*^s5kdw+5qi}<bvi?QL+JwZWK>cP&@g>BAmOo&~9unNiv9}PG zMQHY*;5v@&MtmQnuxW>DQ2FdkikasE6Dpy?dSVUaFF*#CpoVWf$pvN~VM;iU9mw-X zpJo%I2RZgXgr%0^GeRQOUdDXtOL!J#us!e;WQLFn81m=9qiSR>kRtAMIe@fDCm}f% zn7~ky(fX#A+@9X1b3*Bd5R2gB?(J<_A(Te4CQay#iktIEL+TF=@9}d=aO{i%?iq5h zZv{1WVCg1i=dp(rE0{0maqL%wZSmy{j;#Wg`|=tH*qi}T;Qnu5105?Ex0jH|O%RdO zKMg4ERA4xu;1mpBwr@a<M}SxBLrx2X^Ezo%#=Oe(`QImu@0d^x*0%dOHV#;>&q6fj z=IPKUI8!Aj66JAwHcudzypAgHFMD_vvtG;n*ztH27SC|5ghxf3oah6oP^7HVBg9pT z^S2V39{hx*C^XOpX#^{G*At?E5Z7@8o)2CZT>^T-b>z5@i71v3I*xdo5GF#LghKdv z`@aa0Oo$&jVi6%S2(gDDgi`vUIq@!+d5@Lxse}jJgB2LA)p3=0BGM@ON*P_E&la7L z=)=>|$e4T+qGNqf-#0f}k44#HrY16pWI%XyU_TaoY_Ti)LSk?SuWR5qM1e`y;IC*R z-k;19*e}!rZuC&NsZ(ki_K;Jy;O9iHECc(|{jrZqsxvfk-*Ebp;W&cuUQ2GNV}8V` zR>?4p=d{?jjvkZ|eUZ5Rj34WJ_HFLXEIb~Ffkj|=v&?Xm`4i%(;@6My+s*k^X-nc6 zzujWrPqCxGdD(Hg6}JE`xB7ZS6K_1)b3E`ecU+m39Oq4_vKus-kBPHTIus~*ym+_Z zY-LW9#`C-Ay9#xM(rbxc`WhQ#^c-f-t35Afk5#+1wLK~D6=&ui%IZ&H_0QAa+IJUr z%cMWu{H}(&yp{(~_#Y1(!fZ%OlPAy?P(O^+-@w(M4U`-ourh-FMNEG${M<eGAPQUh zyC~rxHAOb@1l9);%tl(9DK?g%8MvMAUh}u?EP%&lJMUJWCt~(aWqdAS?;hBvw)ezF zZtrt{H8-#Az#9tdfA0vi*W<vQ*IwR$)>F?pU{ePQZjh?qeEj#?ZDpth+^y}&xt#V3 zYhzDu*`A$eVNZB#dp-c};`S^B#d-F8^Y_}PE~HT#dlp|#`wW8q>h>A;5pSO}f5IMJ zYkPhM?&9`r1;u&x{E1aY`*GsDaiwX`o_83ZOZ2yC&|huOf(_iB+sU4et?jw`lJ=ZD za{+s<|9kethCJM+eRkoI1yQ<$Jxid!+Mf46<n}xW&DM5mZO>@nF5W)T7qVvr)1$pO zeqQ@zggo5Fo})c3!=7sBueRsV2i%?~{(wCZt?iiw+{Nvo!@l$STPoAzvh67kdAN-| zT`$L;6VP96Pj}g#jZLtpb8CCv0Pf=Ul!D?sd*<NQ{NETql_3wev8Ny7bBX@eyNx{~ z*Yox{avJt@X>HG!z+K#)b)Y!Up69#&EqfY68nv;<#`s*qo^jA$-9D~$+@9;88DEml zqZKb^;*|HX++2mt906B=Y;(l3960x%=4Kob0G$XLO8d!N_MU=Qu8_Tw2(#Ecwi(!q z`{e~toadLqNHA!3J$2qV+#j+`UVrps^)KO%k<eW2k7=-t)*oHSlCG`W_tfu~vSTkO z&a>lr{ok@f-(pAW`PjzzT*4j~^jF)n1T94N42NcGyS29G)=SzGej$547XFq!rjUo* z^w%85=Mwh3LOqNvQTh6?`aN#XLnmR+m96c00Jw|yv%#P^uYJCur!+3VpB02W+{T{8 zjL#+P*#rI6_MBMD?RoAu*dw&I=W*aJZci2{&a>ywZhy<3l_3wevF9De=MwgWwXvtS zY|qXUut(q8o)3V#xIIfjah^Tb|2=!^LK?NPXIEG9%O&g?1pU?RGj0uUpEJM0p2*hr z{0!X1?b!;7^XwVH^tkN#Sks<8N3XaHd!|8uwLJ?~b9-(ld%Cx_=juz^bCOOw*(Q<O z&GtR1OpnX9CpP5aHto~(a_m_G{nhro|1P)ZL1?!2s@C?52JYhR6MZ3j=5+a6<0m8J z;Wqa4V|*^r->RX%+MYx2aC@FO4tsjEwr3V_7q@2uD9&r2=kcbFzY*WcLmqBpkB#xU zggqyqzuKPevOOFB2YaGg+w%r+7q_Pr6zAFVF`jk%8}?L&Jlw{f9LDDo_VjLJ&&YrC z_BnD4_FUcCo-cvBxIODYah^Tj;32BNVNYX7qc-*|W_&JT&p7C>ZXeg%+@9;mo@-j$ z)A5q_96ovhd;X+5&6hu)8rrkx9meMp_AG$@YI|OJi`z36nyu~G+Mc1nUA%pIT*#j5 z|DHX`ArH4{pIx{Ma>@DUedw>YXU{5b&!Y{n=i1ixIDxykJ&B+=ufL68dR%tAE(v+K zjXg(kFXxi>9D@F8d%|RU-aZ0*u4`@2Gr(Qk9ych?vnQ45aoP5)4SBeYJzX!yp6+ez z8T2M^p94YIbA4-jwgY!@dtL*@dG^e~oq@kGe(FOSwXvrk<8z7eGZOl%+h^Jv+@3CE z&ke2ZITg5+J$pfMo;}aw9?RdbN8g@3Hpb@?_PC(G+MXq^b9;tEv$efi+jHwB?Fqk- zJs)fTmOZABhugGI4&!qPdtQP5YI~|*<MurC3+%bEwLK32ck%u<7!>EV&wd<)|Bd!3 z2zj`TJ&PHiOW3mq`m60Z@hZ3HIovwk?3a%oR`5nEEdw$Y=L>jaOz>I|;(qXIv<QAW zn@-7&;9A&&-|UtLr&DG}upSi{ypS?G8oY6p?0#HuAntCUobKzg^7|;WgS~s4!TC5y zr}{X5X7E##*}>jz&EPdS8U<{igyemWgG0b3N(erVgEzn#ln^X%xCG}{3?4`s$j2!Q zgYTmZ<l~fq!TFSdeC)Rw{1jy%UxC+P;|kb736qbFA7B$DOg=VFfHNpz@;O|B6+MFo zQU>y|-evH8l!1J#7a5#S8OX<ai^0!Q2IW`*@N&wa9P=ZCpP~%(Q{Xk2XaE~1VfrCZ z12$2@^g}oSoIwfGkHaObHQ}#;yggSc?Rg(E<t_Jf*!@fIQ3KsJ)CXQ%Nqxq19o-i^ z^fK>1PoVSRW~O(mA$5zh9QOhBWv4vf`?^iD;RPQ%iU#0a-Ru@N)mhEzyDNQBB1-W{ zI_{n2#_R3`;Q2Sde=GI+2oQ*yqhg3drF#k0EPaWjxtCME_7x_1857E0oztQ(yF*Px zUoaxi7WP*NTFT>fJMS@Q<}DA#qhI2F8@*NU<V0y-Ydb$+(mcJ1(HW+*P`0GSPK*lN zv@HPw59{I=iDi{V`{Dz|yXgritH0k?yf+4xN2@Jg$Ms*0AKY@Yo$(fp=cRH{>a_z3 zK~VF=2pH%mk<Y%!jQuC&zu|7?#-^shTnKNmCuHxBjLuUTOo3r7<&ZM(`QTu}G5=1C zJ0_bN<I|->GMdv)a(?6{Pon%Jn2bm9JYxxXn-xgg+;`zuik>@JM*zM?*B`a%3M^vk zdUA+*7iSX_cg&~LF!t`3={{<W?%Y^Tj-C=D1@QJ-rcX%!TbTZCyn+b!uVD6nO!;qQ z_umT>;*K@ECHr0OXN!H^&RAJL8>;s9Xr_@+`VcDlqP_(Mce*)V_bC9O?0ys|{mlx+ zAgMWO197SpO37O!TF=xFN@D@DKW>5k60ds#RP$<s0^^{8Gtc04>IOV_@GA=N44_b2 z3#Z@?Y9(OYOMIK4zF*=O4AJ;q(76tQAlS0!*0u<xpHZQ2$Q!KcDL3xT)&!)NC{Pbs z(1JS{7(zIx^j$r9#$%!U{1=EW;Ze{9w!vVrM)wej#D({!BS-h_@p36XG?o5}iYe<_ z+<O$^*W1+H{Y%3;+#fYM9Wg<Z1xLd~QNqtXM5#w~U;&Av$L(|xAQ0)!HyR<rjb2(4 z?8dx7=gxKn0BChsgjNHYB?<eH$J0`Q0)WA>pj5>dpY8}s(eXRRRiZ~|Cd%&*`<=Z9 zNbaf;0n78u?noAB=+(!{{a^mz%+qZ8IvBW-k-5JX>1qChfzP2bSmXBg!N4e1BrKzM zZ8dDfU?`P6^$_H<ryIgAB7fU+O#aQp=_AIKJ2oN}?9x=@v9&%=vTANT9>DZ5a(y-u zm;dmh)eYU5-|5%+?0sPk)H_f<{wzsE4(|*53b=++MhB0all$BJF>ovOw*V|be@h0e z^f!9=@FPOwr>FYBFN`Oig7`)#Z6K^~$Y55P^|*t9YpC2eM6bqefv%*-%<q}yqbM&x zXS8hu=mO)ZyhhhF8bWd5{pP^7>2cH_P%ZEtYlcmfpNn~%_qWx&zu|$x8r>4&f-Wbp z$2<A+Fc>a)4((K6BMFtZ1n)-2q4(*b&jn8X3pmyn=b|R-heGKiAfUb|KTN{gSLu%v zKo@w4boM2PR0sXB9$>Iv>;5RlpBB8EU=aQ8{&bzF-7Z%BuY=7$8b5bwx=MI_E*1Il zj9^0j_6&{iOtm<_xsh`Jtc<93XWFDHyjX9KxI1X`cf~KsG`|V?;hpgN8T>%A62ByR ztfUUaV*KveKjTN4WBuWuyRXD!tV#AAW2NxVh$ST9`BS{TiGT|F3NDAwl>R!_-*p>Q zfT!j4rmqLs<CzSpd_QQ#_*&1=hL1N>y@o2tZ~gZ+?gb}jIlW^JeaIvg?~**VHI}o) z5U+2llT%uj5?n8*)W0-7OD%heM3}of_0=evA9^}bNvmn-O(`CXzmC!{O+)v9=UF_9 z%l=UM2KcwRVFF6_$V|d9Bs*>B2%ZhP4V{qStz31!q+QZ>>GKUFDlmIF9yzj{^%kGi zxUUKH1uq}{Xx?*0pcmtd<4WjrcE=WGiB#Ogs&SD1xJ8jD6=S8~L2sG3h+eQ(V>wEU zeY&4U8NlhBQ1&#y3c>}Bpnpl0!yDIPQ?Pj?Frq)9<3K$7!b+!*D!SFE=Cd3|aQ+0; zKHZCqO|yH9Pxnt`MgNfF12h^Ge+P0z$e}Dk>IPDRaDAIkmjg1Ce}?Kcx>Nw<7O2I% z(@D<wbQY9gHQ^F{x)UsF)&zz>1OMF<xCIIGf_p^Z8aW^C9t6T2GGQEK`*a<+pe!cn z#K_iyt}AcQmiu%Efo885fJVpvqQP1868Hd%oKy7ox)s)db3SqQ7r!R@J*z~2(pogs zCsyeXEB=6sgjXuoa2M^sVDvVHd;0q<pE&z88=aEwZmQ_Btc5E^@a!sNhau~;ye8@H zWH_CH61Zm~MBO0gt?Ug-Xo5c}$SlNxz3`##IPx;*!^m!?mH|mUk^D&>_v!W`FX9Ou zh}nTG%oP2WN=^wY_c5x8m7si^DC4W=8t|e-f}i8CXAIz4z)Lt>d?y6YLLLv4$+Bkv zs$n>$fX{;PtV<<w3=U*dkZs72*^VN7e6=T5W;;TL4L;p4Wa-rpPo<#seY(B`R%#`k z0htCvjjjh$m4rW7h+`5?u`JY-=#8vl^wT&kl&JRU4pRx@MtGPgS@uJrN-?{#<eBAo zBLct;8q@r%_VjvR%OG!Y3Fe6ov<dcEN~lw5g(pu!A_wv2Kc8+X_<@<E^D&XVD9-x2 z&BOP`=}xCpsy%(A>P(naTh(-vw7YMWRLg|pT_Cz~jFRH*d6a#tr8=mst<zRYI{`!u z0F~(Lbq!0p^`vCuH-kU;YQgu{W5THwPahGh&UB|-Rg)1XUi9lZ0RC_i^n-;ecRNJM z#cF*a_T55{rDa!|Mhb}QJH@`$<UmRHCaU^$yNztww}`?Y+W%4Fhb~jS1dWrhm<btD z%#v<-NYE|PSyG3A(&r9VXEYGz^9Dx!GKwq#@Vu3(gXaKXe8AZ2e7XlAR+PR3b``K? zm5*R7NBxxuq+fUHcCeLpZ^UySe4tY0`55)!b%00!9$L!4Pi62bQdg$~Q}&`(5Ja6J z0<?Zrz#vs4w_L)?%(9>5%O$<=Vbn8J8E=+!N_wB=C>DxEsXU5G#b*&eG0Z0hHc*Ia ziLD}H>jspq_32Egjo~{2LopuNKpq5^RX%nzdrvQr(S+O@fg${Xt|#)|TJ0j8fJ}`} zi*NKl2%m_kVu361!+C!iQp+xCXS{ouMVLTe@RTe^g%2(Jo!vAgPIPXcWfzjYNU8#Q z3{9bAmmUbLu))V$*=1u#V(cICIwB!C>MeK%ayGDX=}SWGglulGC>xAfLl4WE;Ekq@ zsE?Z4E5eWlj-4Z`Je^puYltL*P+0i|W%4Yfs!tMDg`B45OeIgMOH7c7(d@w@y|_~2 z?gH+WK5}YjOv~h;hRz&?>9EGqM2a<}!;t#TcqD;Ym(_`kok*UmM|UC#YjOO@97e%d zb{gO>xvxyjR}|~WU%UocEP5@qdatEP3j;@3&d&W;$S?zx49NOG)LCd0kSh*pF=qbJ za^m7=uQ`PG&;b%-;J@3^0WjlV*Q#VFmFQUsJj)E#F$af)vepP-6A$Op8p+Z`rqPD3 zp{oLUnfsOX3{w-ntVc0ifeO&mr;#jp>>YqVxr5Jga#2`S?nyiq%n)I15wKmRKt`f5 z)3k`jOhEY16fS&N*}_W~qLg`sGlWdru@!BnwzM79v=OanJGZ5c2+`tAP1HY{TKc&3 zU-HS0r>GOs-U;hETK<HFD5x=1YXYay=kUkRqTOBCU=A*X!)q*u(Ofk8L1GCs%<~o> zj=<Wk_;5FOSA2JOcf|KKo+wZRgby@#^>^RPYg<tpMbVxs<f76__t3yq<uuB;vp&G@ zfi_pt)PyNS_z<13vJd@5XY}hUIS(Cp&|1W6IgFLDC7>mS!jna4UeahI_3qFp+wZ3s zP{&mDR(5V(_%RA89LS|twk}=4OTUy$uWDWT7%!#ias#~DlN_<#Qmy!=ArS>+`y$My zq+|%JVxTYWFvd`2Yo2$Ivelw}%c2Ro17sd7)6M%J6zKSXvtrf7`a5DSg`f-dVT>_L zBSbbr1MD&p0U)&zUG%I}U3G~1uw2r)?*Fw6yy|@u&$9X9?~0?kPAM5b4OH~GY;EMK z_^sjpZB_C@y*w})dElovoP8cxx0nV6-|Miyp@COvdyf``!mUK}0iq^bxv{AED1wRb zf#qPL@WFnh-y^L<`W@0*q~9XN*@5L7;e#e52ZRqADaN8}qkv_dRd^Al@F8M_<x8aX zNcRdK*7`_F+6G9fOq8ZX$0kY>qGJ;Ant4Maegx4Iua(!+o;Fb$9Bq;CUL%CAmbG>6 z6Et$S7Rc}HYaJcg42{1(bf*EsIElInVk8R*9b3Y(GB43=?u+_;=y|jU&Y#0LZPod- zt3$Np%@~?NLZj4$j?V#q!soq}{nHITHh+7Ik2ZU*-K;^x$Gos9RQwn0!}N|~O;J2% zWO-M@hDM-(6$ZS;0Zq{j7>QD~cPG04QMN@;b|3eEDDVbayQ*F<Z3*-P7{`}5b#WBH z_s7*C0{#wkD{Z%;21@HNR2hx8{w9ioodY8z>}GN)AO$p!{mK^!G4djTe&U9GGddAs zre`f`uEiLw3pBtjSeVpUzEy?PdT;T5P0`ebdoc9T1Cr`#DJK0F%It?vDAZuihm1&X z@wa;6rAn{mTP-5#^$j<JZ$RwJ0$u<M_IjBw?P<KlbsEoVTEt;J$W4GM7y>nxT9Qqb z)9Qr}I^c(+fr3TwN>iuAxcWtStF)z_B5f@Nv08D2Wvy!;*ljhTXJMR#-XDo~&*Qa3 z4_KvB^alEU<_R``A5A|4<`#ed2&Cg}eSgA_*sJ~m$D<K}w1qIG?3nvT<$S^>9l<NH z6Tzdo$G7;k3Etk`;5h<8IJ8sVJGn)5{`Z?oHaqvBmESq`1IAzhnu4TI?JZ>81um^7 zOp}|Llap^Z3>aAGvJbR-X1E*!$9Zxb1MD$FhxFB0W@YAhGTn~kO#4iSTa%QZg))sT zyU?u}4>&qG)8)u>+p_a!YDVSf7UX;KvMfafE=OTuc7C2F32EkZhmzi#nd{Kx<-45@ zO_y<w>7X#g^l|nz^k<1?lxJFI#wgMtqcAhK0CKt*_@$;wc4g<eHC<BsWThGUOgG%o zAK%2T(4FscWEl$G(AMB|<>wmu6b{gIvAA6ME<<7Ftn9q$a-ln)7md%H6{;ZPR4TZb zf|^Xb-Q&u%KcXr0*zGV!W1g1pazj_BshO6Um6e@Ki5<pkqDN<D=Qy%76Hu0!rAc%+ zv-2F5BDcepmzkrn<e?;A<(-j`kVlS%i&A?t(Y@0&(_NW)Sp#}&9FG3+1{bwNZ;gG1 zgHWtOYH!&`pv@_C^fQp(Nvxs&-G&J+kE2*)cDr5K(>!iRVX8AfKh2O}m?P%rWSMhv ziZuqqoH^+Zv}!*?`ZxzAamB@HhQ1oYrKa~YI2oE%au&B>htEl81)xnZIMJ!|V0l_v zKf|2jG>scgnL3Rczp$TSP+FR%5Zc1t)HM25Oia5-UmFw`*H?3q@_*b(<#KDHd!eyg z8dPrWe$>7$H{ltk(C*4~+v%?zv(_?X=M{L|hJs8Nx*^)6a5%abSz+jtMLB9ho^=!y zy6~IVKGT6lK66?j&pUH6rz1<$xoBB9Oa?NGT7a33M>v-CL?>Ft(7R6|Vm7Y!$J&s% z!56mQn&)<)OSsv9j0a6SeAINqFmNx2E?%MQVue34sTHC6a09;JEG9QE%Rr_f1fa0c zP?&FUX1dypK7*mNeMWZS!*CJ?a+V>>DT}|5y=pz<?u_M>NjBC(sni<if~+Z!GVh}$ zkmb!l-ILk?soVgR<K9QkV1V<HhCH91#{Dpd7|VQH*eYCQrXijomNG{b!(z^lX*+zl zhk_f1g8_pVLq64s(NNUSPz2rRJF}>Gz<@LZ^(z{ShD<}AC)eT1wr6rK8cmKNv!KA0 zUzDB8osTHwp5ah@pJT{(G8oY$$53d`%*k{a5X@#d?CAamrzcP0V`ok09AGd^K=pi& zn>u<nNz6f{Hq6d;&oCfNyRxB$%+s0g$~DZ9TUp_QXyBlD+0TFm?O*t?2hrUC1*c_B z%g)JmKT>Q!HG?D5K7(16p9iK2Lt>@yNkUx92codWN4-NhrdXaKzkn$Xb(r&@yVY$d zEO6Mfo!JT>s7wBUKeKZ^x#YfS4!FQ+C}7+T@E4yc5N_zY$MJ|tBB0BVCCiwWS(t5C z<SH$|G^7|jd`h0da3`ADQ|N$KvoItPpYLSxxgV9qw<+VC<Ot3v;^Nwn^aqA`8)7nN zVcy7`hHQRb4s^~l{KJ3_>&PpV6{4}%mvi~Yd0hU{E|)<vm+X9*kHRG%UUkjRhArgY zEQd4GljG)W&}(2Lf&edJcE-sfvXu^JXyKfPh_5D<ZBp4l%A;Rlt_l$<ejZPg^=O1h zRjY+?m(g|#A2zsHsD<3wGqTY?Nhj)(H1*2!K1`Dr37Jk5@P3?4kx${n+8fg^pFcRG zY`4LlnP-^hFz{&y6D`7IrlHU?t<dqXhem+QlgEdi!bcX!H7Z2K+<aPU<mcJB4`_j8 z#}o~mvc53P$Si~qM;@p{`i#zo_A1{n_+ow`P2HI@xs+KUJ~<wE$d-vvfZ>Z}fb63z zng%hr9Dp5g7={-0KXP3T5yv3lOvhZSgmVp5$8yn7=y0<@!Uta=f<aCWf|ANLeD!32 z*)HA`<Yu?xA2yfR^C=?HGKI!53B_^=jRoJJH?k2u&f(6?&I|Pjl_%PiwBr*+9*Zp@ zYYRi>W+Kkz7sBUk#(;bbLG+TDjsiEPJ>au>09N?O;gWR|?mG0}LPH*6Dctgi9ECI* zzPMFKKN-`Gp6b{KezO&Ma;uPUxI+u6Pv^Jk;<P+~M`e<hj%4>JeB1^K<SvKX<H|!L zx$~#<=4KNEaaSA0{ZA`6*^X9jr&W7u4kii@W(km{A$;(@Ow$bp1y>Y{2=o(0J`E`k zx(<}cMcZcc;08`;Zj7O9tS~T+LUR*maa*AwCx15j4>khw<%A)`s-OU9SN8N77@PSp z$%WwuT@2H+XW_dYgD`g~e0ZPaVkq2R?mVf?j|!hl&4<cbJ}I+cJloNzTp7Z#K0&iN zpT#Nq(tya#EC^Ym$YcCk235-}i0H(}B5f1!%A%GH0GnJxTY%Bou0nUQ<~}y}7N)io zCc7~4(w=QhKH3C3iGTDnnB}dHf{Gi21reLZ6@Acc3W+$jpCKu;h)?+h4~fOq&p;C} zFAWW0f_wJ{p9dVSX`%MO)Bt>3KLZbN$WyTDXJ|XhQ7}4_ZF*2dJ&{Qt9g1`EG7L+= zS=g^&hlBrEgY~1uMmqK{m~GPx!?9o+i7oHURKpyn6VoZ}jYeY#r#cn8u&rSmg9L-k zkvH8vBX!QKV#3i<4!XOs1ciu97rt2+#Yo7^n~uHMLz#9=hq($L5My!$6&y7I6|t7> zXTWyiLQ737UFC%)Sd(+Gw^R7=$jBH_K%{}ktj9V{-uxA#5RJq4+q_+e4~NxQj^2WU z2l?Xded|CI5gXXfF~@;*hC7vY4B+RW4tSA;@Qi|0`b%p*X(NcqoXa(eh-J$ZKJXZe z`D9RghCvN>F_i`m;2Ii`fl>+|>IrgZ<~p6<HpSpG0j*S60LQZSWRz$y6exVgXXDr* z+xbZ91gyRaO(sJOYga@61m4blxyf#96cY?)mn-v;ROBIy_ZNA$q0unb)bbz;@#Mkm z4&GJJNeVbK-WBKIGzES~9Zbh~T_L}e)}=m$zQoTJQpq?lCjRJ@upo_dqD}_99Lw{v zCWQDn)uPZJ*u^)zp)O9fVevQw*!)~N8A!!=q)`CwiaxxedbbuD6mhWwruJuDf#p~y z=j0SJQV||fXNBT8@7;!2sQ-^N!yPgm600+nF9H%0pcsn*gZqK54UM7?9e3QH%KHv@ z#SOgxtwO^F3=s_)MpVoR3LjE{)<KwuRGYt+5t&8=X}20oY|tYsSLBVKnwQR^iu!Oz zKF?tTF2mj1a2L*I^2cMnlQ%sz4+kXtlAD`UWKE2CMXibit;(6kU{B}HPob#A(gfwa zhkBl(Kd(lOtZIBGXE2IK2qMQS92TaMh<=89Q=Po;z!M4|Ss%y;^<^nDTAsEzdljF; z3v1Jw{zB@6&Z3H-fb4@daSi8fe6~aQz@EDZqUIFSB9&uPi+DA|s2L7K`O!I<Za3C) zCd^UtG@L4T_FD|M_A}rJ)16HVsMI1w{|9j5fsPfTPczJ&YlsPf7-YypAP>Xx$rsdh zVUl58fzM8<w_vQf(r(4Dq6+fxrDl|+D)Lx289qE@7X<Xq$e@J*PD`;mp#y;aXgUv; z2BC#QrrVH_!IzvZ^)X(l@~F%_swwvdtgx}j0mIO`i>>bDb1^2DBFzOWq8630t-f3< zR4=r5p(Bt)M`1P{z=n{sv7sR)pgf&lvQr4IMrfW@);#JXCM;wjGqjLoGG+VZBUsY& zUWX$KJV6=q$3>VZer}ukCr?`ZM|`qzVUw8kcEO*<*rNBpI`YRk<C>}?iNE^ljoa`3 zY30m(jVV5{d+&ca=Nmuszjei`&igA~|1SB#r3=2Q*c13=M*6?}#+(PI-IjOfV&khj z-wNFN`OU`1Vt&8%w{BaEuUG%KUxMaEW7O$uOsl(oRWW9B!|XwxLlr~s$X&N@(X&Qp zk6)e`ck1&B{h7Vr{yBG3#o%*i%`Xo7%6Rj+6BEAd@v71E$L_dYLmxIa4SuWNzkl6s zEY7`V^uR0LHokh=eXU+BHg5d5x_3ixj<Ga)^+$hHPcXg^ZoRYHh#ce6h~ZD~{p=0n zde>{eSzq|DVnwfwJs(MW*Lc7X{A0lzcNj~HSDzSorKe)kKR5cP=RRAJ-u&H^KF>dG zEZksgxLW&W#jE?~ynp>&Pa88g9zM2U+oQ(m&#ZjlpF36<uj%Z3=479Z6<yZd@Ycc; z&l`tzetzF;@ANa4j_JMYhe?(SZ9&!=XT|i2D_tXI{qK``722X5o_CCQ8e^ZEGHl6y zuW`73<%`GmJW?_Ei>f=`{`iH8s(q`{qkbqiE_`<RjJvNXHy(au_^Hm`myG-WJa=R1 z3CS4N>62GJ|Nb50wBgn3uK(<9<8R$M6uz|hE#tv$KOeq!`h4U2w|x4}z)7<z^nL2a z%>HJ1#gwYt{Nc~}jnlg9J#qK2#YSUN*jMlMNHgAbck#PL+X{^@td4fAYF=i1;nk*_ zcYQp=82J3{dpj?kZfx5x6nI%tpMUO6nr{r><G-cw>Al9&pRKyR?=$<1GkQ+WY<l=e zMTckmJ^IDb!^Tyee_ye9(sJW{D;K>O|I+q~m)@N9e)yH!Dw-pnIuiNP7seAk?~FQi z^UjKyUxmA`y8cDu+f6ssjr;t4WBsqkRzCFce~j0?seOC>61y?-{sZ?dn6kY>f2#My zL3hqE&hGKzi@7Ubsp!}I)OF84`f9}&*Y3W5Pi$4i;i#@-rM|BjOSVtBdw9;n#+A7{ z#!lL@%s4&%Y~8V~&lq2*IUdn@#RtYg?>L`JetK@mzGWloG9LU-wekKYSGUIBszZ3i z-rMGs+#0^B!1&*POwSqh)6+)LHtmL|KG}2k^RMiVemf%B*kSePcb>g(j&YsV^zpAl zUpBsUxA)#J=2aWNo}08{LGl*k*um$X+JC6B;`o3^UOEx~j<J5w@tfXnUTIu;QaAJ9 zEjJsDHGLn7y{Ut->vdHk{;Z#I-B$%4ryl&b(cPT+>aE``Hujzru>JC~**Lbtw$6$F z8)@7>KWcK=j+w?^pZ#>gPj5YIJQ$q*t|2VhSn~YR`{$0k-l%=($NXORU2mN6%*uH? zc1<&ef9rhyy>Fj1+6p#B9Q=BoF>&yLyl+oFP*GHJtkcrZCRObF^pl@|+T*J@bH{f> zgbr&e`ey!b?Emb~8T&nUOd48LVw`?w<rVK;HQ)G0!pW-I7hW?iz2oV`>Q`Qu{ZwxJ zVOW=~GY3>xh`Xm<FC3_@NImk<o&%rd8GD5pKEL*^=VZFcru&x|pVr?{Y3#M;?#JpL z{?fSoTEp-oYri*swSV!(Q{Nnv>FSL4CpT%e+3SqOi~oA(jf`63!!fDbp40C$em3iy zp3ctS8V!42T>Jd52aWf>`C-Ye6Al`K$JeZTbo*Z8DDm_UCC9!o?tjNUuj<%#V{dlt zF&-BNO_;TOqs%|r#M`w|hI^RCZMd<l;r<OWyx;iTzv%kf_|>Zg30=NAXuSHPZQWk^ z{h;x$(@z?nYus<Nd+QEXHXk%DymdyOudH7iw?BDf{^J978Q0Z}|7!n}-y2`O@x7+^ zb-Ro+|4(~o9~M=W$MMSyAOeoGR-)oQV{68i;;4v}Jlz2i$+x5wsVE0U6dTPH4AY7h zBHB=k4ADqOMSN{@jfZU0W^@g)H0g<u%6#cDb=xeS60_E4?|y&h{LV05ck7Sc{jc*p z_kPar?VNMZ+<WHSnKO3=#$Nx>S10s!-KXEzZ`=_sKZ@%=#d4VQ?Y|wg?3p^ldvR=1 zt>gB+`kKnqlhfv&@w$Cqb!qtioc_~~eb-)iY^t~W=E5WA+^^}yeO^vUAHLrk`_!%N zFGcUvD}OxnO5(U?y>?mV{t+49dmnyd-jN5ke$C~#d*3>JL%)Mr$Gp`iZVO&xovUxW z^S<zBt9E%`-M?~RN9f!7k|k9M->uHkZ6`-edHNZT_lx*{{IsX(8QuMn=TgQE%k?2y zkt;4{pVB?swrWl8&vjYeLH&=j-0kmGozS0e4Qr{mVY7E#&HmEm`S0uVr%fCYVX5)n z){#9vsoxG=PiPtMUh$6pr{S*Hn_AB33)Z|dY~9KI`moxCBadA<q(5}aZQd)-y{1R_ zl2;Y|eZ7*sEv2i1S2-?utz~z_U)Xe9@6ojJ*oKM^yz=$)>0=MI?JGRGLVt93^SRb` zx4wFN#+qIm-sJYI;&xOhdS(4BUfJGN+#e6}@n<M1J@;?3&i(AQKJdGdQ!ak2V<806 zw}xm(;tHQ^&-~l#J0|>?_Qgy3TgSIOzPs%cZ-+bN$!#0X=sgBht_iW1>y`Skrw{f# z=<PY6!@B)14f-tu2fW$m*bZIBm3Z$?eWYaT?r+)Ns9&B}c<$4UUcGD3s_Fwn-cYhP zIJkA+_I;;yN7wKRC!TB2x0Y;*=;nD@U$Zu~W?W{eH~E`q=O3TF(|h{U!h2@KtW)K4 zJBk#&vfhPUU#rgTQuT8`Yt9!hEY*j9Fw}Q=<WqTTJ!kc~ucS;m*6lk!zvR(lU#xPn ze~hP;toluHFmBZbyYr{hR#=#yJ9q|t?hsc{RG=-u+E-18ci3-s#248M79ry<6kAU2 z90<ALs@!Y*977Vw)scw3bao`d9d{|_6s`@<ow;Z*?qhLVC-e9|TL_wl0*VGv?P@o) z=w`=Il4QnA)gHuUQHXyxGz+dI$&8s-*BjU%O$+K{9a$cvX$};=G|w<vkdJxTFs^_D z!Ii;yem7W()h}+a7W!<rVO(#~v>jk9ShK(|CWF~n0#^)1K4lm_aD1_0949@N@Lg}! zv@3OZE;1Oi%`ghU@!Jif8a&>Jdci#h@lRK%Z$}gSz$=FgV?LPlzF}+u_kb;+`!M`M zH0|&a!{`szd|()f;7)Kn`1n!7aD&f*72wep{OTF}5^M&29~;I+P-{iIu;8{g7!SsS zlfh5G0x;+pjvt%|)`P`h3s~NUcrf)-!-&BW)|$@@BMEdLHw;?RS`C(h2f$je9XtSj z`8k&RfQL^QMkM+(=_Kj{$Ak1(5n3@#Dd_Qgw4kD>pgxgZ!d?jK5=HtLY`%QMz~X9u z`uF~t)*l|^@5wa`5Bf{9MWxxI$99i+EUZ}5dyl+zSpS=-5Q<O57L9UIy+6?c#%yfP zIfjwK+E|coc$Y$Vn))u;7FA|RwMCa$Q*CzZzL0QRG*rp9u;d8xt-<D;Zy0~R*7wCg z-z4}oVQVQgjMvepT8b@dxh2IGz08_!vsVPC+G5K>l5LKXP-{|XxGgr>W`_|@DO3~M zj*u{%lc`G$V<brJDzR8^53+@6@eun%H~R_0=xUR;GRvrLp=m3u%Y&DNOsEJg>0-@{ z3`ajFM_7jk$&5xH{ADA~`MhDQrV7NdrgaOQB;!Qbfv)V0>jW+p@ZX6aoA<zZEd5bW zpntt6J)M63W5>1!{vKQpw}P_GV{JQwriP0y937!0LVXIh9h<R;xDNyza)l+?7F|aD zT@pN2_IE1vg0-+0q*T!-2-T?nV{qMRcvAc4fGmHE&5<jM9~EJF6gk9>i*Ul64&QqC zenq~b9=xt))=^Z?7@HGOc2tZ`K%b{aSmycV(Nu!0uL5Pb4&d?jd_3r9IyVq*S%Sum z633Mmq1jOd{qJchp8r4Gf9z<RWu0ssdWg<H8aH0Rc!Z}DibTiM4qXMt3h@O^2AzKs zWgYgrsW<+LIvQ<ZcZu^a2Cu^@_-?1@t9<Wg-&FXHi?G9-4&PjiJyWh~&wAM&w3*uD zhK~p1(h=k-k**lJY>ZK=jdabeWZiq@B+eV02bOnnhRJKP9`?}puv#<FK314T-_SVN zfilzl*A3zyF0oo~4Dpw789qHRw&4k?opoe%mJy9>z8mbH1=^>USS?=ZL+wn0&jI*2 z1AUfs+OuIl1AFg4`;<=mQrJ)YjJ*c-HrO`>##=n10IGiv><>2M{UgvmqqF?uu+M~j zLZID}?vK9$dnN2c0`2b3_!#tGE$p;d+y6RPwIK574^<NE6(8cy69Vm%(a#%%3zaIy z&|LW0KQfHWKtF4SznoIov*>+=0@Uk0vm~@4WLfZXtEG<WqvPEHKMn6Y;!6ePH><O~ zhhdNW8T;3;NB;-A9YsfC?CcMF2lD=QWZ*SFDeE8~2Yfo<qs9a=7EUb*uCQA6kyk2w zCc|ep-v4GIPh-If%V=Bla_eZDeOd5mTWm#0y3J7*nr=%h=`z9QblVa!HYeL+Qv!x% z@xD@na!#QfT(bT|?>F>5+6FycKPplFF!a9Z7(bQrSN_@q|Dzsg{;gA#)ZSNeC(EjM zy0j^o`2{PK{s)t6;geh0Cz<4FCb`TcuVgt=R<CKjoFdmv$(2&Z6a7Uh-|G^j=>R2l z4T&)tay8p&yrG1*9FZ_oid1cJ3U>U{5a0b?4wf<vO_ajAIR$YkisTG&3WiHjYsUKy zC7Q!fqNx!jJo);n#BR8tT|&=?skL#zYTk;eut+_bvA=POoYF_Jtd2v~*OmR1j1}zS zc#5x+@whJ(vT8>=%Wdi-5sv?VV++3?=6VwNbxvbuGV_>=m}Sf=W*xJE*~n~Vo@HKQ zhW3{IaU*j8Gl7}L%w*;<7ctA2Rm?hO1GACY$~?=w#0>4j^)m-B6PRhtOlBT)5wnb0 z#jImCFdLbz%(Ki(%+MIFpE-b;z)WLiGV_>=m}Sf=W*xJE*~n~Vo@HKQhVpoGBXa;V zftkk4Wacp!G0T`$%sOTR(|lf;<+XUSNMOpslej5)nCF>}YN@X``4_R?#}vWXwX>YK zTE-PKo0w5+q&|ze$5gI|_2-$6SEPRtv&rP|V|`eS^qa)2W@?;#EQh_yeoSRAV%f(G zTPyvP-N|w}vzZyaPWri+%D<fDW|RJ?sr{Et_Gk~6$K1j^Wr}NOed2oQU(9S`Ms1M# zET)Hfp6S>q?L|x<GpttXCo!v;r<k#uq+R3WGRZ%f+Ua5Yd1jB5SI0Z*q+G;Q<qkCY zrI_U1CjWMp?>G4+Zoaxc7t6Cvep^g_=S{MG%hly%vFtJFn^<0KD*p+STw;>daVx6# zF<-W<m;Q^365h`YqJ5W>pk*<~j2d-^J@(!y_l~yXCqIQnzqiN7CB_Zcq<+lADWr&x z8(|;n7&6o`4C{tt@4>gU>G-Nz=m*h{IN}!0URbc8AZNN3N8e8`n6Jg*YvP%4$tiaY z!Xh7*X3Z;%n_igj&K;DWtHqIo1+ufXxZK6_7A~GES+GD_uv|*~+(@{wFby^=N6Dc8 z&dqlhP?h=EBO5pC5o8Kx;<MN|tU1Yt(<8Y#1vy&W%-PfO=r<zMX6K?1CCSifIkf6W zMyULp8E`{2IdidsoQkF5p%H~m$4`dh@C`bxvJ!py-|T4KLvuX~7m{dkid-TqVpy+0 zzJZDEZMtAn@sll1NVw->g<VLUyWq~O$o0cMFuuUz6#4>=?=PgzojE=crVwnZ{%VU8 z66TGpa4|!L_S*SlJoJ|^ms0U+{&<-yO653nJgc=kk)b|R@oIkQq(&h%(ZL}RsPD}4 zzBK4)PN(A4d^L<G%xZoL7m>{UKM`7*8>)CUA8d<~{&f<XYQOSRd;oTuYbsgIH;b>6 zfiG}8wV&Fl+Rtij4l>kLDqhWRqxb`)Xm(Wft9YfSGnnF2*iX%uV>w>UuPMG4Hgo)w z&{3bL^40x@aE87&w!p+Mt6#MkxxjdPFQ>5CsWK$-S+mTFJ$I}BKBW}ez<6I@r||Rj z74WxLN}cUj$FU5C!1!j4Z{~Ohbx=T3^()m&$OOh~l}>4@lu+Zblw@D4JaIKPidV0n zo#X8s{|7sa0m&Yar|f!cf$_DwoTS!jcL|8kkY!Hp&Hev6)PeDidZ%!7)Jy*;zJ8?C z*?&rY3mN(toX$;3>VC3(uawRGrTSg*UAT3}rsCE8W;MqvKUrF5{Yw8K4Ag!V@7e1T zuAX0r7f#r<Vxx0c#jE?PEgY}zzg0J=dew22BQ~)9%U%~Wns(VM@Qdf)Nw@{ZtNUBc zC*xh}#E_!DJk^f#rg+zWm+*A$mjUhSz@(_znF`+^LuDy9SEEaqCN&CZyLlXyl6Fn} j_b^cV9m;{J;!{m}@}(3=RkyUr{YtL?N}w_zPO1L|0&l%& literal 0 HcmV?d00001 diff --git a/Cuba/Divonne b/Cuba/Divonne new file mode 100755 index 0000000000000000000000000000000000000000..ee414b4d305b34316b79f9c9719566e3bb4684cf GIT binary patch literal 165936 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 literal 0 HcmV?d00001 diff --git a/Cuba/Suave b/Cuba/Suave new file mode 100755 index 0000000000000000000000000000000000000000..6501c3b139778ee6368d95f9d1bf5e5f35af81a9 GIT binary patch literal 67120 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 ZP)}SYFSN2vi+O!Y<e&3adgyHR{{t|hnC}1p literal 0 HcmV?d00001 diff --git a/Cuba/Vegas b/Cuba/Vegas new file mode 100755 index 0000000000000000000000000000000000000000..5558aaa3dc124db1da1e0bea11483835103bc399 GIT binary patch literal 58800 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 NGH(ZD%&MP?{~OhxJ<<RG literal 0 HcmV?d00001 diff --git a/Cuba/config.guess b/Cuba/config.guess new file mode 100755 index 0000000..d622a44 --- /dev/null +++ b/Cuba/config.guess @@ -0,0 +1,1530 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011, 2012 Free Software Foundation, Inc. + +timestamp='2012-02-10' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see <http://www.gnu.org/licenses/>. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Originally written by Per Bothner. Please send patches (context +# diff format) to <config-patches@gnu.org> and include a ChangeLog +# entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to <config-patches@gnu.org>." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include <stdio.h> /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <sys/systemcfg.h> + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include <stdlib.h> + #include <unistd.h> + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <unistd.h> + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-gnu + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + hexagon:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + LIBC=gnu + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-gnu + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` + echo ${UNAME_MACHINE}-pc-isc$UNAME_REL + elif /bin/uname -X 2>/dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says <Richard.M.Bartel@ccMail.Census.GOV> + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes <hewes@openmarket.com>. + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + i386) + eval $set_cc_for_build + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + UNAME_PROCESSOR="x86_64" + fi + fi ;; + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c <<EOF +#ifdef _SEQUENT_ +# include <sys/types.h> +# include <sys/utsname.h> +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include <sys/param.h> + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include <sys/param.h> +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 <<EOF +$0: unable to guess system type + +This script, last modified $timestamp, has failed to recognize +the operating system you are using. It is advised that you +download the most up to date version of the config scripts from + + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +and + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +If the version you run ($0) is already up to date, please +send the following data and any information you think might be +pertinent to <config-patches@gnu.org> in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/Cuba/config.h b/Cuba/config.h new file mode 100644 index 0000000..7cfdd04 --- /dev/null +++ b/Cuba/config.h @@ -0,0 +1,135 @@ +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +/* #undef CRAY_STACKSEG_END */ + +/* Define to 1 if using `alloca.c'. */ +/* #undef C_ALLOCA */ + +/* Define to 1 if you have `alloca', as a function or macro. */ +#define HAVE_ALLOCA 1 + +/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix). + */ +#define HAVE_ALLOCA_H 1 + +/* Define to 1 if you have the `erf' function. */ +#define HAVE_ERF 1 + +/* Define to 1 if you have the `fork' function. */ +#define HAVE_FORK 1 + +/* Define to 1 if you have the `getloadavg' function. */ +#define HAVE_GETLOADAVG 1 + +/* Define to 1 if you have the <inttypes.h> header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if the type `long double' works and has more range or precision + than `double'. */ +#define HAVE_LONG_DOUBLE 1 + +/* Define to 1 if the type `long double' works and has more range or precision + than `double'. */ +#define HAVE_LONG_DOUBLE_WIDER 1 + +/* Define to 1 if you have the <memory.h> header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `powl' function. */ +#define HAVE_POWL 1 + +/* Define to 1 if you have the `shmget' function. */ +#define HAVE_SHMGET 1 + +/* Define to 1 if you have the <stdint.h> header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the <stdlib.h> header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the <strings.h> header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the <string.h> header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the <sys/stat.h> header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the <sys/types.h> header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the <unistd.h> header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if you have the `vfork' function. */ +#define HAVE_VFORK 1 + +/* Define to 1 if you have the <vfork.h> header file. */ +/* #undef HAVE_VFORK_H */ + +/* Define to 1 if `fork' works. */ +#define HAVE_WORKING_FORK 1 + +/* Define to 1 if `vfork' works. */ +#define HAVE_WORKING_VFORK 1 + +/* Maximum number of dimensions */ +/* #undef NCOMP */ + +/* Maximum number of components */ +/* #undef NDIM */ + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "hahn@feynarts.de" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "Cuba" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "Cuba 4.2" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "cuba" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "4.2" + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +/* #undef STACK_DIRECTION */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef const */ + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +/* #undef inline */ +#endif + +/* Define to `int' if <sys/types.h> does not define. */ +/* #undef pid_t */ + +/* Define to `unsigned int' if <sys/types.h> does not define. */ +/* #undef size_t */ + +/* Define to `int' if <sys/types.h> does not define. */ +/* #undef ssize_t */ + +/* Define as `fork' if `vfork' does not work. */ +/* #undef vfork */ diff --git a/Cuba/config.h.in b/Cuba/config.h.in new file mode 100644 index 0000000..06e22e5 --- /dev/null +++ b/Cuba/config.h.in @@ -0,0 +1,134 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +#undef CRAY_STACKSEG_END + +/* Define to 1 if using `alloca.c'. */ +#undef C_ALLOCA + +/* Define to 1 if you have `alloca', as a function or macro. */ +#undef HAVE_ALLOCA + +/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix). + */ +#undef HAVE_ALLOCA_H + +/* Define to 1 if you have the `erf' function. */ +#undef HAVE_ERF + +/* Define to 1 if you have the `fork' function. */ +#undef HAVE_FORK + +/* Define to 1 if you have the `getloadavg' function. */ +#undef HAVE_GETLOADAVG + +/* Define to 1 if you have the <inttypes.h> header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if the type `long double' works and has more range or precision + than `double'. */ +#undef HAVE_LONG_DOUBLE + +/* Define to 1 if the type `long double' works and has more range or precision + than `double'. */ +#undef HAVE_LONG_DOUBLE_WIDER + +/* Define to 1 if you have the <memory.h> header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `powl' function. */ +#undef HAVE_POWL + +/* Define to 1 if you have the `shmget' function. */ +#undef HAVE_SHMGET + +/* Define to 1 if you have the <stdint.h> header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the <stdlib.h> header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the <strings.h> header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the <string.h> header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the <sys/stat.h> header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the <sys/types.h> header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the <unistd.h> header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the `vfork' function. */ +#undef HAVE_VFORK + +/* Define to 1 if you have the <vfork.h> header file. */ +#undef HAVE_VFORK_H + +/* Define to 1 if `fork' works. */ +#undef HAVE_WORKING_FORK + +/* Define to 1 if `vfork' works. */ +#undef HAVE_WORKING_VFORK + +/* Maximum number of dimensions */ +#undef NCOMP + +/* Maximum number of components */ +#undef NDIM + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Define to `int' if <sys/types.h> does not define. */ +#undef pid_t + +/* Define to `unsigned int' if <sys/types.h> does not define. */ +#undef size_t + +/* Define to `int' if <sys/types.h> does not define. */ +#undef ssize_t + +/* Define as `fork' if `vfork' does not work. */ +#undef vfork diff --git a/Cuba/config.log b/Cuba/config.log new file mode 100644 index 0000000..a33f987 --- /dev/null +++ b/Cuba/config.log @@ -0,0 +1,923 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Cuba configure 4.2, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ ./configure + +## --------- ## +## Platform. ## +## --------- ## + +hostname = pep13 +uname -m = x86_64 +uname -r = 4.4.140-62-default +uname -s = Linux +uname -v = #1 SMP Tue Jul 17 12:14:34 UTC 2018 (951943d) + +/usr/bin/uname -p = x86_64 +/bin/uname -X = unknown + +/bin/arch = x86_64 +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +/usr/bin/hostinfo = unknown +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: /users/pep/local/intel_2017_update2/compilers_and_libraries_2017.2.174/linux/bin/intel64 +PATH: /users/pep/local/intel_2017_update2/compilers_and_libraries_2017.2.174/linux/mpi/intel64/bin +PATH: /users/pep/local/intel_2017_update2/debugger_2017/gdb/intel64_mic/bin +PATH: /usr/lib64/mpi/gcc/openmpi/bin +PATH: /users/pep/mschulze/bin +PATH: /usr/local/bin +PATH: /usr/bin +PATH: /bin +PATH: /usr/bin/X11 +PATH: /usr/games +PATH: /users/pep/mschulze/bin/ +PATH: /users/pep/local/mathematica/ +PATH: /mnt/pep/local/intel/bin +PATH: /users/pep/local/intel/impi/2017.2.174/bin64 + + +## ----------- ## +## Core tests. ## +## ----------- ## + +configure:2128: loading site script /usr/share/site/x86_64-unknown-linux-gnu +| #!/bin/sh +| # Site script for configure. It is resourced via $CONFIG_SITE environment varaible. +| +| # If user did not specify libdir, guess the correct target: +| # Use lib64 for 64 bit bi-arch targets, keep the default for the rest. +| if test "$libdir" = '${exec_prefix}/lib' ; then +| +| ac_config_site_64bit_host=NONE +| +| case "$host" in +| "" ) +| # User did not specify host target. +| # The native platform x86_64 is a bi-arch platform. +| # Try to detect cross-compilation to inferior architecture. +| +| # We are trying to guess 32-bit target compilation. It's not as easy as +| # it sounds, as there is possible several intermediate combinations. +| ac_config_site_cross_to_32bit_host=NONE +| +| # User defined -m32 in CFLAGS or CXXFLAGS or CC or CXX: +| # (It's sufficient for 32-bit, but alone may cause mis-behavior of some checks.) +| case "$CFLAGS $CXXFLAGS $CC $CXX" in +| *-m32*) +| ac_config_site_cross_to_32bit_host=YES +| ;; +| esac +| +| # Running with linux32: +| # (Changes detected platform, but not the toolchain target.) +| case "`/bin/uname -i`" in +| x86_64 | ppc64 | s390x ) +| ;; +| * ) +| ac_config_site_cross_to_32bit_host=YES +| ;; +| esac +| +| if test "x$ac_config_site_cross_to_32bit_host" = xNONE; then +| ac_config_site_64bit_host=YES +| fi +| +| ;; +| *x86_64* | *ppc64* | *s390x* ) +| ac_config_site_64bit_host=YES +| ;; +| esac +| +| if test "x$ac_config_site_64bit_host" = xYES; then +| libdir='${exec_prefix}/lib64' +| fi +| fi +| +| # If user did not specify libexecdir, set the correct target: +| # Nor FHS nor openSUSE allow prefix/libexec. Let's default to prefix/lib. +| +| if test "$libexecdir" = '${exec_prefix}/libexec' ; then +| libexecdir='${exec_prefix}/lib' +| fi +| +| # Continue with the standard behavior of configure defined in AC_SITE_LOAD: +| if test "x$prefix" != xNONE; then +| ac_site_file1=$prefix/share/config.site +| ac_site_file2=$prefix/etc/config.site +| else +| ac_site_file1=$ac_default_prefix/share/config.site +| ac_site_file2=$ac_default_prefix/etc/config.site +| fi +| for ac_site_file in "$ac_site_file1" "$ac_site_file2" +| do +| test "x$ac_site_file" = xNONE && continue +| if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then +| { $as_echo "/usr/share/site/x86_64-unknown-linux-gnu:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +| $as_echo "/usr/share/site/x86_64-unknown-linux-gnu: loading site script $ac_site_file" >&6;} +| sed 's/^/| /' "$ac_site_file" >&5 +| . "$ac_site_file" \ +| || { { $as_echo "/usr/share/site/x86_64-unknown-linux-gnu:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +| $as_echo "/usr/share/site/x86_64-unknown-linux-gnu: error: in \`$ac_pwd':" >&2;} +| as_fn_error $? "failed to load site script $ac_site_file +| See \`config.log' for more details" "$LINENO" 5; } +| fi +| done +configure:2279: checking for gcc +configure:2295: found /usr/bin/gcc +configure:2306: result: gcc +configure:2535: checking for C compiler version +configure:2544: gcc --version >&5 +gcc (SUSE Linux) 4.8.5 +Copyright (C) 2015 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +configure:2555: $? = 0 +configure:2544: gcc -v >&5 +Using built-in specs. +COLLECT_GCC=gcc +COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/4.8/lto-wrapper +Target: x86_64-suse-linux +Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,fortran,obj-c++,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.8 --enable-ssp --disable-libssp --disable-plugin --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib64 --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --enable-linker-build-id --enable-linux-futex --program-suffix=-4.8 --without-system-libunwind --with-arch-32=i586 --with-tune=generic --build=x86_64-suse-linux --host=x86_64-suse-linux +Thread model: posix +gcc version 4.8.5 (SUSE Linux) +configure:2555: $? = 0 +configure:2544: gcc -V >&5 +gcc: error: unrecognized command line option '-V' +gcc: fatal error: no input files +compilation terminated. +configure:2555: $? = 1 +configure:2544: gcc -qversion >&5 +gcc: error: unrecognized command line option '-qversion' +gcc: fatal error: no input files +compilation terminated. +configure:2555: $? = 1 +configure:2575: checking whether the C compiler works +configure:2597: gcc conftest.c -lm >&5 +configure:2601: $? = 0 +configure:2649: result: yes +configure:2652: checking for C compiler default output file name +configure:2654: result: a.out +configure:2660: checking for suffix of executables +configure:2667: gcc -o conftest conftest.c -lm >&5 +configure:2671: $? = 0 +configure:2693: result: +configure:2715: checking whether we are cross compiling +configure:2723: gcc -o conftest conftest.c -lm >&5 +configure:2727: $? = 0 +configure:2734: ./conftest +configure:2738: $? = 0 +configure:2753: result: no +configure:2758: checking for suffix of object files +configure:2780: gcc -c conftest.c >&5 +configure:2784: $? = 0 +configure:2805: result: o +configure:2809: checking whether we are using the GNU C compiler +configure:2828: gcc -c conftest.c >&5 +configure:2828: $? = 0 +configure:2837: result: yes +configure:2846: checking whether gcc accepts -g +configure:2866: gcc -c -g conftest.c >&5 +configure:2866: $? = 0 +configure:2907: result: yes +configure:2924: checking for gcc option to accept ISO C89 +configure:2987: gcc -c -g -O2 conftest.c >&5 +configure:2987: $? = 0 +configure:3000: result: none needed +configure:3073: checking for gfortran +configure:3089: found /usr/bin/gfortran +configure:3100: result: gfortran +configure:3126: checking for Fortran compiler version +configure:3135: gfortran --version >&5 +GNU Fortran (SUSE Linux) 4.8.5 +Copyright (C) 2015 Free Software Foundation, Inc. + +GNU Fortran comes with NO WARRANTY, to the extent permitted by law. +You may redistribute copies of GNU Fortran +under the terms of the GNU General Public License. +For more information about these matters, see the file named COPYING + +configure:3146: $? = 0 +configure:3135: gfortran -v >&5 +Using built-in specs. +COLLECT_GCC=gfortran +COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/4.8/lto-wrapper +Target: x86_64-suse-linux +Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,fortran,obj-c++,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.8 --enable-ssp --disable-libssp --disable-plugin --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib64 --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --enable-linker-build-id --enable-linux-futex --program-suffix=-4.8 --without-system-libunwind --with-arch-32=i586 --with-tune=generic --build=x86_64-suse-linux --host=x86_64-suse-linux +Thread model: posix +gcc version 4.8.5 (SUSE Linux) +configure:3146: $? = 0 +configure:3135: gfortran -V >&5 +gfortran: error: unrecognized command line option '-V' +gfortran: fatal error: no input files +compilation terminated. +configure:3146: $? = 1 +configure:3135: gfortran -qversion >&5 +gfortran: error: unrecognized command line option '-qversion' +gfortran: fatal error: no input files +compilation terminated. +configure:3146: $? = 1 +configure:3155: checking whether we are using the GNU Fortran compiler +configure:3168: gfortran -c conftest.F >&5 +configure:3168: $? = 0 +configure:3177: result: yes +configure:3183: checking whether gfortran accepts -g +configure:3194: gfortran -c -g conftest.f >&5 +configure:3194: $? = 0 +configure:3202: result: yes +configure:3274: checking for ranlib +configure:3290: found /usr/bin/ranlib +configure:3301: result: ranlib +configure:3366: checking for a BSD-compatible install +configure:3434: result: /usr/bin/install -c +configure:3461: checking for an ANSI C-conforming const +configure:3527: gcc -c -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c >&5 +configure:3527: $? = 0 +configure:3534: result: yes +configure:3542: checking for inline +configure:3558: gcc -c -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c >&5 +configure:3558: $? = 0 +configure:3566: result: inline +configure:3586: checking for long double with more range or precision than double +configure:3622: gcc -c -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c >&5 +configure:3622: $? = 0 +configure:3629: result: yes +configure:3650: checking how to run the C preprocessor +configure:3681: gcc -E conftest.c +configure:3681: $? = 0 +configure:3695: gcc -E conftest.c +conftest.c:11:28: fatal error: ac_nonexistent.h: No such file or directory + #include <ac_nonexistent.h> + ^ +compilation terminated. +configure:3695: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Cuba" +| #define PACKAGE_TARNAME "cuba" +| #define PACKAGE_VERSION "4.2" +| #define PACKAGE_STRING "Cuba 4.2" +| #define PACKAGE_BUGREPORT "hahn@feynarts.de" +| #define PACKAGE_URL "" +| #define HAVE_LONG_DOUBLE_WIDER 1 +| #define HAVE_LONG_DOUBLE 1 +| /* end confdefs.h. */ +| #include <ac_nonexistent.h> +configure:3720: result: gcc -E +configure:3740: gcc -E conftest.c +configure:3740: $? = 0 +configure:3754: gcc -E conftest.c +conftest.c:11:28: fatal error: ac_nonexistent.h: No such file or directory + #include <ac_nonexistent.h> + ^ +compilation terminated. +configure:3754: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Cuba" +| #define PACKAGE_TARNAME "cuba" +| #define PACKAGE_VERSION "4.2" +| #define PACKAGE_STRING "Cuba 4.2" +| #define PACKAGE_BUGREPORT "hahn@feynarts.de" +| #define PACKAGE_URL "" +| #define HAVE_LONG_DOUBLE_WIDER 1 +| #define HAVE_LONG_DOUBLE 1 +| /* end confdefs.h. */ +| #include <ac_nonexistent.h> +configure:3783: checking for grep that handles long lines and -e +configure:3841: result: /usr/bin/grep +configure:3846: checking for egrep +configure:3908: result: /usr/bin/grep -E +configure:3913: checking for ANSI C header files +configure:3933: gcc -c -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c >&5 +configure:3933: $? = 0 +configure:4006: gcc -o conftest -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c -lm >&5 +configure:4006: $? = 0 +configure:4006: ./conftest +configure:4006: $? = 0 +configure:4017: result: yes +configure:4030: checking for sys/types.h +configure:4030: gcc -c -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c >&5 +configure:4030: $? = 0 +configure:4030: result: yes +configure:4030: checking for sys/stat.h +configure:4030: gcc -c -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c >&5 +configure:4030: $? = 0 +configure:4030: result: yes +configure:4030: checking for stdlib.h +configure:4030: gcc -c -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c >&5 +configure:4030: $? = 0 +configure:4030: result: yes +configure:4030: checking for string.h +configure:4030: gcc -c -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c >&5 +configure:4030: $? = 0 +configure:4030: result: yes +configure:4030: checking for memory.h +configure:4030: gcc -c -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c >&5 +configure:4030: $? = 0 +configure:4030: result: yes +configure:4030: checking for strings.h +configure:4030: gcc -c -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c >&5 +configure:4030: $? = 0 +configure:4030: result: yes +configure:4030: checking for inttypes.h +configure:4030: gcc -c -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c >&5 +configure:4030: $? = 0 +configure:4030: result: yes +configure:4030: checking for stdint.h +configure:4030: gcc -c -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c >&5 +configure:4030: $? = 0 +configure:4030: result: yes +configure:4030: checking for unistd.h +configure:4030: gcc -c -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c >&5 +configure:4030: $? = 0 +configure:4030: result: yes +configure:4042: checking for size_t +configure:4042: gcc -c -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c >&5 +configure:4042: $? = 0 +configure:4042: gcc -c -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c >&5 +conftest.c: In function 'main': +conftest.c:57:21: error: expected expression before ')' token + if (sizeof ((size_t))) + ^ +configure:4042: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Cuba" +| #define PACKAGE_TARNAME "cuba" +| #define PACKAGE_VERSION "4.2" +| #define PACKAGE_STRING "Cuba 4.2" +| #define PACKAGE_BUGREPORT "hahn@feynarts.de" +| #define PACKAGE_URL "" +| #define HAVE_LONG_DOUBLE_WIDER 1 +| #define HAVE_LONG_DOUBLE 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| /* end confdefs.h. */ +| #include <stdio.h> +| #ifdef HAVE_SYS_TYPES_H +| # include <sys/types.h> +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include <sys/stat.h> +| #endif +| #ifdef STDC_HEADERS +| # include <stdlib.h> +| # include <stddef.h> +| #else +| # ifdef HAVE_STDLIB_H +| # include <stdlib.h> +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include <memory.h> +| # endif +| # include <string.h> +| #endif +| #ifdef HAVE_STRINGS_H +| # include <strings.h> +| #endif +| #ifdef HAVE_INTTYPES_H +| # include <inttypes.h> +| #endif +| #ifdef HAVE_STDINT_H +| # include <stdint.h> +| #endif +| #ifdef HAVE_UNISTD_H +| # include <unistd.h> +| #endif +| int +| main () +| { +| if (sizeof ((size_t))) +| return 0; +| ; +| return 0; +| } +configure:4042: result: yes +configure:4053: checking for ssize_t +configure:4053: gcc -c -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c >&5 +configure:4053: $? = 0 +configure:4053: gcc -c -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c >&5 +conftest.c: In function 'main': +conftest.c:57:22: error: expected expression before ')' token + if (sizeof ((ssize_t))) + ^ +configure:4053: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Cuba" +| #define PACKAGE_TARNAME "cuba" +| #define PACKAGE_VERSION "4.2" +| #define PACKAGE_STRING "Cuba 4.2" +| #define PACKAGE_BUGREPORT "hahn@feynarts.de" +| #define PACKAGE_URL "" +| #define HAVE_LONG_DOUBLE_WIDER 1 +| #define HAVE_LONG_DOUBLE 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| /* end confdefs.h. */ +| #include <stdio.h> +| #ifdef HAVE_SYS_TYPES_H +| # include <sys/types.h> +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include <sys/stat.h> +| #endif +| #ifdef STDC_HEADERS +| # include <stdlib.h> +| # include <stddef.h> +| #else +| # ifdef HAVE_STDLIB_H +| # include <stdlib.h> +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include <memory.h> +| # endif +| # include <string.h> +| #endif +| #ifdef HAVE_STRINGS_H +| # include <strings.h> +| #endif +| #ifdef HAVE_INTTYPES_H +| # include <inttypes.h> +| #endif +| #ifdef HAVE_STDINT_H +| # include <stdint.h> +| #endif +| #ifdef HAVE_UNISTD_H +| # include <unistd.h> +| #endif +| int +| main () +| { +| if (sizeof ((ssize_t))) +| return 0; +| ; +| return 0; +| } +configure:4053: result: yes +configure:4064: checking for pid_t +configure:4064: gcc -c -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c >&5 +configure:4064: $? = 0 +configure:4064: gcc -c -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c >&5 +conftest.c: In function 'main': +conftest.c:57:20: error: expected expression before ')' token + if (sizeof ((pid_t))) + ^ +configure:4064: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Cuba" +| #define PACKAGE_TARNAME "cuba" +| #define PACKAGE_VERSION "4.2" +| #define PACKAGE_STRING "Cuba 4.2" +| #define PACKAGE_BUGREPORT "hahn@feynarts.de" +| #define PACKAGE_URL "" +| #define HAVE_LONG_DOUBLE_WIDER 1 +| #define HAVE_LONG_DOUBLE 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| /* end confdefs.h. */ +| #include <stdio.h> +| #ifdef HAVE_SYS_TYPES_H +| # include <sys/types.h> +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include <sys/stat.h> +| #endif +| #ifdef STDC_HEADERS +| # include <stdlib.h> +| # include <stddef.h> +| #else +| # ifdef HAVE_STDLIB_H +| # include <stdlib.h> +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include <memory.h> +| # endif +| # include <string.h> +| #endif +| #ifdef HAVE_STRINGS_H +| # include <strings.h> +| #endif +| #ifdef HAVE_INTTYPES_H +| # include <inttypes.h> +| #endif +| #ifdef HAVE_STDINT_H +| # include <stdint.h> +| #endif +| #ifdef HAVE_UNISTD_H +| # include <unistd.h> +| #endif +| int +| main () +| { +| if (sizeof ((pid_t))) +| return 0; +| ; +| return 0; +| } +configure:4064: result: yes +configure:4078: checking for powl +configure:4078: gcc -o conftest -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c -lm >&5 +conftest.c:44:6: warning: conflicting types for built-in function 'powl' [enabled by default] + char powl (); + ^ +configure:4078: $? = 0 +configure:4078: result: yes +configure:4089: checking for erf +configure:4089: gcc -o conftest -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c -lm >&5 +conftest.c:45:6: warning: conflicting types for built-in function 'erf' [enabled by default] + char erf (); + ^ +configure:4089: $? = 0 +configure:4089: result: yes +configure:4100: checking vfork.h usability +configure:4100: gcc -c -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c >&5 +conftest.c:56:19: fatal error: vfork.h: No such file or directory + #include <vfork.h> + ^ +compilation terminated. +configure:4100: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Cuba" +| #define PACKAGE_TARNAME "cuba" +| #define PACKAGE_VERSION "4.2" +| #define PACKAGE_STRING "Cuba 4.2" +| #define PACKAGE_BUGREPORT "hahn@feynarts.de" +| #define PACKAGE_URL "" +| #define HAVE_LONG_DOUBLE_WIDER 1 +| #define HAVE_LONG_DOUBLE 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_POWL 1 +| #define HAVE_ERF 1 +| /* end confdefs.h. */ +| #include <stdio.h> +| #ifdef HAVE_SYS_TYPES_H +| # include <sys/types.h> +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include <sys/stat.h> +| #endif +| #ifdef STDC_HEADERS +| # include <stdlib.h> +| # include <stddef.h> +| #else +| # ifdef HAVE_STDLIB_H +| # include <stdlib.h> +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include <memory.h> +| # endif +| # include <string.h> +| #endif +| #ifdef HAVE_STRINGS_H +| # include <strings.h> +| #endif +| #ifdef HAVE_INTTYPES_H +| # include <inttypes.h> +| #endif +| #ifdef HAVE_STDINT_H +| # include <stdint.h> +| #endif +| #ifdef HAVE_UNISTD_H +| # include <unistd.h> +| #endif +| #include <vfork.h> +configure:4100: result: no +configure:4100: checking vfork.h presence +configure:4100: gcc -E conftest.c +conftest.c:23:19: fatal error: vfork.h: No such file or directory + #include <vfork.h> + ^ +compilation terminated. +configure:4100: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Cuba" +| #define PACKAGE_TARNAME "cuba" +| #define PACKAGE_VERSION "4.2" +| #define PACKAGE_STRING "Cuba 4.2" +| #define PACKAGE_BUGREPORT "hahn@feynarts.de" +| #define PACKAGE_URL "" +| #define HAVE_LONG_DOUBLE_WIDER 1 +| #define HAVE_LONG_DOUBLE 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_POWL 1 +| #define HAVE_ERF 1 +| /* end confdefs.h. */ +| #include <vfork.h> +configure:4100: result: no +configure:4100: checking for vfork.h +configure:4100: result: no +configure:4113: checking for fork +configure:4113: gcc -o conftest -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c -lm >&5 +conftest.c:46:6: warning: conflicting types for built-in function 'fork' [enabled by default] + char fork (); + ^ +configure:4113: $? = 0 +configure:4113: result: yes +configure:4113: checking for vfork +configure:4113: gcc -o conftest -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c -lm >&5 +configure:4113: $? = 0 +configure:4113: result: yes +configure:4123: checking for working fork +configure:4145: gcc -o conftest -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c -lm >&5 +configure:4145: $? = 0 +configure:4145: ./conftest +configure:4145: $? = 0 +configure:4155: result: yes +configure:4176: checking for working vfork +configure:4286: result: yes +configure:4313: checking for working alloca.h +configure:4330: gcc -o conftest -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c -lm >&5 +configure:4330: $? = 0 +configure:4338: result: yes +configure:4346: checking for alloca +configure:4383: gcc -o conftest -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c -lm >&5 +configure:4383: $? = 0 +configure:4391: result: yes +configure:4503: checking build system type +configure:4517: result: x86_64-unknown-linux-gnu +configure:4537: checking host system type +configure:4550: result: x86_64-unknown-linux-gnu +configure:4577: checking for shmget +configure:4577: gcc -o conftest -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c -lm >&5 +configure:4577: $? = 0 +configure:4577: result: yes +configure:4590: checking for getloadavg +configure:4590: gcc -o conftest -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c -lm >&5 +configure:4590: $? = 0 +configure:4590: result: yes +configure:4639: checking for variable-size arrays +configure:4645: gcc -c -O3 -fomit-frame-pointer -ffast-math -Wall conftest.c >&5 +configure:4645: $? = 0 +configure:4646: result: yes +configure:4665: checking for MathLink +configure:4695: result: yes +configure:4709: checking for qmake +configure:4739: result: no +configure:4879: creating ./config.status + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by Cuba config.status 4.2, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on pep13 + +config.status:834: creating makefile +config.status:834: creating config.h + +## ---------------- ## +## Cache variables. ## +## ---------------- ## + +ac_cv_build=x86_64-unknown-linux-gnu +ac_cv_c_compiler_gnu=yes +ac_cv_c_const=yes +ac_cv_c_inline=inline +ac_cv_c_long_double=yes +ac_cv_env_CC_set= +ac_cv_env_CC_value= +ac_cv_env_CFLAGS_set= +ac_cv_env_CFLAGS_value= +ac_cv_env_CPPFLAGS_set= +ac_cv_env_CPPFLAGS_value= +ac_cv_env_CPP_set= +ac_cv_env_CPP_value= +ac_cv_env_FCFLAGS_set= +ac_cv_env_FCFLAGS_value= +ac_cv_env_FC_set= +ac_cv_env_FC_value= +ac_cv_env_LDFLAGS_set= +ac_cv_env_LDFLAGS_value= +ac_cv_env_LIBS_set= +ac_cv_env_LIBS_value= +ac_cv_env_MCFLAGS_set= +ac_cv_env_MCFLAGS_value= +ac_cv_env_build_alias_set= +ac_cv_env_build_alias_value= +ac_cv_env_host_alias_set= +ac_cv_env_host_alias_value= +ac_cv_env_target_alias_set= +ac_cv_env_target_alias_value= +ac_cv_fc_compiler_gnu=yes +ac_cv_func_alloca_works=yes +ac_cv_func_erf=yes +ac_cv_func_fork=yes +ac_cv_func_fork_works=yes +ac_cv_func_getloadavg=yes +ac_cv_func_powl=yes +ac_cv_func_shmget=yes +ac_cv_func_vfork=yes +ac_cv_func_vfork_works=yes +ac_cv_header_inttypes_h=yes +ac_cv_header_memory_h=yes +ac_cv_header_stdc=yes +ac_cv_header_stdint_h=yes +ac_cv_header_stdlib_h=yes +ac_cv_header_string_h=yes +ac_cv_header_strings_h=yes +ac_cv_header_sys_stat_h=yes +ac_cv_header_sys_types_h=yes +ac_cv_header_unistd_h=yes +ac_cv_header_vfork_h=no +ac_cv_host=x86_64-unknown-linux-gnu +ac_cv_objext=o +ac_cv_path_EGREP='/usr/bin/grep -E' +ac_cv_path_GREP=/usr/bin/grep +ac_cv_path_install='/usr/bin/install -c' +ac_cv_prog_CPP='gcc -E' +ac_cv_prog_ac_ct_CC=gcc +ac_cv_prog_ac_ct_FC=gfortran +ac_cv_prog_ac_ct_RANLIB=ranlib +ac_cv_prog_cc_c89= +ac_cv_prog_cc_g=yes +ac_cv_prog_fc_g=yes +ac_cv_type_long_double_wider=yes +ac_cv_type_pid_t=yes +ac_cv_type_size_t=yes +ac_cv_type_ssize_t=yes +ac_cv_working_alloca_h=yes + +## ----------------- ## +## Output variables. ## +## ----------------- ## + +ALLOCA='' +CC='gcc' +CFLAGS='-O3 -fomit-frame-pointer -ffast-math -Wall' +CPP='gcc -E' +CPPFLAGS='' +DEFS='-DHAVE_CONFIG_H' +DEMO_FORTRAN_DEFAULT='demo-fortran' +ECHO_C='' +ECHO_N='-n' +ECHO_T='' +EGREP='/usr/bin/grep -E' +EXEEXT='' +FC='gfortran' +FCFLAGS='-g -O2' +GREP='/usr/bin/grep' +HAVE_QMAKE='' +INSTALL_DATA='${INSTALL} -m 644' +INSTALL_PROGRAM='${INSTALL}' +INSTALL_SCRIPT='${INSTALL}' +LDFLAGS='' +LIBOBJS='' +LIBS='-lm' +LTLIBOBJS='' +MATH_DEFAULT='math' +MCFLAGS='' +MCSTDCPP='' +OBJEXT='o' +PACKAGE_BUGREPORT='hahn@feynarts.de' +PACKAGE_NAME='Cuba' +PACKAGE_STRING='Cuba 4.2' +PACKAGE_TARNAME='cuba' +PACKAGE_URL='' +PACKAGE_VERSION='4.2' +PATH_SEPARATOR=':' +RANLIB='ranlib' +REALSIZE='8' +SHELL='/bin/sh' +SUFFIX='' +TOOLS_DEFAULT='' +ac_ct_CC='gcc' +ac_ct_FC='gfortran' +bindir='${exec_prefix}/bin' +build='x86_64-unknown-linux-gnu' +build_alias='' +build_cpu='x86_64' +build_os='linux-gnu' +build_vendor='unknown' +datadir='${datarootdir}' +datarootdir='${prefix}/share' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +dvidir='${docdir}' +exec_prefix='${prefix}' +host='x86_64-unknown-linux-gnu' +host_alias='' +host_cpu='x86_64' +host_os='linux-gnu' +host_vendor='unknown' +htmldir='${docdir}' +includedir='${prefix}/include' +infodir='${datarootdir}/info' +libdir='${exec_prefix}/lib64' +libexecdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +localstatedir='${prefix}/var' +mandir='${datarootdir}/man' +oldincludedir='/usr/include' +pdfdir='${docdir}' +prefix='/usr/local' +program_transform_name='s,x,x,' +psdir='${docdir}' +sbindir='${exec_prefix}/sbin' +sharedstatedir='${prefix}/com' +sysconfdir='${prefix}/etc' +target_alias='' + +## ----------- ## +## confdefs.h. ## +## ----------- ## + +/* confdefs.h */ +#define PACKAGE_NAME "Cuba" +#define PACKAGE_TARNAME "cuba" +#define PACKAGE_VERSION "4.2" +#define PACKAGE_STRING "Cuba 4.2" +#define PACKAGE_BUGREPORT "hahn@feynarts.de" +#define PACKAGE_URL "" +#define HAVE_LONG_DOUBLE_WIDER 1 +#define HAVE_LONG_DOUBLE 1 +#define STDC_HEADERS 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_POWL 1 +#define HAVE_ERF 1 +#define HAVE_FORK 1 +#define HAVE_VFORK 1 +#define HAVE_WORKING_VFORK 1 +#define HAVE_WORKING_FORK 1 +#define HAVE_ALLOCA_H 1 +#define HAVE_ALLOCA 1 +#define HAVE_SHMGET 1 +#define HAVE_GETLOADAVG 1 + +configure: exit 0 diff --git a/Cuba/config.status b/Cuba/config.status new file mode 100755 index 0000000..5741422 --- /dev/null +++ b/Cuba/config.status @@ -0,0 +1,1029 @@ +#! /bin/sh +# Generated by configure. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Cuba $as_me 4.2, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +# Files that config.status was made for. +config_files=" makefile" +config_headers=" config.h" + +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Report bugs to <hahn@feynarts.de>." + +ac_cs_config="" +ac_cs_version="\ +Cuba config.status 4.2 +configured by ./configure, generated by GNU Autoconf 2.69, + with options \"$ac_cs_config\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='/mnt/pep/mschulze/pool/projects/MyVegasFrame/Cuba' +srcdir='.' +INSTALL='/usr/bin/install -c' +test -n "$AWK" || AWK=awk +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +if $ac_cs_recheck; then + set X /bin/sh './configure' $ac_configure_extra_args --no-create --no-recursion + shift + $as_echo "running CONFIG_SHELL=/bin/sh $*" >&6 + CONFIG_SHELL='/bin/sh' + export CONFIG_SHELL + exec "$@" +fi + +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "makefile") CONFIG_FILES="$CONFIG_FILES makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +cat >>"$ac_tmp/subs1.awk" <<\_ACAWK && +S["LTLIBOBJS"]="" +S["LIBOBJS"]="" +S["DEMO_FORTRAN_DEFAULT"]="demo-fortran" +S["TOOLS_DEFAULT"]="" +S["HAVE_QMAKE"]="" +S["MATH_DEFAULT"]="math" +S["MCSTDCPP"]="" +S["SUFFIX"]="" +S["REALSIZE"]="8" +S["host_os"]="linux-gnu" +S["host_vendor"]="unknown" +S["host_cpu"]="x86_64" +S["host"]="x86_64-unknown-linux-gnu" +S["build_os"]="linux-gnu" +S["build_vendor"]="unknown" +S["build_cpu"]="x86_64" +S["build"]="x86_64-unknown-linux-gnu" +S["ALLOCA"]="" +S["EGREP"]="/usr/bin/grep -E" +S["GREP"]="/usr/bin/grep" +S["CPP"]="gcc -E" +S["INSTALL_DATA"]="${INSTALL} -m 644" +S["INSTALL_SCRIPT"]="${INSTALL}" +S["INSTALL_PROGRAM"]="${INSTALL}" +S["RANLIB"]="ranlib" +S["ac_ct_FC"]="gfortran" +S["FCFLAGS"]="-g -O2" +S["FC"]="gfortran" +S["OBJEXT"]="o" +S["EXEEXT"]="" +S["ac_ct_CC"]="gcc" +S["CPPFLAGS"]="" +S["LDFLAGS"]="" +S["CFLAGS"]="-O3 -fomit-frame-pointer -ffast-math -Wall" +S["CC"]="gcc" +S["MCFLAGS"]="" +S["target_alias"]="" +S["host_alias"]="" +S["build_alias"]="" +S["LIBS"]="-lm" +S["ECHO_T"]="" +S["ECHO_N"]="-n" +S["ECHO_C"]="" +S["DEFS"]="-DHAVE_CONFIG_H" +S["mandir"]="${datarootdir}/man" +S["localedir"]="${datarootdir}/locale" +S["libdir"]="${exec_prefix}/lib64" +S["psdir"]="${docdir}" +S["pdfdir"]="${docdir}" +S["dvidir"]="${docdir}" +S["htmldir"]="${docdir}" +S["infodir"]="${datarootdir}/info" +S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}" +S["oldincludedir"]="/usr/include" +S["includedir"]="${prefix}/include" +S["localstatedir"]="${prefix}/var" +S["sharedstatedir"]="${prefix}/com" +S["sysconfdir"]="${prefix}/etc" +S["datadir"]="${datarootdir}" +S["datarootdir"]="${prefix}/share" +S["libexecdir"]="${exec_prefix}/lib" +S["sbindir"]="${exec_prefix}/sbin" +S["bindir"]="${exec_prefix}/bin" +S["program_transform_name"]="s,x,x," +S["prefix"]="/usr/local" +S["exec_prefix"]="${prefix}" +S["PACKAGE_URL"]="" +S["PACKAGE_BUGREPORT"]="hahn@feynarts.de" +S["PACKAGE_STRING"]="Cuba 4.2" +S["PACKAGE_VERSION"]="4.2" +S["PACKAGE_TARNAME"]="cuba" +S["PACKAGE_NAME"]="Cuba" +S["PATH_SEPARATOR"]=":" +S["SHELL"]="/bin/sh" +_ACAWK +cat >>"$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +D["PACKAGE_NAME"]=" \"Cuba\"" +D["PACKAGE_TARNAME"]=" \"cuba\"" +D["PACKAGE_VERSION"]=" \"4.2\"" +D["PACKAGE_STRING"]=" \"Cuba 4.2\"" +D["PACKAGE_BUGREPORT"]=" \"hahn@feynarts.de\"" +D["PACKAGE_URL"]=" \"\"" +D["HAVE_LONG_DOUBLE_WIDER"]=" 1" +D["HAVE_LONG_DOUBLE"]=" 1" +D["STDC_HEADERS"]=" 1" +D["HAVE_SYS_TYPES_H"]=" 1" +D["HAVE_SYS_STAT_H"]=" 1" +D["HAVE_STDLIB_H"]=" 1" +D["HAVE_STRING_H"]=" 1" +D["HAVE_MEMORY_H"]=" 1" +D["HAVE_STRINGS_H"]=" 1" +D["HAVE_INTTYPES_H"]=" 1" +D["HAVE_STDINT_H"]=" 1" +D["HAVE_UNISTD_H"]=" 1" +D["HAVE_POWL"]=" 1" +D["HAVE_ERF"]=" 1" +D["HAVE_FORK"]=" 1" +D["HAVE_VFORK"]=" 1" +D["HAVE_WORKING_VFORK"]=" 1" +D["HAVE_WORKING_FORK"]=" 1" +D["HAVE_ALLOCA_H"]=" 1" +D["HAVE_ALLOCA"]=" 1" +D["HAVE_SHMGET"]=" 1" +D["HAVE_GETLOADAVG"]=" 1" + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t (]|$)/ { + line = $ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + ac_datarootdir_hack=' + s&@datadir@&${datarootdir}&g + s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g + s&@infodir@&${datarootdir}/info&g + s&@localedir@&${datarootdir}/locale&g + s&@mandir@&${datarootdir}/man&g + s&\${datarootdir}&${prefix}/share&g' ;; +esac +ac_sed_extra="/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +} + +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi + ;; + + + esac + +done # for ac_tag + + +as_fn_exit 0 diff --git a/Cuba/config.sub b/Cuba/config.sub new file mode 100755 index 0000000..c894da4 --- /dev/null +++ b/Cuba/config.sub @@ -0,0 +1,1773 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011, 2012 Free Software Foundation, Inc. + +timestamp='2012-02-10' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see <http://www.gnu.org/licenses/>. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Please send patches to <config-patches@gnu.org>. Submit a context +# diff and a properly formatted GNU ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to <config-patches@gnu.org>." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | be32 | be64 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | epiphany \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 \ + | ns16k | ns32k \ + | open8 \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pyramid \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | we32k \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pyramid-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze) + basic_machine=microblaze-xilinx + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i386-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/Cuba/configure b/Cuba/configure new file mode 100755 index 0000000..f01a7cf --- /dev/null +++ b/Cuba/configure @@ -0,0 +1,6043 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for Cuba 4.2. +# +# Report bugs to <hahn@feynarts.de>. +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and hahn@feynarts.de +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 </dev/null +exec 6>&1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='Cuba' +PACKAGE_TARNAME='cuba' +PACKAGE_VERSION='4.2' +PACKAGE_STRING='Cuba 4.2' +PACKAGE_BUGREPORT='hahn@feynarts.de' +PACKAGE_URL='' + +ac_unique_file="cuba.h" +# Factoring default headers for most tests. +ac_includes_default="\ +#include <stdio.h> +#ifdef HAVE_SYS_TYPES_H +# include <sys/types.h> +#endif +#ifdef HAVE_SYS_STAT_H +# include <sys/stat.h> +#endif +#ifdef STDC_HEADERS +# include <stdlib.h> +# include <stddef.h> +#else +# ifdef HAVE_STDLIB_H +# include <stdlib.h> +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include <memory.h> +# endif +# include <string.h> +#endif +#ifdef HAVE_STRINGS_H +# include <strings.h> +#endif +#ifdef HAVE_INTTYPES_H +# include <inttypes.h> +#endif +#ifdef HAVE_STDINT_H +# include <stdint.h> +#endif +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif" + +ac_subst_vars='LTLIBOBJS +LIBOBJS +DEMO_FORTRAN_DEFAULT +TOOLS_DEFAULT +HAVE_QMAKE +MATH_DEFAULT +MCSTDCPP +SUFFIX +REALSIZE +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +ALLOCA +EGREP +GREP +CPP +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +RANLIB +ac_ct_FC +FCFLAGS +FC +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +MCFLAGS +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +with_maxdim +with_maxcomp +with_real +' + ac_precious_vars='build_alias +host_alias +target_alias +MCFLAGS +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +FC +FCFLAGS +CPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures Cuba 4.2 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/cuba] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of Cuba 4.2:";; + esac + cat <<\_ACEOF + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-maxdim=N the maximum dimension for integration, if + variable-size array are not supported + --with-maxcomp=N the maximum number of components of the integrand, + if variable-size array are not supported + --with-real=N use N-byte floating-point numbers + +Some influential environment variables: + MCFLAGS MathLink C compiler flags + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a + nonstandard directory <lib dir> + LIBS libraries to pass to the linker, e.g. -l<library> + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if + you have headers in a nonstandard directory <include dir> + FC Fortran compiler command + FCFLAGS Fortran compiler flags + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to <hahn@feynarts.de>. +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +Cuba configure 4.2 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_fc_try_compile LINENO +# --------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_fc_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_fc_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_fc_try_compile + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case <limits.h> declares $2. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## ------------------------------- ## +## Report this to hahn@feynarts.de ## +## ------------------------------- ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Cuba $as_me 4.2, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + +LIBS=-lm +USER_CFLAGS="$CFLAGS" + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdarg.h> +#include <stdio.h> +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=${ac_fc_srcext-f} +ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' +ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_fc_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor xlf90 f90 pgf90 pghpf epcf90 g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_FC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$FC"; then + ac_cv_prog_FC="$FC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_FC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +FC=$ac_cv_prog_FC +if test -n "$FC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FC" >&5 +$as_echo "$FC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$FC" && break + done +fi +if test -z "$FC"; then + ac_ct_FC=$FC + for ac_prog in gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor xlf90 f90 pgf90 pghpf epcf90 g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_FC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_FC"; then + ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_FC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_FC=$ac_cv_prog_ac_ct_FC +if test -n "$ac_ct_FC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FC" >&5 +$as_echo "$ac_ct_FC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_FC" && break +done + + if test "x$ac_ct_FC" = x; then + FC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + FC=$ac_ct_FC + fi +fi + + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done +rm -f a.out + +# If we don't use `.F' as extension, the preprocessor is not run on the +# input file. (Note that this only needs to work for GNU compilers.) +ac_save_ext=$ac_ext +ac_ext=F +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran compiler" >&5 +$as_echo_n "checking whether we are using the GNU Fortran compiler... " >&6; } +if ${ac_cv_fc_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat > conftest.$ac_ext <<_ACEOF + program main +#ifndef __GNUC__ + choke me +#endif + + end +_ACEOF +if ac_fn_fc_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_fc_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_compiler_gnu" >&5 +$as_echo "$ac_cv_fc_compiler_gnu" >&6; } +ac_ext=$ac_save_ext +ac_test_FCFLAGS=${FCFLAGS+set} +ac_save_FCFLAGS=$FCFLAGS +FCFLAGS= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $FC accepts -g" >&5 +$as_echo_n "checking whether $FC accepts -g... " >&6; } +if ${ac_cv_prog_fc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + FCFLAGS=-g +cat > conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +if ac_fn_fc_try_compile "$LINENO"; then : + ac_cv_prog_fc_g=yes +else + ac_cv_prog_fc_g=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_g" >&5 +$as_echo "$ac_cv_prog_fc_g" >&6; } +if test "$ac_test_FCFLAGS" = set; then + FCFLAGS=$ac_save_FCFLAGS +elif test $ac_cv_prog_fc_g = yes; then + if test "x$ac_cv_fc_compiler_gnu" = xyes; then + FCFLAGS="-g -O2" + else + FCFLAGS="-g" + fi +else + if test "x$ac_cv_fc_compiler_gnu" = xyes; then + FCFLAGS="-O2" + else + FCFLAGS= + fi +fi + +if test $ac_compiler_gnu = yes; then + GFC=yes +else + GFC= +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + +if test "$GCC" = yes; then : + case `$CC --version 2>&1 < /dev/null` in #( + *LLVM*) : + opt=-O3 ;; #( + *gcc*4.2* | *gcc*4.4.3*) : + opt=-O0 ;; #( + *) : + opt=-O3 ;; +esac + CFLAGS=${USER_CFLAGS:-$opt -fomit-frame-pointer -ffast-math -Wall} +else + CFLAGS=${USER_CFLAGS:--O} +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +$as_echo_n "checking for an ANSI C-conforming const... " >&6; } +if ${ac_cv_c_const+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this sort of thing. */ + char tx; + char *t = &tx; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_const=yes +else + ac_cv_c_const=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +$as_echo "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +$as_echo "#define const /**/" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +$as_echo_n "checking for inline... " >&6; } +if ${ac_cv_c_inline+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_inline=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_inline" != no && break +done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +$as_echo "$ac_cv_c_inline" >&6; } + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double with more range or precision than double" >&5 +$as_echo_n "checking for long double with more range or precision than double... " >&6; } +if ${ac_cv_type_long_double_wider+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <float.h> + long double const a[] = + { + 0.0L, DBL_MIN, DBL_MAX, DBL_EPSILON, + LDBL_MIN, LDBL_MAX, LDBL_EPSILON + }; + long double + f (long double x) + { + return ((x + (unsigned long int) 10) * (-1 / x) + a[0] + + (x ? f (x) : 'c')); + } + +int +main () +{ +static int test_array [1 - 2 * !((0 < ((DBL_MAX_EXP < LDBL_MAX_EXP) + + (DBL_MANT_DIG < LDBL_MANT_DIG) + - (LDBL_MAX_EXP < DBL_MAX_EXP) + - (LDBL_MANT_DIG < DBL_MANT_DIG))) + && (int) LDBL_EPSILON == 0 + )]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_type_long_double_wider=yes +else + ac_cv_type_long_double_wider=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_double_wider" >&5 +$as_echo "$ac_cv_type_long_double_wider" >&6; } + if test $ac_cv_type_long_double_wider = yes; then + +$as_echo "#define HAVE_LONG_DOUBLE_WIDER 1" >>confdefs.h + + fi + + ac_cv_c_long_double=$ac_cv_type_long_double_wider + if test $ac_cv_c_long_double = yes; then + +$as_echo "#define HAVE_LONG_DOUBLE 1" >>confdefs.h + + fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> +#include <float.h> + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <string.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdlib.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <ctype.h> +#include <stdlib.h> +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define ssize_t int +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" +if test "x$ac_cv_type_pid_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define pid_t int +_ACEOF + +fi + + +for ac_func in powl +do : + ac_fn_c_check_func "$LINENO" "powl" "ac_cv_func_powl" +if test "x$ac_cv_func_powl" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_POWL 1 +_ACEOF + +fi +done + +for ac_func in erf +do : + ac_fn_c_check_func "$LINENO" "erf" "ac_cv_func_erf" +if test "x$ac_cv_func_erf" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_ERF 1 +_ACEOF + +fi +done + +for ac_header in vfork.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "vfork.h" "ac_cv_header_vfork_h" "$ac_includes_default" +if test "x$ac_cv_header_vfork_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_VFORK_H 1 +_ACEOF + +fi + +done + +for ac_func in fork vfork +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +if test "x$ac_cv_func_fork" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 +$as_echo_n "checking for working fork... " >&6; } +if ${ac_cv_func_fork_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_fork_works=cross +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + /* By Ruediger Kuhlmann. */ + return fork () < 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_fork_works=yes +else + ac_cv_func_fork_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 +$as_echo "$ac_cv_func_fork_works" >&6; } + +else + ac_cv_func_fork_works=$ac_cv_func_fork +fi +if test "x$ac_cv_func_fork_works" = xcross; then + case $host in + *-*-amigaos* | *-*-msdosdjgpp*) + # Override, as these systems have only a dummy fork() stub + ac_cv_func_fork_works=no + ;; + *) + ac_cv_func_fork_works=yes + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 +$as_echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} +fi +ac_cv_func_vfork_works=$ac_cv_func_vfork +if test "x$ac_cv_func_vfork" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 +$as_echo_n "checking for working vfork... " >&6; } +if ${ac_cv_func_vfork_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_vfork_works=cross +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Thanks to Paul Eggert for this test. */ +$ac_includes_default +#include <sys/wait.h> +#ifdef HAVE_VFORK_H +# include <vfork.h> +#endif +/* On some sparc systems, changes by the child to local and incoming + argument registers are propagated back to the parent. The compiler + is told about this with #include <vfork.h>, but some compilers + (e.g. gcc -O) don't grok <vfork.h>. Test for this by using a + static variable whose address is put into a register that is + clobbered by the vfork. */ +static void +#ifdef __cplusplus +sparc_address_test (int arg) +# else +sparc_address_test (arg) int arg; +#endif +{ + static pid_t child; + if (!child) { + child = vfork (); + if (child < 0) { + perror ("vfork"); + _exit(2); + } + if (!child) { + arg = getpid(); + write(-1, "", 0); + _exit (arg); + } + } +} + +int +main () +{ + pid_t parent = getpid (); + pid_t child; + + sparc_address_test (0); + + child = vfork (); + + if (child == 0) { + /* Here is another test for sparc vfork register problems. This + test uses lots of local variables, at least as many local + variables as main has allocated so far including compiler + temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris + 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should + reuse the register of parent for one of the local variables, + since it will think that parent can't possibly be used any more + in this routine. Assigning to the local variable will thus + munge parent in the parent process. */ + pid_t + p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), + p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); + /* Convince the compiler that p..p7 are live; otherwise, it might + use the same hardware register for all 8 local variables. */ + if (p != p1 || p != p2 || p != p3 || p != p4 + || p != p5 || p != p6 || p != p7) + _exit(1); + + /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent + from child file descriptors. If the child closes a descriptor + before it execs or exits, this munges the parent's descriptor + as well. Test for this by closing stdout in the child. */ + _exit(close(fileno(stdout)) != 0); + } else { + int status; + struct stat st; + + while (wait(&status) != child) + ; + return ( + /* Was there some problem with vforking? */ + child < 0 + + /* Did the child fail? (This shouldn't happen.) */ + || status + + /* Did the vfork/compiler bug occur? */ + || parent != getpid() + + /* Did the file descriptor bug occur? */ + || fstat(fileno(stdout), &st) != 0 + ); + } +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_vfork_works=yes +else + ac_cv_func_vfork_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 +$as_echo "$ac_cv_func_vfork_works" >&6; } + +fi; +if test "x$ac_cv_func_fork_works" = xcross; then + ac_cv_func_vfork_works=$ac_cv_func_vfork + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 +$as_echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} +fi + +if test "x$ac_cv_func_vfork_works" = xyes; then + +$as_echo "#define HAVE_WORKING_VFORK 1" >>confdefs.h + +else + +$as_echo "#define vfork fork" >>confdefs.h + +fi +if test "x$ac_cv_func_fork_works" = xyes; then + +$as_echo "#define HAVE_WORKING_FORK 1" >>confdefs.h + +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +$as_echo_n "checking for working alloca.h... " >&6; } +if ${ac_cv_working_alloca_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <alloca.h> +int +main () +{ +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_working_alloca_h=yes +else + ac_cv_working_alloca_h=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +$as_echo "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +$as_echo_n "checking for alloca... " >&6; } +if ${ac_cv_func_alloca_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include <malloc.h> +# define alloca _alloca +# else +# ifdef HAVE_ALLOCA_H +# include <alloca.h> +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +void *alloca (size_t); +# endif +# endif +# endif +# endif +#endif + +int +main () +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_func_alloca_works=yes +else + ac_cv_func_alloca_works=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +$as_echo "$ac_cv_func_alloca_works" >&6; } + +if test $ac_cv_func_alloca_works = yes; then + +$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +$as_echo "#define C_ALLOCA 1" >>confdefs.h + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 +$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } +if ${ac_cv_os_cray+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined CRAY && ! defined CRAY2 +webecray +#else +wenotbecray +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "webecray" >/dev/null 2>&1; then : + ac_cv_os_cray=yes +else + ac_cv_os_cray=no +fi +rm -f conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 +$as_echo "$ac_cv_os_cray" >&6; } +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +$as_echo_n "checking stack direction for C alloca... " >&6; } +if ${ac_cv_c_stack_direction+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_c_stack_direction=0 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction (int *addr, int depth) +{ + int dir, dummy = 0; + if (! addr) + addr = &dummy; + *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; + dir = depth ? find_stack_direction (addr, depth - 1) : 0; + return dir + dummy; +} + +int +main (int argc, char **argv) +{ + return find_stack_direction (0, argc + !argv + 20) < 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_stack_direction=1 +else + ac_cv_c_stack_direction=-1 +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +$as_echo "$ac_cv_c_stack_direction" >&6; } +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + + +case $host_os in #( + *cygwin*) : + ;; #( + *) : + for ac_func in shmget +do : + ac_fn_c_check_func "$LINENO" "shmget" "ac_cv_func_shmget" +if test "x$ac_cv_func_shmget" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SHMGET 1 +_ACEOF + +fi +done + ;; +esac + +for ac_func in getloadavg +do : + ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg" +if test "x$ac_cv_func_getloadavg" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETLOADAVG 1 +_ACEOF + +fi +done + + +MAXDIM=${MAXDIM:-16} + +# Check whether --with-maxdim was given. +if test "${with_maxdim+set}" = set; then : + withval=$with_maxdim; MAXDIM=$withval +fi + + +MAXCOMP=${MAXCOMP:-4} + +# Check whether --with-maxcomp was given. +if test "${with_maxcomp+set}" = set; then : + withval=$with_maxcomp; MAXCOMP=$withval +fi + + +REALSIZE=${REALSIZE:-8} + +# Check whether --with-real was given. +if test "${with_real+set}" = set; then : + withval=$with_real; REALSIZE=$withval +fi + +case $REALSIZE in #( + 8) : + ;; #( + 10) : + SUFFIX=${SUFFIX:-l} ;; #( + 16) : + SUFFIX=${SUFFIX:-q} + LIBS="-lquadmath $LIBS" ;; #( + *) : + REALSIZE=8 + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unavailable real size" >&5 +$as_echo "$as_me: WARNING: Unavailable real size" >&2;} ;; +esac + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for variable-size arrays" >&5 +$as_echo_n "checking for variable-size arrays... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using MAXDIM=$MAXDIM and MAXCOMP=$MAXCOMP" >&5 +$as_echo "no, using MAXDIM=$MAXDIM and MAXCOMP=$MAXCOMP" >&6; } + +cat >>confdefs.h <<_ACEOF +#define NDIM $MAXDIM +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define NCOMP $MAXCOMP +_ACEOF + + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MathLink" >&5 +$as_echo_n "checking for MathLink... " >&6; } +cat > conftest.tm << _EOF_ +:Begin: +:Function: inc +:Pattern: Inci_Integer +:Arguments: {i} +:ArgumentTypes: {Integer} +:ReturnType: Integer +:End: + +#include "mathlink.h" + +static int inc(const int i) { return i + 1; } + +int main(int argc, char **argv) { + return MLMain(argc, argv); +} +_EOF_ +FCC="$srcdir/tools/fcc" +rm -f conftest$EXEEXT +MCSTDCPP= +for MCSTDCPP in "" -stdlib=libstdc++ ; do + REALCC="$CC" CC="$FCC" CXX="$FCC $MCSTDCPP" PATH="$PATH:$srcdir/tools" \ + mcc $MCFLAGS $CFLAGS -o conftest$EXEEXT conftest.tm > /dev/null 2>&1 + if test -x conftest$EXEEXT; then : + break +fi +done +if test -x conftest$EXEEXT; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + MATH_DEFAULT=math +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + +for ac_prog in qmake +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_HAVE_QMAKE+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$HAVE_QMAKE"; then + ac_cv_prog_HAVE_QMAKE="$HAVE_QMAKE" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_HAVE_QMAKE="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +HAVE_QMAKE=$ac_cv_prog_HAVE_QMAKE +if test -n "$HAVE_QMAKE"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_QMAKE" >&5 +$as_echo "$HAVE_QMAKE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$HAVE_QMAKE" && break +done + +if test -n "$HAVE_QMAKE"; then : + case `qmake -v` in #( + *Qt?version?4*) : + TOOLS_DEFAULT=tools ;; #( + *) : + ;; +esac +fi + + +test -n "$FC" && DEMO_FORTRAN_DEFAULT=demo-fortran + + +ac_config_headers="$ac_config_headers config.h" + +ac_config_files="$ac_config_files makefile" + + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Cuba $as_me 4.2, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Report bugs to <hahn@feynarts.de>." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +Cuba config.status 4.2 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "makefile") CONFIG_FILES="$CONFIG_FILES makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' <conf$$subs.awk | sed ' +/^[^""]/{ + N + s/\n// +} +' >>$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' <confdefs.h | sed ' +s/'"$ac_delim"'/"\\\ +"/g' >>$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi + ;; + + + esac + +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + diff --git a/Cuba/configure.ac b/Cuba/configure.ac new file mode 100644 index 0000000..e20685a --- /dev/null +++ b/Cuba/configure.ac @@ -0,0 +1,134 @@ +# Process this file with autoconf to produce a configure script. + +AC_PREREQ(2.59) +AC_INIT([Cuba], [4.2], [hahn@feynarts.de]) +AC_CONFIG_SRCDIR([cuba.h]) + +LIBS=-lm +USER_CFLAGS="$CFLAGS" + +AC_ARG_VAR(MCFLAGS, [MathLink C compiler flags]) + +AC_PROG_CC +AC_PROG_FC +AC_PROG_RANLIB +AC_PROG_INSTALL + +AS_IF([test "$GCC" = yes], + [AS_CASE([`$CC --version 2>&1 < /dev/null`], + [*LLVM*], [opt=-O3], + [*gcc*4.2* | *gcc*4.4.3*], [opt=-O0], + [opt=-O3]) + CFLAGS=${USER_CFLAGS:-$opt -fomit-frame-pointer -ffast-math -Wall}], + [CFLAGS=${USER_CFLAGS:--O}]) + +AC_C_CONST +AC_C_INLINE +AC_C_LONG_DOUBLE + +AC_TYPE_SIZE_T +AC_TYPE_SSIZE_T +AC_TYPE_PID_T + +AC_CHECK_FUNCS([powl]) +AC_CHECK_FUNCS([erf]) +AC_FUNC_FORK +AC_FUNC_ALLOCA + +AC_DEFUN([chk_shmget], [dnl +AC_REQUIRE([AC_CANONICAL_HOST]) +AS_CASE([$host_os], + [*cygwin*], [], + [AC_CHECK_FUNCS([shmget])]) +]) +chk_shmget +AC_CHECK_FUNCS([getloadavg]) + +MAXDIM=${MAXDIM:-16} +AC_ARG_WITH(maxdim, + [AS_HELP_STRING([--with-maxdim=N], + [the maximum dimension for integration, + if variable-size array are not supported])], + [MAXDIM=$withval]) + +MAXCOMP=${MAXCOMP:-4} +AC_ARG_WITH(maxcomp, + [AS_HELP_STRING([--with-maxcomp=N], + [the maximum number of components of the integrand, + if variable-size array are not supported])], + [MAXCOMP=$withval]) + +REALSIZE=${REALSIZE:-8} +AC_ARG_WITH(real, + [AS_HELP_STRING([--with-real=N], + [use N-byte floating-point numbers])], + [REALSIZE=$withval]) +AS_CASE([$REALSIZE], + [8], [], + [10], [SUFFIX=${SUFFIX:-l}], + [16], [SUFFIX=${SUFFIX:-q} + LIBS="-lquadmath $LIBS"], + [REALSIZE=8 + AC_MSG_WARN([Unavailable real size])]) +AC_SUBST([REALSIZE]) +AC_SUBST([SUFFIX]) + +AC_MSG_CHECKING([for variable-size arrays]) +AC_COMPILE_IFELSE([AC_LANG_SOURCE(,[[ + void test(int n) { + char s[n]; + } + ]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no, using MAXDIM=$MAXDIM and MAXCOMP=$MAXCOMP]) + AC_DEFINE_UNQUOTED([NDIM], [$MAXDIM], [Maximum number of components]) + AC_DEFINE_UNQUOTED([NCOMP], [$MAXCOMP], [Maximum number of dimensions])] +) + +AC_MSG_CHECKING([for MathLink]) +cat > conftest.tm << _EOF_ +:Begin: +:Function: inc +:Pattern: Inc[i_Integer] +:Arguments: {i} +:ArgumentTypes: {Integer} +:ReturnType: Integer +:End: + +#include "mathlink.h" + +static int inc(const int i) { return i + 1; } + +int main(int argc, char **argv) { + return MLMain(argc, argv); +} +_EOF_ +FCC="$srcdir/tools/fcc" +rm -f conftest$EXEEXT +MCSTDCPP= +for MCSTDCPP in "" -stdlib=libstdc++ ; do + REALCC="$CC" CC="$FCC" CXX="$FCC $MCSTDCPP" PATH="$PATH:$srcdir/tools" \ + mcc $MCFLAGS $CFLAGS -o conftest$EXEEXT conftest.tm > /dev/null 2>&1 + AS_IF([test -x conftest$EXEEXT], [break]) +done +AS_IF([test -x conftest$EXEEXT], + [AC_MSG_RESULT([yes]) + MATH_DEFAULT=math], + [AC_MSG_RESULT([no])]) +AC_SUBST([MCSTDCPP]) +AC_SUBST([MATH_DEFAULT]) + +AC_CHECK_PROGS([HAVE_QMAKE], [qmake]) +AS_IF([test -n "$HAVE_QMAKE"], + [AS_CASE([`qmake -v`], + [*Qt?version?4*], [TOOLS_DEFAULT=tools])]) +AC_SUBST([TOOLS_DEFAULT]) + +test -n "$FC" && DEMO_FORTRAN_DEFAULT=demo-fortran +AC_SUBST([DEMO_FORTRAN_DEFAULT]) + +AC_CONFIG_HEADERS([config.h]) +AC_CONFIG_FILES([makefile]) + +AC_OUTPUT + diff --git a/Cuba/cuba.h b/Cuba/cuba.h new file mode 100644 index 0000000..5e87ef1 --- /dev/null +++ b/Cuba/cuba.h @@ -0,0 +1,125 @@ +/* + cuba.h + Prototypes for the Cuba library + this file is part of Cuba + last modified 13 Mar 15 th +*/ + +typedef double cubareal; + + /* integrand_t is intentionally a minimalistic integrand type. + It includes neither the nvec and core arguments nor the + extra arguments passed by Vegas/Suave (weight, iter) and + Divonne (phase). + In most cases, integrand_t is just what you want, otherwise + simply use an explicit typecast to integrand_t in the Cuba + invocation. */ +typedef int (*integrand_t)(const int *ndim, const cubareal x[], + const int *ncomp, cubareal f[], void *userdata); + +typedef void (*peakfinder_t)(const int *ndim, const cubareal b[], + int *n, cubareal x[], void *userdata); + +#ifdef __cplusplus +extern "C" { +#endif + +void Vegas(const int ndim, const int ncomp, + integrand_t integrand, void *userdata, const int nvec, + const cubareal epsrel, const cubareal epsabs, + const int flags, const int seed, + const int mineval, const int maxeval, + const int nstart, const int nincrease, const int nbatch, + const int gridno, const char *statefile, void *spin, + int *neval, int *fail, + cubareal integral[], cubareal error[], cubareal prob[]); + +void llVegas(const int ndim, const int ncomp, + integrand_t integrand, void *userdata, const long long int nvec, + const cubareal epsrel, const cubareal epsabs, + const int flags, const int seed, + const long long int mineval, const long long int maxeval, + const long long int nstart, const long long int nincrease, + const long long int nbatch, + const int gridno, const char *statefile, void *spin, + long long int *neval, int *fail, + cubareal integral[], cubareal error[], cubareal prob[]); + +void Suave(const int ndim, const int ncomp, + integrand_t integrand, void *userdata, const int nvec, + const cubareal epsrel, const cubareal epsabs, + const int flags, const int seed, + const int mineval, const int maxeval, + const int nnew, const int nmin, + const cubareal flatness, const char *statefile, void *spin, + int *nregions, int *neval, int *fail, + cubareal integral[], cubareal error[], cubareal prob[]); + +void llSuave(const int ndim, const int ncomp, + integrand_t integrand, void *userdata, const long long int nvec, + const cubareal epsrel, const cubareal epsabs, + const int flags, const int seed, + const long long int mineval, const long long int maxeval, + const long long int nnew, const long long int nmin, + const cubareal flatness, const char *statefile, void *spin, + int *nregions, long long int *neval, int *fail, + cubareal integral[], cubareal error[], cubareal prob[]); + +void Divonne(const int ndim, const int ncomp, + integrand_t integrand, void *userdata, const int nvec, + const cubareal epsrel, const cubareal epsabs, + const int flags, const int seed, + const int mineval, const int maxeval, + const int key1, const int key2, const int key3, const int maxpass, + const cubareal border, const cubareal maxchisq, const cubareal mindeviation, + const int ngiven, const int ldxgiven, cubareal xgiven[], + const int nextra, peakfinder_t peakfinder, + const char *statefile, void *spin, + int *nregions, int *neval, int *fail, + cubareal integral[], cubareal error[], cubareal prob[]); + +void llDivonne(const int ndim, const int ncomp, + integrand_t integrand, void *userdata, const long long int nvec, + const cubareal epsrel, const cubareal epsabs, + const int flags, const int seed, + const long long int mineval, const long long int maxeval, + const int key1, const int key2, const int key3, const int maxpass, + const cubareal border, const cubareal maxchisq, const cubareal mindeviation, + const long long int ngiven, const int ldxgiven, cubareal xgiven[], + const long long int nextra, peakfinder_t peakfinder, + const char *statefile, void *spin, + int *nregions, long long int *neval, int *fail, + cubareal integral[], cubareal error[], cubareal prob[]); + +void Cuhre(const int ndim, const int ncomp, + integrand_t integrand, void *userdata, const int nvec, + const cubareal epsrel, const cubareal epsabs, + const int flags, const int mineval, const int maxeval, + const int key, + const char *statefile, void *spin, + int *nregions, int *neval, int *fail, + cubareal integral[], cubareal error[], cubareal prob[]); + +void llCuhre(const int ndim, const int ncomp, + integrand_t integrand, void *userdata, const long long int nvec, + const cubareal epsrel, const cubareal epsabs, + const int flags, + const long long int mineval, const long long int maxeval, + const int key, + const char *statefile, void *spin, + int *nregions, long long int *neval, int *fail, + cubareal integral[], cubareal error[], cubareal prob[]); + +void cubafork(void *pspin); +void cubawait(void *pspin); + +void cubacores(const int n, const int p); +void cubaaccel(const int n, const int p); + +void cubainit(void (*f)(), void *arg); +void cubaexit(void (*f)(), void *arg); + +#ifdef __cplusplus +} +#endif + diff --git a/Cuba/cuba.pdf b/Cuba/cuba.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d9fd75e925d3147ae52965d51cd3b213f3bda6ff GIT binary patch literal 359802 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�V#I-r5XIrtIq#E9hw9F$r4&eZkP}Ry1t$E8=M%n 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�B^AuXq!;?}Tk(~j*zcG?&!cquS7zlz% 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ɡNfZ=6l~p>} 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 literal 0 HcmV?d00001 diff --git a/Cuba/cuba.tex b/Cuba/cuba.tex new file mode 100644 index 0000000..b08fdba --- /dev/null +++ b/Cuba/cuba.tex @@ -0,0 +1,2433 @@ +\documentclass[12pt]{article} +\usepackage{a4wide,amsmath,amssymb,alltt} +\usepackage{colordvi} + +\parskip=2pt +\raggedbottom +\sloppy + +\newcommand\cuba{\textsc{Cuba}} +\newcommand\ie{i.e.\ } +\newcommand\eg{e.g.\ } +\newcommand\rd{\mathrm{d}} +\newcommand\order{\mathcal{O}} +\newcommand\epsabs{\varepsilon_{\text{abs}}} +\newcommand\epsrel{\varepsilon_{\text{rel}}} +\newcommand\nnew{n_s^{\text{new}}} +\newcommand\nmin{n_s^{\text{min}}} +\newcommand\nmax{n_s^{\text{max}}} +\newcommand\nneed{n_{\text{need}}} +\newcommand\tot{_{\text{tot}}} +\newcommand\ctot{_{c,\text{tot}}} +\newcommand\cvec[1]{\vec #1} +\newcommand\dvec[1]{\mathbf{#1}} +\newcommand\norm[1]{\|#1\|_1} +\newcommand\lbrac{\symbol{123}} +\newcommand\rbrac{\symbol{125}} +\newcommand\uscore{\symbol{95}} +\newcommand\accel{_{\mathrm{accel}}} +\newcommand\cores{_{\mathrm{cores}}} +\newcommand\Code[1]{\ensuremath{\texttt{#1}}} +\newcommand\Var[1]{\ensuremath{\mathit{#1}}} +\newcommand\VarIn[1]{\item\Code{#1} \textit{$\langle$in\/$\rangle$},} +\newcommand\VarOut[1]{\item\Code{#1} \textit{$\langle$out\,$\rangle$},} +\newcommand\Option[2]{\item\Code{#1 -> #2},} +\newcommand\ul[1]{\underline{\vphantom{g}#1}} + +\renewcommand{\thefootnote}{\fnsymbol{footnote}} + +\makeatletter +\def\reportno#1{\gdef\@reportno{#1}} +\def\@maketitle{% + \hfill{\small\begin{tabular}[t]{r}% + \@reportno + \end{tabular}\par}% + \vskip 2em% + \begin{center}% + \let \footnote \thanks + {\large \@title \par}% + \vskip 1.5em% + {%\large + \lineskip .5em% + \begin{tabular}[t]{c}% + \@author + \end{tabular}\par}% + \vskip 1em% + {%\large + \@date}% + \end{center}% + \par + \vskip 1.5em} +\makeatother + + +\begin{document} + +\reportno{MPP--2004--40\\hep--ph/0404043} + +\title{\cuba\ -- a library for multidimensional numerical integration} + +\author{T. Hahn \\ +Max-Planck-Institut f\"ur Physik \\ +F\"ohringer Ring 6, D--80805 Munich, Germany} + +\date{Mar 27, 2015} + +\maketitle + +\begin{abstract} +The \cuba\ library provides new implementations of four general-purpose +multidimensional integration algorithms: Vegas, Suave, Divonne, and +Cuhre. Suave is a new algorithm, Divonne is a known algorithm to which +important details have been added, and Vegas and Cuhre are new +implementations of existing algorithms with only few improvements over +the original versions. All four algorithms can integrate vector +integrands and have very similar Fortran, C/C++, and Mathematica +interfaces. +\end{abstract} + +%======================================================================== + +\section{Introduction} + +Many problems in physics (and elsewhere) involve computing an integral, +and often enough this has to be done numerically, as the analytical +result is known only in a limited number of cases. In one dimension, +the situation is quite satisfactory: standard packages, such as +\textsc{Quadpack} \cite{quadpack}, reliably integrate a broad class of +functions in modest CPU time. The same is unfortunately not true for +multidimensional integrals. + +This paper presents the \cuba\ library with new implementations of four +algorithms for multidimensional numerical integration: Vegas, Suave, +Divonne, and Cuhre. They have a C/C++, Fortran, and Mathematica +interface each and are invoked in a very similar way, thus making them +easily interchangeable, \eg for comparison purposes. All four can +integrate vector integrands. Cuhre is a deterministic algorithm, the +others use Monte Carlo methods. + +Vegas is the simplest of the four. It uses importance sampling for +variance reduction, but is only in some cases competitive in terms of +the number of samples needed to reach a prescribed accuracy. +Nevertheless, it has a few improvements over the original algorithm +\cite{Vegas1,Vegas2} and comes in handy for cross-checking the results +of other methods. + +Suave is a new algorithm which combines the advantages of two popular +methods: importance sampling as done by Vegas and subregion sampling in +a manner similar to Miser \cite{Miser}. By dividing into subregions, +Suave manages to a certain extent to get around Vegas' difficulty to +adapt its weight function to structures not aligned with the coordinate +axes. + +Divonne is a further development of the CERNLIB routine D151 +\cite{Divonne}. Divonne works by stratified sampling, where the +partitioning of the integration region is aided by methods from +numerical optimization. A number of improvements have been added to +this algorithm, the most significant being the possibility to supply +knowledge about the integrand. Narrow peaks in particular are difficult +to find without sampling very many points, especially in high +dimensions. Often the exact or approximate location of such peaks is +known from analytic considerations, however, and with such hints the +desired accuracy can be reached with far fewer points. + +Cuhre\footnote{% + The D from the original name was dropped since the \cuba\ + library uses double precision throughout.} +employs a cubature rule for subregion estimation in a globally adaptive +subdivision scheme \cite{dcuhre}. It is hence a deterministic, not a +Monte Carlo method. In each iteration, the subregion with the largest +error is halved along the axis where the integrand has the largest +fourth difference. Cuhre is quite powerful in moderate dimensions, and +is usually the only viable method to obtain high precision, say relative +accuracies much below $10^{-3}$. + +The new algorithms were coded from scratch in C, which is a compromise +of sorts between C++ and Fortran 77, combining ease of linking to +Fortran code with the availability of reasonable memory management. The +declarations have been chosen such that the routines can be called from +Fortran directly. The Mathematica versions are based on the same C code +and use the MathLink API to communicate with Mathematica. + +%======================================================================== + +\section{Vegas} + +Vegas is a Monte Carlo algorithm that uses importance sampling as a +variance-reduction technique. Vegas iteratively builds up a +piecewise constant weight function, represented on a rectangular grid. +Each iteration consists of a sampling step followed by a refinement of +the grid. The exact details of the algorithm can be found in +\cite{Vegas1,Vegas2} and shall not be reproduced here. + +Changes with respect to the original version are: +\begin{itemize} +\item +Sobol quasi-random numbers \cite{Sobol} rather than pseudo-random +numbers are used by default. Empirically, this seems to accelerate +convergence quite a bit, most noticeably in the early stages of the +integration. + +From theoretical considerations it is of course known (see \eg +\cite{Niederreiter}) that quasi-random sequences yield a convergence +rate of $\order(\log^{n_d} n_s/n_s)$, where $n_d$ is the number of +dimensions and $n_s$ the number of samples, which is much better than +the usual $\order(1/\sqrt{n_s})$ for ordinary Monte Carlo. But these +convergence rates are meaningful only for large $n_s$ and so it came as +a pleasant surprise that the gains are considerable already at the +beginning of the sampling process. It shows that quasi-Monte Carlo +methods blend well with variance-reduction techniques such as importance +sampling. + +Similarly, it was not clear from the outset whether the statistical +standard error would furnish a suitable error estimate since +quasi-random numbers are decidedly non-random in a number of respects. +Yet also here empirical evidence suggests that the standard error works +just as well as for pseudo-random numbers. + +\item +The present implementation allows the number of samples to be increased +in each iteration. With this one can mimic the strategy of calling +Vegas with a small number of samples first to `get the grid right' and +then using an alternate entry point to perform the `full job' on the +same grid with a larger number of samples. + +\item +The option to add simple stratified sampling on top of the importance +sampling, as proposed in the appendix of \cite{Vegas1}, has not been +implemented in the present version. Tests with the Vegas version from +\cite{NumRecipes}, which contains this feature, showed that convergence +was accelerated only when the original pseudo-random numbers were used +and that with quasi-random numbers convergence was in fact even slower +in some cases. +\end{itemize} +Vegas' major weakness is that it uses a separable (product) weight +function. As a consequence, Vegas can offer significant improvements +only as far as the integrand's characteristic regions are aligned with +the coordinate axes. + +%======================================================================== + +\section{Suave} + +Suave (short for \textsc{su}bregion-\textsc{a}daptive \textsc{ve}gas) +uses Vegas-like importance sampling combined with a globally adaptive +subdivision strategy: Until the requested accuracy is reached, the +region with the largest error at the time is bisected in the dimension +in which the fluctuations of the integrand are reduced most. The number +of new samples in each half is prorated for the fluctuation in that +half. + +A similar method, known as recursive stratified sampling, is implemented +in Miser \cite{Miser}. Miser always samples a fixed number of points, +however, which is somewhat undesirable since it does not stop once the +prescribed accuracy is reached. + +Suave first samples the integration region in a Vegas-like step, \ie +using importance sampling with a separable weight function. It then +slices the integration region in two, as Miser would do. Suave does not +immediately recurse on those subregions, however, but maintains a list +of all subregions and selects the region with the largest absolute error +for the next cycle of sampling and subdivision. That is, Suave uses +global error estimation and terminates when the requested relative or +absolute accuracy is attained. + +The information on the weight function collected in one Vegas step is +not lost. Rather, the grid from which the weight function is computed +is stretched and re-used on the subregions. A region which is the +result of $m - 1$ subdivisions thus has had $m$ Vegas iterations +performed on it. + +The improvements over Vegas and Miser come at a price, which is the +amount of memory required to hold all the samples. Memory consumption +is not really severe on modern hardware, however. The component that +scales worst is the one proportional to the number of samples, which is +$$ +8 (n_d + n_c + 1) n_s\text{ bytes}\,, +$$ +where $n_d$ is the number of dimensions of the integral, $n_c$ the +number of components of the integrand, and $n_s$ the number of samples. +For a million samples on a scalar integrand of 10 variables, this works +out to 96 megabytes -- not all that enormous these days. + + +\subsection{Description of the algorithm} + +As Suave is a new algorithm, the following description will be fairly +detailed. For greater notational clarity, $n_c$-dimensional vectors are +denoted with a vector arrow ($\cvec f$\,) and $n_d$-dimensional vectors +with boldface letters ($\dvec x$) in the following, where $n_d$ is the +dimension of the integral and $n_c$ the number of components of the +integrand. + +The essential inputs are $\epsrel$ and $\epsabs$, the relative and +absolute accuracies, $\nnew$, the number of samples added in each +iteration, $\nmax$, the maximum number of samples allowed, and $p$, a +flatness parameter described below. + +Suave has a main loop which calls a Vegas-like sampling step. The main +loop is responsible for subdividing the subregions and maintaining the +totals. The sampling step does the actual sampling on the subregions +and computes the region results. + + +\subsubsection{Main loop} +\label{sect:suavemain} + +\begin{enumerate} +\item +Initialize the random-number generator and allocate a data structure for +the entire integration region. Initialize its Vegas grid with +equidistant bins. + +\item +Sample the entire integration region with $\nnew$ points. This gives an +initial estimate of the integral $\cvec I\tot$, the variance +$\cvec\sigma\tot^{\,2}$, and $\cvec\chi\tot^{\,2}$. + +\item +Find the component $c$ for which $r_c = \sigma\ctot/ +\max(\epsabs, \epsrel |I\ctot|)$ is maximal. + +If none of the $r_c$'s exceeds unity, indicate success and return. + +\item +If the number of samples spent so far equals or exceeds $\nmax$, +indicate failure and return. + +\item +Find the region $r$ with the largest $\sigma_c^2$. + +\item +Find the dimension $d$ which minimizes $F_c(r_L^d) + F_c(r_R^d)$, where +$r_{L,R}^d$ are the left and right halves of $r$ with respect to $d$. +$F_c(r_{L,R}^d)$ is the fluctuation of the samples that fall into +$r_{L,R}^d$ and is computed as +\begin{equation} +\label{eq:fluct} +F_c(r_{L,R}^d) += \biggl[\left\| + 1 + \tilde F_c(\dvec x_i\in r_{L,R}^d) + \right\|_p\biggr]^{2/3} += \biggl[\sum\left| + 1 + \tilde F_c(\dvec x_i\in r_{L,R}^d) + \right|^p\,\biggr]^{2/(3p)}, +\end{equation} +where all samples $\dvec x_i$ that fall into the respective half are +used in the norm/sum and the single-sample fluctuation $\tilde F_c$ is +defined as +$$ +\tilde F_c(\dvec x) = + w(\dvec x) \, \left|\frac{f_c(\dvec x) - I_c(r)}{I_c(r)}\right| + \, \frac{|f_c(\dvec x) - I_c(r)|}{\sigma_c(r)}\,. +$$ +This empirical recipe combines the relative deviation from the region +mean, $(f - I)/I$, with the $\chi$ value, $|f - I|/\sigma$, weighted by +the Vegas weight $w$ corresponding to sample $\dvec x$. Note that the +$I_c$ and $\sigma_c$ values of the entire region $r$ are used. + +Samples strongly contribute to $F$ the more they lie away from the +predicted mean \emph{and} the more they lie out of the predicted error +band. Tests have shown that large values of $p$ are beneficial for +`flat' integrands, whereas small values are preferred if the integrand +is `volatile' and has high peaks. $p$ has thus been dubbed a flatness +parameter. The effect comes from the fact that with increasing $p$, $F$ +becomes more and more dominated by `outliers,' \ie points with a large +$\tilde F$. + +The power 2/3 in Eq.~(\ref{eq:fluct}) is also used in Miser, where it is +motivated as the exponent that gives the best variance reduction +(\cite{NumRecipes}, p.~315). + +\item +Refine the grid associated with $r$, \ie incorporate the information +gathered on the integrand in the most recent sample over $r$ into the +weight function. This is done precisely as in Vegas (see +\cite{Vegas1}), with the extension that if the integrand has more than +one component, the marginal densities are computed not from $f^2$ but +from the weighted sum\footnote{% + It is fairly obvious that scale-invariant quantities must be + used in the sum, otherwise the component with the largest + absolute scale would dominate. It is less clear whether $\eta_0 + = (\int f_c\,\rd\dvec x)^2 = I\ctot^2$, $\eta_1 = (\int + |f_c|\,\rd\dvec x)^2$, or $\eta_2 = \int f_c^2\,\rd\dvec x$ (or + any other) make the best weights. Empirically, $\eta_0$ turns + out to be both slightly superior in convergence and easier to + compute than $\eta_1$ and $\eta_2$ and has thus been chosen in + Suave. + + A possible explanation for this is that in cases where there + are large compensations within the integral, \ie when $\int + f_c\,\rd\dvec x\ll\int |f_c|\,\rd\dvec x$, it is particularly + necessary for the overall accuracy that component $c$ be sampled + accurately, and thus be given more weight in $\overline{f^2}$, + and this is better accomplished by dividing $f_c^2$ by the + ``small'' number $\eta_0$ than by the ``large'' number $\eta_1$ + or $\eta_2$.} +$$ +\overline{f^2} = \sum_{c = 1}^{n_c} \frac{f_c^2}{I\ctot^2}\,. +$$ + +\item +Bisect $r$ in dimension $d$: + +Allocate a new region, $r_L$, and copy to $r_L$ those of $r$'s samples +falling into the left half. Compute the Vegas grid for $r_L$ by +appropriately ``stretching'' $r$'s grid, \ie by interpolating all grid +points of $r$ with values less than 1/2. + +Set up $r_R$ for the right half analogously. + +\item +Sample $r_L$ with $n_L = \max\Bigl(\frac{F_c(r_L)}{F_c(r_L) + F_c(r_R)} +\nnew, \nmin\Bigr)$ and $r_R$ with $n_R = \max(\nnew - n_L, \nmin)$ +points, where $\nmin = 10$. + +\item +To safeguard against underestimated errors, supplement the variances +by the difference of the integral values in the following way: +$$ +\sigma_{c,\text{new}}^2(r_{R,L}) = \sigma_c^2(r_{R,L}) + \left(1 + \frac{\Delta_c} + {\sqrt{\sigma_c^2(r_L) + \sigma_c^2(r_R)}}\right)^2 + + \Delta_c^2 +$$ +for each component $c$, where $\cvec\Delta = \frac 14 |\cvec I(r_L) + +\cvec I(r_R) - \cvec I(r)|$. + +This acts as a penalty for regions whose integral value changes +significantly by the subdivision and effectively moves them up in the +order of regions to be subdivided next. + +\item +Update the totals: Subtract $r$'s integral, variance, and $\chi^2$-value +from the totals and add those of $r_L$ and $r_R$. + +\item +Discard $r$, put $r_L$ and $r_R$ in the list of regions. + +\item +Go to Step 3. +\end{enumerate} + + +\subsubsection{Sampling step} + +The function which does the actual sampling is a modified Vegas +iteration. It is invoked with two arguments: $r$, the region to be +sampled and $n_m$, the number of new samples. + +\begin{enumerate} +\item +Sample a set of $n_m$ new points using the weight function given by the +grid associated with $r$. For a region which is the result of $m - 1$ +subdivisions, the list of samples now consists of $m$ sets of samples. + +\item +For each set of samples, compute the mean $\cvec I_i$ and variance +$\cvec\sigma_i^{\,2}$. + +\item +Compute the results for the region as +$$ +I_c = \frac{\sum_{i = 1}^m w_{i,c} I_{i,c}}{\sum_{i = 1}^m w_{i,c}}, +\quad +\sigma_c^2 = \frac 1{\sum_{i = 1}^m w_{i,c}}, +\quad +\chi_c^2 = \frac 1{\sigma_c^2}\left[ + \frac{\sum_{i = 1}^m w_{i,c} I_{i,c}^2}{\sum_{i = 1}^m w_{i,c}} - + I_c^2\right], +$$ +where the inverse of the set variances are used as weights, $w_{i,c} = +1/\sigma_{i,c}^2$. This is simply Gaussian error propagation. + +For greater numerical stability, $\chi_c^2$ is actually computed as +$$ +\chi_c^2 += \sum_{i = 1}^m w_{i,c} I_{i,c}^2 - + I_c \sum_{i = 1}^m w_{i,c} I_{i,c} += \sum_{i = 2}^m w_{i,c} I_{i,c} (I_{i,c} - I_{1,c}) - + I_c \sum_{i = 2}^m w_{i,c} (I_{i,c} - I_{1,c})\,. +$$ +\end{enumerate} + +%======================================================================== + +\section{Divonne} + +Divonne uses stratified sampling for variance reduction, that is, it +partitions the integration region such that all subregions have an +approximately equal value of a quantity called the spread $\cvec s$, +defined as +\begin{equation} +\cvec s(r) = \frac 12 V(r) + \Bigl(\max_{\dvec x\in r} \cvec f(\dvec x) - + \min_{\dvec x\in r} \cvec f(\dvec x)\Bigr)\,, +\end{equation} +where $V(r)$ is the volume of region $r$. What sets Divonne apart from +Suave is that the minimum and maximum of the integrand are sought using +methods from numerical optimization. Particularly in high dimensions, +the chance that one of the previously sampled points lies in or even +close to the true extremum is fairly small. + +On the other hand, the numerical minimization is beset with the usual +pitfalls, \ie starting from the lowest of a (relatively small) number of +sampled points, Divonne will move directly into the local minimum +closest to the starting point, which may or may not be close to the +absolute minimum. + +Divonne is a lot more complex than Suave and Vegas but also +significantly faster for many integrands. For details on the methods +used in Divonne please consult the original references \cite{Divonne}. +New features with respect to the CERNLIB version (Divonne 4) are: +\begin{itemize} +\item +Integration is possible in dimensions 2 through 33 (not 9 as before). +Going to higher dimensions is a matter of extending internal tables +only. + +\item +The possibility has been added to specify the location of possible +peaks, if such are known from analytical considerations. The idea here +is to help the integrator find the extrema of the integrand, and narrow +peaks in particular are a challenge for the algorithm. Even if only the +approximate location is known, this feature of hinting the integrator +can easily cut an order of magnitude out of the number of samples needed +to reach the required accuracy for complicated integrands. The points +can be specified either statically, by passing a list of points at the +invocation, or dynamically, through a subroutine called for each +subregion. + +\item +Often the integrand function cannot sample points lying on or very +close to the integration border. This can be a problem with Divonne +which actively searches for the extrema of the integrand and homes in on +peaks regardless of whether they lie on the border. The user may +however specify a border region in which integrand values are not +obtained directly, but extrapolated from two points inside the `safe' +interior. + +\item +The present algorithm works in three phases, not two as before. Phase 1 +performs the partitioning as outlined above. From the preliminary +results obtained in this phase, Divonne estimates the number of samples +necessary to reach the desired accuracy in phase 2, the final +integration phase. Once the phase-2 sample for a particular subregion +is in, a $\chi^2$ test is used to assess whether the two sample averages +are consistent with each other within their error bounds. Subregions +which fail this test move on to phase 3, the refinement phase, where +they can be subdivided again or sampled a third time with more points, +depending on the parameters set by the user. + +\item +For all three phases the user has a selection of methods to obtain the +integral estimate: a Korobov \cite{Korobov} or Sobol \cite{Sobol} +quasi-random sample of given size, a Mersenne Twister +\cite{MersenneTwister} or Ranlux \cite{Ranlux} pseudo-random sample of +given size, and the cubature rules of Genz and Malik \cite{GenzMalik} +of degree 7, 9, 11, and 13 that are also used in Cuhre. The latter are +embedded rules and hence provide an intrinsic error estimate (that is, +an error estimate not based on the spread). When this independent +error estimate is available, it supersedes the spread-based error when +computing the total error. Also, regions whose spread-based error +exceeds the intrinsic error are selected for refinement, too. + +In spite of these novel options, the cubature rules of the original +Divonne algorithm were not implemented. +\end{itemize} + +Due to its complexity, the new Divonne implementation was painstakingly +tested against the CERNLIB routine to make sure it produces the same +results before adding the new features. + +%======================================================================== + +\section{Cuhre} + +Cuhre is a deterministic algorithm which uses one of several cubature +rules of polynomial degree in a globally adaptive subdivision scheme. +The subdivision algorithm is similar to Suave's (see Sect.\ +\ref{sect:suavemain}) and works as follows: + +While the total estimated error exceeds the requested bounds: + +1) choose the region with the largest estimated error, + +2) bisect this region along the axis with the largest fourth + difference, + +3) apply the cubature rule to the two subregions, + +4) merge the subregions into the list of regions and update the + totals. + +Details on the algorithm and on the cubature rules employed in Cuhre can +be found in the original references \cite{dcuhre}. The present +implementation offers only superficial improvements, such as an +interface consistent with the other \cuba\ routines and a slightly +simpler invocation, \eg one does not have to allocate a workspace. + +In moderate dimensions Cuhre is very competitive, particularly if the +integrand is well approximated by polynomials. As the dimension +increases, the number of points sampled by the cubature rules rises +considerably, however, and by the same token the usefulness declines. +For the lower dimensions, the actual number of points that are spent per +invocation of the basic integration rule are listed in the following +table. +\begin{center} +\begin{tabular}{l|ccccccccc} +number of dimensions & + 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 \\ \hline +points in degree-7 rule & + 65 & 103 & 161 & 255 & 417 & 711 & 1265 & 2335 & 4433 \\ +points in degree-9 rule & + 153 & 273 & 453 & 717 & 1105 & 1689 & 2605 & 4117 & 6745 +\end{tabular} +\end{center} + +%======================================================================== + +\section{Download and Compilation} + +The \cuba\ package can be downloaded from +\Code{http://feynarts.de/cuba}. The gzipped tar file unpacks into +a directory \Code{Cuba-$m$.$n$}. Change into this directory and type +\begin{verbatim} + ./configure + make +\end{verbatim} +This should create +\begin{tabbing} +\verb= =\Code{libcuba.a} \hspace{10em} +\= --- the \cuba\ library, \\ +\verb= =\Code{Vegas}, \Code{Suave}, \Code{Divonne}, \Code{Cuhre} +\> --- the MathLink executables, \\ +\verb= =\Code{demo-c}, \Code{demo-fortran} +\> --- the demonstration programs, \\ +\verb= =\Code{partview} +\> --- the partition viewer. +\end{tabbing} +\cuba\ can also be built in parts: ``make lib'' builds only the \cuba\ +library, ``make math'' builds only the MathLink executables, ``make +demos'' builds only the demo programs, and ``make tools'' builds only +the partition viewer. + +The MathLink executables require mcc, the MathLink compiler, and the +partition viewer needs Qt. Compilation of the corresponding parts will +be switched off by default if configure does not find these tools. + +Besides the usual autoconf options, configure understands +\begin{itemize} +\item +\Code{--with-maxdim=\Var{n_d^{\text{max}}}} sets an upper limit on the +number of dimensions. + +\item +\Code{--with-maxcomp=\Var{n_c^{\text{max}}}} sets an upper limit on the +number of components. + +\item +\Code{--with-real=10} uses \Code{long double} instead of \Code{double} +for all real variables. On x86 hardware this typically corresponds to +80-bit extended precision (\Code{REAL*10}). Resulting files are +suffixed with `$\ell$' (\Code{libcubal.a}, \Code{cubal.h}, +\Code{Vegasl}, etc.). + +\item +\Code{--with-real=16} uses \Code{\uscore\uscore float128} (128-bit +quadruple precision, \Code{REAL*16}) for all real variables. This +requires gcc version 4.6 or higher. No MathLink executables are built +in this case as no MathLink functions are available for this type. +Resulting files are suffixed with `q' (\Code{libcubaq.a}, +\Code{cubaq.h}). +\end{itemize} + +Linking Fortran or C/C++ code that uses one of the algorithms is +straightforward, just add \Code{-lcuba} (for the \cuba\ library) and +\Code{-lm} (for the math library) to the compiler command line, as in +\begin{verbatim} + f77 -o myexecutable mysource.f -lcuba -lm + cc -o myexecutable mysource.c -lcuba -lm +\end{verbatim} +The \Code{demo} subdirectory contains the source for the demonstration +programs in Fortran 77, C, and Mathematica, as well as the test suite +used in Sect.~\ref{sect:tests}, which is also written in Mathematica. + +%======================================================================== + +\section{User Manual} + +\subsection{Usage in Fortran} + +Although written in C, the declarations have been chosen such that the +routines are directly accessible from Fortran, \ie no wrapper code is +needed. In fact, Vegas, Suave, Divonne, and Cuhre can be called as if +they were Fortran subroutines respectively declared as +\begin{verbatim} + subroutine vegas(ndim, ncomp, integrand, userdata, nvec, + & epsrel, epsabs, flags, seed, mineval, maxeval, + & nstart, nincrease, nbatch, gridno, statefile, spin, + & neval, fail, integral, error, prob) +\end{verbatim} +\begin{verbatim} + subroutine suave(ndim, ncomp, integrand, userdata, nvec, + & epsrel, epsabs, flags, seed, mineval, maxeval, + & nnew, nmin, flatness, statefile, spin, + & nregions, neval, fail, integral, error, prob) +\end{verbatim} +\begin{verbatim} + subroutine divonne(ndim, ncomp, integrand, userdata, nvec, + & epsrel, epsabs, flags, seed, mineval, maxeval, + & key1, key2, key3, maxpass, + & border, maxchisq, mindeviation, + & ngiven, ldxgiven, xgiven, nextra, peakfinder, + & statefile, spin, + & nregions, neval, fail, integral, error, prob) +\end{verbatim} +\begin{verbatim} + subroutine cuhre(ndim, ncomp, integrand, userdata, nvec, + & epsrel, epsabs, flags, mineval, maxeval, + & key, statefile, spin, + & nregions, neval, fail, integral, error, prob) +\end{verbatim} + + +\subsubsection{Common Arguments} +\label{sect:commonargs} + +\begin{itemize} +\VarIn{integer ndim} +the number of dimensions of the integral. + +\VarIn{integer ncomp} +the number of components of the integrand. + +\VarIn{integer integrand} +the integrand. The external function which computes the +integrand is expected to be declared as +\begin{verbatim} + integer function integrand(ndim, x, ncomp, f, userdata, nvec, core) + integer ndim, ncomp, nvec, core + double precision x(ndim,nvec), f(ncomp,nvec) +\end{verbatim} +The integrand receives \Code{nvec} samples in \Code{x} and is supposed +to fill the array \Code{f} with the corresponding integrand values. +Note that \Code{nvec} indicates the actual number of points passed to +the integrand here and may be smaller than the \Code{nvec} given to the +integrator. + +The return value is irrelevant unless it is $-999$, in the case of which +the integration will be aborted immediately. This might happen if a +parameterized integrand turns out not to yield sensible values for a +particular parameter set (passed \eg through \Code{userdata}). + +The worker process the integrand is running on is indicated in +\Code{core}, where $\Code{core} < 0$ indicates an Accelerator, +$\Code{core}\geqslant 0$ a regular (CPU) core, and \Code{32768} the +master itself (more details in Sect.~\ref{sect:cores}). + +The latter three arguments, \Code{userdata}, \Code{nvec}, and +\Code{core} are optional and may be omitted if unused, \ie the integrand +is minimally declared (for $\Code{nvec} = 1$) as +\begin{verbatim} + integer function integrand(ndim, x, ncomp, f) + integer ndim, ncomp + double precision x(ndim), f(ncomp) +\end{verbatim} + +\VarIn{(arbitrary type) userdata} +user data passed to the integrand. Unlike its counterpart in the +integrand definition, this argument must be present though it may +contain a dummy value, \eg \Code{0}. + +\VarIn{integer nvec} +The maximum number of points to be given to the integrand +routine in each invocation. Usually this is 1 but if the integrand +can profit from \eg SIMD vectorization, a larger value can be chosen. + +\VarIn{double precision epsrel, epsabs} +the requested relative and absolute accuracies. +The integrator tries to find an estimate $\hat I$ for the integral $I$ +which for every component $c$ fulfills $|\hat I_c - I_c|\leqslant +\max(\epsabs, \epsrel |I_c|)$. + +\VarIn{integer flags} +flags governing the integration: +\begin{itemize} +\item Bits 0 and 1 are taken as the verbosity level, \ie 0 to 3, +unless the \Code{CUBAVERBOSE} environment variable contains an even +higher value (used for debugging). + +Level 0 does not print any output, level 1 prints `reasonable' +information on the progress of the integration, level 2 also echoes the +input parameters, and level 3 further prints the subregion results (if +applicable). + +\item Bit 2 = 0, +all sets of samples collected on a subregion during the various +iterations or phases contribute to the final result. + +Bit 2 = 1, +only the last (largest) set of samples is used in the final result. + +\item (Vegas and Suave only) + +Bit 3 = 0, +apply additional smoothing to the importance function, this moderately +improves convergence for many integrands, + +Bit 3 = 1, +use the importance function without smoothing, this should be chosen if +the integrand has sharp edges. + +\item Bit 4 = 0, +delete the state file (if one is chosen) when the integration terminates +successfully, + +Bit 4 = 1, +retain the state file. + +\item +(Vegas only) + +Bit 5 = 0, +take the integrator's state from the state file, if one is present. + +Bit 5 = 1, +reset the integrator's state even if a state file is present, \ie +keep only the grid. Together with Bit 4 this allows a grid adapted by +one integration to be used for another integrand. + +\item Bits 8--31 =: \Code{level} determines the random-number generator +(see below). +\end{itemize} + +To select \eg last samples only and verbosity level 2, pass 6 = 4 + 2 +for the flags. + +\VarIn{integer seed} +the seed for the pseudo-random-number generator. + +The random-number generator is chosen as follows: +\begin{center} +\begin{tabular}{l|l|l} +\Code{seed} & \Code{level} & Generator \\ +& {\small (bits 8--31 of \Code{flags})} & \\ \hline +zero & N/A & Sobol (quasi-random), \\ +non-zero & zero & Mersenne Twister (pseudo-random), \\ +non-zero & non-zero & Ranlux (pseudo-random). +\end{tabular} +\end{center} + +Ranlux implements Marsaglia and Zaman's 24-bit RCARRY algorithm with +generation period $p$, \ie for every 24 generated numbers used, another +$p - 24$ are skipped. The luxury level is encoded in \Code{level} as +follows: +\begin{itemize} +\item Level 1 ($p = 48$): + very long period, passes the gap test but fails spectral test. +\item Level 2 ($p = 97$): + passes all known tests, but theoretically still defective. +\item Level 3 ($p = 223$): + any theoretically possible correlations have very small + chance of being observed. +\item Level 4 ($p = 389$): + highest possible luxury, all 24 bits chaotic. +\end{itemize} +Levels 5--23 default to 3, values above 24 directly specify the period +$p$. Note that Ranlux's original level 0, (mis)used for selecting +Mersenne Twister in \cuba, is equivalent to \Code{level = 24}. + +\VarIn{integer mineval} +the minimum number of integrand evaluations required. + +\VarIn{integer maxeval} +the (approximate) maximum number of integrand evaluations allowed. + +\VarIn{character*(*) statefile} +a filename for storing the internal state. To not store the internal +state, put \Code{""} (empty string) or \Code{\%VAL(0)} (null pointer). + +\cuba\ can store its entire internal state (\ie all the information to +resume an interrupted integration) in an external file. The state file +is updated after every iteration. If, on a subsequent invocation, a +\cuba\ routine finds a file of the specified name, it loads the internal +state and continues from the point it left off. Needless to say, using +an existing state file with a different integrand generally leads to +wrong results. + +This feature is useful mainly to define `check-points' in long-running +integrations from which the calculation can be restarted. + +Once the integration reaches the prescribed accuracy, the state file +is removed, unless bit 4 of \Code{flags} (see above) explicitly requests +that it be kept. + +\VarIn{integer*8 spin} +the `spinning cores' pointer, which has three options: +\begin{itemize} +\item A value of \Code{-1} or \Code{\%VAL(0)} (null pointer) means that +the integrator completely takes care of starting and terminating child +processes for the integration (if available/enabled), \ie after the +integrator returns there are no child processes running any longer. +Note that a `naive' \Code{-1} (which is an \Code{integer}, not an +\Code{integer*8}) is explicitly allowed. + +\item A zero-initialized variable \Code{spin} instructs the integrator +to start child processes for the integration but keep them running and +store the `spinning cores' pointer in \Code{spin} on exit. Take care +that in this case you have to explicitly terminate the child processes +using \Code{cubawait} later on (see Sect.~\ref{sect:spinning}). + +\item A non-zero variable \Code{spin} means that the cores are already +running as the result of some prior integration or an explicit +\Code{cubafork} call (see Sect.~\ref{sect:spinning}). +\end{itemize} +The actual type of \Code{spin} is irrelevant, the variable must merely +be wide enough to store a C \Code{void *}. + +\VarOut{integer nregions} +the actual number of subregions needed (not present in Vegas). + +\VarOut{integer neval} +the actual number of integrand evaluations needed. + +\VarOut{integer fail} +an error flag: +\begin{itemize} +\item +$\Code{fail} = 0$, the desired accuracy was reached, +\item +$\Code{fail} = -1$, dimension out of range, +\item +$\Code{fail} > 0$, the accuracy goal was not met within the allowed +maximum number of integrand evaluations. While Vegas, Suave, and Cuhre +simply return 1, Divonne can estimate the number of points by which +\Code{maxeval} needs to be increased to reach the desired accuracy and +returns this value. +\end{itemize} + +\VarOut{double precision integral(ncomp)} +the integral of \Code{integrand} over the unit hypercube. + +\VarOut{double precision error(ncomp)} +the presumed absolute error of \Code{integral}. + +\VarOut{double precision prob(ncomp)} +the $\chi^2$-probability (not the $\chi^2$-value itself!) that +\Code{error} is not a reliable estimate of the true integration +error\footnote{% + To judge the reliability of the result expressed through + \Code{prob}, remember that it is the null hypothesis that is + tested by the $\chi^2$ test, which is that \Code{error} + \emph{is} a reliable estimate. In statistics, the null + hypothesis may be rejected only if \Code{prob} is fairly close + to unity, say $\Code{prob} > .95$.}. +\end{itemize} + + +\subsubsection{Vegas-specific Arguments} +\label{sect:vegasargs} + +\begin{itemize} +\VarIn{integer nstart} +the number of integrand evaluations per iteration to start with. + +\VarIn{integer nincrease} +the increase in the number of integrand evaluations per iteration. + +\VarIn{integer nbatch} +the batch size for sampling. + +Vegas samples points not all at once, but in batches of size +\Code{nbatch}, to avoid excessive memory consumption. 1000 is a +reasonable value, though it should not affect performance too much. + +\VarIn{integer gridno} +the slot in the internal grid table. + +It may accelerate convergence to keep the grid accumulated during one +integration for the next one, if the integrands are reasonably similar +to each other. Vegas maintains an internal table with space for ten +grids for this purpose. The slot in this grid is specified by +\Code{gridno}. + +If a grid number between 1 and 10 is selected, the grid is not discarded +at the end of the integration, but stored in the respective slot of the +table for a future invocation. The grid is only re-used if the +dimension of the subsequent integration is the same as the one it +originates from. + +In repeated invocations it may become necessary to flush a slot in +memory, in which case the negative of the grid number should be set. +\end{itemize} + +Vegas actually passes the integrand two more arguments, \ie the +integrand function is really declared as +\begin{verbatim} + integer function integrand(ndim, x, ncomp, f, userdata, nvec, core, + weight, iter) + integer ndim, ncomp, nvec, core, iter + double precision x(ndim,nvec), f(ncomp,nvec), weight(nvec) +\end{verbatim} +where \Code{weight} contains the weight of the point being sampled and +\Code{iter} the current iteration number. These extra arguments may +safely be ignored, however. + + +\subsubsection{Suave-specific Arguments} + +\begin{itemize} +\VarIn{integer nnew} +the number of new integrand evaluations in each subdivision. + +\VarIn{integer nmin} +the minimum number of samples a former pass must contribute to a +subregion to be considered in that region's compound integral value. +Increasing \Code{nmin} may reduce jumps in the $\chi^2$ value. + +\VarIn{double precision flatness} +the parameter $p$ in Eq.~(\ref{eq:fluct}), \ie the type of norm used to +compute the fluctuation of a sample. This determines how prominently +`outliers,' \ie individual samples with a large fluctuation, figure in +the total fluctuation, which in turn determines how a region is split +up. As suggested by its name, \Code{flatness} should be chosen large +for `flat' integrands and small for `volatile' integrands with high +peaks. Note that since \Code{flatness} appears in the exponent, one +should not use too large values (say, no more than a few hundred) lest +terms be truncated internally to prevent overflow. +\end{itemize} + +Like Vegas, Suave also passes the two optional arguments \Code{weight} +and \Code{iter} to the integrand (see Sect.~\ref{sect:vegasargs}). + + +\subsubsection{Divonne-specific Arguments} +\label{sect:divonneargs} + +\begin{itemize} +\VarIn{integer key1} +determines sampling in the partitioning phase: + +$\Code{key1} = 7, 9, 11, 13$ selects the cubature rule of degree +\Code{key1}. Note that the degree-11 rule is available only in 3 +dimensions, the degree-13 rule only in 2 dimensions. + +For other values of \Code{key1}, a quasi-random sample of +$n_1 = |\Code{key1}|$ points is used, where the sign of \Code{key1} +determines the type of sample, +\begin{itemize} +\item +$\Code{key1} > 0$, use a Korobov quasi-random sample, +\item +$\Code{key1} < 0$, use a ``standard'' sample +(a Sobol quasi-random sample if \Code{seed} = 0, otherwise a +pseudo-random sample). +\end{itemize} + +\VarIn{integer key2} +determines sampling in the final integration phase: + +$\Code{key2} = 7, 9, 11, 13$ selects the cubature rule of degree +\Code{key2}. Note that the degree-11 rule is available only in 3 +dimensions, the degree-13 rule only in 2 dimensions. + +For other values of \Code{key2}, a quasi-random sample is used, where +the sign of \Code{key2} determines the type of sample, +\begin{itemize} +\item +$\Code{key2} > 0$, use a Korobov quasi-random sample, +\item +$\Code{key2} < 0$, use a ``standard'' sample (see description of +\Code{key1} above), +\end{itemize} +and $n_2 = |\Code{key2}|$ determines the number of points, +\begin{itemize} +\item +$n_2\geqslant 40$, sample $n_2$ points, +\item +$n_2 < 40$, sample $n_2\,\nneed$ points, where $\nneed$ is the number of +points needed to reach the prescribed accuracy, as estimated by Divonne +from the results of the partitioning phase. +\end{itemize} + +\VarIn{integer key3} +sets the strategy for the refinement phase: + +$\Code{key3} = 0$, do not treat the subregion any further. + +$\Code{key3} = 1$, split the subregion up once more. + +Otherwise, the subregion is sampled a third time with \Code{key3} +specifying the sampling parameters exactly as \Code{key2} above. + +\VarIn{integer maxpass} +controls the thoroughness of the partitioning phase: +The partitioning phase terminates when the estimated total number of +integrand evaluations (partitioning plus final integration) does not +decrease for \Code{maxpass} successive iterations. + +A decrease in points generally indicates that Divonne discovered new +structures of the integrand and was able to find a more effective +partitioning. \Code{maxpass} can be understood as the number of +`safety' iterations that are performed before the partition is accepted +as final and counting consequently restarts at zero whenever new +structures are found. + +\VarIn{double precision border} +the width of the border of the integration region. Points falling into +this border region will not be sampled directly, but will be +extrapolated from two samples from the interior. Use a non-zero +\Code{border} if the integrand function cannot produce values +directly on the integration boundary. + +\VarIn{double precision maxchisq} +the maximum $\chi^2$ value a single subregion is allowed to have in the +final integration phase. Regions which fail this $\chi^2$ test and +whose sample averages differ by more than \Code{mindeviation} move on +to the refinement phase. + +\VarIn{double precision mindeviation} +a bound, given as the fraction of the requested error of the entire +integral, which determines whether it is worthwhile further examining a +region that failed the $\chi^2$ test. Only if the two sampling averages +obtained for the region differ by more than this bound is the region +further treated. + +\VarIn{integer ngiven} +the number of points in the \Code{xgiven} array. + +\VarIn{integer ldxgiven} +the leading dimension of \Code{xgiven}, \ie the offset between one +point and the next in memory. + +\VarIn{double precision xgiven(ldxgiven,ngiven)} +a list of points where the integrand might have peaks. Divonne will +consider these points when partitioning the integration region. The +idea here is to help the integrator find the extrema of the integrand in +the presence of very narrow peaks. Even if only the approximate +location of such peaks is known, this can considerably speed up +convergence. + +\VarIn{integer nextra} +the maximum number of extra points the peak-finder subroutine will +return. If \Code{nextra} is zero, \Code{peakfinder} is not called +and an arbitrary object may be passed in its place, \eg just 0. + +\VarIn{external peakfinder} +the peak-finder subroutine. This subroutine is called whenever a region +is up for subdivision and is supposed to point out possible peaks lying +in the region, thus acting as the dynamic counterpart of the static list +of points supplied in \Code{xgiven}. It is expected to be declared as +\begin{verbatim} + subroutine peakfinder(ndim, b, n, x, userdata) + integer ndim, n + double precision b(2,ndim) + double precision x(ldxgiven,n) +\end{verbatim} +The bounds of the subregion are passed in the array \Code{b}, where +\Code{b(1,\Var{d})} is the lower and \Code{b(2,\Var{d})} the upper +bound in dimension \Var{d}. On entry, \Code{n} specifies the maximum +number of points that may be written to \Code{x}. On exit, \Code{n} +must contain the actual number of points in \Code{x}. +\end{itemize} +Divonne actually passes the integrand one more argument, \ie the +integrand function is really declared as +\begin{verbatim} + integer function integrand(ndim, x, ncomp, f, userdata, nvec, core, phase) + integer ndim, ncomp, nvec, core, phase + double precision x(ndim,nvec), f(ncomp,nvec) +\end{verbatim} +The last argument, \Code{phase}, indicates the integration phase: +\begin{itemize} +\item 0, sampling of the points in \Code{xgiven}, +\item 1, partitioning phase, +\item 2, final integration phase, +\item 3, refinement phase. +\end{itemize} +This information might be useful if the integrand takes long to compute +and a sufficiently accurate approximation of the integrand is available. +The actual value of the integral is only of minor importance in the +partitioning phase, which is instead much more dependent on the peak +structure of the integrand to find an appropriate tessellation. An +approximation which reproduces the peak structure while leaving out the +fine details might hence be a perfectly viable and much faster +substitute when $\Code{phase} < 2$. + +In all other instances, \Code{phase} can be ignored and it is +entirely admissible to define the integrand without it. + + +\subsubsection{Cuhre-specific Arguments} + +\begin{itemize} +\VarIn{integer key} +chooses the basic integration rule: + +$\Code{key} = 7, 9, 11, 13$ selects the cubature rule of degree +\Code{key}. Note that the degree-11 rule is available only in 3 +dimensions, the degree-13 rule only in 2 dimensions. + +For other values, the default rule is taken, which is the degree-13 rule +in 2 dimensions, the degree-11 rule in 3 dimensions, and the degree-9 +rule otherwise. +\end{itemize} + + +\subsubsection{Visualizing the Tessellation} + +Suave, Divonne, and Cuhre work by dividing the integration region into +subregions for integration. When verbosity level 3 is selected in the +flags, the actual tessellation is written out on screen and can be +visualized with the partview tool. To this end, the output of the +program invoking \cuba\ is piped through partview, \eg +\begin{verbatim} + mycubaprogram | partview 1 2 1 3 +\end{verbatim} +opens a window with two tabs showing the 1--2 and 1--3 plane of the +tessellation. The saturation of the colours corresponds to the area of +the region, \ie smaller regions are displayed in a darker shade. + + +\subsection{Usage in C/C++} + +Being written in C, the algorithms can of course be used in C/C++ +directly. The declarations are as follows: +\begin{verbatim} +typedef int (*integrand_t)(const int *ndim, const double x[], + const int *ncomp, double f[], void *userdata); + +typedef void (*peakfinder_t)(const int *ndim, const double b[], + int *n, double x[], void *userdata); +\end{verbatim} +\begin{verbatim} +void Vegas(const int ndim, const int ncomp, + integrand_t integrand, void *userdata, const int nvec, + const double epsrel, const double epsabs, + const int flags, const int seed, + const int mineval, const int maxeval, + const int nstart, const int nincrease, const int nbatch, + const int gridno, const char *statefile, void *spin, + int *neval, int *fail, + double integral[], double error[], double prob[]) +\end{verbatim} +\begin{verbatim} +void Suave(const int ndim, const int ncomp, + integrand_t integrand, void *userdata, const int nvec, + const double epsrel, const double epsabs, + const int flags, const int seed, + const int mineval, const int maxeval, + const int nnew, const int nmin, + const double flatness, const char *statefile, void *spin, + int *nregions, int *neval, int *fail, + double integral[], double error[], double prob[]) +\end{verbatim} +\begin{verbatim} +void Divonne(const int ndim, const int ncomp, + integrand_t integrand, void *userdata, const int nvec, + const double epsrel, const double epsabs, + const int flags, const int seed, + const int mineval, const int maxeval, + const int key1, const int key2, const int key3, + const int maxpass, const double border, + const double maxchisq, const double mindeviation, + const int ngiven, const int ldxgiven, double xgiven[], + const int nextra, peakfinder_t peakfinder, + const char *statefile, void *spin, + int *nregions, int *neval, int *fail, + double integral[], double error[], double prob[]) +\end{verbatim} +\begin{verbatim} +void Cuhre(const int ndim, const int ncomp, + integrand_t integrand, void *userdata, const int nvec, + const double epsrel, const double epsabs, + const int flags, + const int mineval, const int maxeval, + const int key, const char *statefile, void *spin, + int *nregions, int *neval, int *fail, + double integral[], double error[], double prob[]) +\end{verbatim} +These prototypes are contained in \Code{cuba.h} which should (in C) or +must (in C++) be included when using the \cuba\ routines. The arguments +are as in the Fortran case, with the obvious translations, \eg +\Code{double precision} = \Code{double}. Note, however, the +declarations of the integrand and peak-finder functions, which expect +pointers to integers rather than integers. This is required for +compatibility with Fortran. + +The \verb=integrand_t= type glosses over the fact that the extra +\Code{nvec} argument is routinely passed to the integrand and neither +does it mention the extra arguments passed by \Code{Vegas}, +\Code{Suave}, and \Code{Divonne} (see Sects.\ \ref{sect:vegasargs} and +\ref{sect:divonneargs}). This is usually just what is needed for +`simple' invocations, \ie with the `correct' prototypes the compiler +would only generate unnecessary warnings (in C) or errors (in C++). In +the rare cases where the integrand actually has more arguments, an +explicit typecast to \verb=integrand_t= must be used in the invocation. +In the presence of an \Code{nvec} argument, the \Code{x} and \Code{f} +arguments are actually two-dimensional arrays, \Code{x[*nvec][*ndim]} +and \Code{f[*nvec][*ncomp]}. + + +\subsection{Usage in Mathematica} + +The Mathematica versions are based on essentially the same C code and +communicate with Mathematica via the MathLink API. When building the +package, the executables \Code{Vegas}, \Code{Suave}, +\Code{Divonne}, and \Code{Cuhre} are compiled for use in +Mathematica. In Mathematica one first needs to load them with the +\Code{Install} function, as in +\begin{verbatim} + Install["Divonne"] +\end{verbatim} +which makes a Mathematica function of the same name available. These +functions are used almost like \Code{NIntegrate}, only some options +are different. For example, +\begin{verbatim} + Vegas[x^2/(Cos[x + y + 1] + 5), {x,0,5}, {y,0,5}] +\end{verbatim} +integrates a scalar function, or +\begin{verbatim} + Suave[{Sin[z] Exp[-x^2 - y^2], + Cos[z] Exp[-x^2 - y^2]}, {x,-1,1}, {y,-1,3}, {z,0,1}] +\end{verbatim} +integrates a vector. As is evident, the integration region can be +chosen different from the unit hypercube. Innermore boundaries may +depend on outermore integration variables, \eg +\verb=Cuhre[1, {x,0,1}, {y,0,x}]= gives the area of the unit triangle. + +The sampling function uses \Code{MapSample} to map the integrand over +the data points. This is by default set to \Code{Map}, but can be +changed (after \Code{Install}) \eg to \Code{ParallelMap} to take +advantage of parallelization (see Sect.~\ref{sect:parallel} for more +details). + +The functions return a list which contains the results for each +component of the integrand in a sublist \{integral estimate, estimated +absolute error, $\chi^2$ probability\}. For the Suave example above +this would be +\begin{verbatim} + {{1.1216, 0.000991577, 0.0000104605}, + {2.05246, 0.00146661, 0.00920716}} +\end{verbatim} +The other parameters are specified via the following options. Default +values are given on the right-hand sides of the rules. + + +\subsubsection{Common Options} + +\begin{itemize} +\Option{PrecisionGoal}{3} +the number of digits of relative accuracy to seek, that is, $\epsrel = +10^{-\Code{PrecisionGoal}}$. + +\Option{AccuracyGoal}{12} +the number of digits of absolute accuracy to seek, that is, $\epsabs = +10^{-\Code{AccuracyGoal}}$. The integrator tries to find an estimate +$\hat I$ for the integral $I$ which for every component $c$ fulfills +$|\hat I_c - I_c|\leqslant \max(\epsabs, \epsrel I_c)$. + +\Option{MinPoints}{0} +the minimum number of integrand evaluations required. + +\Option{MaxPoints}{50000} +the (approximate) maximum number of integrand evaluations allowed. + +\Option{Verbose}{1} +how much information to print on intermediate results, can take values +from 0 to 3. + +Level 0 does not print any output, level 1 prints `reasonable' +information on the progress of the integration, level 2 also echoes the +input parameters, and level 3 further prints the subregion results (if +applicable). Note that the subregion boundaries in the level-3 printout +refer to the unit hypercube, \ie are possibly scaled with respect to the +integration limits passed to Mathematica. This is because the +underlying C code, which emits the output, is unaware of any scaling of +the integration region, which is done entirely in Mathematica. + +\Option{Final}{All \Var{or} Last} +whether only the last (largest) or all sets of samples collected on a +subregion during the various iterations or phases contribute to the +final result. + +\Option{PseudoRandom}{False} +whether pseudo-random numbers are used for sampling instead of Sobol +quasi-random numbers. Values \Code{True} and \Code{0} select the +Mersenne Twister algorithm, any other integer $n$ chooses Ranlux with +luxury level $n$ (see Sect.~\ref{sect:commonargs}). + +\Option{PseudoRandomSeed}{Automatic} +the seed for the pseudo-random-number generator. + +\Option{Regions}{False} +whether to return the tessellation of the integration region (thus not +present in Vegas, which does not partition the integration region). + +If \Code{Regions -> True} is chosen, a two-component list is returned, +where the first element is the list of regions, and the second element +is the integration result as described above. Each region is specified +in the form \Code{Region[\Var{x_{\mathrm{ll}}},\,\Var{x_{\mathrm{ur}}},% +\,\Var{res},\,\Var{df}]}, where \Var{x_{\text{ll}}} and +\Var{x_{\text{ur}}} are the multidimensional equivalents of the lower +left and upper right corner, \Var{res} is the integration result for the +subregion, given in the same form as the total result but with the +$\chi^2$ value instead of the $\chi^2$ probability, and \Var{df} are the +degrees of freedom corresponding to the $\chi^2$ values. + +Cuhre cannot state a $\chi^2$ value separately for each region, hence +the $\chi^2$ values and degrees of freedom are omitted from the +\Code{Region} information. + +\Option{StateFile}{""} +the file name for storing the internal state. If a non-empty string is +given here, Vegas will store its entire internal state (\ie all the +information to resume an interrupted integration) in this file after +every iteration. If, on a subsequent invocation, Vegas finds a file of +the specified name, it loads the internal state and continues from the +point it left off. Needless to say, using an existing state file with a +different integrand generally leads to wrong results. + +This feature is useful mainly to define `check-points' in long-running +integrations from which the calculation can be restarted. + +\Option{RetainStateFile}{False} +whether the state file shall be kept even if the integration terminates +normally, \ie reaches either the prescribed accuracy or the maximum +number of points. + +\Option{Compiled}{True} +whether to compile the integrand function before use. Note two caveats: +\begin{itemize} +\item +The function values still have to pass through the MathLink interface, +and in the course of this are truncated to machine precision. Not +compiling the integrand will thus in general not deliver more accurate +results. +\item +Compilation should be switched off if the compiled integrand shows +unexpected behaviour. As the Mathematica online help points out, ``the +number of times and the order in which objects are evaluated by +\Code{Compile} may be different from ordinary Mathematica code.'' +\end{itemize} +\end{itemize} + + +\subsubsection{Vegas-specific Options} + +\begin{itemize} +\Option{NStart}{1000} +the number of integrand evaluations per iteration to start with. + +\Option{NIncrease}{500} +the increase in the number of integrand evaluations per iteration. + +\Option{NBatch}{1000} +the number of points sent in one MathLink packet to be sampled by +Mathematica. This setting will at most affect performance and should +not normally need to be changed. + +\Option{GridNo}{0} +the slot in the internal grid table. + +It may accelerate convergence to keep the grid accumulated during one +integration for the next one, if the integrands are reasonably similar +to each other. Vegas maintains an internal table with space for ten +grids for this purpose. If a \Code{GridNo} between 1 and 10 is chosen, +the grid is not discarded at the end of the integration, but stored for +a future invocation. The grid is only re-used if the dimension of the +subsequent integration is the same as the one it originates from. +A negative grid number initializes the indicated slot before the +integration (for details see Sect.~\ref{sect:vegasargs}). + +\Option{ResetState}{False} +whether the integrator's state should be reset even if a state file is +present, \ie only the grid be kept. Together with the +\Code{RetainStateFile} option this allows a grid adapted by one +integration to be used for another integrand. + +\item +During the evaluation of the integrand, the global variable +\Code{\$Weight} is set to the weight of the point being sampled and +\Code{\$Iteration} to the current iteration number. +\end{itemize} + + +\subsubsection{Suave-specific Options} + +\begin{itemize} +\Option{NNew}{1000} +the number of new integrand evaluations in each subdivision. + +\Option{NMin}{2} +the minimum number of samples a former pass must contribute to a +subregion to be considered in that region's compound integral value. +Increasing \Code{NMin} may reduce jumps in the $\chi^2$ value. + +\Option{Flatness}{50} +the parameter $p$ in Eq.~(\ref{eq:fluct}), \ie the type of norm used to +compute the fluctuation of a sample. This determines how prominently +`outliers,' \ie individual samples with a large fluctuation, figure in +the total fluctuation, which in turn determines how a region is split +up. As suggested by its name, \Code{Flatness} should be chosen large +for `flat' integrands and small for `volatile' integrands with high +peaks. Note that since \Code{Flatness} appears in the exponent, one +should not use too large values (say, no more than a few hundred) lest +terms be truncated internally to prevent overflow. + +\item +During the evaluation of the integrand, the global variable +\Code{\$Weight} is set to the weight of the point being sampled and +\Code{\$Iteration} to the current iteration number. +\end{itemize} + + +\subsubsection{Divonne-specific Options} + +\begin{itemize} +\Option{Key1}{47} +an integer which governs sampling in the partitioning phase: + +$\Code{Key1} = 7, 9, 11, 13$ selects the cubature rule of degree +\Code{Key1}. Note that the degree-11 rule is available only in 3 +dimensions, the degree-13 rule only in 2 dimensions. + +For other values of \Code{Key1}, a quasi-random sample of +$n_1 = |\Code{Key1}|$ points is used, where the sign of \Code{Key1} +determines the type of sample, +\begin{itemize} +\item +$\Code{Key1} > 0$, use a Korobov quasi-random sample, +\item +$\Code{Key1} < 0$, use a ``standard'' sample +(a Sobol quasi-random sample in the case \Code{PseudoRandom -> False}, +otherwise a pseudo-random sample). +\end{itemize} + +\Option{Key2}{1} +an integer which governs sampling in the final integration phase: + +$\Code{Key2} = 7, 9, 11, 13$ selects the cubature rule of degree +\Code{Key2}. Note that the degree-11 rule is available only in 3 +dimensions, the degree-13 rule only in 2 dimensions. + +For other values of \Code{Key2}, a quasi-random sample is used, where +the sign of \Code{Key2} determines the type of sample, +\begin{itemize} +\item +$\Code{Key2} > 0$, use a Korobov quasi-random sample, +\item +$\Code{Key2} < 0$, use a ``standard'' sample +(see description of \Code{Key1} above), +\end{itemize} +and $n_2 = |\Code{Key2}|$ determines the number of points, +\begin{itemize} +\item +$n_2\geqslant 40$, sample $n_2$ points, +\item +$n_2 < 40$, sample $n_2\,\nneed$ points, where $\nneed$ is the number of +points needed to reach the prescribed accuracy, as estimated by Divonne +from the results of the partitioning phase. +\end{itemize} + +\Option{Key3}{1} +an integer which sets the strategy for the refinement phase: + +$\Code{Key3} = 0$, do not treat the subregion any further. + +$\Code{Key3} = 1$, split the subregion up once more. + +Otherwise, the subregion is sampled a third time with \Code{Key3} +specifying the sampling parameters exactly as \Code{Key2} above. + +\Option{MaxPass}{5} +the number of passes after which the partitioning phase terminates. +The partitioning phase terminates when the estimated total number of +integrand evaluations (partitioning plus final integration) does not +decrease for \Code{MaxPass} successive iterations. + +A decrease in points generally indicates that Divonne discovered new +structures of the integrand and was able to find a more effective +partitioning. \Code{MaxPass} can be understood as the number of +`safety' iterations that are performed before the partition is accepted +as final and counting consequently restarts at zero whenever new +structures are found. + +\Option{Border}{0} +the width of the border of the integration region. Points falling into +this border region are not sampled directly, but are extrapolated from +two samples from the interior. Use a non-zero \Code{Border} if the +integrand function cannot produce values directly on the integration +boundary. + +The border width always refers to the unit hypercube, \ie it is not +rescaled if the integration region is not the unit hypercube. + +\Option{MaxChisq}{10} +the maximum $\chi^2$ value a single subregion is allowed to have in the +final integration phase. Regions which fail this $\chi^2$ test and +whose sample averages differ by more than \Code{MinDeviation} move on +to the refinement phase. + +\Option{MinDeviation}{.25} +a bound, given as the fraction of the requested error of the entire +integral, which determines whether it is worthwhile further examining a +region that failed the $\chi^2$ test. Only if the two sampling averages +obtained for the region differ by more than this bound is the region +further treated. + +\Option{Given}{\lbrac\rbrac} +a list of points where the integrand might have peaks. A point is a +list of $n_d$ real numbers, where $n_d$ is the dimension of the +integral. + +Divonne will consider these points when partitioning the integration +region. The idea here is to help the integrator find the extrema of the +integrand in the presence of very narrow peaks. Even if only the +approximate location of such peaks is known, this can considerably speed +up convergence. + +\Option{NExtra}{0} +the maximum number of points that will be considered in the output of +the \Code{PeakFinder} function. + +\Option{PeakFinder}{(\lbrac\rbrac\&)} +the peak-finder function. This function is called whenever a region is +up for subdivision and is supposed to point out possible peaks lying in +the region, thus acting as the dynamic counterpart of the static list of +points supplied with \Code{Given}. It is invoked with two arguments, +the multidimensional equivalents of the lower left and upper right +corners of the region being investigated, and must return a (possibly +empty) list of points. A point is a list of $n_d$ real numbers, where +$n_d$ is the dimension of the integral. +\end{itemize} + + +\subsubsection{Cuhre-specific Options} + +\begin{itemize} +\Option{Key}{0} +chooses the basic integration rule: + +$\Code{Key} = 7, 9, 11, 13$ selects the cubature rule of degree +\Code{Key}. Note that the degree-11 rule is available only in 3 +dimensions, the degree-13 rule only in 2 dimensions. + +For other values, the default rule is taken, which is the degree-13 rule +in 2 dimensions, the degree-11 rule in 3 dimensions, and the degree-9 +rule otherwise. +\end{itemize} + + +\subsubsection{Visualizing the Tessellation} + +Suave, Divonne, and Cuhre work by dividing the integration region into +subregions for integration. The tessellation is returned together with +the integration results when the option \Code{Regions -> True} is +set. Such output can be visualized using the Mathematica program +\Code{partview.m} that comes with \cuba. The invocation is \eg +\begin{verbatim} + result = Divonne[..., Regions -> True] + << tools/partview.m + PartView[result, 1, 2] +\end{verbatim} +which displays the 1--2 plane of the tessellation. The saturation of +the colours corresponds to the area of the region, \ie smaller regions +are displayed in a darker shade. + + +\subsection{Long-integer Versions} + +For both Fortran and C/C++ there exist versions of the integration +routines that take 64-bit integers for all number-of-points-type +quantities. These should be used in cases where convergence is not +reached within the ordinary 32-bit integer range ($2^{31} - 1$). + +The long-integer versions are distinguished by the ``\Code{ll}'' +prefix. Their specific invocations are, in Fortran, +\begin{alltt} + subroutine llvegas(ndim, ncomp, integrand, userdata, \ul{nvec}, + & epsrel, epsabs, flags, seed, \ul{mineval}, \ul{maxeval}, + & \ul{nstart}, \ul{nincrease}, \ul{nbatch}, gridno, statefile, spin, + & \ul{neval}, fail, integral, error, prob) +\end{alltt} +\begin{alltt} + subroutine llsuave(ndim, ncomp, integrand, userdata, \ul{nvec}, + & epsrel, epsabs, flags, seed, \ul{mineval}, \ul{maxeval}, + & \ul{nnew}, \ul{nmin}, flatness, statefile, spin, + & nregions, \ul{neval}, fail, integral, error, prob) +\end{alltt} +\begin{alltt} + subroutine lldivonne(ndim, ncomp, integrand, userdata, \ul{nvec}, + & epsrel, epsabs, flags, seed, \ul{mineval}, \ul{maxeval}, + & key1, key2, key3, maxpass, + & border, maxchisq, mindeviation, + & \ul{ngiven}, ldxgiven, xgiven, \ul{nextra}, peakfinder, + & statefile, spin, + & nregions, \ul{neval}, fail, integral, error, prob) +\end{alltt} +\begin{alltt} + subroutine llcuhre(ndim, ncomp, integrand, userdata, \ul{nvec}, + & epsrel, epsabs, flags, seed, \ul{mineval}, \ul{maxeval}, + & key, statefile, spin, + & nregions, \ul{neval}, fail, integral, error, prob) +\end{alltt} +The correspondences for C/C++ are obvious and are given explicitly in +the include file \Code{cuba.h}. The arguments are as for the normal +versions except that all underlined variables are of type +\Code{integer*8} in Fortran and \Code{long long int} in C/C++. + +%======================================================================== + +\section{Parallelization} +\label{sect:parallel} + +Numerical integration is perfectly suited for parallel execution, which +can significantly speed up the computation as it generally incurs only a +very small overhead. The parallelization procedure is rather different +in Fortran/C/C++ and in Mathematica. We shall deal with the latter +first because it needs only a short explanation. The remainder of this +chapter is then devoted to the Fortran/C/C++ case. + +%------------------------------------------------------------------------ + +\subsection{Parallelization in Mathematica} + +The Mathematica version of \cuba\ performs its sampling through a +function \Code{MapSample}. By default this is identical to \Code{Map}, +\ie the serial version, so to parallelize one merely needs to redefine +\Code{MapSample = ParallelMap} (after loading \cuba). + +If the integrand depends on user-defined symbols or functions, their +definitions must be distributed to the workers beforehand using +\Code{DistributeDefinitions} and likewise required packages must be +loaded with \Code{ParallelNeeds} instead of \Code{Needs}; this is +explained in detail in the Mathematica manual. + +%------------------------------------------------------------------------ + +\subsection{Parallelization in Fortran and C/C++} + +In Fortran and C/C++ the \cuba\ library can (and usually does) +automatically parallelize the sampling of the integrand. It +parallelizes through \Code{fork} and \Code{wait} which, though slightly +less performant than pthreads, do not require reentrant code. +(Reentrancy may not even be under full control of the programmer, for +example Fortran's I/O is usually non-reentrant.) Worker processes are +started and shut down only as few times as possible, however, so the +performance penalty is really quite minor even for non-native fork +implementations such as Cygwin's. Parallelization is not available on +native Windows for lack of the \Code{fork} function. + +The communication of samples to and from the workers happens through IPC +shared memory (\Code{shmget} and colleagues), or if that is not +available, through a \Code{socketpair} (two-way pipe). Remarkably, the +former's anticipated performance advantage turned out to be hardly +perceptible. Possibly there are cache-coherence issues introduced by +several workers writing simultaneously to the same shared-memory area. + +%------------------------------------------------------------------------ + +\subsubsection{Starting and stopping the workers} +\label{sect:spinning} + +The workers are usually started and stopped automatically by \cuba's +integration routines, but the user may choose to start them manually or +keep them running after one integration and shut them down later, \eg at +the end of the program, which can be slightly more efficient. The +latter mode is referred to as `Spinning Cores' and must be employed with +certain care, for running workers will not `see' subsequent changes in +the main program's data (\eg global variables, common blocks) or code +(\eg via \Code{dlsym}) unless special arrangements are made (\eg shared +memory). + +The spinning cores are controlled through the `\Code{spin}' argument of +the \cuba\ integration routines (Sect.~\ref{sect:commonargs}): +\begin{itemize} +\item A value of \Code{-1} or \Code{\%VAL(0)} (in Fortran) or +\Code{NULL} (in C/C++) tells the integrator to start and shut down the +workers autonomously. This is the usual case. No workers will still be +running after the integrator returns. No special precautions need to be +taken to communicate \eg global data to the workers. Note that it is +expressly allowed to pass a `naive' \Code{-1} (which is an +\Code{integer}, not an \Code{integer*8}) in Fortran. + +\item Passing a zero-initialized variable for \Code{spin} instructs the +integrator to start the workers but keep them running on return and +store the `spinning cores' pointer in \Code{spin} for future use. The +spinning cores must later be terminated explicitly by \Code{cubawait}, +thus invocation would schematically look like this: + +\hfill\begin{minipage}{.4\hsize} +\begin{verbatim} +integer*8 spin +spin = 0 +call vegas(..., spin, ...) +... +call cubawait(spin) +\end{verbatim} +\end{minipage}\hfill\begin{minipage}{.4\hsize} +\begin{verbatim} +void *spin = NULL; + +Vegas(..., &spin, ...); +... +cubawait(&spin); +\end{verbatim} +\end{minipage}\hfill + +\item A non-zero \Code{spin} variable is assumed to contain a valid +`spinning cores' pointer either from a former integration or an explicit +invocation of \Code{cubafork}, as in: + +\hfill\begin{minipage}{.4\hsize} +\begin{verbatim} +integer*8 spin +call cubafork(spin) +call vegas(..., spin, ...) +... +call cubawait(spin) +\end{verbatim} +\end{minipage}\hfill\begin{minipage}{.4\hsize} +\begin{verbatim} +void *spin; +cubafork(&spin); +Vegas(..., &spin, ...); +... +cubawait(&spin); +\end{verbatim} +\end{minipage}\hfill +\end{itemize} + +%------------------------------------------------------------------------ + +\subsubsection{Accelerators and Cores} +\label{sect:cores} + +Based on the strategy used to distribute samples, \cuba\ distinguishes +two kinds of workers. + +Workers of the first kind are referred to as `Accelerators' even though +\cuba\ does not actually send anything to a GPU or Accelerator in the +system by itself -- this can only be done by the integrand routine. The +assumption behind this strategy is that the integrand evaluation is +running on a device so highly parallel that the sampling time is more or +less independent of the number of points, up to the number of threads +$p\accel$ available in hardware. \cuba\ tries to send exactly $p\accel$ +points to each core -- never more, less only for the last batch. To +sample \eg 2400 points on three accelerators with $p\accel = 1000$, +\cuba\ sends batches of 1000/1000/400 and not, for example, 800/800/800 +or 1200/1200. The number of accelerators $n\accel$ and their value of +$p\accel$ can be set through the environment variables +\begin{tabbing} +\verb| CUBAACCEL=|$n\accel$ \hspace{10em}\= (default: 0) \\ +\verb| CUBAACCELMAX=|$p\accel$ \> (default: 1000) +\end{tabbing} +or, superseding the environment, an explicit +\begin{alltt} + call cubaaccel(\(n\accel\), \(p\accel\)) +\end{alltt} + +CPU-bound workers are just called `Cores'. Their distribution strategy +is different in that all available cores are used and points are +distributed evenly. In the example above, the batches would be +800/800/800 thus. Each core receives at least 10 points, or else fewer +cores are used. If no more than 10 points are requested in total, +\cuba\ uses no workers at all but lets the master sample those few +points. This happens during the partitioning phase of Divonne for +instance, where only single points are evaluated in the minimum/maximum +search. Conversely, if the division of points by cores does not come out +even, the remaining few points ($< n\cores$) are simply added to the +existing batches, to avoid an extra batch because of rounding. Sampling +2001 points on two cores with $p\cores = 1000$ will hence give two +batches 1001/1000 and not three batches 1000/1000/1. + +Although there is typically no hardware limit, a maximum number of +points per core, $p\cores$, can be prescribed for Cores, too. Unless +the integrand is known to evaluate equally fast at all points, a +moderate number for $p\cores$ (10000, say) may actually increase +performance because it effectively load-levels the sampling. For, a +batch always goes to the next free core so it doesn't matter much +if one core is tied up with a batch that takes longer. + +The number of cores $n\cores$ and the value of $p\cores$ can be set +analogously through the environment variables +\begin{tabbing} +\verb| CUBACORES=|$n\cores$ \hspace{10em}\= (default: no.\ of idle cores) \\ +\verb| CUBACORESMAX=|$p\cores$ \> (default: 10000) +\end{tabbing} +If \Code{CUBACORES} is unset, the idle cores on the present system are +taken (total cores minus load average), which means that a program +calling a \cuba\ routine will by default automatically parallelize on +the available cores. Again, the environment can be overruled with an +explicit +\begin{alltt} + call cubacores(\(n\cores\), \(p\cores\)) +\end{alltt} +Using the environment has the advantage, though, that changing the +number of cores to use does not require a re-compile, which is +particularly useful if one wants to run the program on several computers +(with potentially different numbers of cores) simultaneously, say in a +batch queue. + +The integrand function may use the `\Code{core}' argument +(Sect.~\ref{sect:commonargs}) to distinguish Accelerators ($\Code{core} +< 0$) and Cores ($\Code{core}\geqslant 0$). The special value +$\Code{core} = 32768$ ($2^{15}$) indicates that the master itself is +doing the sampling. + +%------------------------------------------------------------------------ + +\subsubsection{Worker initialization} + +User subroutines for (de)initialization may be registered with +\begin{alltt} + call cubainit(initfun, initarg) \textrm{Fortran} + call cubaexit(exitfun, exitarg) +\end{alltt} +\begin{alltt} + cubainit(initfun, initarg); \textrm{C/C++} + cubaexit(exitfun, exitarg); +\end{alltt} +and will be executed in every process before and after sampling. +Passing a null pointer (\Code{\%VAL(0)} in Fortran, \Code{NULL} in +C/C++) as the first argument unregisters either subroutine. + +The init/exit functions are actually called as +\begin{alltt} + call initfun(initarg, core) \textrm{Fortran} + call exitfun(exitarg, core) +\end{alltt} +\begin{alltt} + initfun(initarg, &core); \textrm{C/C++} + exitfun(exitarg, &core); +\end{alltt} +where \Code{initarg} and \Code{exitarg} are the user arguments given +with the registration (arbitrary in Fortran, \Code{void *} in C/C++) +and \Code{core} indicates the core the function is being executed on, +with (as before) $\Code{core} < 0$ for Accelerators, +$\Code{core}\geqslant 0$ for Cores, and $\Code{core} = 32768$ for the +master. + +On worker processes, the functions are respectively executed after +\Code{fork} and before \Code{wait}, independently of whether the worker +actually receives any samples. The master executes them only when +actual sampling is done. +For Accelerators, the init and exit functions are typically used to set +up the device for the integrand evaluations, which for many devices must +be done per process, \ie after the \Code{fork}. + +%------------------------------------------------------------------------ + +\subsubsection{Concurrency issues} + +By creating a new process image, \Code{fork} circumvents all memory +concurrency, to wit: each worker modifies only its own copy of the +parent's memory and never overwrites any other's data. The programmer +should be aware of a few potential problems nevertheless: +\begin{itemize} +\item Communicating back results other than the intended output from the +integrand to the main program is not straightforward because, by the +same token, a worker cannot overwrite any common data of the master, it +will only modify its own copy. + +Data exchange between workers is likewise not directly possible. For +example, if one worker stores an intermediate result in a common block, +this will not be seen by the other workers. + +Possible solutions include using shared memory (\Code{shmget} etc., see +App.~\ref{app:shm}) and writing the output to file (but see next item +below). + +\item \Code{fork} does not guard against competing use of other common +resources. For example, if the integrand function writes to a file +(debug output, say), there is no telling in which order the lines will +end up in the file, or even if they will end up as complete lines at +all. Buffered output should be avoided at the very least; better still, +every worker should write the output to its own file, \eg with a +filename that includes the process id, as in: +\begin{verbatim} + character*32 filename + integer pid + data pid /0/ + if( pid .eq. 0 ) then + pid = getpid() + write(filename,'("output.",I5.5)') pid + open(unit=4711, file=filename) + endif +\end{verbatim} + +\item Fortran users are advised to flush (or close) any open files +before calling \cuba, \ie \Code{call flush(\Var{unit})}. The reason is +that the child processes inherit all file buffers, and \emph{each} of +them will write out the buffer content at exit. \cuba\ preemptively +flushes the system buffers already (\Code{fflush(NULL)}) but has no +control over Fortran's buffers. +\end{itemize} +For debugging, or if a malfunction due to concurrency issues is +suspected, a program should be tested in serial mode first, \eg by +setting $\Code{CUBACORES} = 0$ (Sect.~\ref{sect:cores}). + +%------------------------------------------------------------------------ + +\subsubsection{Vectorization} + +Vectorization means evaluating the integrand function for several points +at once. This is also known as Single Instruction Multiple Data (SIMD) +paradigm and is different from ordinary parallelization where +independent threads are executed concurrently. It is usually possible +to employ vectorization on top of parallelization. + +Vector instructions are commonly available in hardware, \eg on x86 +platforms under acronyms such as SSE or AVX. Language support varies: +Fortran 90's syntax naturally embeds vector operations. Many C/C++ +compilers offer auto-vectorization options, some have extensions for +vector data types (usually for a limited set of mathematical functions), +and even hardware-specific access to the CPU's vector instructions. And +then there are vectorized libraries of numerical functions available. + +\cuba\ cannot automatically vectorize the integrand function, of course, +but it does pass (up to) \Code{nvec} points per integrand call +(Sect.~\ref{sect:commonargs}). This value need not correspond to the +hardware vector length -- computing several points in one call can also +make sense \eg if the computations have significant intermediate results +in common. The actual number of points passed is indicated through the +corresponding \Code{nvec} argument of the integrand. + +\medskip + +A note for disambiguation: The \Code{nbatch} argument of Vegas is +related in purpose but not identical to \Code{nvec}. It internally +partitions the sampling done by Vegas but has no bearing on the number +of points given to the integrand. On the other hand, it it pointless to +choose $\Code{nvec} > \Code{nbatch}$ for Vegas. + +%======================================================================== + +\section{Tests and Comparisons} +\label{sect:tests} + +Four integration routines may seem three too many, but as the following +tests show, all have their strengths and weaknesses. Fine-tuning the +algorithm parameters can also significantly affect performance. + +In the following, the test suite of Genz \cite{Genz} is used. Rather +than testing individual integrands, Genz proposes the following six +families of integrands: +\begin{equation} +\label{eq:families} +\begin{array}{ll} +\text{1. Oscillatory:} & + f_1(\dvec x) = \cos(\dvec c\cdot\dvec x + 2\pi w_1)\,, \\[2ex] +\text{2. Product peak:} & + f_2(\dvec x) = \prod\limits_{i = 1}^{n_d} + \dfrac 1{(x_i - w_i)^2 + c_i^{-2}}\,, \\[3ex] +\text{3. Corner peak:} & + f_3(\dvec x) = \dfrac 1{(1 + \dvec c\cdot\dvec x)^{n_d + 1}}\,, \\[3ex] +\text{4. Gaussian:} & + f_4(\dvec x) = \exp(-\dvec c^2 (\dvec x - \dvec w)^2)\,, \\[2ex] +\text{5. $C^0$-continuous:}\quad & + f_5(\dvec x) = \exp(-\dvec c\cdot |\dvec x - \dvec w|)\,, \\[2ex] +\text{6. Discontinuous:} & + f_6(\dvec x) = \begin{cases} + 0 & \text{for }x_1 > w_1 \vee x_2 > w_2\,, \\ + \exp(\dvec c\cdot\dvec x) & \text{otherwise}. + \end{cases} +\end{array} +\end{equation} +Parameters designated by $w$ are non-affective, they vary \eg the +location of peaks, but should in principle not affect the difficulty of +the integral. Parameters designated by $c$ are affective and in a sense +``define'' the difficulty of the integral, \eg the width of peaks are of +this kind. The $c_i$ are positive and the difficulty increases with +$\norm{\dvec c} = \sum_{i = 1}^{n_d} c_i$. + +The testing procedure is thus: Choose uniform random numbers from +$[0,1)$ for the $c_i$ and $w_i$. Renormalize $\dvec c$ for a given +difficulty. Run the algorithms with the integrands thus determined. +Repeat this procedure 20 times and take the average. + +For comparison, Mathematica's \Code{NIntegrate} function was included +in the test. Unfortunately, when a maximum number of samples is +prescribed, \Code{NIntegrate} invariably uses non-adaptive methods, by +default the Halton--Hammersley--Wozniakowski quasi-Monte Carlo +algorithm. The comparison may thus seem not quite balanced, but this is +not entirely true: Lacking an upper bound on the number of integrand +evaluations, \Code{NIntegrate}'s adaptive method in some cases `locks +up' (spends an inordinate amount of time and samples) and the user can +at most abort a running calculation, but not extract a preliminary +result. The adaptive method could reasonably be used only for some of +the integrand families in the test, and it was felt that such a +selection should not be done, as the comparisons should in the first +place give an idea about the \emph{average} performance of the +integration methods, without any fine-tuning. + +Table \ref{tab:comp} gives the results of the tests as described above. +This comparison chart should be interpreted with care, however, and +serves only as a rough measure of the performance of the integration +methods. Many integrands appearing in actual calculations bear few or +no similarities with the integrand families tested here, and neither +have the integration parameters been tuned to `get the most' out of each +method. + +The Mathematica code of the test suite is included in the downloadable +\cuba\ package. + +\begin{table} +$$ +\begin{array}{|c|r@{\,\pm\,}r|r@{\,\pm\,}r|r@{\,\pm\,}r + |r@{\,\pm\,}r|r@{\,\pm\,}r|} +\multicolumn{11}{c}{n_d = 5} \\ \hline +j & +\multicolumn{2}{|c|}{\text{Vegas}} & +\multicolumn{2}{|c|}{\text{Suave}} & +\multicolumn{2}{|c|}{\text{Divonne}} & +\multicolumn{2}{|c|}{\text{Cuhre}} & +\multicolumn{2}{|c|}{\text{NIntegrate}} \\ \hline +1 & 162000 & 0 & + 127300 & 32371 & + 21313 & 11039 & + 819 & 0 & + 218281 & 0 \\ +2 & 11750 & 1795 & + 13500 & 1539 & + 17353 & 3743 & + 56238 & 40917 & + 218281 & 0 \\ +3 & 16125 & 2411 & + 11500 & 1000 & + 17208 & 2517 & + 1174 & 444 & + 218281 & 0 \\ +4 & 56975 & 11372 & + 20100 & 4745 & + 19636 & 6159 & + 22577 & 31424 & + 218281 & 0 \\ +5 & 14600 & 3085 & + 15250 & 2337 & + 21675 & 4697 & + 150423 & 0 & + 218281 & 0 \\ +6 & 19750 & 4999 & + 23850 & 2700 & + 39694 & 14001 & + 1884 & 215 & + 218281 & 0 \\ \hline +\multicolumn{11}{c}{} \\ +\multicolumn{11}{c}{n_d = 8} \\ \hline +j & +\multicolumn{2}{|c|}{\text{Vegas}} & +\multicolumn{2}{|c|}{\text{Suave}} & +\multicolumn{2}{|c|}{\text{Divonne}} & +\multicolumn{2}{|c|}{\text{Cuhre}} & +\multicolumn{2}{|c|}{\text{NIntegrate}} \\ \hline +1 & 153325 & 20274 & + 124350 & 35467 & + 28463 & 31646 & + 3315 & 0 & + 212939 & 13557 \\ +2 & 12650 & 1987 & + 21050 & 4594 & + 22030 & 3041 & + 91826 & 58513 & + 218281 & 0 \\ +3 & 24325 & 3753 & + 29350 & 3588 & + 67104 & 16906 & + 18785 & 22354 & + 218281 & 0 \\ +4 & 38575 & 16169 & + 29250 & 8873 & + 24849 & 5015 & + 62322 & 44328 & + 218281 & 0 \\ +5 & 15150 & 2616 & + 25500 & 6444 & + 32885 & 5945 & + 151385 & 0 & + 218281 & 0 \\ +6 & 18875 & 2512 & + 40900 & 7196 & + 116744 & 32533 & + 9724 & 9151 & + 218281 & 0 \\ \hline +\multicolumn{11}{c}{} \\ +\multicolumn{11}{c}{n_d = 10} \\ \hline +j & +\multicolumn{2}{|c|}{\text{Vegas}} & +\multicolumn{2}{|c|}{\text{Suave}} & +\multicolumn{2}{|c|}{\text{Divonne}} & +\multicolumn{2}{|c|}{\text{Cuhre}} & +\multicolumn{2}{|c|}{\text{NIntegrate}} \\ \hline +1 & 156050 & 21549 & + 129800 & 30595 & + 32176 & 30424 & + 7815 & 0 & + 214596 & 16481 \\ +2 & 14175 & 2672 & + 24800 & 5464 & + 25684 & 7582 & + 144056 & 25983 & + 218281 & 0 \\ +3 & 30275 & 6296 & + 51150 & 15608 & + 139737 & 18505 & + 109150 & 58224 & + 218281 & 0 \\ +4 & 29475 & 10277 & + 34050 & 10200 & + 27385 & 8498 & + 105763 & 49789 & + 218281 & 0 \\ +5 & 16150 & 2791 & + 31400 & 7715 & + 44393 & 18654 & + 153695 & 0 & + 218281 & 0 \\ +6 & 22100 & 3085 & + 74900 & 32203 & + 136508 & 17067 & + 73200 & 64621 & + 218281 & 0 \\ \hline +\end{array} +$$ +Test parameters: +\begin{itemize} +\item number of dimensions: $n_d = 5, 8, 10$, +\item requested relative accuracy: $\epsrel = 10^{-3}$, +\item maximum number of samples: $\nmax = 150000$, +\item integrand difficulties: +$ +\begin{array}{r||c|c|c|c|c|c} +\text{Integrand family }j & 1 & 2 & 3 & 4 & 5 & 6 \\ +\hline +\norm{\dvec c_j} & 6.0 & 18.0 & 2.2 & 15.2 & 16.1 & 16.4 +\end{array} +$ +\end{itemize} + +\caption{\label{tab:comp}The number of samples used, averaged from 20 +randomly chosen integrands from each integrand family $j$ defined in +Eq.~(\ref{eq:families}). Values in the vicinity of $\nmax$ generally +indicate failure to converge. \Code{NIntegrate} seems not to be able +to stop at around the limit of \Code{MaxPoints -> $\nmax$}, but always +samples considerably more points.} +\end{table} + +%======================================================================== + +\section{Summary} + +The \cuba\ library offers a choice of four independent routines for +multidimensional numerical integration: Vegas, Suave, Divonne, and +Cuhre. They work by very different methods, summarized in the following +table: +\begin{center} +\begin{small} +\begin{tabular}{llll} +Routine & + Basic integration method & + Algorithm type & + Variance reduction \\ \hline \\[-1.5ex] +Vegas & + Sobol quasi-random sample & + Monte Carlo & + importance sampling \\ +& + \textit{or} pseudo-random sample & + Monte Carlo \\[1.5ex] +Suave & + Sobol quasi-random sample & + Monte Carlo & + globally adaptive subdivision \\ +& + \textit{or} pseudo-random sample & + Monte Carlo \\[1.5ex] +Divonne & + Korobov quasi-random sample & + Monte Carlo & + stratified sampling, \\ +& + \textit{or} Sobol quasi-random sample & + Monte Carlo & + \quad aided by methods from \\ +& + \textit{or} pseudo-random sample & + Monte Carlo & + \quad numerical optimization \\ +& + \textit{or} cubature rules & + deterministic \\[1.5ex] +Cuhre & + cubature rules & + deterministic & + globally adaptive subdivision +\end{tabular} +\end{small} +\end{center} + +All four have a C/C++, Fortran, and Mathematica interface and can +integrate vector integrands. Their invocation is very similar, so it is +easy to substitute one method by another for cross-checking. For +further safeguarding, the output is supplemented by a $\chi^2$ +probability which quantifies the reliability of the error estimate. + +The source code is available from \Code{http://feynarts.de/cuba} +and compiles with gcc, the GNU C compiler. The C functions can be +called from Fortran directly, so there is no need for adapter code. +Similarly, linking Fortran code with the library is straightforward +and requires no extra tools. + +The routines in the \cuba\ library have all been carefully tested, but +it would of course be folly to believe they are completely error-free. +The author welcomes any kind of feedback, in particular bug and +performance reports, at hahn@feynarts.de. + +%======================================================================== + +\section*{Acknowledgements} + +I thank A.~Hoang for involving me in a discussion out of which the +concept of the Mathematica interface was born and T.~Fritzsche, +M.~Rauch, and A.M.~de~la~Ossa for testing. B.~Chokoufe implemented +check-pointing (state file) for Suave, Divonne, and Cuhre. + +%======================================================================== + +\begin{appendix} + +\section{Shared Memory in Fortran} +\label{app:shm} + +IPC shared memory is not natively available in Fortran, but it is not +difficult to make it available using two small C functions +\Code{shmalloc} and \Code{shmfree}: +\begin{verbatim} +#include <sys/shm.h> +#include <assert.h> + +typedef long long int memindex; +typedef struct { void *addr; int id; } shminfo; + +void shmalloc_(shminfo *base, memindex *i, const int *n, const int *size) { + base->id = shmget(IPC_PRIVATE, *size*(*n + 1) - 1, IPC_CREAT | 0600); + assert(base->id != -1); + base->addr = shmat(base->id, NULL, 0); + assert(base->addr != (void *)-1); + *i = ((char *)(base->addr + *size - 1) - (char *)base)/(long)*size; +} + +void shmfree_(shminfo *base) { + shmdt(base->addr); + shmctl(base->id, IPC_RMID, NULL); +} +\end{verbatim} +The function \Code{shmalloc} allocates (suitably aligned) \Code{n} +elements of size \Code{size} and returns a mock index into \Code{base}, +through which the memory is addressed in Fortran. The array \Code{base} +must be of the desired type and large enough to store the struct +\Code{shminfo}, \eg two doubles wide. Be careful to invoke +\Code{shmfree} after use, for the memory will not automatically be freed +upon exit but stay allocated until the next reboot (or explicit removal +with \Code{ipcs}). + +The following test program demonstrates how to use \Code{shmalloc} and +\Code{shmfree}: +\begin{verbatim} + program test + implicit none + integer*8 i + double precision base(2) + + call shmalloc(base, i, 100, 8) ! allocate 100 doubles + + base(i) = 1 ! now use the memory + ... + base(i+99) = 100 + + call shmfree(base) ! don't forget to free it + end +\end{verbatim} + +\end{appendix} + +%======================================================================== + +\begin{thebibliography}{99} + +\newcommand{\volyearpage}[3]{\textbf{#1} (#2) #3} +\newcommand{\cpc}{\textsl{Comp.\ Phys.\ Commun.} \volyearpage} +\newcommand{\jpc}{\textsl{J.\ Comp.\ Phys.} \volyearpage} +\newcommand{\cip}{\textsl{Comp.\ in Phys.} \volyearpage} +\newcommand{\toms}{\textsl{ACM Trans.\ Math.\ Software} \volyearpage} +\newcommand{\tomacs}{\textsl{ACM Trans.\ Modeling Comp.\ Simulation} \volyearpage} +\newcommand{\siam}{\textsl{SIAM J.\ Numer.\ Anal.} \volyearpage} +\newcommand{\numa}{\textsl{Numer.\ Math.} \volyearpage} + +\bibitem{quadpack} +R.~Piessens, E.~de~Doncker, C.~\"Uberhuber, D.~Kahaner, +\textsc{Quadpack} -- a subroutine package for automatic integration, +Springer-Verlag, 1983. + +\bibitem{Vegas1} +G.P.~Lepage, \jpc{27}{1978}{192}. + +\bibitem{Vegas2} +G.P.~Lepage, Report CLNS-80/447, Cornell Univ., Ithaca, N.Y., 1980. + +\bibitem{Miser} +W.H.~Press, G.R.~Farrar, \cip{4}{1990}{190}. + +\bibitem{Divonne} +J.H.~Friedman, M.H.~Wright, \toms{7}{1981}{76}; \\ +J.H.~Friedman, M.H.~Wright, SLAC Report CGTM-193-REV, CGTM-193, 1981. + +\bibitem{dcuhre} +J.~Berntsen, T.~Espelid, A.~Genz, \toms{17}{1991}{437}; \\ +J.~Berntsen, T.~Espelid, A.~Genz, \toms{17}{1991}{452}; \\ +TOMS algorithm 698. + +\bibitem{Sobol} +P.~Bratley, B.L.~Fox, \toms{14}{1988}{88}; \\ +TOMS algorithm 659. + +\bibitem{Niederreiter} +H.~Niederreiter, Random number generation and quasi-Monte Carlo methods, +SIAM, 1992. + +\bibitem{NumRecipes} +W.H.~Press, S.A.~Teukolsky, W.T.~Vetterling, B.P.~Flannery, Numerical +recipes in Fortran, 2$^{\text{nd}}$ edition, Cambridge University Press, +1992. + +\bibitem{Korobov} +N.M.~Korobov, Number theoretic methods in approximate analysis +(in Russian), Fizmatgiz, Moscow, 1963. + +A comprehensive English reference on the topic of good lattice points +(of which the Korobov points are a special case) is H.L.~Keng, W.~Yuan, +Applications of number theory to numerical analysis, Springer-Verlag, +1981. + +\bibitem{MersenneTwister} +M.~Matsumoto, T.~Nishimura, \tomacs{8}{1998}{3}. \\ +See also +\Code{http://www.math.sci.hiroshima-u.ac.jp/$\sim$m-mat/MT/emt.html}. + +\bibitem{Ranlux} +M.~L\"uscher, \cpc{79}{1994}{100}; \\ +F.~James, \cpc{79}{1994}{111}. + +\bibitem{GenzMalik} +A.~Genz, A.~Malik, \siam{20}{1983}{580}. + +\bibitem{Genz} +A.~Genz, A package for testing multiple integration subroutines, in: +P.~Keast, G.~Fairweather (eds.), Numerical Integration, Kluwer, +Dordrecht, 1986. + +\end{thebibliography} + +\end{document} + diff --git a/Cuba/demo/cuba.F b/Cuba/demo/cuba.F new file mode 100644 index 0000000..a227d4f --- /dev/null +++ b/Cuba/demo/cuba.F @@ -0,0 +1,104 @@ +* cuba.F +* Fortran chooser for the Cuba routines +* last modified 3 Feb 05 th + +#define VEGAS 1 +#define SUAVE 2 +#define DIVONNE 3 +#define CUHRE 4 + + + subroutine Cuba(method, ndim, ncomp, integrand, + & integral, error, prob) + implicit none + integer method, ndim, ncomp + external integrand + double precision integral(*), error(*), prob(*) + + character*7 name(4) + data name /"Vegas", "Suave", "Divonne", "Cuhre"/ + + integer mineval, maxeval, verbose, last + double precision epsrel, epsabs + parameter (epsrel = 1D-3) + parameter (epsabs = 1D-12) + parameter (verbose = 2) + parameter (last = 4) + parameter (mineval = 0) + parameter (maxeval = 50000) + + integer nstart, nincrease + parameter (nstart = 1000) + parameter (nincrease = 500) + + integer nnew + double precision flatness + parameter (nnew = 1000) + parameter (flatness = 25D0) + + integer key1, key2, key3, maxpass + double precision border, maxchisq, mindeviation + integer ngiven, ldxgiven, nextra + parameter (key1 = 47) + parameter (key2 = 1) + parameter (key3 = 1) + parameter (maxpass = 5) + parameter (border = 0D0) + parameter (maxchisq = 10D0) + parameter (mindeviation = .25D0) + parameter (ngiven = 0) + parameter (ldxgiven = ndim) + parameter (nextra = 0) + + integer key + parameter (key = 0) + + integer nregions, neval, fail + + + if( method .eq. VEGAS ) then + + call vegas(ndim, ncomp, integrand, + & epsrel, epsabs, verbose, mineval, maxeval, + & nstart, nincrease, + & neval, fail, integral, error, prob) + nregions = 1 + + else if( method .eq. SUAVE ) then + + call suave(ndim, ncomp, integrand, + & epsrel, epsabs, verbose + last, mineval, maxeval, + & nnew, flatness, + & nregions, neval, fail, integral, error, prob) + + else if( method .eq. DIVONNE ) then + + call divonne(ndim, ncomp, integrand, + & epsrel, epsabs, verbose, mineval, maxeval, + & key1, key2, key3, maxpass, + & border, maxchisq, mindeviation, + & ngiven, ldxgiven, 0, nextra, 0, + & nregions, neval, fail, integral, error, prob) + + else if( method .eq. CUHRE ) then + + call cuhre(ndim, ncomp, integrand, + & epsrel, epsabs, verbose + last, mineval, maxeval, + & key, + & nregions, neval, fail, integral, error, prob) + + else + + print *, "invalid method ", method + return + + endif + + print *, "method =", name(method) + print *, "nregions =", nregions + print *, "neval =", neval + print *, "fail =", fail + print '(G20.12," +- ",G20.12," p = ",F8.3)', + & (integral(c), error(c), prob(c), c = 1, ncomp) + end + diff --git a/Cuba/demo/demo-c.c b/Cuba/demo/demo-c.c new file mode 100755 index 0000000..79f49ec --- /dev/null +++ b/Cuba/demo/demo-c.c @@ -0,0 +1,176 @@ +/* + demo-c.c + test program for the Cuba library + last modified 13 Mar 15 th +*/ + +#include <stdio.h> +#include <stdlib.h> +#include <math.h> + +#if REALSIZE == 16 +#include "cubaq.h" +#elif REALSIZE == 10 +#include "cubal.h" +#else +#include "cuba.h" +#endif + + +static inline cubareal Sq(cubareal x) { + return x*x; +} + + +static int Integrand(const int *ndim, const cubareal xx[], + const int *ncomp, cubareal ff[], void *userdata) { + +#define x xx[0] +#define y xx[1] +#define z xx[2] +#define f ff[0] + +#ifndef FUN +#define FUN 1 +#endif + +#define rsq (Sq(x) + Sq(y) + Sq(z)) + +#if FUN == 1 + f = sin(x)*cos(y)*exp(z); +#elif FUN == 2 + f = 1/(Sq(x + y) + .003)*cos(y)*exp(z); +#elif FUN == 3 + f = 1/(3.75 - cos(M_PI*x) - cos(M_PI*y) - cos(M_PI*z)); +#elif FUN == 4 + f = fabs(rsq - .125); +#elif FUN == 5 + f = exp(-rsq); +#elif FUN == 6 + f = 1/(1 - x*y*z + 1e-10); +#elif FUN == 7 + f = sqrt(fabs(x - y - z)); +#elif FUN == 8 + f = exp(-x*y*z); +#elif FUN == 9 + f = Sq(x)/(cos(x + y + z + 1) + 5); +#elif FUN == 10 + f = (x > .5) ? 1/sqrt(x*y*z + 1e-5) : sqrt(x*y*z); +#else + f = (rsq < 1) ? 1 : 0; +#endif + + return 0; +} + +/*********************************************************************/ + +#define NDIM 3 +#define NCOMP 1 +#define USERDATA NULL +#define NVEC 1 +#define EPSREL 1e-3 +#define EPSABS 1e-12 +#define VERBOSE 2 +#define LAST 4 +#define SEED 0 +#define MINEVAL 0 +#define MAXEVAL 50000 + +#define NSTART 1000 +#define NINCREASE 500 +#define NBATCH 1000 +#define GRIDNO 0 +#define STATEFILE NULL +#define SPIN NULL + +#define NNEW 1000 +#define NMIN 2 +#define FLATNESS 25. + +#define KEY1 47 +#define KEY2 1 +#define KEY3 1 +#define MAXPASS 5 +#define BORDER 0. +#define MAXCHISQ 10. +#define MINDEVIATION .25 +#define NGIVEN 0 +#define LDXGIVEN NDIM +#define NEXTRA 0 + +#define KEY 0 + +int main() { + int comp, nregions, neval, fail; + cubareal integral[NCOMP], error[NCOMP], prob[NCOMP]; + +#if 1 + printf("-------------------- Vegas test --------------------\n"); + + Vegas(NDIM, NCOMP, Integrand, USERDATA, NVEC, + EPSREL, EPSABS, VERBOSE, SEED, + MINEVAL, MAXEVAL, NSTART, NINCREASE, NBATCH, + GRIDNO, STATEFILE, SPIN, + &neval, &fail, integral, error, prob); + + printf("VEGAS RESULT:\tneval %d\tfail %d\n", + neval, fail); + for( comp = 0; comp < NCOMP; ++comp ) + printf("VEGAS RESULT:\t%.8f +- %.8f\tp = %.3f\n", + (double)integral[comp], (double)error[comp], (double)prob[comp]); +#endif + +#if 1 + printf("\n-------------------- Suave test --------------------\n"); + + Suave(NDIM, NCOMP, Integrand, USERDATA, NVEC, + EPSREL, EPSABS, VERBOSE | LAST, SEED, + MINEVAL, MAXEVAL, NNEW, NMIN, FLATNESS, + STATEFILE, SPIN, + &nregions, &neval, &fail, integral, error, prob); + + printf("SUAVE RESULT:\tnregions %d\tneval %d\tfail %d\n", + nregions, neval, fail); + for( comp = 0; comp < NCOMP; ++comp ) + printf("SUAVE RESULT:\t%.8f +- %.8f\tp = %.3f\n", + (double)integral[comp], (double)error[comp], (double)prob[comp]); +#endif + +#if 1 + printf("\n------------------- Divonne test -------------------\n"); + + Divonne(NDIM, NCOMP, Integrand, USERDATA, NVEC, + EPSREL, EPSABS, VERBOSE, SEED, + MINEVAL, MAXEVAL, KEY1, KEY2, KEY3, MAXPASS, + BORDER, MAXCHISQ, MINDEVIATION, + NGIVEN, LDXGIVEN, NULL, NEXTRA, NULL, + STATEFILE, SPIN, + &nregions, &neval, &fail, integral, error, prob); + + printf("DIVONNE RESULT:\tnregions %d\tneval %d\tfail %d\n", + nregions, neval, fail); + for( comp = 0; comp < NCOMP; ++comp ) + printf("DIVONNE RESULT:\t%.8f +- %.8f\tp = %.3f\n", + (double)integral[comp], (double)error[comp], (double)prob[comp]); +#endif + +#if 1 + printf("\n-------------------- Cuhre test --------------------\n"); + + Cuhre(NDIM, NCOMP, Integrand, USERDATA, NVEC, + EPSREL, EPSABS, VERBOSE | LAST, + MINEVAL, MAXEVAL, KEY, + STATEFILE, SPIN, + &nregions, &neval, &fail, integral, error, prob); + + printf("CUHRE RESULT:\tnregions %d\tneval %d\tfail %d\n", + nregions, neval, fail); + for( comp = 0; comp < NCOMP; ++comp ) + printf("CUHRE RESULT:\t%.8f +- %.8f\tp = %.3f\n", + (double)integral[comp], (double)error[comp], (double)prob[comp]); +#endif + + return 0; +} + diff --git a/Cuba/demo/demo-c.out b/Cuba/demo/demo-c.out new file mode 100644 index 0000000..531971d --- /dev/null +++ b/Cuba/demo/demo-c.out @@ -0,0 +1,8 @@ +VEGAS RESULT: neval 10000 fail 0 +VEGAS RESULT: 0.66481073 +- 0.00049218 p = 0.089 +SUAVE RESULT: nregions 7 neval 7000 fail 0 +SUAVE RESULT: 0.66444529 +- 0.00056577 p = 0.210 +DIVONNE RESULT: nregions 14 neval 3052 fail 0 +DIVONNE RESULT: 0.66461951 +- 0.00063503 p = 0.000 +CUHRE RESULT: nregions 2 neval 381 fail 0 +CUHRE RESULT: 0.66466968 +- 0.00000000 p = 0.000 diff --git a/Cuba/demo/demo-fortran.F b/Cuba/demo/demo-fortran.F new file mode 100755 index 0000000..8a6ac73 --- /dev/null +++ b/Cuba/demo/demo-fortran.F @@ -0,0 +1,187 @@ +* demo-fortran.F +* test program for the Cuba library +* last modified 13 Mar 15 th + +#define cubareal real*REALSIZE + + + program CubaTest + implicit none + + integer ndim, ncomp, nvec, last, seed, mineval, maxeval + cubareal epsrel, epsabs, userdata + parameter (ndim = 3) + parameter (ncomp = 1) + parameter (userdata = 0) + parameter (nvec = 1) + parameter (epsrel = 1D-3) + parameter (epsabs = 1D-12) + parameter (last = 4) + parameter (seed = 0) + parameter (mineval = 0) + parameter (maxeval = 50000) + + integer nstart, nincrease, nbatch, gridno + integer*8 spin + character*(*) statefile + parameter (nstart = 1000) + parameter (nincrease = 500) + parameter (nbatch = 1000) + parameter (gridno = 0) + parameter (statefile = "") + parameter (spin = -1) + + integer nnew, nmin + cubareal flatness + parameter (nnew = 1000) + parameter (nmin = 2) + parameter (flatness = 25D0) + + integer key1, key2, key3, maxpass + cubareal border, maxchisq, mindeviation + integer ngiven, ldxgiven, nextra + parameter (key1 = 47) + parameter (key2 = 1) + parameter (key3 = 1) + parameter (maxpass = 5) + parameter (border = 0D0) + parameter (maxchisq = 10D0) + parameter (mindeviation = .25D0) + parameter (ngiven = 0) + parameter (ldxgiven = ndim) + parameter (nextra = 0) + + integer key + parameter (key = 0) + + external integrand + + cubareal integral(ncomp), error(ncomp), prob(ncomp) + integer verbose, nregions, neval, fail + character*16 env + + integer c + + call getenv("CUBAVERBOSE", env) + verbose = 2 + read(env, *, iostat=fail, end=999, err=999) verbose +999 continue + + print *, "-------------------- Vegas test --------------------" + + call vegas(ndim, ncomp, integrand, userdata, nvec, + & epsrel, epsabs, verbose, seed, + & mineval, maxeval, nstart, nincrease, nbatch, + & gridno, statefile, spin, + & neval, fail, integral, error, prob) + + print *, "neval =", neval + print *, "fail =", fail + print '(F20.12," +- ",F20.12," p = ",F8.3)', + & (integral(c), error(c), prob(c), c = 1, ncomp) + + print *, " " + print *, "-------------------- Suave test --------------------" + + call suave(ndim, ncomp, integrand, userdata, nvec, + & epsrel, epsabs, verbose + last, seed, + & mineval, maxeval, nnew, nmin, flatness, + & statefile, spin, + & nregions, neval, fail, integral, error, prob) + + print *, "nregions =", nregions + print *, "neval =", neval + print *, "fail =", fail + print '(F20.12," +- ",F20.12," p = ",F8.3)', + & (integral(c), error(c), prob(c), c = 1, ncomp) + + print *, " " + print *, "------------------- Divonne test -------------------" + + call divonne(ndim, ncomp, integrand, userdata, nvec, + & epsrel, epsabs, verbose, seed, + & mineval, maxeval, key1, key2, key3, maxpass, + & border, maxchisq, mindeviation, + & ngiven, ldxgiven, 0, nextra, 0, + & statefile, spin, + & nregions, neval, fail, integral, error, prob) + + print *, "nregions =", nregions + print *, "neval =", neval + print *, "fail =", fail + print '(F20.12," +- ",F20.12," p = ",F8.3)', + & (integral(c), error(c), prob(c), c = 1, ncomp) + + print *, " " + print *, "-------------------- Cuhre test --------------------" + + call cuhre(ndim, ncomp, integrand, userdata, nvec, + & epsrel, epsabs, verbose + last, + & mineval, maxeval, key, + & statefile, spin, + & nregions, neval, fail, integral, error, prob) + + print *, "nregions =", nregions + print *, "neval =", neval + print *, "fail =", fail + print '(F20.12," +- ",F20.12," p = ",F8.3)', + & (integral(c), error(c), prob(c), c = 1, ncomp) + end + + +************************************************************************ + + integer function integrand(ndim, xx, ncomp, ff) + implicit none + integer ndim, ncomp + cubareal xx(*), ff(*) + +#define x xx(1) +#define y xx(2) +#define z xx(3) +#define f ff(1) + +#ifndef FUN +#define FUN 1 +#endif + + cubareal pi, rsq + parameter (pi = 3.14159265358979323846D0) + + rsq = x**2 + y**2 + z**2 + +#if FUN == 1 + f = sin(x)*cos(y)*exp(z) +#elif FUN == 2 + f = 1/((x + y)**2 + .003D0)*cos(y)*exp(z) +#elif FUN == 3 + f = 1/(3.75D0 - cos(pi*x) - cos(pi*y) - cos(pi*z)) +#elif FUN == 4 + f = abs(rsq - .125D0) +#elif FUN == 5 + f = exp(-rsq) +#elif FUN == 6 + f = 1/(1 - x*y*z + 1D-10) +#elif FUN == 7 + f = sqrt(abs(x - y - z)) +#elif FUN == 8 + f = exp(-x*y*z) +#elif FUN == 9 + f = x**2/(cos(x + y + z + 1) + 5) +#elif FUN == 10 + if( x .gt. .5D0 ) then + f = 1/sqrt(x*y*z + 1D-5) + else + f = sqrt(x*y*z) + endif +#else + if( rsq .lt. 1 ) then + f = 1 + else + f = 0 + endif +#endif + + integrand = 0 + end + diff --git a/Cuba/demo/demo-math.m b/Cuba/demo/demo-math.m new file mode 100644 index 0000000..2fe5a3d --- /dev/null +++ b/Cuba/demo/demo-math.m @@ -0,0 +1,36 @@ +Install["Vegas"] + +Install["Suave"] + +Install["Divonne"] + +Install["Cuhre"] + + +test[n_] := {t[n, Vegas], t[n, Suave], t[n, Divonne], t[n, Cuhre]} + +t[n_, int_] := int[f[n][x, y, z], {x,0,1}, {y,0,1}, {z,0,1}] + + +f[1][x_, y_, z_] := Sin[x] Cos[y] Exp[z] + +f[2][x_, y_, z_] := 1/((x + y)^2 + .003) Cos[y] Exp[z] + +f[3][x_, y_, z_] := 1/(3.75 - Cos[Pi x] - Cos[Pi y] - Cos[Pi z]) + +f[4][x_, y_, z_] := Abs[x^2 + y^2 + z^2 - .125] + +f[5][x_, y_, z_] := Exp[-x^2 - y^2 - z^2] + +f[6][x_, y_, z_] := 1/(1 - x y z + 10^-10) + +f[7][x_, y_, z_] := Sqrt[Abs[x - y - z]] + +f[8][x_, y_, z_] := Exp[-x y z] + +f[9][x_, y_, z_] := x^2/(Cos[x + y + z + 1] + 5) + +f[10][x_, y_, z_] := If[ x > .5, 1/Sqrt[x y z + 10^-5], Sqrt[x y z] ] + +f[11][x_, y_, z_] := If[ x^2 + y^2 + z^2 < 1, 1, 0 ] + diff --git a/Cuba/demo/testsuite.m b/Cuba/demo/testsuite.m new file mode 100644 index 0000000..9804b03 --- /dev/null +++ b/Cuba/demo/testsuite.m @@ -0,0 +1,133 @@ +(* Test suite of Genz, used also by Sloan and Joe, and Novak and Ritter *) + +seed = 4711 + +maxpoints = 150000 + +repeat = 20 + + +(* Family 1: Oscillatory *) + +f[1][x_, c_, w_] := Cos[2 Pi w[[1]] + c.x] + + +(* Family 2: Product peak *) + +f[2][x_, c_, w_] := Times@@ MapThread[f2a, {x, c, w}] + +f2a[xi_, ci_, wi_] := 1/(ci^-2 + (xi - wi)^2) + + +(* Family 3: Corner peak *) + +f[3][x_, c_, w_] := (1 + c.x)^(-(Length[x] + 1)) + + +(* Family 4: Gaussian *) + +f[4][x_, c_, w_] := Exp[Plus@@ MapThread[f4a, {x, c, w}]] + +f4a[xi_, ci_, wi_] := -ci^2 (xi - wi)^2 + + +(* Family 5: Exponential *) + +f[5][x_, c_, w_] := Exp[Plus@@ MapThread[f5a, {x, c, w}]] + +f5a[xi_, ci_, wi_] := -ci Abs[xi - wi] + + +(* Family 6: Discontinuous *) + +f[6][x_, c_, w_] := 0 /; x[[1]] > w[[1]] || x[[2]] > w[[2]] + +f[6][x_, c_, w_] := Exp[c.x] + + +(* Novak & Ritter use +difficulty[fam_] := {9.00, 7.25, 1.85, 7.03, 2.04, 4.30}[[fam]] +*) + +(* Sloan & Joe use +scale[dim_] := dim^Min[Max[.2 dim, 1], 2] + +SetOptions[Interpolation, InterpolationOrder -> 2] + +ifun[1] = Interpolation[{{5, 145.7}, {8, 354.0}, {10, 900.0}}]; +ifun[2] = Interpolation[{{5, 261.0}, {8, 545.0}, {10, 1760.0}}]; +ifun[3] = Interpolation[{{5, 433.0}, {8, 193.0}, {10, 185.0}}]; +ifun[4] = Interpolation[{{5, 155.0}, {8, 382.0}, {10, 1230.0}}]; +ifun[5] = Interpolation[{{5, 217.0}, {8, 674.0}, {10, 2040.0}}]; +ifun[6] = Interpolation[{{5, 90.0}, {8, 240.0}, {10, 1470.0}}]; + +difficulty[fam_] := ifun[fam][ndim]/scale[ndim] +*) + +difficulty[fam_] := {6.0, 18.0, 2.2, 15.2, 16.1, 16.4}[[fam]] + +c[fam_] := Block[{r = w}, r difficulty[fam]/Plus@@ r] + + +Install["Vegas"] + +Install["Suave"] + +Install["Divonne"] + +Install["Cuhre"] + + + +SetAll[opt__] := ( + SetOptions[Vegas, opt]; + SetOptions[Suave, opt]; + SetOptions[Divonne, opt]; + SetOptions[Cuhre, opt]; + SetOptions[NIntegrate, opt]; +) + +SetAll[PrecisionGoal -> 3, MaxPoints -> maxpoints] + +SetOptions[Divonne, Key1 -> -200] + + +def[f_][{x__}][{r__}] := ( + Attributes[idef] = {HoldAll}; + idef[int_, NIntegrate] := ( + int := Module[{count = 0, res}, + res = NIntegrate[f, r, EvaluationMonitor :> (++count)]; + {count, res}] + ) /; $VersionNumber >= 5; + idef[int_, Int_] := ( + int := Module[{count = 0, res}, + res = Int[(++count; f), r]; + {count, res}] + ); + idef[vegas, Vegas]; + idef[suave, Suave]; + idef[divonne, Divonne]; + idef[cuhre, Cuhre]; + idef[nint, NIntegrate]; +) + +vars = Table[Unique["x"], {20}] + +test[ndim_, fam_] := +Block[ {w, xs = Take[vars, ndim]}, + w := Table[Random[], {ndim}]; + def[f[fam][xs, c[fam], w]][xs][{#, 0, 1}&/@ xs]; + {vegas, suave, divonne, cuhre, nint} +] + + +dotest[ndim_, from_:1, to_:6] := +Block[ {dir = ToString[ndim]}, + If[ FileType[dir] =!= Directory, CreateDirectory[dir] ]; + Do[ + SeedRandom[seed]; + Put[ Table[test[ndim, fam], {repeat}], + ToFileName[dir, "fam" <> ToString[fam]] ], + {fam, from, to}] +] + diff --git a/Cuba/install-sh b/Cuba/install-sh new file mode 100755 index 0000000..0b65ee8 --- /dev/null +++ b/Cuba/install-sh @@ -0,0 +1,323 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2004-10-22.00 + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +chmodcmd="$chmodprog 0755" +chowncmd= +chgrpcmd= +stripcmd= +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src= +dst= +dir_arg= +dstarg= +no_target_directory= + +usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: +-c (ignored) +-d create directories instead of installing files. +-g GROUP $chgrpprog installed files to GROUP. +-m MODE $chmodprog installed files to MODE. +-o USER $chownprog installed files to USER. +-s $stripprog installed files. +-t DIRECTORY install into DIRECTORY. +-T report an error if DSTFILE is a directory. +--help display this help and exit. +--version display version info and exit. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG +" + +while test -n "$1"; do + case $1 in + -c) shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + --help) echo "$usage"; exit 0;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t) dstarg=$2 + shift + shift + continue;; + + -T) no_target_directory=true + shift + continue;; + + --version) echo "$0 $scriptversion"; exit 0;; + + *) # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + test -n "$dir_arg$dstarg" && break + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dstarg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dstarg" + shift # fnord + fi + shift # arg + dstarg=$arg + done + break;; + esac +done + +if test -z "$1"; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src ;; + esac + + if test -n "$dir_arg"; then + dst=$src + src= + + if test -d "$dst"; then + mkdircmd=: + chmodcmd= + else + mkdircmd=$mkdirprog + fi + else + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dstarg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dstarg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst ;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dstarg: Is a directory" >&2 + exit 1 + fi + dst=$dst/`basename "$src"` + fi + fi + + # This sed command emulates the dirname command. + dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'` + + # Make sure that the destination directory exists. + + # Skip lots of stat calls in the usual case. + if test ! -d "$dstdir"; then + defaultIFS=' + ' + IFS="${IFS-$defaultIFS}" + + oIFS=$IFS + # Some sh's can't handle IFS=/ for some reason. + IFS='%' + set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` + shift + IFS=$oIFS + + pathcomp= + + while test $# -ne 0 ; do + pathcomp=$pathcomp$1 + shift + if test ! -d "$pathcomp"; then + $mkdirprog "$pathcomp" + # mkdir can fail with a `File exist' error in case several + # install-sh are creating the directory concurrently. This + # is OK. + test -d "$pathcomp" || exit + fi + pathcomp=$pathcomp/ + done + fi + + if test -n "$dir_arg"; then + $doit $mkdircmd "$dst" \ + && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } + + else + dstfile=`basename "$dst"` + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + trap '(exit $?); exit' 1 2 13 15 + + # Copy the file name to the temp name. + $doit $cpprog "$src" "$dsttmp" && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && + + # Now rename the file to the real destination. + { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ + || { + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + if test -f "$dstdir/$dstfile"; then + $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ + || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ + || { + echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 + (exit 1); exit + } + else + : + fi + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" + } + } + fi || { (exit 1); exit; } +done + +# The final little trick to "correctly" pass the exit status to the exit trap. +{ + (exit 0); exit +} + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/Cuba/libcuba.a b/Cuba/libcuba.a new file mode 100644 index 0000000000000000000000000000000000000000..6be3100400fd97c76d75a70e1e67f55c797674b9 GIT binary patch literal 1147094 zcmbrn3wRaPxi`LdvV{aAvr*KvrLyVS_GBx?Y=cU?v>7s6Cw52EA{r}7FeJihgh+Of zb5uyWvw?NSfwYyc_B-P7oUfj0s|U_$v3O6yB@u54-nb|R@sfaOL?z*x|L?cf%+3&@ z?eqNSd1hwKyWaJ#cfIRf@4C)f6Rw=KpmNR+M_m*;@rqtjP!KJ+?2^d^p-{f`@;*bM zDVI%g0#uCh`Fw`Ym-)X#w>8@5b8i2c3w-JOKd$rnojW7{0$=*xImwsd+?h)+_qlhV zaD*>?@7wANIQPi-3ZHvtKlxLid*__<w$HssH~h@!-r5h&^QG_YANVxq4ldj5bMG;i z{I4&4|74PHjC<ES;~R6bJMrJXF(<q4{ey4Jy?>~zzkOD9{k)mJ8>{Y^Rp(nMpC<xm zD(FmK8eCJOuxo0D;X58PeU6VO%(VJh3#)u}@|h+ifio4<gIiOhuxo0D;X59rFMT{= zjJXTv&zo1}o9(>QaX20`T^~=Fni@A$P0csLr9By&<Le1qTt8<)6-1(*ju0h~NPv29 zYibmBP0cWT$Ad9=!^~gsb1Ce*XU$CvNnNH0UWzdNJW<edVby}$=hu;`+h<kIUr<#i zU9&1Ht7@cc?!4jTsunpAC#WJQ!z!l?tegxzEJ6lXpu53W)q*<pL1K<VO`4xBux?4c z_>xfQl4um=^^$0QG!%;F=U+N`awt?V`I5qmWm&BlwImk5I>YZrfmN5^_e0;%mkagz zLdhX_k#rXMf<Db>E$cbU=d;WF;x}|ew?5`i<Y?o4T?5HB|6~68ersf^W$`s;<<?}6 z-?Z=l&2j{e+ksR7?`TW2HKyQ!ktRZ#$<{>&v<upV`aGcBysQBz2edJPtIcFfAYRx~ zzxB%vaeHMP*vZfQ$>W2GpEdvO__fqai#r*AFXCS&qp}~6Y?RsoVU3Drk-V8~Tf`_n zSCs32|K$d4JZzYLV~IGZPuFiK5l5#_i|#a&p9YyEZN-P+uDV&bn!@B0sneFf4~H%k zAQpWoW<3yQa%0v*;U@WR3OD1ejW6<*RBq6d`}{h%DzPUvl~lIr$-VwqW>eDxz%ayi zLu_q5G`{ul_~h=~<OjLB|7G33)etQgrih@67QJ;~d`xW88$ZIgU-xg)lZOTk@g%+L zA330F7i@|NhXLU*0N%*Ji#>ybgFSHg^u}X@8q%TVbs)r;5sR-+Zt#~RH)rXE<HFj? z^MGe2HwJIHRiB~Xs^7MuIcD7-zMlcxRWftwM#NfbG;pi6o3@h9IUu-2%CDrdNy^~G zPIx0T<KZl_rjjXHIG_ay)XG~W2fg=@&LnL-B?j8lqb()kn0~`_Q+z$m6mOV~pH9i5 zUIc%JK*0>e^akFS5E<_usCRiM6zFZlcjmq`Bp*QAfO|Vo;+a9Xb|c0;xHkfE6A+C| z>H+!aG_UH*gbZH+)@G#WATWS6COH5o{M)Lvi#BUbyHHHrh-1+Yf%xG8?Y2H3Cc=5u zF8>FnYQc&B0K6N*dGMMM4uRTRaLo?q;#m_WFKuw$5YBSN0Ve{$>wq@nY$sh3Jt%|U z)`_@U4ro8w0#dl!Hu*tg0C!ilHvK3#e6w1+p#$HaAa+PRza+Ua3!u)D#-qLfbNj{* zwAAe~LvB8w5$M)^KGXhlIA8kSbZ|ZV2IKZprr2z6<(K{p%|h}M5XyTEHzdRI0a<iw zOV5U%Y2WZFJ-6>0iSkcJvc->Lm1S0TAUW3#PzbN&I|A&!`#qrarl1ouAlw=Ikd_{; z={JZ2Qrru_E<h=$b4;jXyl`{<14Rcn`AzY;%jkM?r=@;}AVmk;Gqlum$`#O3ufZi+ zqgz{hGan0lX+E0Bw$2gfK7-Wx9?O7z`b*9^)gtFyaF+plHBx&jaL)3;xnR&yqcQ7b z${ROQ)s*sYK!G%D6a1F%kF=p&8WXm_s^Ig6H<2hW%QFvv{kMCIAT^cd-Z5}$Pc=#T zn)ZDV%Vs}$ULNzU?`JBS3}XBRX>HGdXGXFoqgvc_95?~3>0<a<^n#Vz97y&A#7#$g zzsmsQeWLG~KmOql7fkElEBas%S`TML+O##lVG;EoNP**P2eqbU_%bYM^9<|Xo8;Fr z8iML(j~z1YamyS#WIeFVF+;FHFhGXC?ZRJ6y8|;MI%#@fil{n%f18j#v{x`zv{YMZ z5b7T_gp9)wDn=pWclh<PYX^SX+MOBcOSa^SWeuQt%LY&RzbS2jb@2*}z_Dr127v=J zupBROL-@+LT@$X|H(KdqiGPzB*^tP6nzfiIcErVJhWJF5EHl-zq&qnfOq^*pZe(EB zs_8Q~B<~H^4kkV+O&!!y?`I&Sbs7+S2$C3W+KKR$rgaqogPo=w3s^J4wWct_`PI#- zo!W}2h{`g;iMVxVo>|#hYA4?ES<`*mnzrP9;|9$KOYFdAQ?xTgNNf61VJ{Lh!c$N* zv^5A&^D3}o0q9eyJ^5|(LDLQ>^b*ky%2yg<c6ef`I9e+D<5nV^4@yOV--~yd70aa_ zw257DD;A9Gh-?<ykP~rH6V8g;@o>e2197oCE{;b!QF!9w00LE*HbRo2AYDbK2!scx zXI=HJqfn}*J|q;>E0C7R1~BKOhLvckedRmW^Z=Mn?UbM4H<vUS7Pv!zDWF#?b4O*# z>EP>c<_9FCHT@sN=m~h{Q2zhT@B_j6GngOABdCMs9Y=k2%B+*QVcnOfHC>84kUG)( z#W5D6A`}m#L7KhZOHs1Y_8ZBnO%8y?TUp+aM{%nr95O4nnXP*=_npzK_|uwx2=7zq z+`GLK;2E#nfE=F~7yC+}?WLl9ADT%;KGVOUB+~BaYg`;Q#jX?d6-k?DSTUcWt=SM4 zUzS$3xWQGu_BX?Wf6|Cs_l85rpDDdhAjQ^w<C24ei7TU9qX$*lKpIUE%hOUB@P3i1 zF5xdiP|Br^Z%9LXpM{=4!>w4rHZuGWOF4D+%1vnu6dXnFPry7mIhrA#4<-5|9c7$N ztZ69J>qoNK+F6GX!Sw-CtP0X~u3=pdC0&<`53{n>6wg;2hRY5#7~*BKwL6g9lW7VR zvXoC^v;j6s7dyr3_52p8TE6^!rZ|ERlOOh?T-5jZW@IBv!1W+Ghu~y4kWltgEh=EA z#5FDp0yHo{gqAEgryzQPvfGAqBPu|HX-bkr>Olmw^^Df;kw6*dttXH8QL;g&0$7V{ zO{=&9HN}so;8C1!SjD+7P&RP^){$ja@eI83t>SXL@~q+;@CsSQWq9RU#c{lXRxvTN ztYSk1!s}tcRHlJ~%3fu?q}%#&z}5$^8f3Mz?Cd<+y494Xm1&m^HXc^+FaMD>#w|uH zwX;4uIgqEV+zp6>X&YJo=-@LAq_Cz~X8q)$tcNCv;&EEjMg*XKiFU<;)UaX{zF&Qh zlu|MW+f$uK1_zl~vpv-f=lZd5iqtkZO{*vbJ<^)?ejoOzEMUQ$RRsHY6m~7X3C(8l za^#J;o!FKevnGb0Wji!(KTm4=vP%5z!zzK}hWK2u!Abz>U|c4Qcj`iDINL|1g<sXL zb45{HuC2*5D+k;l;HUvPr8PYcR$Sgs>tnY?W@9-#C2p!kq?+*|QV&S{F`%9%I>WFk zabGA>-Owb|p?Y+q9@(fTKSe*_X!hL~$Hd1amG50^UHP??Nb8<aW(tv>D<fS;okNXw zwV3!Qy%lfP^JL6%%Y01ULyNi;7^Zbkp7gQq8J8~U)@pKwZ2h*I4r@^bqDhRh%8QbF zf{CA@lVewH6WeZ4ZGL^`t)BWgZposzFGtB(YifbX9Ws0;$obvg|0nIS!^OTP$;`h0 za3Z!$BlVKj^e^8<?iLlb4rDQ}d!baxfn22*%+&VOo5-qs>7rK5lCF2*VsA?+O$t(O zPkoq%^`u>&rd@q$*H>xRK-zUQ?ef83DawJgD=Y2FNxOn+*VwcxH|-jic7@WeaN3oZ zc1=vX@*UUR+2(^*lPngF;v{==qX%D{-Y(7(Nw(|SlQf;@O4o8cv!$y6Ps&Sl^nWfo zWK%FF(l)nk#-zc)xm!!o{qncYed)S~&}8e9{^$R3aBzvgRdk$>+Q}!H3fR751Jg_% zuc%*d{hG}Hv%R<$FTNM?Ejs(RWp{#lf9Lu5^owLOeVx*5l|z$uCdM>efp&S>1O_Xr zfIkcOB50lCT<bWWMYg$Np#jP6keR(rOYIsbp)|lwiH7~mMG;&MNQr$7O>qlNu^a1Z zX{0NQ0@f`#V)YZi!a%|X(|VpZIEwCDP`2GnZH=l21o~UIp*u3>`5=mvR7y7Ek~BSv zrd3`J>yw9w`al9@+*(JnVu$F995AhQv|W*H5W@ttkjzSqN`%|35vZcg2ho7rXkCpK z(gs)*x9yh-A%K=V8!^PKCs|@uzfyHq!84K*NA(6Q3^$;SP%1vcfCJi3;Bs9Nz-Y(D zML)itH1VYm-dG#6&OyrLC*Be%mfEVVH~@VxEt}Q?@YPHrtVX&&s%ya*tQNa)=pVD| zJFx|=+|%tvs970e>>)_68^#a4BR{@#j+Z1iWtokw>^h=Ph8`z-Y&W;!K7%>R9v$4< z*?o@<ET1|kIwRZk!Vyb;O}iQ|e3Hqc=Zx@xwzQJ$i8p%x0b1usTlOr?WKRRCaPhhr zO(kso{JiMvb6>9#BWwI!V5ITzU8vRSyPY!e!XB!Q*q+?2nXSDUW<Ok+TGLg~sN|tc zE%oquFe-myIkA4-fT#X6>qLG1ZahVw=x_W0j)r8nzws0Bv83^1enPbmThFpco&WyY ztlt(S|2)Fy>)IRbM4LI;0I(QP=m?j6xPM#MUI%YI@PH-DrD-Qg!C-|og?&cxcH<`i zG$cRpH-5~>vXA%gK=UKe^;zQwj3;`apm{PV=yvU(2<rAv{DoZ$>#VXYU2&-=TQkJl z;+^Ej4!8ZgjO=&1K5zV3hCW`fb_zlpg)f0<mZ%MY&hdo>R&9<7F8VzIvk$9KK+QqQ z5c8EP=3}A^?V5qOwTikeUe}+N61K-aPa#xmpYN>J=F8r(9(gG)-YB&nI#U+AWP1oc za@fW61N^|5uRy(H(U#~|z-c59dcGXS&@mwJrLN7-Ijb7az?py_s@8U5oMk6Q6Lub} z*7mgncBEQ64EX%ltF;B47~0sm1<|*DDZ{~muuB4GLOFwaa^SLsf6yBbbt4kfZf1kT zu$P7)WUYznV%RIj;{)AMzqa&w=!Rh}Zz7V_AaTW(nAoB>GB~pb@@D?%jntBc{vEOG zPQz+mjsPm73Yz~6<<+}-jA&a-bi_oLP;rW_2*aQt63gyDwBN;7{|=zKA=e`$f{_)l zcpkh(Gg$%Kj6hp@o?`EQd^q`Tki8Cv8_8Zb;{aFvJHS^nG2IA2x}f<v#1TX99O|j} zZ$rAMA41YM3L09-f!OM#F}n*fD-yl2C|Ujvh#R7T41mLN_)>C9K^PF&1B5d;WfK#v zPKu3eFo}<Dg7xHXf7f2Ue>*%Gw-Mb^(7ciHTFW0qcp+m%x=s++33BRCasmh6mNH_r z;FO`Q1pzBV7hh1P8q(2s03ze<@y6Rx@C#X_k^_E`k(gsm%~C~N_b~n%KgjWC-jJ^q z{4a|WbSpzF2qb=BEyz(3iawMhB$Ro;64;_jQddv3uizIfMPh1}Yn|>#W}0G~d0Gx^ zCL1}^0FZ|1tZ&mW1p&5xO;7z<X_%h=S0IQ!UG$|blM|I|nvCo=!%B`t5Xa~=Kn$*N zA|(vSI6;vA!1mauCZN(jF<RIs60ynyRxoZC1;j2Dqhp&6h+Rl#*WUhJj(LHJNT6w= z+jmLhG|gYQMN2k<AS_%~;~qGW?He-04j4KppCUsQ%sxORwC_3&uBZ%Md!>>tBC*1k z5p|X*3)Ee1SVcLsksp(iA==zDe1J4;23Ai04zHoSSMfq~6-R>COGzuEWww5jp+`Ds zt6~C!w2rxI-J5~>CT>4;In{ltowEut(I!co6}RudoGNenj|>^CD5_^=vXbq7+Nzwh zXtx4m0RH<e78nUI+>*c;S}UXQods*fmdI;HVJmvB&05ok$aDL~!Q^3Br);#{tVQVK zh{HOnncbAeP?=XX2#S4nE98~s8Wm<tS8sHSAzGowA_(#IZ&w9e6~Kb!6gMji(=N-3 z9<mo76K24^?s#$#adsgRYZ0Um%_<5ywZ$Q2$+EYILr%TLG7Yk_M6*CM3sj6Qv|xDy zV8{}XQqgC>g9w9NpEJrM!pyO+JBlb5-fo#=B@UA(UT>6@Z}wrhRDwTYRPQ%_A}hAT z1<g$$Yc0wZWkGRRAwwqFhoBO@t_+p~CA!7F?yx8ui#T%)YbwlyAvViW>u7Z!zNywd zX|+a~rSxEqVIOX@{spYd@yrHs+zlg+e<KK`nLLysrUnuhSl8w#0f`O>pN;4x{oAvV zbyC@TqA)>})R0wBEfLGQ64T@D$s$gY<N9U`TggJnk>zMhx+F(C3zBPTX_BM?1Jf(M zLS4skcu!NWH+3-Gw6avw(vnTfxOh}HXI0C#gDqPt#Y!A1B~m?TgBo^)-)WS^tvR96 z)c(Y`bgLdSSh2uVJ1_!MdD+P$+1kn#tX(bH{EMYts?T=@-P%uMlAzXd<n-I^saiB9 zd=2=t*U>pNimJMi?WqPpc^Tr-W;m^Da{V*sq;?9~0n%0+Au0RrfG*xe`*<x_EENYZ zRx?26?bQs8VId!0Xje0FCE|G8TFtcWyO!f?NFcg)0Od)XRrw52*@<p<sXguu-8u(D znQ|Z#qnx^RBS$u4sShP&?AFDL(1~DFC?VqGQtRrV5&0mp*$~}wfOQ52ScN1!0X&Th zmx@D?&ba7`3mJ_{gK4LjFw<HkxfGwtQCBqJozd3R&yadVQ;uj}SPi%AkHjsRST`@O zSQnBs(p?fQ$$Gd%pqC>DQsUO5?CgM!)4A9Qd9c4^<s;X#5EvM80HJbMiP%xn`oSn? zyga!9Lm!`_c^;gG*7?1l8n<i)C>1>%zs2MWJ+DK5>1H&<E_yj}J->Y^^s6vsr``M# zoAy4!ia2{FXYq=%7DwV@3+8vVr*cN3`-Z94oGoT!n-5h_;btf+dKL^l#=qpfl4MI+ zslThVaO2&-H2v?#3uR)pWwWGUWb)7-i^z_hwTk^Pc5~iBIY4rm=e@TbK%HX6a^z^G zIHZdWBJ~_RY$J2fh+ryp2j*5WlQE&|xBXrHhje?a?8wUgo7ka8S`4vG*VeR%)<|1q zyF`5Ej_T@aw7$ek{d;vlFtH*!jYx+c>59ObY>8Q=S^fj62e>)Xk3Pk^IS`sSF4{2_ z+<JWcgw3MkxBYMTA4hC{cAF)x9%&T=h^jTxx*nqT6~3-r-zrj%fmtUf{pE9HUpN!f zjrDPH$h4nt0bxWb#{{F`HT58is<0ozOKOXQquidMKEqO|mPEByQ6`4yXiq%`ii{qm z?g=;}onqA^j3lx}a%uQGMCx|{I6Ng6jT=mi5UUB&ZJn)4qcFwvf|+g*6{!#LEU{zk zn{R_tTcKkdS*$K65!e=hFjw84nt^XdjKaJg+?z@1l?C-D=@)|VLYzcb+{W!k$(U6> zfP`Q1B;}+%&=Qf+#ZvpVl2wdY3?KzvU_EkZLPw-cB}R>}m-si9L^dbRl|xjR{D_N> z#rsN77zy0%NubvBEE}0A#^;w3N=kMyHn+(iNs+<C8AjogOt!XiDwGq2l!<6hl>y|W z>JhN>G?Ni+!QkuBFU>z96DT6+Dg_fgXjrRBLVucOvKg~_S=KcJaq+TU_9F~{m7w|F z;%_}XB3`-mx2=1>ZRZ4&yMGkv5^a$Kk<I2CdtiC4&3@=DTD1uWVuc&*$-yPh*o*z_ zalI7Xig_NHI+3~ok*KIq^cl5C)c~~bJXv2P<%i#rFO`?tijClieRdr)1_PKy!hB*6 zILIUit?Q*(f1?`{Kcdwx{*hL)p><#c2Del9Zz4B|C-mo;@VLEhE#p!16D9u5C6P^O z`R|R3gI@VtDdNfrmTN)Z8Cpp$<`8B#h*>fVAVP{51uF&-rGAIXPiahQu>OZaq9mVW zdi`38;|kU~>KW(q?!o}1Wiv1`i+RJw_<!NESKtBrX02n!T2lS>^$!13fl{#vg}N)! z8To=`Vo0t2u5_KCR~%UL>XlNa-V$<pV*qI;W0*^bSGHKG^@zJf&Jb;q(+hEX^5%VK zr{|-TJhi4h?yzfI43p`5z3uQzK1mVym2NWUhGcRpN@njTz=>B%Wrw}*00X7sH7DME zC(OV7jr^mmkOWcyA=$pD#3bpJZ##JjvZ$}=t*wDlJJVO2hURPkDt&kCTrz5%g-^zy z>TJwczhMdqkOR%><UGpQuCvvg1ZM;OstHgzlTO0AbP_NTD`dKylqmkMv%{MpP9N!l z^^IxO{$QAD|Glg?qwF{m>a9^Nx8>m9ER>T>+R`dnF4T01C5Ji<>(ORlpca(_GI-0b zjP>IjtE}jNp#{sPSodVnVWMFshfT%X_`IMM(<aG}0~p^!FXpBX_hG(iOc53@1kDg0 zMR};iZ+;oD3ND2yqhl=w`&dmE4W#*DM-A9zT<h^39Bc_7TqhQ!V8ka6!-HIWGXrZr z*j~tc=YTfzHH^1nIY-b8!V?I$VHwUClPh2FaWgQ>&0Iq8xcTL314~B|Ii!vop119w zA9(%A&ge^UmKR|yi)?x_UN%2wvSG4a`%SB!{R$^c*cew~XPEiqgZv_i9J4G3Bjre{ zHl_>%S7cyJQC@EbLO5mCkuF4;`~V|~J5ed1MW{7>HIxrl(Htjt3yb4RPB)YHRA33m z#}Yx#!I+iB0SrB8O{Hk>SZA@l@{1wgnCONzVtWm_uvN6hqWjI{h9c;49y8urJ%u(v zybD(?0MVAG8z6I3C#kKdPqY;_zU-;2Q99ubwL|hSiNcn0put3w0TZI8eecLJIer|} z%OIV$#C1r2i)mktDw^w4UM?wYhip5vUvTn0+ET5JeM#X5u%_x9BZE4CEV{Y1da71# zOzFcbf|q#}+i>;oV7*?M>EC4*9;*L0a6-;8eU0iBO@jMTD?+ZTn(=1sS<<+Xfl3-T z^VO5LBQ0!jF0o+Y8OTB}dGF$B7(4A9!5k@E$ANxr>8<#Pwy-^q00FF!X~~kgDLEV9 zDko#gfWz5)L!4=;V=!~Q3>_02P0SELq?8#Lu7HeDVv@yK{><xdFq2CveB#GBTIy}~ zuWUKm|8no2(Lr@`+A5xNMX{;fp9zYtrie#5mj-T`!DoLcJz4+(ld>bk6@AeUO?&LG z468QFZ2ce*x9<&>>2qJ}fmT6rFL>J!U&h4O$vu9(>ln*rv7K{JtS%ytVgmqF_~)lc znzuoFgHrF2eHf%4V|Pk9-*%WdAr<dc)B|Yv0AcwO_7myu0B-Ng@Py7$?_PpZ9M+Qm zCLtHCQc(mYNo`pQP`&Xuxztu1M4q`Rassy9T@CrKVw~WmO}01?X-Y+?n1phr7%AeB z!nnHtMC3TIL!|TW2_Pc<90G2@a+G>Cw*X0JArcgiGUjqlNKGjmK_!l{TKML|H^#n5 zuvlUQLI4J3x`V~#3==@X4^FGlR%SvC;FJ>F_g~I>1}7_-$p|Ey*eH&ci2^RW#-?~5 zy<;2eTT>q*G0_&uYP_-!{xs7iECSL}Bfl0JPAIYigB6@+QvKohaS>*3EEA&)du1H! zAz4heZ77rEFiqs&Y!=FLfA@1#PEb}pp4NPCJ!%SNOfJo0VZWsatj3}T5h;xcSk;r8 z{ny%K^8ld@xz?VXSJJpi7P>#ZE#)QE9;NKSl9zh-VR*tSigVia0c1mTC)R#;4b&eJ z?}KBRFa1taS#>hyJPq`!p#jWCTf}zEN~|tJ%#qeNJ{Dg%)ugz8>2jI47JuP}`*xU> zBWMX%JOP+4(;l~9;1EH3>IMXb1C|W~pSvJGs~9Vsj$sK5r_l}gYE2C&j{0-RIT(_S z<Zhs}@|C#wyrgw^26~urVLyUwk+O;veuWkYKeZKe5DaR8rXQ%p#X#cpH$t!)0aSqX zUqd<+LsBtNl5AguoCuqhzCsDn?oS{(r`V(Lrof^PQnsJv;$d{}@Z_a3XxId)L%X*R z>Zw|$Lk+JFzeEw7_cdwD8AN1s3)r)+E^EJf4k@BDklTJuAD!ZwuguD;1B`ZT11*P& z4fB*u-AeOiPL|C;zvs|+(Gl&8bfA3<L$rJ)(w-d1zWZ{H4orSe5>6dVT<EZ7R*qdw z*cCyoY05}MD*Bz21SGD+x8!0MsDZR6va9k;1AM@;4=hKvn3<AyXv3l`*)zbhK)W2J z<T1!!Z^iOOZJu;bwI@pfiq&7i$1cw>?fC1t7)U*z5k=8Q?33_J1hDB8t3SmPU(c)e z{O=O6TDu+dLGzv`5ttmuj@*v<qMB9^!>I549t_sP_M=um{_>aF#{l1qQQ+gBR%;Qx zyIQMl{S43+1&!!^Mq#^_Tzncy&)>A~*%uj$6vWV)Co5Hi#6k*^1=yq=EGw@<XVDnJ zG*upI&@roO!4lr97peF2+whiz^yG0&U*&aZO_!kLf{crjYLKb8$w^t>28j*?85Y4Z z;kJo{IAsoi%=>U}TO5Ipj8R$;R1io|-r;0R2AW(i8-;zax-j=QzklzC1kl!_{q=h9 zpP}z)7UY{x7f+w6Bc(y;RLJyqAVb$8jU_05{!UY5I!b~TjwlY|V-Y;fXMa#GFX&3H zoV1txqSvO2O^K^9v^57<Z2me+eXP|c09bN^RX8wHxe^^K13YU^WUQuDTcP~0o~|;r zo^fSwOH{g=n%b!h2G&7YWfgM3#MF#F*9f0%ag!vH>^?qWn^5#rS+~mLh2?X!`(J+_ zMer&Jwq5!%&-c9x38JbUvwDuo6{v)x33~FFe{l@nol?b_gTz7KCA~f!o~V{Dfd1tj zLC4)F>_HBob)EM*asky?Io4$7wbgG!SXuF~W!zhZHU$0;(AV!lOub#Z`L$DjnsXVw zm6#)jEfsCO7xzk~k?cfw_TJ4bbo$OEVk72HU?@xM8^Zq5$`9olv-9NYwe*6v6f@RL zKFSxWtJU&TykFvfcPI}XNn?yqW;F7{M7O!=j$H_8uPTDt4wVLWy|07E!PL!wqj9Sf zOUaj&(4q<_W29niOx%LCLR1V`JDNGsj`pF<?Reop{iUvbeI~7tXfsO{^|zUo(8JXX z1OT+O(=5!?R&CIp+L>M(IixL9hqMLbU>u2%N^>%ear~9ad1_WrU}RP;HJ)}=)Xu@8 zkHNA<y|=yxCfeIjQ$qN=-1T&-Mk;A<B^-kj2pki8j7WE>eM2gM?gB<5eT%<mtzso6 zmmqIH*yc}+uzvW)C((hf!*U%rs-nHc!Z-s%E}H_Sg>Tij_m(ipYB`>1-xG2eEe@Hq zJ2SVF6}d`|8rs{tjXXIubgJcA5%`+$#P`8^?<+t)nMsq1-1{}A4Nm6!ERr+WdkkTp zg^CXLe#s~mKh{}Rv9sD!E%_V1+7nCrQs;xElhH+Wq%HgXAqcjuJ+O*g^6I?>kf)cx z<?oApQTTS^X1kV+C0S4qEt@bHtH&G-N*D%>*?k)mcq4JKU6x^19>hcp;9Pnl;a?`c zoovCPJuJz;pauEJ(5_#nlds7sXo)<slZjGoHkCGAN<~$0r?IufRehGT;I0e*4{%J* zls?84nfLDQy;YKUUNVTGbeT`RCV<WQP0zd$I%BI^&^jGItQ^tSTxN=U!`+#G;gpZ) z>)&e!E*1wcj@LSn9qF9gS&O+8{8%93;a4JWqva#<w5A!SlaFofM)+MC2E2P{F1Stx zGmBecAy9E$LOCWsz#^EvsBxWT82vj0td6Q+u`DJM5BJzV85FOHS0gpycd=xC8yXes zxUM5^k2^PRKX7g*G6Fwmoy(;gSSSpOsA}ET&oi(BgmLKN9R&Q80UPjXV4B6wIV)~A zoyA#Iv-M-t>kphIXHpwCa5~x)iEy8ZCC{C5yb)uyO%Edd$z$kKZ{+}9dBCtjVwW!7 z(;Gho$p$&S{t?t}iJDgK-xbULRLw#ctd+C*U7s4!j}5CLOXOodCMG@_3c?xreJ(O5 z@VoX!cVSikwoKD5=c*WOX^D(A$B7N{>;Rfia-bp{q87{k2n4N)px(7#5jCQp6|Chf zKVro%SL6~A8rGb#q86?CkGuBC&@v(JBxAwaA_RzHLH9mUi)q%+8uu_95RL3T>c6dq z{#{-B^yl6KBPyQgu7b4&LRsaxqBe-hc{j)qQ4`*J_IqFrNy`OeqIRrd{T$-F0&&E| zXSy?S%jF7k#Ze4Pj&{ZDd&7e|=F;V|A%g?aiEu~3pVT^u&8WJ*76qnV2T3hs4qJ6t zfb<bF#t;W%aupE>GXb&e&ncanaEI=$LNcPq3;sm0GnV7%^kf)?`$ZjwA?mUgUIFeP z_K!)6{>Q+kBSXj{mi=}At`p?^C%KxUE(?KkqC3%p#<+xBH}q}j<zXHD0KCz>b5{-> z#=lSVxpL^rZvnUoH`-?VxO}J!m{>Z*8T{|iRgKB`Z=tb|r9($ATlmMud&525;L5Zg z=6ax*{d=``Xdy~u%w97diDeT&TgnR4u%1$DhyF{g9b&)T)m(Jnl}<RR?B5C1HLU;U z(w@dWoDeQ}Sgjp`2JeZ9uaHYZ#tGeUG6`b<vFxv6_Fuk>X#02SU7xxk)!LywY)*p3 z^WZHWR%?eIW(3;Oaf&^bzI2v>y{{Z@IJ(e?(Fx|<r~Ny@ms<GaL;#Ko9#(6I$d|*8 z;^jLsGR8tiyFLY}{+%vgaz#<p<!hWol@`E$m=S18n;=_=jca)RKEAljC!KJ~7grA< zB|=h^!jffA3JYmTBNsfZRu1ifguX2~Q7eZYCQ0bBDjm>c<e6HI$I>Bb(as!Gr2=Zm zg6@=wqkd74xYNK`sv}5Py_h&QWF{E$>k~t&wL?cUp!<o7vECbcFQbEraPmN^{86gB zW87fV3S5;>?T_O}l+I^q@iBS`J(LFXFK7fB)+3av^&my8%-?Xc<*1|A7Ut6qS`Shf zVl6{Tdv{_ITqBF6gVMrEvnkd}!)~u-P;Kc~FzMic(p0g!_H(!)hGjzhVo$n6D|Ct# zhSGZMAy9~kPlco_4T025aCD+kL}b5XWYSs{)aEc1j{qRnk_Q+@Y1#DbuW2J`S(v7- z{jQnRqhFsOa-(2Q(Df^Tz0BUzwa*Ze8~ypEkal#JSWEh*y_WGB)<USv59RP2%8^nT zPdPfua&#{(ptlrpNlDzU4(RBL8imKidAfZohA&gH94sDEqa!hK)LSaQA~jg!6RB~v z38-aZR0rntYjGQvcHVk?A(l*452+O@5+y*I4{&uN39di^i5ziT7Q!Bj9>j=|`frmq zF<;qJ{y+Lndx`~@S6+Nldx{lNp9i8}!j@i)hAak?KEHb{xQD?*(;=QYJKPuf(kMKx zHC@Y=P2C{umbNqpLX80-z~41wLBhf?S-nVQRJp0-EQ?hP6tQTJwo@<ob6BoHlcf_S z5VesmCWFdBr$zz^lwrfZ=a{D|VK9mis;6V|kzxP*xQ<3ipalQ(Wob(@k?CZ}t(jEe zcC$Kd9c1-HW=?1ekTzxOFw^MNi)7&lBSDkkAhZ#Dxk|?nTqQNc%~2xekelGbe~zI# z9h){YsHADG_3VSHs!Z$mXK8ZCN>JnisTjxv$ziS(hzuzO;;mO1J(o%$dI$n*%o5?T zj2i2u76+{JppU8)IogEs0g#^j(2wRx|GR)PBcw%^Ie}VHoJZTZ5K8SBIMz5rO3f+| zG-dwLs-TWxW}rUJfFjd2Qi)}ofY!pJ#3&5kRAMNwiCO7xm<3i<$(ryhe(T>FAQ%Lt zcsxxdFwbU{QXV#_^3gDXQF~=jtYu*QCx}5f&)=VDUtsCE{vz#2@4xnAgel#>r<sEm z`}F6zLbLayBN$!edaE@2x!nwOFDLHA214<P5lcy`T2ALB!kuaO^Rkcs@1TNqFD6TR z??XSUx_Kx*_g^@}`p4<$M^3ZWu-Blin4Ck?w5$QdLF`SEF~yf~_Aw^BH{u155#E;U zMt7hmgY$o=HURA3hVrd?3f&lH`+O_bxx~Y7;_idiyoukw5UfLBBuRB3T0hIMbJj5^ zn*5l{9h+ib0h3Fq2Ec%IzVwTSzcM)ri#~*j&P$JJuVlmD?N6Y8FcSTPk*XSbK=v(6 ze6tb)4LSD3aNYavp!_Re#YnkfJ+YE;B#|DB<!wMQ>TT^k-H7(;;#Ix%qmeKf4L43) ztw&#_&u*;|(%<~K>%ad@xDJ?@=;X{`3wn#i14iNO@J7x43Q}x5HXm8J_yK9SO)DPW zrt&GqIl~Hg!Azic5=O_%TGIqJ4D0vgMj-b6j+$YqpVMqm#;bojJ1KI_U%^U>394&E zcO&F-hLou>#BTOg(joh|8`=BaFzXSfYk#yC`q_!T${H1nv1?0jVvl7F|M_uZM?Sv- ze4qZ8_asw}0Zmh8zhyh(ZYB=8F3u|K-h!3SA(*%8vfr@Qa9x5}$q2zAj1|dzh_8n9 zy3Um?2o~)%#D1}oY(VI$%>-N{n;jvA?nV_wOdAozTJs=0#7gqv2{J^NT`xU*KX^ov ziHnRAE6I>y)uZCQlZ`%yynzMYj(OM(GmmNpg&%9oQS&<K+g)I@7ZbDZfPH}$6{2e* zN};i(>CViZZsm)%2U6iB_!X<(ZxB?SnLE&zVdaauS(KtTQ<}x<w+fa^rW|tfQu=f_ zSF*!s-*HToqBB#P!`YhsYTcdelU#sufd0(M>tFa?34~MiXD)R6GZ&c2P3X@YQ~jB~ zZphHIA6NaEC&H>jvlz-9v;Q0(k6MM@2yJN#42WSpt$H*P+hDz#u9H84E}T#&zlVy@ zu>ME(Xg-oXn#Wa-1}*0Osu~my9X7F9eI-9)tsJwT3(GDId#sI4P}QZ`&w4p#KM|IF zn#Wb2=5f`h8Lt?mwMbVJVDOk*L6bq*d}jsy9yp_&Nyh-53LaN|8rfP%SJ31}c4}la z2D$@K{Ez(o@41|*PEDG#aY%@GoLoStjKXcrJ*|2*A4A*?Qgo;0j1ATkIa9rwV?t6S z6H3-nU`S0Gx!`fttJzN>$!^W#s$26oX{w@fA4=sHvb3m1sw~A6KTXq7RYa6gQl*4F zS`-de-uJnM!VrhpB0VAKS0@Hl9UD~MrLyv75pe4L6N<pmlNAA|Kdde08fwDb`g5$i zxD2ZbN-6(|_%~EjFk14bh&Ae01{%!a#w~4}Jl3-T;-~er*6^nWAuAwh8NJrlW1(qR zl`y2e6)V**5i1#5TRMm*7|F#;MV_{|FS3g;+>XP5!P;Ux$TfeCQJ@u+R@GWF4y4%I zkrA9=cTO~)h&9Yuor;9EmWc`hCRUOkSW!$9uu1qT4J!N_m_&4VoR#^qO7vufQLu*A z*Yz$?#x?sRw4sG$iw2kUQEfA7!<q}b8wIoJ;>J2JU5*_q3Eliu6%`};QNiPE3@WqB z0VG<<h-uG-)m7=g3koKAg?>skAEM`&@nQ7XL<Bu&1c_#RF0Afcj3HTb-R7b$K1D%s zc<YB<`dBf9aK|vdrK5#g@IP#vBOpfI?#jYWOzibEKpZ~#HwTt3o!aiQ-vfk`*j?H0 z$!5O?Yhzl`@A(Y<9<+j3f4mtJpO~37;T}Emx>5Lr)^su36ZZA|!$4cwiw{*=t5j)C zj~ubcNi*h1UA8AMO5tdNt@=HxNl}%Bax0baW2xTKJ~P1AG5hXgZV1`RW>2YC4H(To z?$lh`(gP3x*nl8EgsVZ?4cZ=l3>6rs5m6;OJn0sMt-3p3;~#a$TB&%Cpm4Jql<kMK zw%Mwy<Fas6l;)rU3@)rg)sAkCir%V6k0q_wufQ!;8nvindZMow1&^|e15Ujuc9SYQ zG@>d9rH$FhQAHOcSE`7MQv4B8iXP5CL$fEqNIM8h;3$A@7iYh>i{oguG?S6UJj0?A zJEjh)|LR2DJF0X~Mu?E<F3#LQqQJ0bxjIWLfzFhZ)&1`p+0+15qs%D;q;$pHENe}J z%%k7)2M^gyVcw`<kN|i_$Dn_^Yj9|3_(KT)ZG@p<py*4zPsyJ`ng9Y&_8(5@>ogEf z%Lb+N=`Zfavv(<aDsI2Vfy@5R$LOiBrQA(?hSOh^J($-dye7=)2?xH1bbbgrsH9EN z+nbU-8}w(;S;zJsCE_h?;)U&du*pZ(*=Qod=%ce>p<9Ztxb?emGu~HmM?I~{1Z&Tr zhV$9A$4q-hxJd4}G~s~Q9C<s^#$H32Azs1`H$|A=FfhAfaJw7yP{!c*Ds*Pb(e%g0 zCs?=(M?Ab}LLZj2o5|<G4TuB(x`!L^vYNt0_{0}Qg)dWm(RAUfOnuQ5<EvbK(WK(5 zLVd}Fy-ndc>Wj@-_|>W}{AiEW5>4Sn_%sp6Bly;uzK@I|lzb$opxbei1ORq__%UK) z%eY5mi1$s1=0WMiRy;j#KEp0!AdIk&fs!spoIvI@Nrrp&AVczjfd7iHa|j&-z={uI zIwN3YhT`^|AUc+d<1~py7y(J_cemcTH=MsubL`|vx6p7FipVWA&}!8SKV9;oX)#ty ziPjV&Rleen@`)$>6C_yz^c=7g@-=`z3_gU0{s(H@n1!@@^z^Su1T-p0u;+!RzabTO z+H~I&(U#svp@VWh(tyg0le&N<s89`<ENq@)ikxr{37Ocg#>xpBNJ}mzAmNW^JRCHj z`q;|kX`n<8K7-PQtZettl2jBy(vqqw2}ZZ3TJSTw)bYPYIeLt9qH4lgyzk7Przdqi zQ`AbVvP?*(T>jDwGZvJV6ADW2R#+AFPZm?jJwPOjz0Uxy`XMNnM@slh6?Wk%5$_Cb z#FLBcaCTC%ZY?*gC#m{Q@%+qFJh9wAxDP9WxFwofKy@n<9q=GFYqLY}i;L%T@q(OE zMR<!81L#(UNR5>apGf7wVPg9#BnxFAhD;cfG6BQ?kgq2{$+QFKMvikCejkc4{|+lt z_#q2nZ&2<$y33V2pY9pTJ%#QH<u0OowsM<v&r$9&x@+K0T!z0&7GGRa`BuZdXAOo- zEVE6V*Lw|2ky9=j?#(2)44X~GS?2h=^?rYSPxK`-d0z#-?OKr0n(AeNj8(`&{uj59 z*W-sWoAw2(0kLeR0WSO<laCNRUp_?%+*fN_^>a{)Qi}j&A$Lg3kR&83)&Th6iLl&P zBg=6rpepFKDCqh4#UBOz;No&Lehjg$XD?Uz94)rSeX740L|9}T$$0<MXiqO@$3or{ z{?ot`1+?#;B#|Xpps4t;?yK+?`23R=c>Dy|hfu1>ucLFQ&|{k!&n7e25lOd8{b~~| zvl0Sr#fp~QeP-kp6Z@EH(k)(B1y%{Wb?WB8l(f)O7K*zgU`M)A&X9V$<d`Ds`PX$s zDy<dx`GrD;dyc>+oQs|17AG<VBN8K3@jTNmZ3)&KcEBCS|9wo2u(!$Ax^BE&Yl0sR ziI43R2nA2XiDOBre97=y)7xNY$gG@5)+tsFb^K9CI{4d=RKH<i{;t^WU<*T;8b~F* zhRU(&CpR_xHDrkKbTSk(Dv95)IfG~#oM>~Lw8+6z*qGjPAW&unFIMtU?Z0}Bba4I} z9>(k>9nvHI$u6!dAr0QrGM@yAYdh)h@^!K}zvbY#cqfbRd=DMc!mzWv@k(D;z~!Yu z{)p?nF2V<Kc#~(Q^E<e`*H!p%=@5r*&5Ho{We%Kv<d^Y$7q|C{;KQXu9Nwq}PPmHk zMI85Ly0{e))9YTd;Be_M9`Z!FPQdM6x4_}jAP&>cw0UKDrw4~{;!yUa=U#Wf;l@R{ zOM`Fss)NIg%f%(Fe{>P>PC7W`g*cSo7~DU?O<Z2BxLrDoi#NZS9}{r%61WK?9rq^B zq(we>{SvoJhd7LjdBHdHfY(agE*-v^e&SNr*W>2(1#TCI{>+Q<xJirg@mh`Bjf?y; zEtCyux%toLjZ24b(jhMM{%+j7evjLw!?1Ld7t;GNZeAbZcIgm@@lZD8sRTE#KjL=j zkZ0c14a#UPZeDNUcIl80mlyIyd|of&cIog<*%2>_`wHB=j^Xy=xb6vn>qNlyGH$}j zFT;}#Wk;S|-G2jaH!S04x|nXtkKuTIj@zX}9MW=e?}D3GKW>)}{TY_=F|Mm{^ZG6j zTskf;(@i<vjGHv?a&TNc!YE_X`T=g{3%9j%{TUBw@TQ!9j{6^R|2<dToI7VFLX$44 zTTppX<@`JEoImfPvRMme)znngOsdSgc*>NBqH-rd^DF;0;;7hy1@jk#uw{B;{(`yl z?g-T-W+kdZ)eGj|89KjiB0m=-2$zt$$_29$m2)Qf)Ta5Nx$|o46QNo#aA#ElyP#h_ zDioSGdoF^`rV9+#I?jbvmC99BTeqO9CUpKCK!AJJ?RCmsT{G(rI2o?4s%o}!-8pw& z)xuf8Ciu=-i-tbtNye1Nyt(r#7gWuvt8zYXCy&Z~$AY=D=gn7cnX>A+HC3VSonQAo zN7!C@$}RmbDw&t4x&z6qf;=yo?1<BMf;|5U;@`r%)FD_m>(1I5%Jux&q1yR#=OyYw zRkOhL{CR|^J?zQis1nF^R${J%Uml_-kjdb@*&&LfUV7Gr>gI>4XD#rJy5;=Yw?d+! z3xB|8D7$jb+`7By%tO%G)e+yQpUS+hntftcPx3jcP&aGgkRBu;yE=GH!xsB)00(xG zlwJdALuv(3LarjdG4|7`*H4T2s^%>WdA>teAr+4JomcmdrpxQCA1Oee^KMY@DJxqP zyrM|GYYWxe=Y03QsJ_P*{c``kKf2_#i(6i~VoCMGk9_>2JO6EJ**j+(aOtvGH+XN3 zr+ROeQSZ$mA@3c4zxT!`E{9LNL5tTC1y4U4(ynWYi!Tr5O`AR~7K+cESHCC{nmlRB zq)S}?v5v$4FF*D97X|&_$r+i|42IZ4z&?EPs&(Fk<vVWL5MD*N4LWcwWJ0En4z9?E zjn1_*r;ZNYA23GeEj>*iou3?W_2{CE1EWUg>!b7Z(V?lMbAdT^bk@|<eODqFJ4L*{ zOJfBeJL8(sx%X!Rb17*gPrG(>cQEtk8KY!q-3_hN7U$ybz|D(oYM(hen9Rs{b#xY- z`23JCT-zMlD>D%Lip<#PkR6yhI`96|jM4c^M;N20BuB<axA^ZHHF^p-2A@blnoq<u z5j66dMqIC7fQLRhxHO~qj1grkGgk!c)9xRU9GUsc%ux{GkI5J1QsLlp{+{Vt$#kut zY@E0e)6x+-<Ia5ObR`~dv<3)~&SMUp*V1%k8iwc$r6Kd0oNv-GK_?D6eGZ-fo0bLg z%HbzQSxA10$<H;TTQ0~v8xlXcG<-e|FBN6rfoo9!4=In5Ge%5Znfa5nK<><-K=jiy z9#C(Ie#!^g3;4bmJQ+f!EGggg$xPS6C;DZ|l5-*~8=n~-I<9V?>A>CZpF6==28iG7 zd`lgN`}+>O!b!i>Tfit2;y18@$0hYqIl-j^biVm2#!dVRjN<Z=I;xz&cYw|}U)SO$ zzPo*p)I-2-!0ktRi}2=Ere3~V@h058@*GDs-lS8eD}dB1I2Sl@^=rA$C-oLE8W_Jv z&X0JKl9_Im0m*Y^`cME*a%K8BlJ?CjQ?{&5gfEw$Y~h@E+46JbH)8me0}q~v?)!}c zr>*c_9HwQf%9V@j_n*@7P5vKq;KS+vw*wE!_t4|d4m^JdBwf$Q=g71@b-i1pBg<Fe z0-X0|`5r0t%j@-u126Id;oj=N&0+9u4&2ob*L#-(FLwdX`$GpF8V27hzq8W%=6d%z z@Zt0iI`CQ-(Rm-0?~&g~Z-%r}BYks*;qx<7wq#HA$O3-wM3DT_P66kV>6774035p+ z4Tc<AdCvQSQ{Z283iu_bfM0P6IL{C`89&#Y0?xt5li_ot!IQynIR(7p6!1Gv0iSmY zILA9r7VmwhfH$22Zk+=Dt5d*#dkXk}oC3~z^kjTKc?$UdoC5yBDd3w=0e|Hb@U5qS zZ$AaR`xNk=Q^5D10)F5W@FReq2}>WkPAR@@C&1}PJ$Ev>oqh`V*i*p2a|-zP0B5`{ zKT+|@_5_{s{If}wzG?GspI>uLRYEzY{d{h%@29io)zmK{?59=L=()-6z}&h8vnEY; z{3O~<^297(x}W7^C#^QIV5W4S_c+s6ioRqO&NL$}*Db^1D6UDD=3ji7Z&JKC%E!fg z6!0-we#-CYrF2IX))eV3l)eh*66u!kizU1upO6Acus~5z#3lS<1(%T&ND2j)`sylY z)!aVMH*;pq{5xhMv2znuz6Dj43x^IZLjq>|(7l|U;B!{OS6judwojfsR=uFA%IQ=3 z>T1#PPE`BQm9F#EC1%gBPxz{<YwGLfFyI{!!OXg<#6R6x>$|h+&dS<<CbTk9<Ex*C z4&=`XgtxC|{=7SgQ&&|}Rf)6HZeNh_RV}CnhgFMeT@LU3d0nCkNOvzFzm+vSGi^cD zJoMfX@q(HvCTJ1+$-eou_&}$6wn`AsWs^BCKh-g3oEnzrw1Gu*@kk*tzs5O8?^)<A zFQ}0Z!v#JJcFXIB1mGGD7almrOI-Y4df;p;xbO_NmvPaXV<;}X)C0fB1E1xAd-2;m zaBKyerqk&((T3Ciz0(9FJl})A!vp7-m&?z-VQ{zQcUcyYaFNc%xLy3aJ#a7mRUSC$ zv)jSzzlOox{^PSAcmeQS`rl!L8`to7Z}Pys@&4u%@C_dLWYBZzzwN-;qV%>ZcY5&I z*>&+h^1v_kz`yXoFZ009a)^@uDIWOw4&0454}QEZ@Zfvno$P^o<1J@L5tmD6x%%|| zUkA>3Ir!l6|DPWC<sSIs9yrH8UHt#{z}e4s;iH`lC4CN3xbX8maIc(W4xHo|#_g{> z;lcOn)%zZ}S8k_s;1m~W{1CSr?@bPz^r^E&xOpuc23Js@?;Z~w4z{>-mU-abeEbg& z+^e5Ydf-JKI%7wxn8>F$UH|BTd+AT|z;zFuJsgz9<;tyFeqq;vVQ{y<_<N_4WxQUy zvB3kM3O_f!MPn2};&Y7Hg%6$r{uu|GaS@+=TNgjeDaeF>*8>lE;OBYZc^>$94}3L^ zCa&T1pYy=I^t(K8Fa4b!xR-v6iNxi~)9t^O4uiY>*W(VH{Lqdu&AdiA4j1mqAvg@~ zu;GgigS&Qh8WV$ybc%7ibZW>nF1K8FIQ3Jb11G+>T-zSFw_HEqfnR|zF8$wn;8%L! zPlfP-i}byE`@jSVmT&`3m(Hc%8-jc7@aTUSf_v%ws|W7IKj?vb@ox;DoX*pyfR8!< z<oHWG@DNa3{+D^+-tzL#-yfpGq`UaSnfRc5y!hXW4B=BGF8*B}xEKGI9ypWk;_vgo zy>v!gFhoD*!9T|X_tO8q2ToDB^l?VAyvRS3?!u>f;7qy;zs3W<+5^Ad1NX*ziwAzL z2menVI7R5vcgLSb0mj=MUp(N!FZAFST!;@`E`Ep!!KFKJetPk5@xZ<1;&u<*TQ2VK zz`f;ShX?LW*KQBo+itvQqGU_*nF(h=efpL;aPs*h+^!ssdf-z%@W2mLz|-+^k}3f? z!{D_F&G%0ZoVZ>(|LMUeFGUXiQ^Vj6*tgk3$6HUmHVogTv)hC3ZI@m_q2MAvY~#4; zo$Y~p?e-!MoJGOK-{QdCd@pnC;p-lJZ+mIG2kvbzed2+8^D&o=Z(QWltLH!Tz^Rfh zKi7ER*LdKS9ynFQ#qamPO%FUsBZ!Ofmf&{rzwd!x>w!=8z<=z4S2%FWhfODzNnSO> z;B1rey4yp?TV9rU;NJ4G)C2dH7s~_pmX|j@aIf69d*EKVO=RVYi*g|Et{f^oaBqGs z@WA69{AWFIZ~6Mf126U92U*$RV!YSkcH_<Wz_0hf>pXC8zN~WKlt1q>+`Jz4z?m=Z z^|*(QSN`ifaIgHI^T56GZ}q^v@;~5#d*yH&8?U&SUh?RsH|c>-@xWI&aM~ZQ-B|6w z-Sj@<l*j+{(D9bXCp>U(d3@GGhw@?B;ML;6_tM$ofqUur9mQt4y!@Z#z+FBUIeg}N z@V)fE=Yf0aPj=w093+!?O!we>?cN9y#YKL+@^A3Ky>@S<2R<HQ+<bY+1NXLjcX;6A zJox{v;{zAtorv3|^9K*y8*irv?v3}L2kwpc@~Nb*=zHV6f`!L{{}gXG-p^ThaFHLX zqzgaGDIkQiXp$DM^M=9QG7}yKciYwaF!)$S#<$7?p9Yv4@Bee))Cbb8cJSLg_&0d) z&-#f%AfMAc@bMnFH@#OoaF_l972H?m!S|N;au3{F-e-E?-ts=%1NWBqfAYY+{QPbh z9NW*y>-}MHS3bKaEL_9$D?p(*@F?DHerdztZhoCT4DROFrNiK3B~`3#^T563<y8;d zn~$G6a97T5J_eadxX3?I+;r7@;NE;}^uWDx`yU7H(s%RmSr5K9A2)d5-hABRfqV1u zbr0N|k8gS4UVd_KWU5rU2zT=_L?AAvm$!ROb{sCe*7<hrs|)XT;P(&1uW*RHG7RpH zGxQ9DyW=^N{mR3oUqk`onmr8e_OG8926y}8+%21zOUIp0FdV*IxI5nOn^gDDcP3`t zjyHyN<$I3n!uqXQlM+>n623{ZXC-F&Cf#0F=bN-(K0k;aorJM<?<WS(ozKd;#E>68 zI8x7LY*q6>Y~Fk<y1M4N=|8{-bmh+xhVfL*nOV){Ws3d(-_H;zP!uDEQ7Ur2r#O1y zdIw#H^ZpLr-g?{h?x;~No|nt(4BU(-iyye$^7?(a31=V1do?)mdgt-!AMzr>JrOr) z4i6uip%9zZEBy?mUCKdQ!}u>A26w|xb@ajYcKK%*UPZW17XJ3z=<D+>Q?K;X4d=dD zebIep8bdkyobYbBa=qR7-8YkYvhWo%Rfq;Rp!0U~&wc+B;0&KX46oY>&$hDna`|@O zb?|iEUc5t2crT3Z;ke5k*f23;0GHTUw=>McO}Fw@>!MGle+`WaBg=`9`p34F8{XAF zdJl_223&NzeEIU60Hg8AuHEqP*?<k#J%)UQg2k0LjQH^Mj{(lf!Y}`Y4DS1tdZnMk z!^=sinUm&U6jE38l7fP0!DW|Rd}%0jNi<r(XMQvkist8EI(c#^R51C{{CtU8F=|OH zeszX_h@u}O-a}vMD1CX!A$O5<7GbVc^I6Nd)in1W{|z0{t&jN=IoK<uYXAqLKIX6Q zw?^VXu4}O6C3b!`?fZYT9D(E5riB@XvzM$f1rLlg5fXpWEaFy~LVaRa%w-Kg!B19! ztGO$7ys)Ky>z6pic4Zvc$<O@B<AaHxHUI7SwbV<Cd3+YO)yC#DGAjE4$wsLi5Z0(D z4-vqD!flHf#pjB0{qMirApbShZ^U7@Jop{|B~71(W2cj!2AL#n#fRXox>@Isl5in) z+Vc0|(49Xwv3G6^KT0yWG3%jllYBRYoAKs9jU|;E^yEIA+tZ8RdL}lNRN~l8?8Kkh z)bs!_41s_4x5^`(#wT~@CO^p4{V(f&9Msx!VTuSk&K1PJW;m}%{k-ni{hM$UCVoPG zlHT=?aO3_>G2t*E90tG}8F;Y=?Xw;@ux-V$L5+Le;1CNOku_rR^~nu>o~NZ3jtgrm z&jX&B+!%EKdEC$(!%v{B$MtrVZk8cNtffW+7kfExC7p9XaEp{*NoA9i!HYQDnSa;C z@!KL;Q^}Mp$iD>fFQYn@Yeeroq?6v;NS_{UDZyXSH%vFh*VwA`4g8urB};Dh|1<so zi5*4r-oX13rUq|0L<C};P#~NgJmyU2-!Y(Vz>Pyag7HkA>aiP0dvI?AA`TcHV`Nef z$VaDnRUe9DJ<fd1!<nx)VdMUrfi(t)T``Js>}h(@X02%#iisOB_J0H-wzIwsn_G`b zg!9s8;b3?F;KY9b-VNbAc+CihK<zEKX7ex3F*RZGg8gB~+z`%k#Q`S*zzZ8OpY5be zq6cO0+d2_f3wHPB!6dlbxHn54_Lt1Vj;hm-g2Oj)_y~7<{)A@>#KZX|I4=pH&XUHX ztf;HC8$Zxex62H<nFF*qRqj6g?E2?$zVyB6;ClFBPqw8@vDx0rFJ11epZo-b@^~;a zB*Q(XAd7Bo>DiElY2WZFJ-6>0iSkbeH>6FrWto*7NY1qb6v8X{jsUyw=E*6&Dd+@G zYM!wVY3b3Lej{`7w!QGf87MO-sB^G?8%}86T>n7P!A<yG6URg<M%R-&oV0`>MF-n6 zwA6FT70^<z!6jOwTU&cG9}8e_+(fo@jyU%jq|WzP2JF*ca?Yt1Ip>1A4A`rY+EamZ zmIuxSgN_=FStnE8xRI)+lz#&Xq=7AP!T)~wBdIZAi`>Y!{DwD?C@;%1d3MR$y+x3k zN^|cRIJKvmq<l^LK8R(rpFA&*`PTO{6-@>){(`i&<K&Rd8A)tTFK#*xoB+0IfS*M# zSgFl{WKTfcbhMY-)j-ao@0maT;SU!~>)$K-U=VNwT%=7~^BWdX|A7=Zz7{`vvH@aP z(&ib~zc<ORWi$lU%^o|1vx=5EcF1~QnPY}vgJ6IRf7^w>mUahb2)~meCYU0sj^E!V zqz~=Y;qlT^ZKXk|f7B2%4nwFIg^b_f*UPRQ_$khkiuB<Cb+N1gG;i79DgQU6EwC<L zfe|=1?b#r3U<Q`sh0VXNjN3Kg+M%<WHeo~eM6Ntb4QGnWjjcbCB?~`LFX>JW1QTbP zjT;%*wQBmz4cKX=b};ctDbM42AJw(<n<#=LM)NQ5D?LAi#sb*nt(M!E<ySZJP<F11 z!(Z8nxOHb9_JS_86L0yf={_8dmAr4<pnJZ0J41xDrY{xtB5XT61w{krM3ve#uL3(3 zfIi`9_P4Q7x*bsH_}>(iuQbH$@WfJqlPCJ)*vKOvl!^eq7w<CsiA+6c!_MFMIXSW; zvKgnM9Ujlk2D0M#C$(b2fw<U>GuI;6JO6VWFNZ)Crj3yDlt;RXOc4kVPIpdwZ0dt- zK)nKKiEIFKPHNN{lvloEP3H-eIAV?5hTmM$WMDhci3l(Slxt<~s4O`he3khBMt(p- zTGRhQjGlleobB~D!Vd)N&tQHekDv~kCx5Oz4b<e}p2M<E=7x1&p4N0J@<8fD?-%&F zo%OLygEV`+m!f2)?KhHDE02D=mE{e26vqZZArof-wC>5=cSf^HpVst4c%MS&-tC<L z&v@kq<oLw6*jFM?PHR_Z|C#;`C6RVVU)68LhVbYsk~Y!6M(u{SW<y+jS?V56*6!46 ze=|JzCyh9EkqjY!ru0666kGR=OX5fJEBUv*DjP_nDPq_jJp<k^Qh*XZw6nhRZ@H4% zvl#M#hFdXbxAj;#b$0k}>m>IlV4j>D%@D@B<X`<mzx1ykiL4WL7B~66K46MfLAuU0 ztm~nq>vHj7R<`0#XYPQHQiA<qUgl9!$vv6a9TESj`y@siV54-gQ>>QfHHcI#!G7%Z zeFQi>_yK>O=c2yPH`7NEsB-|4-9SRwlbh}1rFI=RE(^jvfB_M<5#Z#m>H=lA4e3Ty zfCkf)Bnf%ijjd<2c8>(gFmFA1#E+5<Iu&4LG5)77u0T!k<0*I)=NndW?hBL+cJgNt zonjTwz$@P>F2^g+D!u`)kX2lUSFTkY$17+R6En*yHbfx2p8XA(QSMm)j`fl->&F3G zAG~Ui)y}fB^Jwejd0<v1b_{4dtl(e%BWsLXj2I5Y$W9LAX)AXF;$YfFmOnc9Oam#b zQ5)^6bL=F2Xp$(#h7=nSfchocCD@c2h7I_ee)T<4QisL0%cF0ZSp5FpjlZ%vRsgwd zgVVH%)S&`<F+hL=tSp$bieUea!mh<Pq1h~6j^M=X#I{^+*7_{lp>cJz0#ChbA65w* z$3Y*84Y@IhwVH8Zmj*3$Axr_=N2P^d)vt3!QCzOA!8ZK^ZV+(PfSl5r9tSHf@2B;# z+aj~E9G(&vJ8Gnw@gY(?bxUg+1L|p_GqBe(?hA1qDKrUns2<&jLw@z-r|1V9&A$6$ z>|0b)`QEkGm0wGVwC)*Ya@)sqWu(ql|2wW06Cb6w;!Pc<>$qh;Chws|T?!1-x+hQi zSoe%emvn12IXmH;lSLJXCNat?FG}tSCVqxa4)zxi-fa(t>SLUj!J@Y>N6A=gYJtfe zGJGe<`CWPBVVaA5O_G^?|KSMGG7WCA_AeOv$7!;y16e#kq8Cb)9LQCA!AxyWy@{;K zmo93>Ea`d|F7~#R(xf2e_SA=ISWnvZY1-A7c72t04WwO1(=LwYD$0ShD=Y2FNxOn+ z*VwcxH|-jic7@WeaN3oZc1=vX@*UUR+2(^*lPngF;v{==qX%D{-Y(7(Nw(|SlQf;2 zsBBLz$CJYk?a2l_DKF8{|GDUpO~IT<+uXJplLiOpZY@Rk%ilWprRyF-ldVhopZ`bv zlIL#~9p|HV!VW_PY~QhgX(o?X)UUUG&1S$iPyX)TmfZ>J{hhM)Cz8#?a!RvR4o%vb z7}IbC+T~>v7`&(g{w&-)yTx&?b)0fNtg8$~MM)f^lD$n!?HVU3^0X7DM8ke!9~^a- znSBjSaSKhc8>>1l4=3kYx8w+U1TzK_aIVzz4}wIL=dN8PW7gKFdO)DR#S@6eJRgKA zOQmEpE=kj)XyPnqSf4yZ)CUqM<JLNP+TIS)7de1aH&_HB>a=8>9#n}@iEz6$0#&s6 zAR2HRt*g;O+5n5<w*68e1kjRaBL<v#O;e)!m8!c6o{=0JH=GMB3^$;SP%1vcfCJi3 z;Bs9Nz-Y%}M+|&DY2ph<bJxbKbC5FmiMK?GrEtdI0q6sE!B9tw1XnYOXa{TKReg)j zcQ6L4#V#EB$L#t}Y(XpcbbAqMR`yrM;@G|mx?%j#JHnwR!JOmRSS8DBY-QIGeKPbo z*<<5@ChGh<_UPc=&W?X<VENQR(HYsM7mir+YueR#;gd`jJ#k>KwzQJ$i8p%x0b1us zTlOq@W(cZq@wymIC2altyy)w5U#}7)Yy4ecr19`wsMYGboig#l9%_}?p4^RngnKj0 zez-EVrmJ8G<aUh@WB$?l6O*h?wAY_zov5$hjVF%G?Qi@5js~1uuQuIO+si?<4_nW& zNS!Y?4^48f+^)URPPCb2`4R)prlC0T{&4!l`+_9*#|4%wm!>TXrNIho3j2)WZM8F7 z@&muxK@$gE>_GD)fMYH`U_8+S1<l+VR<~;hMNqeY;xFu4SZ9@COE<}-o@~v)DR%E* zzibsf_s)OEJ=Fq-TCC;1mqy`BAj(rjK<D_v0;@Jh1(&B{xB;^dH_GkGftrJqA!cs> ziV(*{8QL`i*bIicEne53mJ-IvDii|taovgi2xaeBkGvEYZ<N{(ohjQ!$@UO@<gknB z2l#<Ac|Z$Kdd5ks^JydydcGXS;0ZNyPua7$!(re|z;OzddqT#}V>l3lCuHDYjKhG> z=iwNg7~0smh1<wt%fp<r<bJX`Ha9#I%83nS2QFLq2fgu7HzG0ZW;RF+d#Tz^mg-{I zE5<|3&>hA8hR;Jc3~RaCO}0Ve;)ryyMQ>#A24oN94eTX)BekTVe@864)3BQ5Zn83? z3Yyh!vOPw$Ehai*qD!ba#a4u2P!Ne_cOcsD;;Vm$-qoYBxS&~WCW}G7L)hefDaX}B zv)W5mMxZS{PqBAD(%|GfPjJWS?ur}9UN_?aSN%J{m)c9#i2xiGG^@R2vDs5MPd`Vx zs9i$RHwqeBQ1GCSP8zejATULuHx?z!-vMz$G>`#sI1XP*ZYc=Euo}3hs|-%r#6+u; zVj~+&;-i~j9ozqP?bWfps@na~h;Aup=038J`-2ECWQ<7H3F10IPHHdNHgNE5DI>L& zY%@b!3j$V#F20~nHKe2O07S;y<BhkY;1{w;;aEqJk(gsm#Wwvin1}J#bbOHG&%7aD zEBIfvjqE^%SP)43z*>-_A{2cnfJi9wfF-a+m87noXkWoE<Y_QdvHiPjg1vA*G85+_ znWu55ST=I_%bPSzXJG+{^(XG=YW<p?`m@q7J<XjAdBkL2+A=v&xu(g;ZZoVT_keYb zQv=fD8Yi_OZHp5G`44Q5eQE+K?GvMgeIgMYZDa-Gc2NL((n~Aj*ro$w7n0ev*WJUP zCPMD-Y2PJ{(=>nK7A@Hbg0OH|&VKyK4H;qw3|&lgIvX;Bh3o@VLi;Xk*DMvWYp+yN zx%*_{%ZNHllm+UrQ*{wGKz&;!(-3WL8a_Z8HUlfCe}~slat}%nrMZe@41B$mv@%*| z>n9m{q=U99Hgxcmj#H;l-^A^QE~mOrwR2X1dD<jtv*Pysms90U|B)es6-D)|Ocu__ zkh`&-MY|Ok1MuH(vA{@x;g$r(&{`RV?<`m=wqWze!dCQLo3*A7k>~b}gUQ3NPT6R? zS&Pue5jgi?V0f8VH3*7*b}QtS<r)=cOjmDoiy>N}$07*vVP8^d#GLI%ms8xVEU+D1 zR`ig)_?R#Q_I1axr?s}U3v#d)LHf|FqM%b-98#7ndy6>a)LSgm?slgv(98lAqYEuq z-T)Y~1f*2-+3z62VAto2@`x~V?CXvq%7wRE=2(e?m>b0Fs#eNA4A*W#lAkcD_ZvTv z)#BlTX6~zMEy@*TL2+0i!wzO2f=cwdGT{EI(Jl6Mhea87QZ2(ys#9Sm46#|3T1Tt< z@J+SuNvk!=ETso?4Eu1K^)Fyuj%PNA<8Byn{2M_iO&sYarUnuhSl8w#0f`O>pN(kj zW}S_!BlEBdFhP`*NLvNf60t1qfZCpP7cG3Vg{@?v<j8WgC0&xEodrp5r7Du70Rz)3 z<Tk2?oQZIodc7%ZaOyT>RnyXvO-r1hD4VmYW!u4)tvWy$DkV}qXoDJdh2IGox8{UO zQ~ML&(ye;TV8sGc?Z603<z*+2WNRx|uy(c1K&Igc+n4H3+*S{2Er;K*tzIn}6TSvo zopp2$jiRb<WP7RsP+o?3v>8t8nq2?PIov&wha_q%j*ygncR&~KqJ6v;ES7R3$ma*h zyuF&CF)ZZ63+-wqt^|j^S*w}0eb;ha4+#Vzfbt~Hs(gm1>_oS_)E@VSZk>anOgWH= zQBK{ukt3Vfc~nBiZe5J65M@*-A>!jw>*}Bp`5>~{5Z!Wsbp{4laUMD-P5@8i!lmL+ zq%$tMuoE7mQE4#k6cdKM{v?;;Gdb#t2D~%cn)(@1k7ziA@WN`iWq$-`uQRc3UR<#* zBx$6(BwCV2yM(9b%7K))^(Z?#pyPBdc0wM@0kQIt>sbg440Z|3%3UR5M+puDRP#3_ zIKZN`@KbgRrlECyFQ{TeJq9QhJsiKq<O@BoLx1UJG{i1?IdMI|eLT+^Q+Dcbd;E<K zSP^H>c&x>kqO8RcoP3P=UG1ryk?6i*>NRJJ+1Tbo)l-OL5`*YjF!UJzlJ`oIEoG(t zuF}GdcmLA#zaKA@iPe_Pl7f-RLw_tHJ9gG8_QTlCc?;zL$z`7R-gW?$f)&e=qm|;2 zE;fkNbMUZ@%t0f9sni{qTg6Pqgs$KAcl96A?Xf=5*{}L<Vuv1SF~l}qThoFwN7^FW zCE_!8R99D{^(9{F->U<Hi51alL^||HR|M8%OUx?G@*hA)ctU4nbEF@Aigj}!G;v(u z@MVAN@$nNji;my+zukWvvH8=n>5*13fT&s{t?MCbU*YT8^{qIN7|c33=`Wvy(U4?! zCZ-$f<Khs`18o6eL@CDvqu@35Ad9N7AHqv&i-V)wo?Q}gV!cGQB&xNFGBHF)d+ISz zWb`O?Prw=J6ssO#B#|vLMc9Z~q<#m0!&7q6xWU8-v6>*=*4er=3R6rknCS*l96XL^ zi5+9#d>fqF3LWFfVs$x*z_tK{x$5@R416<U6z28R@1*p~g8Gy63qg1xPNFMr<MyLu z?EfR}ZQ!dauD#)Nk_d@Lc2H`mwR-41_9oV94na%mR}So>J9?sN@gqKdfiZks`H18M z=u?HzlM~t9Y@oMtYo8V`&wXpvd-XzZ#i~e6_zDVYf?s?H1X0Wp(TGYS0(t-cHM384 zBG|sacmHy-XRkf8X3d&4Yi7;Np5;{apx~E1MLro1H5W;CI0e-xU&@T_9+aRRq!)cT zVpGvtRTwqDULIUuUbHcDW+;|I_V>9XowwIlK%;Rr2bn467ZeU9g<Q<dZ3q^nNMPc0 zoG;2^8;i$4IMGO1h}KjkK)O`RLC$k5Mx+^&uSY+#{tJ~r7C~0Y7`ilEMifzTSiJ<R zdb!RuJ#l-pTX_{Gz{)XvZw|H`85FPH`n#47&vx?*l6$WzYPZ)G9V*&ry}l2c=i0nK zyh*J#;!vz~oja;v-t+F<AT6$!B3rS}BVvFfXOW4@8cm;B<Mdd74xB6Nwn=%w@uGyO zx-=H82i>&UqgXNM!738g6FWgcHYsQk|D)FH9a#9WTimf%8RhF*dIn)~JGF2FsYyH; zUBiOoB+Zq~=XACHAKX}8v?0U)4+ost>ZBM~7Fe!Dx1pz2l5;tQ*#TsZQ~_8>7NcRs zz@pS2(fKKfN%huWsXUk`pJI7~MvC(aeeTTf!|Ws+tm73bi*>`n_@D5Yw($@8%~{2Y zbwvE5&uaQ90u}ZKH0t)EwxUnjCi=wcA1YTrx#Gl{U#^rerOQd_%{eGD3By`Kyt>&* zJ&U}{Wrb*iEHA{}Q5z3@E3+O|F8nka_j%K<aeDwyccokLF8LIjT2RR*JLEo|+<}&v z{s3{})gtUXKota3*stn*5A<7q`#beVUZDuY07NprsD?kL%iq#<3AE_1`Px_kp>Fo_ z7^3^1Z<Y^l?pz3U&cq{gP<=Mmt6#U^njHX{XwDSpQRa5NtJWmA8t{!OK-Em92&*zh zz(TAo<<ccl^k46WH-Mc1;stBgXGHtm0iyknlD-6OM{_7WRgK&hfPSk~7MYBu8fh15 zxx|sFPSbgG31XlZl?fT##guWb%Xccv=u)e4H2gs_U}0b;)28-Yc)Xwm%O=VFIhfyr z6?4mb2e95Wv<#aU3ak+Rl@+4vzI8KT<GB^4l7W?&>|-}w){~)!b~IvFa<9iO1UM2v zx;AV`!HiEKrU$wC=63A);CP|%ZTNP774xmw&QV|$;3Xp5iETJTE$)25gLojfh7*E+ zw{D(jV(UmEpV;vOnmc#!9ccaO&d5s$R+V8diwr%P?@Rc17Y8QWjo-FJ^R{rogoAOF z_I9h7bdX*Yk#m++AfyUKHHKDV;)(<eEh|iCA%$+Un!8|S@?Ch^+KEm9BSNE*yM=WW zc%Ij_TRJvA?=&m<i}BdPv0oy{1b_uU;h1`WcT9|ToHIFI`DNeRnB4(w#PJ$xVXM6s zhhM{wSQ%uwkQJ|-N|)R3AXE!Lr1`l9@EqMqYAgB^W08v|9QutOr46qkb|@YeQ9z!X z(_mr9fCW*@y?=0}%pVs-E5V($iR)4RX3M=AT{QQnY%VWt1#dSQzvSY3q<Nw->?IXH z2Yaf{GP5WHsG?h2CXO+x%+X!A72#%G!7*I@+t{yHX$5y%rC-+n9+Z%BEMKF0#gJej zdPVSc=@Q)8dzQ~%&qU?(H}ck5xFf@CP%g2c;hD&RmHgq{ahN+z4`Pj!uHr<$(R2qM zBF!AnBS8*!$TVZ9iP{v(dbrEU9NnWS+to*zkvax7muBjiz23qK0a!|&f#C7bTWB%K zvAMzQ8*a3c^Tr44>++4%TePoSneE@4ei}ZabWJ;BCto(!G8Se7qbDi$qg+b^wXEQ8 z!EX#+Gy?)6Phov<M_=SUIH&tp)2Yq1THeixyZ0AVMyI^m38{kMUhtMU@BD%;3EPjc zU5<7058KPiNTa<D01Et?(Sq|%NU!ocj_SiC{ZO|}_<ZLP#tEr>uVB8A@E*d71@==3 zZ$jMkX1s*VQSM%XP#iImzZb~GOH~#Hg3@>}1!#2saZ+h4I*dB=N~9C6ojno!U&=f| z%UT(6Ak&n}P!S2?N-<O9Bg~jx0wgjItdX?M9swlsP9yLVR#ACK3kO4UkqMedC2Ki9 zq?Q!ELMM)C4!j+Xw>Uu_sK-i-oDhHoQtpDWRZNqEhF>slys<bNVt}CFJ@6;Jp8>Hc z39Mu!k|8#lqhq0gtF?c753FMs`&(1*p)lT&<kekxPc>c6CZPPZ+v{eTIu*%*!YUYN zQT!3Ot_-U;j)hr<4<(Oh!C5S}t*exhW0@$p(JB>Z^0RSt{TkAu-uOoI>3Z}ON|{`m z%f^0N8Ay%6Ujl~tNC1}%a0C~;)*V&|$Y_-6T6a`o`TPyi=>GDS@JqxVt?baem(m9? zJ>itax$OE7sv)uydq3NI>c6!2fMTha?me0cVUn!VK&~1ZKzyXx-i}p?WtGUesO9zj z_NTg=v=@qFB^rID>mJx)RS%*jT=XPGO3EI0|HduGt*IN46ai>9OnmN!ygOsD!wHUA zc5@ls#9O1W0nIV`0%{J5WId_tsi@u(w?8STS4aD097w+$)gn~JN<YU4gpbCe$w&sV zz|ap^;&xBswAVwRC<h&2{TJX4*^pEOlqXx~peDjrb)Zxr#=-=$)6JfqB|#$2z_;Ah z+&m2P4*z*6*0heT<pZX1=Ez;)PIo~()yTAO;Pu{TXo7U>sX2v;ZU%YI)s?MRPnN{V z*5R$!bTMdO^SM=hbq=!~)<Dgna>F`hV~3J_smaRQVfTD_p1mp3R<sG@V<@5pi&6Gu zPu}dGaCTtSE<v0+ocN(GwpBfB8DW<d7>%O`gK}FRuiu&@aV5SZn_VCVqEEzBdA<Q} zKym;i7rks{3+<4GIk{pPU|XPDg;w%7_#cI9&xyu#36F6{2?OnApW}^Nl?6WuuMNjU z>iNtl0voYQ;Bfjm-DS{T_7VQ$X^pzi_#PupH15WF(DXG#0+pln$lX{kn%V+nnDw2} ziOE{%e)Q_cH-BdA2l!TO)jj^vM58F$G0~`P`54e<1ucqpnWe2pa_%WaJ!8Xx)h{v^ zVRGM|Cnr^g!h#Dz0(8<2wv|^PvlxtEnW_*y=+LFLAPM(nbJTs!HrxdfeOn>YCZq8Z zv|OO^qNEz66u0P-6|R%$h#+Z^EE{2$k&vg<0MP6~c-!0}ypbG5gP?;zfeMc#o3k+F z+H96~LF+=@-@51i_Xwb_$N1~D^wZRFEgi+yb3AkyB`ttVg)Dd~an`Iv8OzcBf^C+a zt%U?59D8g59_HYswfaX@azR#x%c8x|3#%<^Z%AB?sjbO~#o@2s>f<c40Kk?T?81SX z8ZObXGob!#PX<-4mQy=ky~BRG>eRE$D{ot(+KZLisT2nGK{=J<Wx~WV%q~v}+h5m_ zu%Cb=*>QZtHe2CS?a`@<msU+S7QVIzP4EgZwpHG;&JVl;4x+0ax@@wl6^MkE1p3#S z8^h~15pmWa<6y68W`8<fqFcTI@>lp3G@e=7i5kG@y6`pB0=ls(?8z=%TfYryrQ_kq zI9-D=1ilZ5KD!S&rQ7%NX=n5~u4SaF;V})m)Lxq&nHHfDaw0p^vss0D?xNgYkM$EM z%5wL{aIm8KJ=tRhPbApAmf6sjV#Qj?M|necwM-uEJ>|i7`sz?~8gqnF(Wnm#TVNX} z?M6y>X&J<}uQky0z8)_Qr)~utgWD)$DgLq(nloNkj0nd1#BJCsM8SZzqnfi@F+P;q zj+ge-U+U@C=Q9F{F|&whaIIAhIb6m>06<FHtkP^_={n<?oteFnebO?fPg*b!#+e8a zniENkey>E%*RuixGjnPw@zkq!?PP5F=&hWSzGD}NXkCk*63pN2?Wa>cQh93&;h3C2 z;+Vb9Eb6FmZ%pODT)=E(VD9&wrR>CH3-b2EYlDeF&Xuo!5b0?@BKx?}6@56?Hc!Wt z%Z8ka(l_f{)8#C(T0^uvCsCF&He^xn+_jyg$SyfbXga-(H0d5X)qJg;^9A9FAAt1q z7DPUgN)tg&e}QF#6TMxH;`FAEA?<32Xm9#6W~u0L&UD7=-JWX8-@x6T*xHvmA0(X! zFS;Y+!N<M?W7oFkEG3n^(zgNf+&qMWT}7XkzLmJut>s`zkNjjfgt>aG(V&H4(wOGk z(45y3Bi+g@tNJh&VgTpX6M=u0I6K*lO?z9Z6j6^H0D14)biF1=V<fVCCkv&<Y^rQg z;fm_uPT^>YyZRix;jSIu4{%P-k~ijM+4t{F-yta0Fbn9>Q$?WC7Jy5lw><xP==7~> zL+efWVC5@g#g8p`f9uHpE0=uiuI>-roRRh+%;UB6<Q26|X{*Ir3O+1=_pdEQZ(-yk z@r=gX@u?b?c;H9u9V!OgJE<<XPX;TCTcIJ)aa}?_Cf~&-m=Dq8>TMX^J8Wnj)xlz0 zOcDHEyFcx<U$tK;ni_rwTjsZ6P_c^pI_MYM^M#F%v&8>3HVQ){s$RF{lPv52VIEQY zZ6y4N2^;VTNA&QWeI|TopUG8Kt7Sj>^@q-smDKs`xEyW4dwZ9KEzfN-4~V(i#)nb< z<T2RPTRDMO1&4<rdpCTH!^<F0Hpue2_?cA8%H6wTa9b_gRZ3RMYChdo?>C+Cxppzu zW9YA%EAo<rEArZ#y4nxZeju_NyZX1mUv(9C#TZTHlB?%f68xlt=YUY4GVH@f_maDj zk+_!>3gDBzWTm)Dh8HrGB{DRf$;0egjOzEdACS~i5O0yOWMvt0i0n4)19mNzSwEh? z4~=RbBEtK-`fjU%PT-?2>;fUGq;v&uB9&7$+^#La;=Grn52=OM(L6ffMbU<XFuQh` z>D&u;UWPnk_Q%>4q!1+jH)Ggxv^(bBAMS<kQI(I$iD>vjE%}SuCqdV!U)Uv<TbFT1 zUFSJQHSNPO*+m4zEI=&p6LM#2cvIBdg=AtI(qFi5g1KnVs0ZyjOheScFDj_>oJ{il zF_5Ww2pZ`dc{knDX88OU*-cRgchq(Hk)5!hF)tzehR%ju!WZ>=jH+f}c<1dLI)ZPX zW^m`w<=;7>PgF_!UD-Q?#rW@Fu#c@nN0l$?&JM8Nav$M-pqTrZ+B-B0Ei&e=I1h#8 z5Wr|+hiN*`sJ%mfQhSF!g9lVka$&wJneaTM?u6)?&VS3^p?zEsE_p=l9fAb!gM&`g zk}Y{cHngi!%mKhFXw3cV_mFM(PWrIbDb?PgeacnpW9Q<v{fOE-^awLBns`t&$Ybl% zVkOfGa8AA-rEB2q!hG>+3#z(zf-bf3M`r+vN*+;rhe($uN73?K$&9&>(Dsjjs(YtL zm+UBtcyyg3QAGo|k1zwHsS&w@F6D*#eUkEb=;Ah?Ou>aN<%RllTQCZ<q`3>TP?k*O zl1J3ep?#>tvxO41bLbJGG@UxtIv~fWvk!zRKGgva;7a-+hHU7%O&kr{C3Hdk3p4~_ zB(xqJhf2HBN(aK*Kc(6`bTkXHpBRb#-jI9A4k|*|fr$K3io8~C&}k)}$fpj*@i9%? zYHEDU9zqU9Vg40^K+{=Ht~w8s#Y+7RR9jjc{kpK2deC{8%&=E7rRcl<Mevj?whoGh z6}4%v6vghYWKyH)bEtGsKyIpBJ^eXQ5koT}e|ul1MXTs!D-@;k_#c3Q-lhewC<5hg zd7x56W`AU6O8?j9vlPn#uvd}>C`Qq2(Y!CHBfScRt7*Jody7WC=*M!iWO9M`t_1or zZ(sWX(-vx?Yns6A$ZmTj@muan=4(2$ATn2a@~T9}*N%>|9o<h2=x;^bQWAG3=0stN znx)6=bEEDZn7&L&JDA%iMqk0JufJ7(PHfP|{jqVk39#j2Rws+v`A%%@yyN&RY?+$a zCsyc46a%R~KvjPf+<^iV`SzW;NP8@D7&AudyG`t8$}d*>l;4kjU7ym&^vDzHQ}Hn! zp^xd27|3EW=@a;vPK2TGFm#A#-xKaC`phgnZZuxYkxgAM%wVG_A54uQLJmLIkcNbf zVWJa67*%bmw!)783pjlZW7D40Wy#ZF*@Gsn6D<(EQPds<EQfWEByH-L>HgxFuPccn z8CeL?i(>PU>E3%hia|+EIlkx1HJY+f=_JVOnN;Kcns$)xiNy393lKMXtBIMf`$dxQ z6*Iw*;4oSM=<<Y)DY#3jkD8;5m``d7X8k;d?i5a^wVFXE4IMTwns-=rl^OZ|ID-yV z35?tz6$6?AQV37gV2Gp?hWPtcW-qR&;d$J>7kkVS;bF`g`=#dQIOjqhRV&icg!Tat z-9ck`()|vgtO(J_QWNME?Q^LcXF;g7f<uS+d7n^sqYDI1sXuBJ^f9aq^ru-6Wa>r= zu`X{vAx2~Px)4KvEv!m+KrOJVN=^-L2|B-T0AsY$^9_|iJcm_EcsQUc9)uM4hqv_F zE14MI31Sk?_w^^n7ub3peUW-3{i|-wFlFp}syRq;Ai73;O~3yYW*7P0a|ZsxUM9Mq z3wQQ9Lh*<hOF=bJmh%$fwhVlY*!cerEExA<u_XNf?5v4P`tpM>YB-{f-Ut`kH^Gh^ z=ZJ4?V-bCv;P`?DAP2HHh{m!%L$HfE;l3U>fXwi=WCzTF&MdC~q1ynkdmGxfvJ^Tn z&GyMw>~o2S-@va6Qu78r`$Do!HfEBP0nzetmYctdNipQdTJEqEZ3QeYr5XT3tn=j^ zyvkdgg@p}4Z`YlcyO;xi&z^vNFc|j1VAYL0B({ZxXLdrsA#-0$*KuGH`Ct7CX39<H z$;HegiSl4BZylOZx+Q%Y{lwd^L|fh;43*Jv^M%WzkyrR;uQ4Co-}s65{@@u19kQ^{ z$(6xoSc_wO%+h<p>kapF4F2aIn}MpF`;aJZ3vQFQsd|cW&2T(kK~2Cq3B&MmRy2YP z(|L^4z{k0LP>UJ1`stybQeJdz|B>EoxtMH%=$eteNV$M1r8ICoPg^CEvU|IkchF1o zEYh?ejHDr-ZLn2VsASCDXu5?K%L;z;qjN_+Z$bP(^sl>wD6K#<m}$3cN8U>q$8*3A zo|G(p0m(pwrXBg4&I;~Juop8!PzYs3H1FZ5A+xV@aWj%d(x!dTUQ9B;bT!UJT=;p{ z3cSCs_w`8Ptaw;(lMY{!KD;!&qIm~FBZ|zpAktn;f=s6#9q%*{i{Y#E4<<Hv>ppHT z`Z#nmX#Ch?j-FTcT7umrF0GiDI|=%QPJm&W*cFi2ii|Nc&Fg$I_CP882tQ}n`!$5h zn3)7yhMh0^X1fB`Ohqoc-x_ExP1;^RrjG_vB?hBA>6l#sW2PdXt2GDJz6Y^ME<ihg zJ#*sz7w;}dgq<7k!(8(Leh$%&o*JJ*u<!n%XU|+<B{#sHIi~EHt`6|fa-UH4%#&ed z(9DH!$K0pG=b=}j8DTUvLxGsibIPKT*e3hcOrQKdWT9W5ybB$n>HJwNn)j*IOP){` z4MxldRX1pBJRD-P`%1o#>N*y4UkHmyLyL93PO40rgY1`M?vr7$X`WCv%@fL|IZqKt zZIS6FK;SX2gC>D82xkYq3zSjMWO4vaB~K`uMn(&n4w}@6Q6t%yFb5#`?+3egd6X%m zCPUddD2V+8sQ^=%g*TdePFXek!ERVJ-$)q;to<odR?RV6Fp>z}Ym;FpO(t^56UwSN zNG6F{^Mo>Mo*+)uR31R9{8U<t8l*}qCi|(Hj;bc2l#*&Cv}n;d*m*zTH44-Ik|WZ7 zNk8wOR2eqtyep*hW)sl;e!nJg^h8Yn;ty?$wT7wTj_3>QySNRj20|&{MEoAz6qJ^H z6tO~m%0PuVP`PE4lTUj#fc?~-&I*3iU`q!in$fRqeHxm2RWU>Kt-V-%60w-6jiz4w z2O-08Q<-P<?Ta)K2I_GrFlbvSRZr7ur9gcvTGd%`4p7nBkqr9jo&M?*xrUjmD6|sM zwJcN!FnclSffmIw0f&UIP@z)lSVR~++jTv$OY~KRS+auK*Lz)}lxyDm7(?4a78Ne> zquXZIrZWY4Hv(ca&5eCtrX6c73EBKeH5D`Re#sLY3@WwD2_$OCBFmiut*gp^9|TNj zg?x&b_u<oOd;mTU5rI$7AW@A^f!3XZIV5L_H(ZR`AECu++Pa~a_A7#r?il8`q8Q<p z{F#GuB*d)SeYrS^iB?Yo*b$JgIk0u<<a(EO4<ejE?~2`%N4p1mV_IPMd<?q>qagMl zZ^Y~mtn8`b&S=qVX6dI!<4BGt+#C3Xfzg!4gKDics<mcjj@aZxjcKmScmlH&S`u7k z_oyL7O)lE42;qJaZ_&?8@I}m>eauTCqikAAX*FRq<GAj*jHW|i0LTC%-$STD^agbg zANm@M9z@iL!J~WFbcw6XoiFf>y4F@I->=ZPDR?q|$Vi*3OdXGeqjp6;I>3Tib?Dk* z=BVtQdRQzOx!!`Xh%|apPo%e)C6Cg?0j2&Ddqow4#;z%V(8gTUsKSexE7ip93Vab# z0So8nkn9mq(mH}-I2xd5;vDpwI9jSjO%^4ln+}Cot2&ha^Zv4TRLP!Xh?E%<XG%_@ z#B?TjGD|H1V@g+b_d8}DC4k*1YYGX;U3*Hdv!X%j=rMlaA;T2bjY<X%fMys5{l{DU zAcWsGLQybL<fZg8@=-`5KmdyU(9hOsAe@>FLK%p@xEKG^O|VovyGFys-q{aJg(Kw- z#%H?di(<jND)6acE>CFqKH|9&c+g2(b~>FB%LeugjCGha<@TF6#0$sw;N+g%Z()cC zr4M7lfmw>Dxbw&G65Ow#10|!;0%^~qhYR4tRLi|RTqY+jjW}d)EPAVGEv<%1(|!pj z+>~K`!^G-}$>VNdp$x_6RWN3%F!aa4C)l`)Ks-EWL>IQSTgex~4afuEx`!KZ!^v%B zc*GM~g(pirQFY;|Qay3li>E5}M3suC@#;x7_BMtmt0xX)@vc@q;X`}umS_ym!J~yd zmgCuI`~fP8P|}ec4YT7G0RXlz{5WIc$hhT_VvhyZJS;&R#nbu5^E4TA!btl#Fh%V_ z{m`5uXn1B1Dx??@uptE}hcG|@w0JL;Gjh!AP~4qd0K;-_oGP&lGa!kB-qAbvhl>vw zT2G$v2o1eaM2^tFs5M&p(YzNehq*e6wU#|t)hoUzzfhl{)G8G%BmsIB$O#1+Kp!R_ zLVe!@&0n93vijuon>Yd-<B72IZ_j;=E8eo{fhQx)=|>@hvL0zdWX=&;z!p@922>Uf zPqFO$a3>L2sb<T`51S~<a4bOLJ^shT1tvrvN0~f_D3Qa@qjjMwTYb0$i$X|TBC3Kg zvK0$?8*M52H(`z(<C>^iu(tQ;_4CZ4u5XE2u~piH5arRAA(*+Kwe)K!>8;Qzef;Mc zAVOmLdBBw&f_C{;IX|g-KYB~K{kEEXU>hBd>QI?l&K*^z^Ats2H_wlK%@f=G3l3mM z&{`~LdJQz{WWxY2z+r7}2=C(dn&G&CPpLB8?GzJ4oh&;wOacKrRfvFv<Ev0Cw1F5Z zVQ9(%4Btb(mi!>w&G~lGac;x!LNn&qVU;R=$U)j0Rk)DhDitnf_;wW@&G2{?E@Su} z6}A|jtiqKHPenNKV|-OIcVv0>n+^A$*&DL3%{Fmv`WmPr-7XsL&nCDMhfT%V=5QEV z@?fyOGxCy^d|*7D-CCeA8tbJ&#>Pt{|Et%?>+wOEOZ|e~fY>(EAOe*tMvBhQo*@Sw zsI{E>$!JBXIRLVeYZSK&3W<t600F#2TAr(stAh%t8hR}ndNDrnM?*h6w+e$F(_Yp2 zA$R#49qXL)QS`+Eq(#LMjsH81*34#hY~(%Mx3ys2UTjgo`0gnpnTHLEiVo+2@%{#1 ze8L8gj{v)nN;Uaa4E8m895ZuU^!Df-(L1Ae-LVcQB1PSbpgIK0ss=+_u%l%!cC>7< zaE_TFVf!`JU=_1l#%#<Pond;)L37s(*4!07gX^tAF<I96t5u9tQETJl7cv>)$u<t* zoEuV@`x6Bv5+hc74a+XN1bYrQAsol|eJqXbZj;-p4%`%qR5Ly}WPBW_KqzQpoH(|W z%1zQ6jc<XRKDE*xt!`EtJH99+9(-*`tdfae!~8?JP2vbcsTy!4vxiFS^b@NZej3t8 zc%~SN7*)it>6~5+4f^XGU6wQ_PoZPdXMv%t3SR8wA==+~4c2kKDIVtR1P}2s{)sN` zD<Ka4GM&<Zh}_%B_a0p*%9H0Idw5Qk-}yc~jDu-s`QetiE<?!6i!_ry#`Rwp<H5^| zG_#!F^+!PX3j91gjKi>jpa1$X9y~nEi}`%d9|7Sa{5(92!ykHqe%Dw$d3bndxp)*2 z%j;be5b*FYAJRm=j=;~mZbN`^ym%}-%f>vtYZ?Mx9KsogyeB^InuLIdgK!TA@7`61 zfQQG6OI-i#MZi6&<B(p)A^&(T^HumUF0U5+JUq;cKR&ZQM&QTG#*Z-K@qVP4xJU=D zU*qTDVI1bgy5OC4z-uvn9v<FVe#RxQZ@`b&r}%ks_?~rf9)85d{CF+H&&!MSvMl5c zae4L6;f;rfcj94O*8Ob!cs+)nhlgnyCN0Ew9e%vt$IrvVILwE<Ax-7@@%k_PJUpbC zKgtGqGzC9iZ{p|SAsrqqq>J%+y@;QOhj;Rh@gn$Lh99qE`1#{_;SqpG83EU3{0Jw# zOiw)I9cl7p|8<1Dw9KF7V!6pbrsMSqejXmiAuccOeF*dF#?QmU_e{(DnAa8f@%kPj zczC?HEI0XhD}KazpN`|jBaA#It{>sYdf~Bl-h1Xl9Q={b_u}`@`28c7xakdDbaCCx z>WiyqOq(`i`o)zKW=@zowPxx?)rBKRk1kSJrU5jg`tL_PHAaWOp_w&xi5YP5J1IoZ zx;3GRGiOW-onLn$A7>^A7f4<8%n6C=$vAXf&NvTEnGT1*p;{0y4gPg!*8SwvP-r^5 zBZtnvhanJHtAn#@s#U0_whlfMLg!CH1cWEtU8lkmr%srJAk)>=)ZC*&)8L_b)&#^R zc-n+HeGk)xF!f^kl<C!Q16)_5AMYlODonS{(`Tr#lx*UZsWqYRpI`TV&1^qEXVpxa zP<L_0=QH?u$tcZE?FU)&^BW@e<NFEXU8)h*O_){-*T|DVTBvpgd@I+5Y9@f{8Pf@= zo`DJx3QsKuUneA{2>d4@zC`4jNi!!*zb8a?)XU4dP~D8s#0fJ4r`~q{J$Hbkp&$N; z|3i7zlc&_($6z6n-ZQZ%aO%&bu50e;U)2`{v?$a~nAIl-3Gl8Cuf|Q7l}VssCn%{n z)2=Qofe>;R@y)THjk#f5EC9#LA>VW83Y4P1tan^>lU#3JrQluq-k|QI7dI>T_%d~` zEmik`e(rivJr67U^}+kEy5!Z7&08*;H}R3>`>&ez`!SVopMJ>0%Vyo+|8YLm|6?2V z|2QS&|K;Gl|A$9hnoit-i`P5_&-`!5gsvGo_9vmjaW{>Nh2m4D*Uu>mjk;*`MVEN* zhv`7@fB!5HoKq0|ZvNohB_N0v0?y%+t5)9$E7oD^5ME{YnGE2X#e$3(Qm`m1He|S) zJ!VK~VU9VZu<4ZOkmBT^tA~_j9XfSLadb#wbVz8-kl~0qW=QUs(*l<x*#aWK^*t&p zym7Ox88UofHexmrNAi?whjbKV-<x%+q>g&2qtwO2@!NzSFOI1L){uf^R@N&+auLMi zdxYWIrg1OMLhg&QV?#o2&X^&E3r{hJ6gLerhm1}Rjt^-LK5*)g(V!S~q68T_k<*31 zQOq*p5}%UMAq7oYV^1Gcxj1`Kj(f_&LCL|{zs^1tEWD0%kuT$Qe6HWKT#H$*MdXdn z8#y%%iZbu)Kb)r6<ImOvBI0>m<9RiMN6OHLr>_jz*W`a4j|Dt&;OWwM{!fM%s4GoR zjJyzf#*&_EhBRN0{Vj0(#N1Fm(8{ua6xW;_{1bkZpFU{J;_RPh7&0x342hnW^^m$t z^ppN0c{zbkdruT0TUyH3-(+Wc;r{QkrRDU8<>4{QhsTp``d%U2d%jmEV;dm6LqCg* zBm4smAFs<Vatj!z+!()s9Xu|PM->E>8mOOn8;c*~kH;)7FOg9dM0^d@&%9lWALDz+ z2YJ3tZv;Gu@|NMwt5V$pci>LAcNOZuMBItT^MxdG1=vgt_k1Ub+yX`g6ZG+UxvwbM znNb-c`L65$8sG`8>;PxdzJ6uP$f`elfjn}A)Bkeiaq!o2P`*+Ii~jPb_^pmlUE#kt zP0LZ0#~1J2e@Ni#^gpiQ1ztpb|8ETs4S+wb;l%^s&&%`Rj6U^VH%lNlFx~^``$oAB z7WwkO+M?lQejvhIHQX8i-=^W7e0Z;SYj~9h(D(N=JTw6Qp*-hi<js5CrQrkdAJ*_% zFQUF5mHXhYl{ZWD)ZoD60rB~mEhE|fFX-c^pg%~SjFZ5*W%@+%M*xn~jCw;FSE0UN zaFX~Jp9Fr%N#K{A1Wq3UC!*(?lfXIoc%t|`Xz)bv+fD)>e-ikllfb8+1kU-+6XpBB zN#KnqfjcLG|LaNMzdH&1|DFWSe)L3iK6MiKpHBk++ezRXPXga^68P4Wz_*_S-f<Fm z=SkoPPXa%568KTT&w!@)eBsGB0c{`~{oIN8cKS)+-#!Wa+>^l12b}qOzV>81!L}!c z-$m7daWn3oG4-07gbIwicS>#GXA`DRt)D~K&uS*Zauai4O5Mx}7md>IB-$-AX5L#f zGmx>f0yNTU6Ep9U0IbKm0u`_&Yo-GOaCu=#J7xNmi!Lo5`QyMv@v-pO7au#4|4R68 zlsw8aJ@(<fiUnVO2$#xR73UHO3w)%&ONt385ricQgF-IwkqR!Eln92BO9OS)6Q<rh zJ#g1uQ)f)N3x%DMs0qxhsh$<!g6YKi>30QCfO`TkFYih4|Aa)KwuYv5pk~gLL}22~ zni_3W2I^{Icqb+XU`p2o>Js<NsK@(>Q|s#{GvOq#;I6uw#J^0d4NR+<R$cpZLaP%~ z1NGBkK;BCrUI(Vmm_CVd>T0IeR3`$}ch5`&YGzIZg*9_(JqoAYTbHOoq}ek`Z}rp} zb)<SaT^GV9;?x=zXb$b<z>Hcvz^J}Q6$n*!m#X@^1Td>+=G`hZd%~0iY7XZA^jSob zm@zdVcJE!HsaHdOc|n}SR~sh1<+_ppTm#{@56*cLFaEE6aE=)~coxUaxcHiLDIUDS z2fx?{pWuW0<FEC>aU^U8Pn#a94aEPL9tsj(?2Es{2j|?EN6&!)aBl?o<6K0-MLZ+% z^Wx9;!TtD``ryP*^Mlu)2EaW#a<va$f_NVO?{eUcYhb>&_~8D0e|r-6Iv;!#@Ok*( z(r}I}{iDmBzW6kHz4-6@;FtQ~pZefG_QB88NJ;-_AN+g`_wp^oJ6;#~;`{R*<%9e4 zt)jt*%fqukJqG@dhBIGILU{E5hY#-e1^a{#&UsKT{(t-6w6{I@5M80f&&di8e!dUx z=W|TMiH>PJyX8q=e7{`n@xlFkJB<^lxQOFQ{JeZ`(Qx9Y%$DKDYt{g`f(8P=@Zq@% zKo8G@KDfUg|E~}3m(Qns@G>8sVMA0-q|;xnfA+!s_%HIoqdq+QI5~^U<6DP3;q-w4 zaL;ahOn0`-*RMC$`QT&l&MR*jC#`WYKIe)(c<)KzA9K<f7vs~$_2TF1hD`YPeDIJD zey$H*=!2i<gD<1f#5EBA3qH6Xf4dLv$G_7D_v4STkhna4dUkBZ0Jvwz9@lWvLp{ba z^Ey=rJh;b)f&p+%Mj$c(?&;NWEDSE<8H=BXXDW%t<+bZgx__Fl;f(KZ*RBulZ`Tj` z;FlqdhyQmz_~kzMGa)?SB7VQzJ~TqW0yh!#@Lc-+KDb{G5BaA)xF652d~kpK!#=n_ z{>|YN<9Y5R@S*3QIQ~2zJcKA7{SW%!{`T_oAN1j2(Y^S#UH~C~{PDk2)EA#D@#5d- zgZtzE+6QORz4!-wa6g_w7xdwe`Qo4DgZuISzy~L*Jp9EzIE(JV$N1nZx(C0;2fx|} zzrhFh=X;wE{%v3Uzxd!}p@-j_hdLE7{=9j{L%#T>zW60S!~-rbeux!;E2`mq^vA!= z2luy&yM1tfyO`vI``g71AKYKAy*~Iw$lEK|#TSw)MQ1kdIr0Rb&KgcSuforZf7Ayb z<Adk?NF_WCH(gW#<PU(?s%U|K(QwA~<M|I?e9}^;<3BS1uEBwgK0N+@>eT`9Jv@7T z@%`h{%g7X5q=#c1ue|s8;C{V5#|LLq@Z!I$;a<I0YJK>cFTQ`gwA}~ykC#61!Tt3( zoP%#%q|-0wSNh--NspdueDG_0@M<5NqT$8w_Q5S5ynsp&7xOL0&x`*9AN*P$e2fo% zoew@<!^s~Go!BOMO&tK|n2gtKA0B^undgK1+e?!V?r$%S5AJU-Z}{MTzHRrx{d~KS zohvT#fwX&ksP@7A^)=H6kNe`U_QCz_>jNLW!WX}QoeeJLdp&+$zQsQH4L*3C5ALs* zr5aBD^H+%<uSa}v){A#N;ltzS|0*Bc&;J*Ea6kWBd~iSi5BcDJKHSN{D=wCoG<xMt z`rxB|@I@L<{o~gg%QW08?{eK9|HFsJ-yWaz!Ts%VwGR*Z!?wYz*%#lB=Vc$<k0+=F zo8|J;f2M|ebk5Oq4)?|P<Nv-7?#Dk$!#zF-k@$C$FTP*z4I)xpq{q+y1|Qt7_ZIu$ z=OK+(FMsgC{o~#pKKMDl`2QZo11{!!A$}g7|MbEA`L_As{(KMn;QoAnGKSa{et*7~ zvGHj5&v5th{e+DN7wMr$dhj!K10kGElel=DI{@yrneYI(H?EEjfDcn>0!w}Hae#UG z{y!Q{c_8kII{sQ;{2P7o&-|&1Kss;o!O!!-{pGz{!#(^nRq{ZkFTTIMSNY)n_I{TS z?r-n+_~8Eb{x3ebpPoMsfa4fCx%Lczd;Hl=X5kuGUpZuohDUJs>dP1a_v-6g1K?hL zT{-|hOt4~)n-A`9FR%FE{(AgG!#zHG^;p14!bSQS#Vc365ALtW`98RxZ-3Ts55HHB zt9|kP^|;Ol_t)dgKDfUgU-QBJ_4uX_?x$z?%`BBF7vWw#h6u#P^77|hqjbQ7*Xn0a zzk2Wv4PQ7Q{&<aS%K*4H&(Jvl?#<_n3aS?#{xUKU*F6K^o_+n~0Jvw5^VDo!9v*L9 z!PInlaBto}a8cdQrzIxbjXUOc<v!U9VIS9oixM?+5`l~EnUI(exajV>y1+#<XYhg1 zBNt(g-T#P*bp2Rem*{(k2hP}YJ6p|kAe%lTQFGBX*WdIb%tTk;i!{uqX7XJVxy?+G z|Nr}c2pGtUK?5+A>F3c}F1*(TUO?Z!i@U$y_FlJ5RU!J#<#jrK%qN!*xV-lI1B3~u z4dcHWbiV%ee7+C)BO!bte#AL2edu--af!NR{)aLl6`-zR{v!v#z4T+WJb14?`k97T z8Ga{9fA^hy3wuo6GXK4F-kseS!)Ih-s6dxa@3kxMwU@tlXE9Hde*9f3MT3`6-@W?t z?*9Tf(-#kj*P+vMtn9x$y1jcHUV34Fyf1ZnKaAmlaTjRV05)R+m$9*bXTS@u-0H2` zAAKVETQFb6$kiEA{y4Vs(tGm9*8{SUgmdneTcA)U7=lNdb_3Jr0X9(fm~uH8i|fJx z$Oo2xDB_$b{gPiw^1#2UTju}3^i!v*g~%BfhvbS}Qc@Br`SB$qFAaq*i9|~Hzc>;K zMT(0r9W^QxD!KHM$ViDf{?vJ~_|;j#K8!)kc=tVJvJ5Q$RbRMFf@N59HSj^ygOf4W zg0GJ7Mb&Q^jBI^8m^j1p>1wt2z(eZe!TQ6_V0h@d31?v9C}_)F`1a$#5_fYpkefU| zzfrJS&QPo5p}~dF32^J$1sKmv!Dp2UhC?$STuvYk+Z@EB_T#0^^_xFihY!Y7`nbEe zm}!$A<BXQ$y@?t6+o+S!d8&^-BlXhUR??RSeGdu+?n6Rmg_{Ha0}aR*<vrDk(ER|s z&aNeSB;Z3YyZVPeTgNXKeP`y}45zs~GzZ@|-82sFtCJrUkQ2tD_mFtvk|;i!T#gW! zVl3E$KvaK^i8FX(_~4RUiaCD>|55IZ;gz^Ehw|!m(c}U6|4HNXpbHzztKq&AC;DeM zHa?9Qrj2j^w~A}1^OAdqC*K_&4Q`GG;qbNjhbcyg!apItS%cpr^$~n98r%Svn)sOc zDZZ{>P6q%RVzws0)&zhy67XUt#&?|v;P{JUy#~rbXBhCUHE8Y)$#p^c<%*V`6E+r~ zi+EOYeS!Dw<hms>d`$Wz6Sk^yvkfw1BQ*qZaVGRu;yDWlUzTrv%d6E#r7yxsG{4e| z<MT(5riv*f$k&GWCQ^C#8kGJ8@np_Oiry4yF2~o^H{N8~U*O2o*YWw_XowtA{V#q< ziIYhSU&s9tmIim3Vgj-@NE&<)4?RPFgNA4jvO+iqDTrs&JIG!{+K1nIM1-T_p=P#7 z1(RA=bfG!dZ$Ye$C=nb0+=^I3;WUd`RN-vYi#HmLyV1<NjB$=6BH~!=J8?+%&_uW} zBhT;>P;lWtA>NJQLcF>?90ImC5xR$8gASb<CM`H;cIb`aT#p?HA^~3EK<97ia!K?8 zNq%P=@@mE@;dF3<-&&sWQiyXZ3vn{*O-DiD8*pO6Q=>nikAir(xEy|$0BS3rf0P~l zMC0anjnv&zA-BrhcGP(QD&XmGvAn(I@UwV_v)!6lVym@<Pf<CcKluR=71F^oIK#85 zz>5x}>0981<=*%TUv57z7-udqz=Lg*YjdsYO(@Q_J!Ha`V$Hyg+4R7YPC+K<@%i=x zC`+f&_*<#PJ3qub_)@u@j5-VFz(GxHtbeHN@CGO;xSLdjK1=H0u?b1a4!33*sTWiz z$4I@3klhm5+LF$GJO^j&Ci0xK>~BAh(ghyRO5_`V%|C0Ro&Rl6mjz`v*mx%AtOYsW z27y|PhOUy5&tFebQ^LOv4bsF>x}g7{e2{96cv%hvuDbCJ6v|KXUG#zSR=NyaQ)NyM zMbLPrQTS`Q4}dKjgQR&uEbweMOVMaD#$Qp^R(K%Un3cpK_x3Hv5hn-7J>Z?gS8$)c zF(=uXW8ZQ#&0}xmY_Tru`TzP)xh@!Ib$@8tT~<raRTiAeSw(A&6~AR`4IWB?_-pa) z=t4Z1&Tk)=+rN`{rt_duN)34M>m~R=dQj^n=b;C+T7pi3LNbGEfA|~GLr_cjOckmK zs)?c$46e214fWTN^F(uPrGlt`)U+id(^lEqLIlap(El~^@zwp$a7=f0Q5U?l+tPE~ z1_kZc&p6XeYv`!G1xn)BxYZ%h0X6Y3Za8G@^0+%ST#Iwnl|Bk?z`^l};m@&`gzs`W zK>Gt}dH7I!UPrPglsLnhzn+Obtrxv(orNP^YI_s=D{z8&D#%u$zhA~@=R^3p`Q^SZ zPh)Teb9=a!2c{L{i(+HZt<0<XCL}V$bK=gl;tDshAz;A=SMq@nT-)Vr#1V0fKHO*= zhQWq>e$PVSh~q*;YpZalZV15p`&+=0!*pPbN`Mbrf%J0Iz9$^2u;JpOJB|}Wih-*P zJ<|fRzzkRNvu9O)9PJF(=5c%uZ58dXidt|AG(_bp9&wNx$Ct3<tr2j1aXfDCwTf_N z|0i*Nzs;}kU7|s#fT1$W&I$M4q}@z5c9T|JzVTqMkgMpv{B2Eg8#qznhTkw2{~VHQ z;v~`#*-=QGwNhpO-|7jBGaCO58T-<nI&n$)->=_#Lsd`mEA(2o%V)i(0FSs89Z;97 z9(*`mjP{8t6e&sX!Dsb-{gWz4YctB!o90;vnQ;b+Wr_2-+W;jK;y9vcxT?H!HZViT zq^8$sycCg6B9rf=zk`<;YV8s#ArqmveW1c_J%I9B!FA<Dty-Sd=gp?=ljnGK4C2Hj z#)@@u`?GR!|JIs0i{bC3XC2|YaU#HZmN?Y_RhIr0Sl~PmO5&ULQhxZanhy$V*|B0H z)qx3>7fGwY`wsc%xJU8u_lV)#6mVj4>N^|^7%O76aO@^*QP^;5f*||NNs%=$3$%Eg zF3@+hK+j+{8+Q}tKAanJEPE;a7&+fIof|B8T%-F8s~SSTri{m{yE!<gW-}B_PI6zi zG{ID}#8?a1sZo2UtsNVrM&mSjD~L14zk<ifTt2vS==7zy&n1F*L=rCvIN%+AG#N>I z-*n9%hY&76p7tj3yhr><jz+ki?db-UE;SyB+-O!y$6#@~(C>9L`Bf0D9e4^6YwiP< zlOzYw!(3N}e`80-ow39JMxMZv0PAVAGj<Mc_;h}(=puOT84K3~I3ojr@eB+{po)P4 z1f+H6I%DH#+Rs7>sjBk45@_`%b>m!@<3@Y0=w-+C;FpD9xU-D>bh2@F!Tci%{x;yI zb6uP+eDjh$g~s9yeKB1#HyG)CzJZFAl@9{7OFhW|l4Oq!8I6x21?9{0{UH)I7OnBt ze`2O7sl-<C!pm~wOZ*Oe20ohkz*Q)M7TpokzriaoY~V}FfsPwr(7mIyeeNw7dE1+d z;JiDrZ8*=3UCp6vTzPq*1HRS){lszj91-fIpFokB7u9>J5W0awtcudl>sNVXRgXrw z=G1yAKoI?w7>zC{@#36P%Ll2`5MD}Lob8c12M;)7LgI6ixyRqJb8zZ2em_*MaM0^U zBkSRAIGX$jmc-G#*&}g+QhD{RYn{u#5QenuJJsR=lwZ-La#m3Q(dS)lU-&3rE83hj zBus~;9+SVIZf!&i%lSpIym5XJ$~1Im87YIumG61waGq^o<Wz6sRHw>H?kh;#1WO5r z9oYUe7^MG&-wxK=fqcbaqj4P+aG&Dq$K-d?e-iDiX*kd%q#XE@&epNwJnHRwELAvV z81v+^qJtRYC3}V|p<s=+rrtn36-$UBF+oD_AVh0TNlXenZcV+Hfpum=A7w&anb7B% zP){awG!x=%vcjB`3FT%&`I%5bCNwM)8lDNAlL>_~p>QTtm<e5&2^H(m>^$pXr%~F3 z7Mo<}@W|m8Z)&yAw38eRwkA33<3ed`@^Sp<^haxQIsTJh_NMMn>`f4@mLvH^Yp1Ne z{i5F9DO)RGz6D#Rymb8^FvM$@_vil?J`D`E*qhEr?}U?%N;n?m02Oxo`1)s^-xN@C zTa!xw=7k^!RlMl3IIj(Pbhn+4$Dp0$2s9&24>#~BwKFlS;W7;Hzx{nCZXl2sT6r1d zPX`z1pzO`{1fvY<Gz4!yM(Vlm30^8=-L#=~sf+1WrQE%y0Ko-R`C6Gc%O1xIOT78r zhL_74@W>eqxVsY1X%V`EyFxNIR;X^lhWSRvNJH0jBC={o9QFMZY_|;FDs-Y{#mKFh z_%Yg3-n7vgExX4mI)Z1>W<?l|Ve~$tjqZ)Aama0WH}nWbRHNWy@EVT&)<MmvA!Dis zxQyhAVbEL7Q*6b`T2)3ch^O}`cth^O8~QHipyB;;`*ZfgAXi*rWBiK~JMi>WA(~~h z_up7uF=r4;DG=Nx9-ZSZ>V>G_pbn}Lz?ZSOD1fwU81)4hY1lLkVRzG{zOWgC<I~(Z zU?-ywgImE1I;`p*SY2?sQjmWf2fttzriCUcY&}@Av;^sJMfvBWrHJr$PAJ5B7L4h& z+lsbDO9##S4V7)YRD81YB^(MHO?9Nrem(t99BrxE6pPh5WjRU&j@z%<LnxjtpPU<c zZOUsk_TZ_(c91gv$bIPT>N|96`P)8;zCF1YCmpA=tZsy|jm9e=%yOXQjpsq#{Dm#Z z`3*5gpJQJceRePY!>Mog{C5#(NOlC(v7qVzJc#=dXEht!`EtBz@{K__Tk^w5n|;WZ zmS^|qV@*4Pc}KdpwSTDNZ9_c7k``;Z(p*jUW20$}+Ha||<C5<N)ft~~#jyhelN>nW zc$fJ^4wWq7;k8k>w%0C*x<3t;w$G|_DskwXP#I0OWWmqg+c?o%WzW<7-}d}&!0pCL zp3G^Mz67N7a{@faXO%d$`6{{i?eG%j9hol&sv~MXN`{<yKrK=nvnz8U<2bH{0&c$+ zeNH$G-!EhWPMY0`6BEVmjuyQXw_mSt|8PbdB`eulh&M8!V+8?z=!`7@(-$>-!K!nj zaYrLVHkfLVlWWi98H_n+01iJ{o)3?m$8f|geR$xg+arL_;BmKYm^9h>G7q}Np^W)w zGJv%6a?XHw;>g>cAJ6*F==?7`fZTGIaG+wkO?@6bOn1?F5HuLJIDv63WW#h8sPk?c zBrcq|+b>7wGkF852mD6tdC~cll7{XbvAj0ZSt94%N=20{QRm%unvu0J*wYXnTV-l* zg+p{Nbq6ceENS2gx6!=zXnPv85lbwx2^4Wkz_c5L4!4POcZ$C6EBY3)5D*(@3D25U zRTzUC`uQEC&CEm2cn}InK>LTt880Qz$l8)6>d0Fm&iAIIp&8WJLI$vFQuEqDnL0H$ zt%&=sB2I{Ko6gA)mjXvjr-4V$N^&wNX19P4MHLu{hYo_HIHizOZO2PR)ypMIc-$?R z|1i?qk|Vs?>%?GuEN@fyj%a(QY7Zq#)RDJqQI}@}y}d-8c)NtDotZgKR@DBKJyJs^ z`%QpIzMcMjH<kQS+7-M{+F6Oo&KP(TkYql>Uyb5{6o2eb`D)4ksMBtHvh0~Ti61#L z^Hqj+7h0jN3pT@M)tuTpBV8rG6sI*~a7w+5&;GU$6-vYXlnbFcIR@gFd7_=xpH1z= zX*}mQd>LIW+UYqSxJXZ!T^aSHv-0#4s^4^yqmV>vp5-Wyr=f@m^E)~TWCO8%O6re@ zN+rc?p`?fe9+;ehxLcNkqw_`8Xa#l1-i>0mf9Saypq`LpNZtEHLyZfTzHB7t10mF0 zu67%cT$g3<fVM-+(C0>jguFu(LiawLDlH<~{vp~<$r3pvvvf1E&b2FZ>TsZT8O~{a zOBK_!*Lr1m7iHLpSoz&M{MwR7WdbR6RvZO>RyeIRm(}t?R<vjn6;`azKUNgZvC!?r z-9P+<;y%XBUkc)()|BFky9<9pk+*_h^=YjL`e~)N;L3vvEB{O?ubiO(|Kn;4gyb;Y zyquv_S!U_mGgsO#<BZDE78tfmjK=p+=kCqD$s<rv&tquk%z^!5!#zWfYUHAqr0uJ2 zq<e>%*8+a!dX0q@)1HpJY}zf5W4i$C!||!2$@D3y3&?Kv7+62bjeP0OJ!V@u?)ArU z^tRE|4n8<@z<o$oS%K~{zEtfx?`8W--FdN1d#AES(4bibDn}1mvY-JlR0&Y2?DO76 zh6U}PFw3uOE8o5TD6*V&w_^>HILNudeob{vc}Ec1OGxqqX0>Pj2huklDOtkfU!6I_ z?aBiCh>8rJ<b4T|NP9fsF|d)B-RqCol{oOV5(mDHftoPwjnZnhRCnQ-V%?b$YqVK% z58VUw!=29m2I(?A+F&2|(%8qpmW14d=Q(>!PT~UR+I+<zdlQ(?F*Xj}&O_CacxVNv zAUW4HqZQO}#BpxNZi?3Ac>L#evH`f_h~g$&)61Fm9BC^_wxMUXlf(oyll~XqnXkTa zU%DO#vStRjYOv|ZU=uDMWtgi*yvx~{J1GvVAzXH9B}S#DJ3gqB#+}K96{&-Xv!hNu zMxL>pF>cNvEHz?&<f}Ym@xMWVsRQIvz4e&OIEAHBXTU+eWzr7E09ImX5oo}pyNbcS z$yhb4ZWYgq;2|XI(OQXc&2TID?+XOOP7KTG+tFBbl+W($95_hFxS38@D>(nTW)q9x zD);O5DvnMt;ARmytag^Mga=}3e!2QAl#AE^4<ILudvb9r$3%}z<etOX(Kj*Aeshih zQtwr`!?w<y3j;uMvDd<NM}>2BLA>Z)t7v1~?ojiyw_|?R7L3*ikaSMC0?ycr+TwOQ z4)9|Rx)7F|QUzQpWZECg{7$s@W<6P(`d{DzG7Ev`zb!*p3>Nr|XKB4Exoj0p3!lYe zB&o&A>GfA;UE<E8<0Xbn9>DC_35HYx;uNFuI}kvO0#a4IyWHMU4o8N1{vD1tDoQ`1 zxiAi+_WOYq2LUoch24pneXc$7<@GSAZpHBI;?0R0_#B`gZY&WRx4y(7KOLMGlwp}n zts0i)&Mkt+=1B7r<C*-yF!8Vgoc}UbcmwE*O5xtI02T*R4-L-SRi13FtO&MOl&+us zYb&@XUMht(9-JVIQIkpz?6o2>{;cGh22clI<>LlJIF!H9^c9EDPdF9%GPxPAek*E! ziP0-OA!2qhiZv2c#uB8$++KEXbVNG_+Cl4g71b}5cYj%4-3C6EW9G@;5wq7tVdr52 z-n6&D=CgN1i<&VCGgdTXUd(R63XWB@-D>#~7Gb;f{G^HMvg}Re_DfhTDd!um^w@3j zqD^tk*u!`%rwDDTsD@vNqPAd{Iijs-quo=~g}%V<Zs|GCUS*+TMzoPj@HK94vVLcE z!#aEwYXfn3Uj{W0Jgd4Df>vGx@p_qpY8ACxrJJ5bePQ9^227zU_r2O~4nEALglU*$ zM>f_;>*EkkcTF?$L2{Xtj5M1#5>*URw+c5AI~_-beaA$aj*99?RGha-W};BA{g(hI zi9kbsnDWI{ilq(Ah@^|@9LGVfFzfkNk(Znk>P-xWK}=Y=8x3OUV3wxH1`suz5tT>Z zau@3&m^wsm#-dN4jmxW>k&M1LvBZlvwRjVC%W#nBD!Nd{p|GrFM^d0sF=F&@Aw}NP zq}hFnw2g7jfqf~d<G~K=GU1)^P_yw&vsEPCg5hnRWH?KoMJf|<3`+_P%SnpZE@dnF z(i*XeLZOO$Adl+@<wYAaXR989J?}qT)yDt?Ns7_9MaCn-NEp&V5J0k>Wu(^~7ffKX zd=-lo4emBeMOKW(-$C1ej*v1h9fjzvsdMn36#-UEM(pPb5RNoszWC^8)_<V_Re9Es zm-Gj@jNFcjw{Olrz`DzIuIY)}o88K*Ft<<+yP`SRa%51vdh736K0MpaFG%jas;J#w zTXYD*`1(F9CSIHOhc~HNM;wZku5(8f%zNIQ8>Bt>Qe-REtVD|JR51%9xkCjpcRLja z=)k$6pOf-{<5>w)B48|957IfO5XCx2kG&0Tq@@!SWRrpx@!x8_-jPB#(c+H1$|zsg z(lZFnGqrF7sYyH;T@xZ7+*Qk&&*`ck2yQGd+K{Q24+orii^^bRwLrx0RG?VO07%Z| z)N2~(oD|vYtRkDSxrFPEud_c+ijW2Bue2pX@+p=#Xrwsr;kZl#gCI2>6Q|BnrbVr> zdQw}B#&hwQ4&op5Eb?QmL*OVB(PwoD_)uYQ;Hs?MPQfesR5dEU)SX5>{ddbJ#X-Z% z$eoK)SwWFIEpzEBsd80MxE4xg=}KhJJw=EK3R5H;)WqFUZ3ke}bH9Pg*J#{@0?M>; z+#bN&UFjCQOFl(b1eKU_pwP#gpJDYXy$5m7@hnFUUWUl2!hZE1t-n=Fs>=pM&3tk% z$Go1@BM@QOAW<+Nz><$IlLP+{|HRVM_^s+QVfslH)Wq&NuR|&EG5sWqp_fk312aRe zUHm<rz-orNVst%_0qs~?QWWc{$m(w^!beGU`~ztJF_Pz_&0r~xd8glpuQZgA0|%>A z*2j#d$<i8hH!Rb!rt>IQM9_=NG!gD<QpmZkz^Sz8i>$H?jx-stMr(BTTZiKC)n#Fo zC%Hd|Gq|v<Zh7y(Xp8~MuwSFV3gKT_A;uB6ZU$^TcmGr}uoCl-94VCbWJscIkJy#m z-m(h;4n~l!4SR4f6;+6tOYS$i9ot+uWGQ_6ka5?mm=nehmIA8)FA?ER>^vH3akCE| z#Cf|loDlrGb@N0MyJZsj#Eu`(+_{7AK<iI;MqWa&stntAPG_rNz8nGF#j(+L<F_r* zye(Yep@E>%-fk6>4$_MvayqpNgjAuZ#?Z=;B4B7)VLFR#PxX(Q!C+?cT{tP@-WMF> zZ#3p%?5(3%P6K;*Jp*Btj;)%9+0@kyq{(RPkvdcL4_E7$7BLzpV(8_Z3B9xE!M?XK zy8{YoJZclQvDIFS^TXka4NJ4jI%W8|tN@aU(KqrLjYyH^=a>UJmDE=BD#jvirNp`E zkln}e8cG$#{2pK!wdXWg7<6DQ*K+S4T<Ps6#QSI!ShY5BJ($sKxmTluKLjppE-!5b zqc<79<R*eh^F(79_6V|?bFioEEHjG&f%>|&W#Sm4${gK=TM=&76&zF6zl{^bE3M#e ztMtqI--8^IkL7oa-7%tw;{n`WT8TSdaFx$r&qU?(H}ck5xIM#pWGAuEUow#cGycQ5 z<1oXU4zhYmS8;K|Xu1Or++)dkd(a2UF!V*$3S~Xq<z<fU(Uk4#qs&MhgMLUeb<D>4 zK^Zots09w)#L<G1V{?O6_6?J*<ckf$Nc*}1BgLaXu#DaSCR_IA^bxp&@v7cQiXdDz zw$fO55USLZA^TA-3xaf3`L+Ax#lwJrVzJq{y%A$5ci6w0PHiq+o9D#c`wJ?gQ(o<a zyg{TdcuPE@enCHv?Z>cK@a0%H|FFHRK!{ie0Gq;^9%1gCkZa}49d(J7g`w`l3Vwuf zIwY*tX(0POgmnq*rxIR*aC$R}3n`=|z61$5VkCbrkc*e9ED8jr@n8zj==|fP(pdBv zD$pyDPPlgVL{!F7<_TKX$}j|(rc{QCNJv_WnIa!y#_SRxk*RBqq;2*HAdz<(ftRp~ zYDL;UIK2rt&|oTA<@q7C4)T@JxO1<tdmG;3Sbm@$Tg4bTAtY%7kdW~Tg5bEx#^P+q z1cHM1z@Pf|vt*k4vO=(3M(%8*&H~l?#fpay2^jKjWzbGN3FO{!@31A5DlccV5N!^( zm9tDh*;q*fG+Mzpi%kN7>&me5<XD&*`B3tC77WJtW?iK)z<L;6y;Uj-VK&?XtRX$> zjn7a>--zBsX&Eb*THrPd<i_BO!ja7sAQevbg4epku=_zsy4D?4SU!J)G{k>@Gb6ri zd57k`lztn7e%QTL78jEjp*|uzu_G3{jO%;sJs?_YsC$nlME6o_IM$KXCJ0)?aug%d zY;U))w6bg%sKzd<*Y{iY)2)w70h@!R>mI;D*kG#3MY4-d${%-Md>ERtH8mV*5P;gl zjO}jl5W6#aD(LxUH^_n&5<mo_u?cN7`U2_^ItIgdkl0;Oy(MmcQr@yR8)g>{{U49& z5mIBNpJR~1M`O`6q=S?=E@_L~J&Anl^$=AG`pWvx!6q5GDJsh6w{{89(9zX_QUMwZ zry@^J9k|0bAOd_1Sng`sbKRQcE^=OqNhe$Z*14n&%qFUVY~T3oe?CLwyh=s}!dMKc zs7Ea4n(<cag9{YyK<m}H3|Tf5Iu}OWxgpXptbv+E<%~tx#$MGjSR|)%j@=I1+};#v zE84^{^;Tnn4Q3>J@@D^pTpqPcP^Jziey9nws)sEj?6LxE!=(LhYo7+KYBv_&vG4e# z*{#Ba*3xEhSoElsy_7^_vK7uh0JN9Afd6h)Rut}2F-x3cO3e43&%3?sS$UZqIXuyr z?(zXsx*>bn(+B~wM%`yfPdCxH8|zoo*AO4{jaDLeV|{CC3lL(0dPXNio(Luy$2Wgw z><9Q(Y+644(L|$YOvgl{w&i0$K{cU8W4g@JjnI9k2t6APtbUOs2?zVOZlUd<G?0HG z0Sajc+s7_QDaI&RRx3nbI&^6<NWy*DXmww+9CtxPZ()eE$!Hvn_6js!lvJ6N;uc-9 z!gUfI5hN{=Wh3k|67sx)gaOSSgtyHt!W+p^^agqd6sYh>vN;PQvCU>_7gR2E{jGcM ze~$nvdJM~6OaGNa-<FPI>p33d41@&`n2?1j182<wl(8I*EQmRUY)=C8z{eho-BPmi zz*_yID!CvH!)4!r5RJ`AQF}w898ypWJT&-P<po+wE&$j*#5H~QwvdAM+dv~(Th7V` z5TssLZ?mdXE0GTS7!vn-#H4mARe>E|&Jsq}6EbF(r-kjWD@jN2Bs-3e*oN6xqEv0% za;mDVQkl6i76$jA)v*FwB??dn4!jMHqTe05tWebwL`0KE4`y>O!|OINk6ELPb07yG z^voAP3Jbr2L2s6Jq8>2xE_@Ajfu5`id(;cp)^9@!HJ-(=IeiyKDfnI@`s_a7Pk$Fp zHWt|#eU6JS>HmQTJNr{iO{M4Ks|6$zA|gA}b6JskuA|&u@0MYed3U*cV>nn*{hn-} zgNK)nuFMWQ%m}gQ$wzrZSG7zY?LFnecls((a|UymWx^+^5DUh4<MLfd>@F>X{Pr~q zG=kKFcyTy&E8rOP{%^)o++`p1Yy%3UYewW_ed0FkfTDb8t!B4k)F?F`FYT$n)YGcZ zXM_{OX%W}pTB{l|xlB}H3%0jFNK3PgrR$7mc4l^b_DM|4t7A-Cs6A~WI46-B9Yu?) zv@;!6`xu>C5q{zL$^|GBHm&t8;dY+%f_G4s*0rd7)W&XayP)cq%3E6qcT((WV)j0> zsH4KYaYHVQi*hFxnETIYE9}c;6ZZDQYlDeA%em5e{R1n~W3?Z_ZVl;^_Fre4r(=R< z17?ojtY4eHO4z5Y4fhv?n$odqr{DeCNRMm;1bKn<AU^j^iCt^wd_j2P2Pi_i6E9Ds z?nJ25uVLNeL~mE4OugxIw)gg~hT!(5&p=35oO7l#wr@`>w>1vj(~9kjsp#7$MvRWg zc<?Ed&R*M^vy^1=N>2df`38i7n~Gj8{W5W@Tg&m29uvw43Ex;?oevEUbKNxghURQe zjC8FmtNL*A2s9$RR%`fYiL;Z<*>HhGjR_&4!R5V!4pg20Xbem?>|m+XFwPNXM};jy ziFFDGP~5uc?J8`?XBM2oQ*X@6vhUxU{-vN;!z`d=PnC*FPXn-Tycxa4dVcVfC4=~< zcJbac4nreuw5?vuMJx**_%Iu~Vxtwrr1K{EL|~K5Nwplo1ov8N%Gz3*sTgF@FidT= z9hJ-sqq~`a?**}h1*dNBP@CZ1NgZRIvK;@>ZEuBQL5Fz>o&w2tvE%1M7=L=tN%syL z%1ZUn*aK7qH{_V$w_mkiDViF72VWL!!*F92H?h!7x#yZ3pT>zha_p9V2dSlFYxyJ# z+g+GP)P5TYKVrh=cr>wm<mR6VSLSDO_1J3JpJllZow<<V`RlmsZrO=2=HhM-<D(zW zf29r@jSqt@$zw3oUq%2c?WPm5cf;p9ygmYFgX|-K*6f|9*3Y|l(@Cvt&M8?b+ZO0X ze81_8&$Ww9dq4e$bL)X5;noA~-CphfX+IFzjgKF;!GCxa_W&79QOVVF^a+;ID|bLB zP#N}Nqr1=D$Vl9M3I%55<C2x)x*GeoRhG!mbS4k8YhelOZ$BWZr6AsFYRSqn<Ph0y z+6U}ftS5gwAJ!#YK<~#I{yz2nTSNEm_5;xuc7YI8(#Y<Tl_pX-Rm1Jt0_;NYlJp_9 z@H(1DhsY?}a1dtK4l|v5!OqK&N6h|MyXF*v#2;!58?1K6-2215@CB>#F*&!L2(K^s zi`o!ESG8Z*C6-&4aSvXH?N;xzVodvRO!iCxF$)mO`-I$?8eSju_FS3RboCc*5MeIb zQ|&>!4#V3z_^AbTp3_ghKL#>24?!cnJMX5u;0&MtBHKpl;2yj#Ke7|XH|95Fm(<x1 zO!x+0k1^Q{3=X}0Qb+I&*$nQJy8JsQ^ieBmzl&CbH1l%415*tfrH(4!;GG>Pq2)fp z-A^(1vA&&BF?YpzC@cpIMiV<)(|Jbil=_p}DfJmV(t45$%U{Wa=dpGtMAvlwTXstA z<H~o*BWkA<BzPYjrlOW?$rG}nUB_bj0A5;S?q9!$Y`b^Tr?5_`9E0yuu4^AV7q9I{ zND9bi21XMP?gn{mewiu*d2klLpY_LyiTUDX7*uud1YK%}lg<DXl{}(0Ns%s1j-ute zk{NR$q3s_5RrgMhE^eSgVoldM5>-@y`v@~Ini`Qi=u%$6wJ3cfUEI%<DY($ZZBi(S zEf|Ga(%gkvC`%@C$s=lu)IL<=*+PlhBJ~JSnogZ+9gt(x*$2WDpXz`|b|rlfLpF5X zCXNQ}61oKc1sZ}d5^4{QT%}!Ur32yZpHgj-I+_L9PmIK_cgVeD2Nj{~Kt%p1MP4g6 z=(G|~<WmRZ_`;}dHI=^6Sb+{g6y^#H9!+OCx#~Pj7Ay5PP;F^(^y|W6>OtpWGQ(cU zl%ntY7r|4q*eEF)R@A1wQZ&1}l1YuGk8*?pa#Q8%>Cb_R7@7(B+xs#tT16*Yp(vfl z{{Rg1{w;V#5h(xH1C=6*`$uM`^nYzWOR*dPdnIXrVie65&HI8n(yLIo{>BTow`k;x zek?ajCKq_`N}w<E_O%}{ZJ{Q*rU~4R?6y}DzvZrEzNRw^B6Fq8?4cbgk@2;oqijd_ zQv>>25%<o--HAC-Y>+ZbkJ;x&-8(Q1nv!-fw@-||f|q4~tNfhUppE-u<F*=L%f(Dk z7Pa%8*vNXv@mbg#HnC5v(2*zxQhk7`{wTQB1}O6FJ9CltSmZEfnWR6K?OVl4pYl80 zuj^C#{2qBieTuZ7<V5K6dnAUsn1K2OKED%TC_IcE;@S6vyNW(DOOG3k*Ft{Xx?UL3 zMpF)$8bgE}ezPJC2|M6KCx|er+EjdI$NvSK@P@HFQR=ef>9B0Jlh%nAh~6k_j{=s% zx<`^Wb<A{sam?41M3Iavgy==F%gS``Js!oVB&QsoJ?0us*{F09<n>IdaeGyr(GJo* zk(hpC0pccaH8Jybzep0kVkQ_897YQOU7pY}1-FCsQFD|L^GQv?te?lwox%yYRx{|N zp~L1y^A4-7G9%v~XV9T4fss4GVn9<s3gI~%43U(=5P!eQ?8P-WJi)v7Vl!PLJd9am zW7ymr=Um96YDHR_&^`d7du|L*y59km6(Jf~Y688YeJ*w5EC{t$aMbL5Lfwrn5ICj& zs8!I%urkn}W<ijt8!5!Py#0h2jp6G;3<2iXd>v2=?5eEf)bOUD^ZVuCjMjR-u@b1~ zxJpS6M^wdwnB@NOre1p`lN+h2n5Xl7C%Xh2?V~SJkEDOqjdA`Gsy9e)Ai73;ejkLH zEbS%(e_<~pH*zbPy^c^kVp>yBOqUI2iEvv6zDDK*9s?GPcd^)_J%Rh}31vmVmHACD zGsihAXbl*P=xYY2LM#VzAbW#oEc-JAyO@)QpL?aYB|BgTbY^im5#0sib#FtvRwhD6 zHjM_m1;)S|_;o>A-oQt1NVdtw{FAaAT0YKl^H(t`#`;*U9hRbzfEB9La=;MleB1(d zJp8%UvNwyy1HF!STJB<w_&q}ch5<hRXdJA%kB7vlu<*>z2ROvAV7iV2lQ6Ecs$apZ zy6HT*n0X|@N6Y}OL-R?uq)#&=>8SlmwB`N5P!$a~U$`t9d4+HG8r%lB@e}X;!7~uz zT4@WH8Jl57j_ol^?+LFr+|R+q`Nw9UD(5~#{RC4n9^R(vDaHlJ@puLG0IMVno6A}8 zN04DUkC7Vqnzs*X>B3${J;YN=t9v_*6WP>QvY2dw$eNM8NclKZN@+}cFKv`e%I@uE z-a#+THl%4k7)e7a+hC)tP|29P(R2%lc2@A4C!IU$c?;qPqJP~bL}|sD!AyH)JMv!1 zI2cOnZRY8c#qS^)h|shnf74mPse5}dGX#ZDQbh9}o*FV6R~L66StM=R2kpfq158)r zTf{Z<h)qTJvWg(5_mIR{!FfG<G3oFn>BHNJNYT85pb<r8TvVLBm;{+lJv!WJ9PDZI zCU&svzHKl1Hgqpj!&|V49zCuu-`*0J)=SKt1ieCM%uot;1thj2W5i7JI$ex8Pzpc7 z&)MaE4WTk(Cc%bbr<))`STPm3>~?FQv83eSn;+9h1E~^2(VcY6#$GnJBA+We2bCQx zw#Wr&2e4yK-0$Mu<%qCz1AdsHKERJY+R;PfgAZ=G{-I~bTwo<Pz>Ybl?3k_&@X&If zP<G6dVP(k7g>c8*r^Dx=H{medXljN6F`egVKA4WgHrbzM`r`K?3;p`yUFZN!=g(rv zyiaXj@`SQvFj79Kx<6av;n14hR`PvR*Rh!ULRd^0TB`GPQf0~<WPcoUpA3sF^8|?j z>B^QlPZ3CMk?9^l;4!abCV?{eX2-k>lu^%QasW*wPbgbPMhTgYnbe3eBiWcR10eYC z2fKH9lqq8-L)kefi2Veq0A<X=8^t}RteO2_cZ0C*<dkus+MhCI%^b4@BZ<(xH5rD| zWFnV5p{$vMWRjROPbhQd3F1^u<pH$HPo=e}!Kt)jvY)EysA?igDXCUMOBRiTo%RD> zqcH6+ITG!c^z;5nl|h3}yFxl`HUZt=_iF-2Pt*h;{?N8ixl_X((HGcv@uQC#2&H`V z!KE80E&1wW1-lTXFb68PjB@g6&*fl0wWqU!Uv1dZ0f}bxYg?a&re0Od5PfSeR^NOq zW@@9Umw7vnjmAx7p3%22(li*T$DzQWZJ|^>^{15rwV-HKXT{|}MJq=#=%;u3t54)= zGFRP^P}j0hWq{d>Ne{FrmK8V@e1!@X?;BV|7&_Z^J+VvlRfSoyg4)-6U80n0-uoCk z+d>u<F7cz=X4a-N1$s9EVl&N+eO{&=Yb^=c{75wwGxC1P6C4C8wabYkYRMwYodT`9 z0C}6veGo9A74j)!-iJ@C@d5ZaGz309b3`>h1zL9s=8l{x-Y_w0e}opRY3qhw+OG&g zx?`BviehA2@@Edpkr1<O_vPXwD_T1ZASodB4)#HvT<_A}L4*_NU9oraXzyTeO$+Ru zk74g%6vY1HjhOv`l|41w87+FvEd3O#tsGCdH}De*qbZFC)mm#*Yt76UvB`-V(_EMF z1ZF3+B)H1nQA3KFT(nye!u=xNqMw=Ii<mq6n3qCE*R+t*YC>klaouwnO^2jX>cPnO z5NZ&;LEXcLz6PTQ5jA4yWJVCKGIPGb7y4RTseHde<EG%r_#q>0t}<~v5{}vx`RD)( zX4Ro<hk2v2cj{rOWaN4a!Xnb>MLm(;VwOBg(*~6KOY9X@3>mwo074scQKJekW~@{b zw=3|;O9d>OpF^@oKuPNeis5L0o@sN?Z`x?77ByLvn689at2&ha^Zv4TRLP!Xh?E)A zW=c+?#B?TjGD|H1BT83w_d8}DC4k*1YYGX;U3*Hdvtqf_(PR8}MTRM?8<h+k0L?HA zy0?1@hnj}px~zeAf}&ue$V=&GeBZm+Vn6sS9NiA6*&vjG=!<*tKivdN#j|TPT<o3w zuv9ow?qGaGM0~MeUKRM%Fjpotd>`>#2|VbeEjz6(8=P$dBmL&+P388RI0OyH8{uT5 z#|tq;gwltx;5;2JEaLr-;bPpcpvx|!k>m8|(ZdDs`K{&N9v&|zR*g7hZ!CHXOD3=y zYEAnkocS{z3mYa@SnlBgK$G2^p+&F8Va&|I(7!Rv^}Uv!^AKJbUXJjHE)&b-$rr*Q z<b*H&<#0QkGSmTb@I<9+;jt5s7M`g-`P`+SIZWkqkA7~}&-6>r_?z@|u6}OAGolyZ z5pTEYx5M?@4m=x;rKmXKBt^;5Fhl4=&~os%Fl;d<j^Hbk6niYNiXO$8)dD2$Y<Z4W zWKLLU2B6#?)DP8gjhm4z)RTp~1S-8il@}<3n#Y+&<8#dHP~4qd0Lydk_0*Y|8A%-U zjwrf6T$VX^=Y;2r=)EO8hYEwzV6^n3c`uSAp}<jmx9q{H>hW>?h5bH<5@G;73$zvo z8bB-NCGf@66@1a#hC{6=H$GARCMMx{KjzA-^WkT|&M0r)^}yqi=JX;ggUUjw3CX$; z@)GAUcSCW&4220BE^+E#CsA40zJ%708+QQ45+-8cKVqAJUT8GFfH;xE&!ZWlnp%C> z1dl=~*hHuWWn^or86WpcYxqXogN|`sRjq>Cd-S4wW@Xs7r%bU|nvamBDD;sm*`Q_h zYgFk!K?AAp(pXZSmLf!^7XjWkKY@1qRXM*Y!>L8(_S=027xlGi%ekY<{C`RN8u+M+ zbN$^ULV__Hlqzj)U21F-KOiBfM6_mMS5E9kQxS#h2ZWG7YDi+TLD~w0ZWcKAxIkO1 z-hZW~_jg<AtrpsfMJ+W6@+s8>zd#g&pNU9K(LzL!|MSepW^%|{@2}^V&6#=5%scPA zGxN^JnKQ5R=qgZA%{d!QSvO~VX0Qscj|Ze3a8fa0&-P-+=2|=p+nXQ64dROJz#X3= z;eWtMv16;@C_(GM`7v<eR4^6-8c7JnFg(@)3}1*oAAK)1o_1c|XK4GQdeP!z`|(MP z4DWY5cI-9j&Sg8ZV_njRibh|z^kEw|eZA6GEPZ{_XGx!jFXo+487Zd29T^vj9bPo1 zq~fLKd(S!L=iA)KS9|V6)_oTgdz$Y}C02$byLe2r#gF6<dz-ooc3RPeGvSYCg9eV* z5sfx9Qz(N@tqhtLSWcYv89NU7$pc*AZWH+FerhAxSXgg4O>^y`c;P*gd{GrBA`wAE z1jfFC1&D*#&;zmNe&_OjXFZ%!8`MJ^<l{I5XoI7RW?={wv^P$}Q=BB)Umqqp=YJ4* z+7F5-SjIKKKiHo5egqqfkM?h3SbPwhAuwKil;jp;bEM?XSvb?w4k!`PD*7uWnqLGT zOU^_rsUJ4d*{>mRV$W@X+XHt5?hMShV+#(O3dBqCsnc<8Jgk7A+pweNAa>O3ws2CM zPq^*pWy6+*&^B>f+W16a#2TR&l;D-rh5S((+XcrIWcO8%F;Ho}%@0C_@SW1RmW^Xk z7pbis1KEPUxrB7>&CI<}JJ{(s9`3LmD`tM|xFv2I%W%_r2cKgyJU+)H3a%I?jQtMc zCgS^AUIs(``ez_n)$kN`d~``V_#~55Pt!zSD76sBEK(yuE{P3XsuvhsBViY($f{&K zkqya=%;IU9>2(Y?`YQo7lgdla7CeC#>KOrnvM^4+IEdhdM(}T4Lse`|N8kUiM6tFg zE*)R<r|ExDdSdeo0&6<@E?UeNC4zA0sIWS|=12SW{a=yPXLRfE`mX7H(fnPMgda^O zLp|5`WPD9XLPztV<)`T;qcg@uN9Rk+S(oQmlMzt37{tJ><Lh)a9gX8K<IlaWR8Mty zeb@QYbj9-e=TO2xQd~N|j;HD9`<Fh41|LmQ&ov$QU6&J&>*A%$SNi(@mn)}^uldn; zEhk-HNA*V?;JVF4$4yU{yDm4K&jCc>nU{o)4zKCxdawC&)0yL<<Iazp5AAo;;TiY5 zbbj1-O;_{vEgAf@|51hL_&T2U>-xtt;dxyvZ^Cwha*A7<^5}T_uH~Tb8rSV(lt~0` z+eJt7<GyP-YreERG`SzU=;(Ac9i1=TF0@~_15Ib8i;j-3>FM&<xUSbXY69y1k0f+- zeBCZCP~kLRI)9qn8W$bShnBA{Z(VORUz(n#^Ms3z4yWm9el%U(?(fkA)cs)>9Ub3I zPs>H~_Z=6VcU*LIe0|sX(e*~lsl-L+cP=`bA1!Bn*Lp+OqiPqOmt1r-A6g#zuH~ZT zrRi&OPrK-7e)L_}J58@Zg`c1asQbx(K}XZm_faZ*z(wa-7ae!LG(WoDX*ub9YH}~Q z=;(BH{&jij^49fFr>E(B=%S;aYdTsk+OO%}tqG|6F&7=pkB+bD>ip?^UE`wjH5F0E z*YUJp-*tKG`Z!(D(R|+RqNC$!dODo0$C|Ip6dm1OE^*P(@%3Hvq3^mr-=*k$%ay-> z*9-gh<q`krF^vrsV=C(A&8w>&Q&!$kUQ<(9GrA&o?0Bw7@tOyyuHs(@92RP5sB7>y zR5nKH8mepO_-Wz3(qGk3H_v}j<E8XAM2HKdv7(_oQZW}sPlSaLe|2qrQ^a2n2Ij%Y zeM93_!~Fi*+0}?Tn=UX|ublHMEBqJL)DW($Z-mt%|3!18yL?uobXV1s&w-Oc8Y?Sj zOV_;W+RFLm2rc8zD_>xGYXy7yVQqD7MMGtIV`T!EMQ*ikPDAzV+B%g0b6HhgQ|bT4 zMUCHpyiB>yubflfIHsgFQaK0Nt%O`JAE(4RP_Ca7aDe;=33r7e*jPTVzJ~H;2L1JQ z)wPjEe`PtiuB!#B{)##j4fq>Y0{NClss(zLUj|2DvRFIYPoXr4$Bq8RI)7Dp11kZp zVYgj0`wqz0f5~P1@6V{1Titj!ow=YsyDHB!>?Tq65cq(iAMH_9qp^H`f4zu6evNoE zrF?!Og2D#L@nlFG(kn!z<o74Hgl?L6<CKu6vUa}T@cXYpMkTlUf7i8B#r4v)66sa< zW_cgKvQ^?Ui{-t(NZvil-}|)mk0}1};d`&W{JF8MyC*EJ`o-FJububviDj>xbwtyp z`e`<QSZY~p{@DD@A72rezcf5IfAHc`eBusTycSD5@xM9YnmlRJRsP&5Q>TRd;p*C^ z1$q8)qsNcFTt6S79Nr(?<nb=Z_I@>UX!<HJlnwlR^=z5C6U$fbAE|pW?m^|A&x}mW z%3hHY${HC@otWjnFD;mryY!4eR(^EIby>wJM}}qP2eNVlS^kMxBN1|9R{F#<Jy#<d z7rS_UjfxLX;wh7}M&6f-kV{D;ddBrxUD>I3r3@3X13Gqq{l!T9cHqbBBmTP~D?6H! z@^)4_*1h0;n;5Q76z!EMNPR_WD9ayDo0ye*-x<NI{G~&JS>vNa!&x2Pg~PJOgJbZC z93=QeN|%C0KJ$p{@k{V8kd?hOWztzg%2uYXNQ<9w-;n6g)Ssmeg9xu9UzE#C6+V~= z5AwA#CCs!zS*4AXmJSIp?bJV<DaB(Z3-Jg#>lB^m5_Ci!`swuNA$4-*>2xg634?`R zMQ2+=7APylPl&P*{7fQ0le4<Mn>rp6A6y#JCTVdBh~oNxtfWF7C1(wpxH9#-34z2@ zD3HLJDL<2U5j^QXvX|!h$Em>rq$XxV1D~dPbZ_a#$<)9r1Kt#aj;`BhE1av?ymb9$ z8(?_9lAEaGz`m*QwJQIj-U1u1@K!Z25%m!muT+m7tw=xrPr{G%Tk%$pm#CxCiSP<k ze%`LfPlV??2V9~a;(jxJUP!JOcV1=k=D7oR;`+)}jw;+qr(>c7M7@HOdYyRl6%rTq z7EUS{uOa7RR&aHtdh}>VBl4c=K?5A*O7$q_UC&a5wX}iYa^XFleq7=16n>&`>MHYk zKzN1<U18!6DO}4%Kl^Xta8rjl9)-K<|6bvKaqs`fEpD{nmfsHv*OTJ^(9`f%fv0<B zihKXRZNfQJ)USTj<Jqn7ViSaWkHRe%&exJ2l$Wj_`tbpUi&umi#QklB`wfiF_k}+_ zQQ!3AUWL2qA60n04yf)Y#C_;#`Are+ZK!9iD?Gia9=76v7j5ok4}^q|<_HGE`RUAH z_$c5wt?!gy(aKf#i<5*OlLWs!2|ghSJ~0VCISC$4g7akE!SZ!m5`1P7d`=Ra@2dx+ z-;@Mjm;`T0f;&m@pCrNmD+&IqBslxg!T5hP3I2y9_+OLY+mhhBli+)j;QNx`T}kln zB>3SZ_>m;|r@+sKreAxbtoUM_0B35-;Bq@F34U%8{A)?@9N<j1eu_+2j3?+66T#6H zo+)*+>S`ueMx<lPUDfrTo62iznided33IL5N--U%ZfqzYJx)Cn!EUW<xT~_klbCOL zI8m#QG|UhV%qC}eN-?*rtOW(o(ryvAy0&`s75QVY^o$Nqf(701q_O;0$baL6SNLf` z7tduV*w%%+NIaEcE*EZrj}>@fK9NE}uuxKv#05T9;v$hkL80&pPh&-S&8%9_j2Sg` zb7mm3)sae1LuJK$4>!<MHPz1WAOo{G&72*PlTA;3C8yq=$_3RCPgO%@rJ7rM8tX9; zk5qXuwQlq@MrPMF;dxa}Q{!AloC6WeXsnEUZ(hA;Ugf-s`tK91h}3wRYB7<#iy$6* zYU*m|Fic}*O=U&IQ!%R{;;C$?0*93g>NSV+?rMxwBG5ez<hP=xu8~~V(v&c46xUQT zLkl=9^wibEgUR)5nIROJN0}KF!2HUFSu=#|o^oUdOk$Ep8j-ph1QZisQE^y*d7(N9 z+o^bEDK74a=H<qB8aUTvbofpK=lnwB6V*_YkGU43@wkDHG4Nj*xEVf04arCcXP_tO z$WJ&VpJw=>Y6!&e`9}B&2F|rb%}>~c>k;7kbOgdhI%DzE;omcGlm1ZE)iONkbNaz+ zqzl*c$jc185aBfapBuQD?kfgvrhA?mBD(W?oq>-t=ucNTZ^{Xm$8)C<o|9h9&s+oN zP*>x38~Bw5zS_V!#@FG0qj28%)8mET8R5-zHyXH^ZigCAYdXt8i`V%|;FJRwA#}Pq z27Z-+Ut-`~W7gsG4V?3BjsMudxmcm`bp~$Ad56NuE_u@PmN9A}n3!3<<pyrbEpFi7 zHqzavaMEX;Eyj;mp9`0$$8*x4!$lX(e@2!JL4M3~ywJeS`Z>nHiw!!f4cyGv!v=2B z|Gj|+3_4Y6(4pn#S9<Dh7p~`xSEvPg@^9*an+$xSLH}g~=bE*a!vkl-gNt-be7S0{ z#5u>+;s4vfzh>Z18u-@@yxqVrFz~C%G%h#&+YH>KUvJ<h{T~>(N&h{yFt6pQ=dnjz zxSq#8%uFhNsK=Do^G6r1<*><xvk&04&xLEfno6c|F~5`W({w8R@Zi$zx<i%w5Bvfa z;fvtZ;g=e?*{<UTKEVk869d26z+WB(4=(a!*4y3R5U{|5aO!kxFYL!nJ$yq>KW@_5 zW#DG`(H9LKenk@e{Umtcn}gF?Z{U6e(ft3}z*%K9{>Zob=};sZe?}>4%Et^}b#Z@q zib{w7tAU&04;VN_sKbxHWN<oD3_N6nuP|_vexrd?<eL6M1E&ZzzS6)c5{<7m@aqix zAp<wlU1#9txJWF5B0l9t(Q5h^TnY~^UC;YeJ-<%j3}1ww4!_J5KA!<_-Jc}<dILAx z#p4EUwu`3>+-w&Gm&tUPoSCoj20j|k5_~G0`QlJc4U;@?8R5--=MF~3Mfwx*({%Vw zi`SX>sjLb=UUrB}<Ey0C^GXsrJ`OH%F?<?+#rW~M(1lCX<0(`)(=_|339j(PD#8*Y zJe!E-|Mv!N>gRR?&ojc0pi;o4>%%lvAHJ+`@?(yRE;Mj+TvTA-W_israI-!yH*hvh z&Hs-Le6oQ*YT&H$I{bC)Byf>W3qOs|Fz^xsZ!+-f4ScnMf5*W8sBp?B6F;^+UTrRX zoP<5Q4LW8!deOkmcCp{U&34gc;AXoRP34Y@`8DN+>8ZGgn{vC?z)ijJCj&RjtKGoE zprz$`CI?}-NZ)KnR~dLIp6T#a27ZHqFE#KR4Sc78o8@vy;gmmrW%%(rX5cIreWj>^ zAfKlEvkcsn|CbEhl>b)@+?4+m12^UHjDeF!Er%WhH^<c<E8MLgQq>zjonQSvDP7^r zm)RcAHgK~&jxy*_K5QGjzG;Lv>Es)@NoTHsoBaPk;hN88r8gEE;px<JunpX#|8s?F zIS3~4?=MF9uNZXZF)}W9Jse7<sc=*8oonFcxb#8;H^;Z-27W&1Y5p(ZU=bJ7y%ax< zUu@uJx@87#raRxj&2*nMa5LSf*hp|O-J9^!>8|`PQHit3YW#5nrwSo0UTrR1x0&rO zT#ujMcHtu=8PC;Z0vGw2f}c+JdWEw-kaiV*yuN3IzZrfVezSp3HSnDVPNxq44~1*` z4S2@uQzN|D-c!jOF7j!%_hANZws)U_o9+Ee25$0G=ED2b`qfGouKE8xGl`4*jKxpm zFB-U6UT?T?U0(0Fa9v(QZXtC^pLBG2O)_v(U;Wa+$+G6BP2pP3x*Xp$!kgtd`BtVX z(<N(~&J+VT<rY=Arr#i9<AXvYyjhO-8@O4H4;i>wj=wT+vm75baFd_+UAQhszv7GK z#h<>$DTl^aDZkdQ8rSOv_qoEaRm66?aJ`<;?Z$^lV4Tvgntm$<h>IUB@zS`SM?d1i z^}PFI7p~tQ1QlPJj$YsQjBfn?yh!;h+_8u&?sK&ZySK_mM=BRYJfmlqN6I~;XEio@ zMmN;a!{7y@v6gOnv0$#e6^)VpXYg=kp4-?eYeB5G4x6ne-!SzutT<QPg*Z&7a_)>O zZZDJB{kQ-7L4l%B;!V&iR<2>w5|D6Y5A=#P8gpE)AJ2?P*ILy8&w`ifq^khBy?#^S zsS4M(nJV34c8JF1H{5hyiXUmZ<FBpYQ;$d2OX>4?{Mw=J)Dh&1y2!kA{F_vL(9bmg zjKixKzro@kQ3bS&fs9MX(|2}jbf0a6p|e>joO&0o)7SUg@qDoOy()gQE50s2egB?{ zpYIA+KSu%_E1Q?*Ti+Y;P`k}=wu*0Jbi2bYSC~u8o>eOT0@nkbZ%sD}$6)nOZ`|j5 zc3!N1tV%k*u77;&N&*PNQ82i2RfH_KImLCy=j#A>-2>#wR|@@77jbv~hbM`j{-31c z@%%*I693)t)k~)tqwB`_c@<n<SXfYa<>h0q^!qO_C@AFr`~u+l`B#h^=l2(0ae2X5 z5pw3R#i8(ZDc*jHUeC8rD<3AjR`Ei2G5_Izw#SF>T9?rj0lpf=m$47fS+HlFH*&VN z4Fi)2u>ZZz+jP_!3WJkVt%^Oc3Sh<Wdu1JHgkgt@(xly$77_)$;a1`5p~A|+lD1wT zJSz*I(@PAeC@)(}5T`E>p*@9gQESt)A8o;bMKXRkzA_*B#ESkMXLEgaDpIG;5=g@5 zFoQo|Z0Dlw<gW+(EfXBXR|_^v<7u#4(~NY%-!Q9yW@}(oy`Ailf%kQCO%Hywg<sP4 ze|s9Zr344vO%2?PFH)yYDcEmCKggyed@J5Y<f>Hxe0shXE(pc9{0%q)_;j8C&T0?g z!+J_7<UEw~KjJPw_-6_w6<Y$)L*4+GEs0;+Qc}?#pz)W~mX^m5GHBz>mp!n<0E=$X zgCnDFjtqF84R~SBy!Db80|a1r7oQ%7?5*<f6K}w~6^5*Fh{dCP+_aXqVz!2C#el6C z0B;-c_-ULHuZ#{XIeE&5e9)p2Ohyh_bYpajm-ZzCMd#=ER(>7ftmre@`h)l_t3o(5 z;1M!_kKfng&Nj$|eX%Trg$02<q;oC^?h<D`lvKzg5T5S9W0X2RY$t0no85?vs(_E% zVX8-3sT|VtL(&<o>qB5_L2C(4)wp@8W&d*utO(<1hw-R#i1i<cl#QdPb6>#yaz#ok zk%3qTYTC<4?`-w0FoL0y<-)>Lb~u$LrVb*|TlhVLfLjqTm?~-oqgvPWLLD^iMyPGb z5p2awN2uYj*~oOK;V|qm+k7nt(CBo+I5!vpVMO6hm{b@Z$;nOBXBd>pzVt$byE!Kp zk8bBj|I=TBYc@aYA6}C~UfSWhS$+O5f-+}#1fvXJQuz|Wvqkhfam@9tt*|LUD_Qup z^K7qNoJ*XGqqwJ@0EaKa5*Dosyhn33;hg*u*zE(<QL^L&6>XL8mN$K|S)xFub0OCg za27%ZJeI?gikRa~c!sk)momrJ_BQ$g!gfpaJrK%$4nIhSXKh0kUB0DXf-J1~&41&= zeTRnPOb0r6(s{H!9p|niJJ<IyXS?&20K4v?8Lyrg>cs63?(K(=mu_Fn17HSHd>_wX zkn45|>RcXiA1>O~w7U4{RwyahQI?EuB6q$RTUPPW?J2(4U!*I|7kdsayRBePTTkk` zG#t7f$#BlK&wCQN^Q=pWWcvP`d2W@Rc^<e+fwCLwdpzyj<!R@EK~;^0ZxlIS@(in* zto&QhAcJuW{7yS84i*TG+683;@69hFQzpwZXgllW9v*lh^V~BWPT%7#LcUgfA;hxH zOP-g9Je!U&7cD`C_%rgl9hR%Mr9`_^s_a`oLzpxi^Mhv&AEn_@TC_XOzV$>8k2~X; zhOk2T<nR7hTo+FfC%^ZqliyQt^1E;S18l9{BQY?4J-+?F55A!D0M$~^`6Xo+be2&k zDE(;YCD_ngru34tdYMv7&`D58L2vsdKNWfiY6-^-KovnXu_}4J?Y4MA{RQPk&9#RL zqUqN`TO<^;WwN$lVgUcAv2VrGZh~cp)V$tk>quMl9JfJ1oBH|IgoX~-yP+gbPI<}? zKA<KZ#0`f_ULB6t<kTO^lJymK|6pMxGE&$@ge_TNR^dINi16kA;;v|)KXNvX0byjV z^#U`t@IcS{Q;~N|X=BpMRw2&~;AsI_JVWGa<Ai_^Oo-i{Q_q7k^KmeQZ^d*rkBX^? zgkxjE&b<86cw{R~#IA3TF7(6LYT7m&3CiFjeJvwWNW3Md84U1D`&<O;fH~x?p3?ZZ zmq8_s@gNu(0S6F(=+!}cc8<T)K2d5P3*)4ye9$UZhoZn)#?vcg{&AMSW$z2)R0}Kb zRT>1a_e$HzH8^nuCl<`KM!_f&EZrUyCRINS^Bj&K;5f;^l}%T%g)?DJO;zTSTaJ-e zmA{z~uV7d5ef2Af<qk-qG@kRKZ{_z<bAvc}+D~!hl4iXqvj1B-L2$m7pCMr*?yxG_ zdi_`B+vJnQ6a5su*6rf>g)=}$n8|jPC5s0KU*w~Gq6kGT>3IWZr1bYsG9%ktktdjj z5pA+r5JTSTrRmb!fKmuy98EV;7T)<=83uJy@#|~30)dj$$=7<mjE5L%y)Fo&PWZ$2 zp;CMMA>`Nc!c6jZRiEWC6hYgl&*6#?suQF5)^7>hAC;grF{)3GhyF!;mJ!bVAOW0c zI+CT8+w-3gfwRyb#epP6JSssp9~f`3><~<MbYbD-Y4R%YeoHVM_edH393h;k9w*dq z2P8Cz9S{=xX;Na%Oad()r^NIh5z{x6%_dG8aL$csumMcdZVt@#-UtJV8)^Iv)~9hU z28~^z5#fBYXQ5!yqHm>&CK#h}DyyO$*sy@T-(Dk30ok$fFfU?xdueh5C$Z2IU*N|m zGQZz+j<i@qYdWy_VN07ZI73E+4PNO7L>nLW4z}J0NgvVC2%lkly3rExggLf&Af>Hq zs4&hm;Bg@OsTZvsbaFv+(L&3KQUd5<zEg~Ulg5XgNhAMCnZUpd%W1qbX#s9H;siEU zSZ;9O(2yV--lUmyz+la!X>?@6AzF93GbwDR<!piyl0~JB)hP8QiqH8@T0C&-np5n! zmVJ^7fjh$XiIa-6XO<k7_$$DJ&UeD0*v_VmXkV^x<<|a?@nE{Q0QOp_NFPL#pb;2p zLRBPynq*J%`&u4G4Aw7uyMWo8EE~pQTBcvfM5Sf9?ZT2g^NkZzx^P&>c&3BXc;JMU zI%)CdZ<yG??4ko5H#7U#t3{oQZpFykeijzS<B`21c~1CK9Lk2J9UvNV-R{yOpTRhl zWJ8=i<*Z>^RPV7|=mrk4N{c>j+Njy87>|4{sMj&TkcDEy;XB|&hdHC39#N)#JQQJZ zQd5kUT<sW5MfzH}nOw_v(gK|FkKZMzSE#4xbpr*@1oEB<L_fex;zY(hV{vj`NyY2e zJ6Hcx2&C<;VHOV_{*+THZH4C5>+DN^&Bu~AN0_HqZc&cWA5yorAcW=oFkd`ze&|m$ zbY~4Y8(^AiQ!@j{PDO?})2!%Q*^#N3Dd9*O+dL~rj2B_qiB0cNrWCNRWeXH=zv3Gp z<kxzBBeb*P;m}gS%AwyV@i|tQM||FZR~0a--qx2+b8B9V@uGbrWu;(=ZjZf)a>^Gj zR*7=qdJQhl)?|%|LB`u-Zzr(sgzJNZt2g2LIN|C`xK1QoTs4-I(-N-qgex=Q%1*dO zBwQmCuJaQvf5MfMaOEakmnK~K%5_hM^`O%t+Jve$(e9B2N1vX$-9E>Taxl0(%3<Gm z!nF?nx%{y`x)%Q_FMG$a5A7YOT5ZQO^V+N1Zy$Z?RP~-xOy9h1)jMx^2t&M1@%*CS z;S)e_o4w;A^iDW^u8`wF4p1>~pV_p@`Dr$5?x2<p?T%x6GdhsQv5t!n$!kYB0@ba; zd9azj*#5|f<_Q?!pZ5*YX(q@Et(<nplykXqK83_I1=NNpjDKb9^~Ij}nm}m~Of_w2 zUFza8ASLn1*>EnW%2&$7k)~gT71-PGa7{D9aRmdG4>!+*yMUHMuMvs+*2`|e#`KM5 z^oDQlMgZB6IO@9)bGHQDY3M|Y^O0IB!mz7xHj^|)pcbvyABSIbNqHEK^<8U?>VWov zji+!t=K%BwMpWZqn-(S<=`Q+M4jE&8px}$H9|67PJWBN<XRFHev%RJsIfLo>UOXw` zm=1%6cS`J!*$;!=jeayljDK;i5`2&5!WTI8vsK7j$QgoM3Iul%F2p5|Q>ZF9PDz@> z%3j0lA_JmbV^W`uk%rBwA?DqjQeWDN!SR{#1?W#X4;ldrv=_sqXCG!=u)>v{`5CR1 zSxeeDCB<A1Gg;0AX_-r!a^*}B?tNTP2=y(Wc*^d`+Z!kvviPS|w&9{jnJ+$sL3-cP zM)GFA&~qV2Te398jMX}0Eph~j+t1su#=I@9?ZdAZJYW5Mr9HI9+X+^d9KRdAT~n88 zEq{GW1m71uh!gI6QmkWerTSW~LH!a33EzAH)XksRf}Ed{a^MN}m4QtM@!#&Xk1cr< zj^=2WR~`o~4?ab8Kkhum#&(f7);h{l+&kYd=&+C2qUG6r>Nx8zZ^rRsdpqA(;dpX8 zLWve@#iOJUWIr~Zvr+qHWh>-OuRPlsrk7sDz$6WZm)>ML1xE^3@zC->y#AD(9f*I| zThuwf(J8};xq{0;v@Hb&SYLq!2bnyrxxAw7EWymu2A;?qEZPa8v}*-ApUp3H>N90@ zVW&w)%s9S87|=k_OymqH^I&qsIBA!qqmJWHF;;N<`M?uG!Z7wlA>f4Z{WvLC%)0}5 zJHz%1rSXT(?qJP|ZqLONv7lpl0k1xLH{eh~YXJ<3OZx!0qmdyQEH#J|%g^E2yJ=?w zhdo7YvuXcH9BodUO*rEGIPf|ibKZePll{ARz&Q@%%{+$=#9f?rHmWC%I`6x3{{IG+ ze9{HtR(ur)D#7?tdC>WM6nHSc;sR7OOl)!TZaeBm&{;0eId2wW?Oh>zS6~UFH%H&Z z`Ma>;ii4GDN&rXSzZ%Nu2s*38Ip?CF3RlT<&bxyJ?IFykQGINgsJ$m}Y_E>p#X=1h zHuGfjKt^Yvvj@D9N~mB5IO38(&~6rd#FujIPV)B+$=`j<1ged*if4?=A`IC(z$JML zW*}vF1czjx^L?a@ha$~__QF;2sB^)b@uaZ172Mc@4NzCCW^{rxCIcQNb6=Ir2`1u8 z&rdKHgG7Q(Gmjh>(J7#i-3CS^R}dsTU4#QTot9kf!$Zl{uEJG3<{ZL*5b<r1VvvFt zks<g{#*SmJ20FWCdnjBbk2-HhS$+lN?N#!m^Hq%PG^9Bx0s9~9k(v|9?*Jmw?Kach zQTQX#u3(+mPKnHQCc=7*h-NVUTmT+&{C6|vbA^ADr=0ht*bQls%bbQxnV{W^R;bE? z&9GHAr_Szz-ohUVBV`lQwTj~LxSY73!Gp{>2I3cZLOVV46>29g<2gU&!@yHQJ3YaJ zc4;ZOH=&+XQd&Qu_=8TAN0ckgvljW$8j6&#zN4a`ZXmRwr2Yp%sic@JloW};;+~To zju)rFQi@PDN<kg54<MVJ?`zXC)Dz<P>G<73Lrw7(?eayJfFRUdx-t_J-I8Lz3T=m$ zq3i{Kg^VMtgz>v!O+Zx9&iB!F3Rj84k&B*1(&=_tS|bc86ytpEmt{7CcDv5Qo5;g9 zgvvbjs;Mn`L^6m{XN8gBO+wOAb6IWgr3CVJP+^7o4I&0$4H4Z=IR4O8tnRQ{d_S0n zT9b+^9KY`>R(Z?&X}{JgKtC<@7ECu$VP&2}<&`!Z@E2EGU?h$47N-rT$_f^}(y+na zmG@k*2v#1`R{2`qMw!QNIR%@SzNJrMXy+`z{Ktklo<7;gg<cYEUztLBHJH%`d8O;d z!h-4SDcBXX+fa|~Y={rXW(!TGPRCwOakIz3`=j)NPvVPC+E!ZphR<Mf!MC&%a&Q(v z`lwmO*{aL<L^jQgUG^uc^J1IUr*RjcL9+;CiW)6k-V6*y0#Y*hj8~9gcISso@>AQ& zjNfnqNzR|;SR+Ijq}*&jFT19U<8U1$5`B+Jy|Lsy(KjA1T*YI*odqN9vTXaf3=ElM ze1a;`qh-M3zYBK7Z#Zt3;h^s_9P~XAY9eTF6RlR&>R$L+t-BM|8f})+L-zpvaHsPF zur8KIo9)kZ9Q(7=qEMRAPg3lOX_1Sa>ocW*>>Ut3$Jj8okb$Bj^Uw-VLE=2`gjSHl z5y#;H-P@xx@t;?+0l1WilqOr#u0(q-=qQZxyl*>7N>DRB-!sno#=uRF`+Ay$=^<s` zT@E%KG1!D@U@^><Bi^;_%pI{3g31N!${3Xf<1=}bDMtihXKrq3>~Q2O0jCKg&rsUL zc-j!WYQ*};ry0JLKZ633$9%?4HDN8|4CYFn)QS2n7VU6cYZ(Z6n&FLaq_cl9Rt~Fi zo-0sZLHpPBBEaO4miL#-1%>?>mUmzR=UZ`t{`fs<CH89=H!lFArCk5qyn|VYuOShv zB5`zr0XMVAVYRb{IXo0n@4L=LzDNzY2jMa9Nyn`O3q4{X_k6C7zJ&LGx1<Rm_I7D} z#GXZqFaZ#$*zGXcRO(!p9nO2x%G(yUyX5-p?O30+1x0HVSUNwa)cyoZv|+mw$E-31 zl?f{zlNr2UuxbBYtnUO)-J%w2WB&muATd99{_7gJyOC$iA4G0-kxbagsf96P@kOb{ zOK1RI722<7iV$M)0Mm~B5J(viCm)611xMKVbvC)GI8b80S^~?qYW*Dsmr9F1;B;XM zM(y{CwBw9WYIkF0pYI;|@CHn%rek<E=Gn-N^m}5Mc;OYHZ~9IS`8~vn@tRD&H7rhF zloz&l6|}DMJ)SufQ#`x@&fJAJydLyLMX>jqjTr}H5BDy9y(HRNR_g66EqdmjA6wox z!bKvpzGdY?FseFZzLqB@e^yjX)L<TK%1~4eXJadP?YZU%`U$5rQ!H+VD_#!RpJ4O~ z)3;b%4B#CJ3S$+*VQnw<RA5vm2HIZhze+21mK^(}q@n|IEWyf?{c6bG62LsK?fA7p zdoSjE_N#%sR*b@Y>szrdX1CFHZ{9wu?GwxhJFO?@RLKiAeoO3~cw17!CvC^k19gP+ zc7*dfIC(5#71~i+0ee7s9p2vHsE)jCc3)mE`U3k{Ti*rtMhgWqs)JIh=%u~j|FVu@ zcK96L4TSS{ksDMzt71DUT1g(N*Dh96E3eZk+Odh1#q!;VCDhmgW>C$Wy~0Aen0Tk+ zJ!w-Il{3D%73m<lSd=Vi4cf7}VnQ09hMTB%DvWd+hxrB_8PpL$aV|22iA-VczX~+T z1RC;#tY65peSb3(BI{!69L9OvnAY>DWG}kFe<}id$!my}!~<Ro9fCzMiUCZGWI&vB zjU-CqcrSvbLpXgaK7=+dsc1#C@d$xeym(TNCxLh|4t(C&j7-?EX#kK4W1vwnVBoKQ z$=+kY!tqDR+eGJl%r8aku(!*aAY|uT-RgV1)yfko<5*|1;oMI)f(YZYM5Zxw5?SmN zdCU968nuI!LT33;2Hzi)<ZVlwfqew?dGicxLjZ7+6<^D4F&+_u#6;Q)2FSLvhWy5- zcq3RW-^gqQya$3sqOSN>ei>~8Izr_6{&5JtJ$63+vmhXfxd{D4HrxfRST8>Dk@Y(i zpv=!^N{04-*HGGlC#bWz{(#wCx-+>iY(E<>yB2E;C74&VdfSc<30Lg-ueSHU63@(z z9=tZM({9f@g39>9TX>mxea1sCQL~OZ5-QpfAD6xO$@n5K=Yu;7_TZhBs6}=xpP3P< zLj^H)I~E3X=<7m1M}^1hh?}eez7@}aDXu95@Sda3-itQU)(s9)$wAvD(apTj1talx zTYS>BzLG6%eM8VZWA|+(H<3pIoBbew^P<->owH;=;N4b|w>42N@4L<>M`19qd_h!( z6rfm&0Yn#Z>9q&soEXLIY^0d6xrFZ>UtoV66_w1>^le)Nh(5~vdVMjjdpL2%!Gs`I zi-l9?e#S+qv3O#8d@Wyxx5tZrd~fV*WT~UVu~Gy!sT|N#YH#IRS-X=JFYh0+QJJ;w zOzP=>nLm*oG`vK;iz8Q-SJXRI=X$<Pl`DI~b|{(qHz0ZLDMCna7$f80CLABvaR_sI z?l+L>`dVH`2F0>**mlYG^`167i#|$Gcx5$Z3HHn8CcM4sc>`f^PWW1+pc6z&rS@}Q zwEQ+Qs>&M(u~&d0d#vk;as(j^8$^(bbCI)lBauU2NPc1^UeUKI&cW1ABtcCaKmP?N zC3<@vVK&sO6ZF7Lknb-3l}=zWLtQbr8pwcmyjqeRtEI?_^CaW)#mpBV`^8vZf;NLe z6w~f`2bM9BM-CjUBJqCAw{)&(4SH0$4v&J)ulYs<y|`E=!d)&3Ip4{4$}HNTEGvfL zWI8MuRS@Ltmyd*DqtU`!p6I)2T*1Z6>ejapjmH?E82dG{EkFJh=VBZ&{aIi$x%;P# zjty9c<Vc~oFToP$_6S|Z?Jcjv!NCaPbzlz;mZEa8a>@Nhw_}?Nhb+0T9P!O~4r{{L z!IEud;~@gviJeEoEpGOKXF5VovqloZzv<6b1+iNul1b|L;o+UH@)>yj?*4+Ea84`6 z_MNlXDwr-uKr=Wt+UI+qEs(LBZ+JLCka2If^2rDJMHac7It`3WLsosm%lwjo;l;T< zDQtVPe^dg7Fr#n6I3@SKz&eYsB?Dt`6~uCymm_(#0$~+Rnzk6LsZTYNCtnM{ywr~> zCZ%Cn#Me@Vp_g+G^v;T9{ZB)77ZlP=lqO1JkKGQ74=}-rSF>xn(Vc=sHfknD-*Amb zpn}#Xm;ySL*dFvMz7^a`38NRNyQ~;cs>tTofML|0)@)(Wfp@u9{NABudjA-n2c|(( z?U5TGj8-dt9Xj|UkixSiMcX0h9ljrN6G1_1m2U+02(p;du&3<YU<xY)%4>RC)kNR4 z;P_tL@^G`R;h3`N6<B&Gv%CkaqEDKB4tB^sUcY1PjuAx|9!UHCGTdo;v1G|Jj8w8@ z8*kmY`x25zav~J^OGa`qjemd96s+*}cv(C}8~Jj=xAYEpxW|&~_TUekrHi5!ob_>+ zS8#lv;_UT)&U~?x&<{O~9kTKMpcord<O>ef#L<GHlhVCb>Wy=)=+n(YkoI@7eX&<D z0mN(cW(e7`pY1sgGhn)Wov5e?6DF1U?mG-ss_T&bYrYl)>n!r?-x3cV1Okr5oQ>NX zF@}nd_({;IPq*6MObf^F%`OX6Ki7@=hAMsW%fbToKWW#u^CVstd@?DXdDLE$EtuE> zfK6d@pAhbysMpz|MW8J4W?^{zL5Uw{m@eU#?`cr?`-t@l?7PCf3htg~kzLe6*2JBt zA;*2up9^Hn{W6JcLDIJ@1~jnbGji!$@evA8=SW3tzo!a?aX-@pFYRI&f<$97LCGX) zT8xPz9U+W+3PD6HT`M9T_lyD&@k|lW5vM^P$QL4z^bXKKgDGQ?XZq!PkWYOr`wt3n z@5NIXQUU2n(-<Pnk0>1giOiG;oKxodR;Hp(z$qkn=r{fQSrW~CO)kVPM(%8*&T`rM z<$ebH4NT<YWnMe>2#9N=9GFW;-CM$DA+$Nn70(X>Wn(1|&}i9HEH()^zEg}hPmYD9 zk@rP9n;>9}Z?=>P0ay>BtG9}TLbwO!TQ-v)`NWtg^xTZzL~0o;om${F3+#qqSI7~Y zDPX$@##O!7$46lIgJ9|U__*AXC0j*9{N+oD>dTgQWbw|PS1{<uymy+#m&q$o9tHcc zBNn@ioBHfGz_ci#V{a%%R4*l7-HEqNsA$b=k&S{@d!L0@D{Dr8YwWUm;a$sqZ2LNq z!B%h4mW6l`Hk4{|h1f+W@*j>r{U9{u_Si_ofdgs}E4Bw9L+sAzE2YJ=17HiY5Dx<Q zT9%@X2L6I_gpR>59xNU!t=Jv5KP+iGn2Ko^OtZ{H@d#E!MIU33La%SdJj6pSapL4H zZ1+Vntrz@MDd;PkK8BdY$W3xlvSfR&U>Z8Q!c!zb-+eVmQ>%mch^+_!i!fIFDY55z zdz8D#c}XD+`UY5~(&NKwq8!NfkI(-25gO;UVq_rSi8>ppM=WRZOl$kH<&w5%`*rDb zSvC|pUyQ~V`N_kGW@;9hGG4;AoRTerS#ru2*qxZ0+dB$6@^)}cy~nrQhA^Ui8TVX8 zDUW+ykc=ITT%s7XDn_g!HX$3^FggFXmF1c3ayJ&AvG4e>H9idsTKBg?!a|Q)srQp< zEVkOQ8i4kizu<p-T1o(Bv$0AXV@#~~Uc|e-W|MfBT5z<=R~x4XOS*o0&0}x@*(~pM zqNl6!&BFVu+RdZ~eWR4fEWF>UX#+tlP}g;%%9B8q@3Ut=^1TaqIyNnT_Cb{|Z(>)K zufFZ?K*2T9yotTRqHWN9X9#|_9(w9&vLqzfzjX_32f0E07c4*_y~_6SI%+A#D0r=w zi@tRD{rO-C_ci0?ee+t}1tD6AM4%nMmhot>AftoCibXDNRXNMuB7!4;h>K{caK{-4 zX<kFdK;{j&_b$rA6Op3O8|WR7q1@xq))b7yo(&fDLghl&Pk-ayw+T?uV_5cl&!0K; zZR^Unp5SrKAefB`<F~M6;A~!wJeHu5d9kLDs%wB6_}G)MTT1Lau%5bXnz&FKMv8q0 zf@y3{3fNmCC8!1Ypu-8D+P37ZNe6)KLwu(nzs)a#V}C=_*Ai)nq%CJdGZ>POEB0Cy zu?>iaeGHMibimktsVcC;%UQ+1YC$I0tF^Fwx{`DRooLr*qxNF;l_X^wx14FytRk^; z<GauM23j2paJvWs(w;-FK%(e(hp)+%rGzS?*rVmjMHBG2LrjlZq6~8=4G?<fi%|=6 zKgEPTSk#Sjz|cGQd6WfuvT4|(p4;BE7ct~`7Q^PA85pJDdx^lNw?Mz=t7x*Jg8hLf z`0}OakFZ>7{{u@?JxlP_0-^~f3ikIbVnM34juQKscro5GA1I06oZ~I6cw20rgC(x6 z-oy?&tOzmd(O>h1u4;|&+HaJ2U+XVKB^j(?77ICv0<kdpZdv;}BFFD9M*Zz?7H9;q zWq5EjHXS$yy+2?mDP8tKo0^d!RWhP}JQKMMJD^xUFj1s}u(xB>C`vqB)Yo){)~Zh? zDkp~1qPlw9tqRo1H9{4(VS5WIX;G^0{w==8_a}CI_Scw@E@LcP$USYM;v}gxDu}Fk zM)wLLQuWr0$}c3oVL9@IO>3uCJ;>5p{u=VKy&Z**(m0^E3(9_}WP2NNC&r#8WWN>6 z>ne@kyfqz@ixMZ~S@bQm74~If6ZXEN?cPX+<$T+E;XSLM&+0sm-5R1#diOha@GLCQ zY{km)OHJ)P*9!5;*`~I!h%Qp@^t*R2`4Jld!JemQ2>ty_V%OVg|0EvyCbH1ejfaD& zJ5i~7p2vHS!Ja;aJe}$}f8VK7Pod(T>Ny)ORdCKZ&ZPc5t=!gl^;RY)CCknm+ZSU2 zm_r+kFghaNvPY3SyM24w{fx(}ryR(W&2V{l<n1c@Br-i-&+(IJKS-BTCVXRo_k3u0 zSnKALZ+P0Xk+E?r#i}?OJr0d{F))dL6!}WDH5I1ns4-E#jIEzR2g=TWJO(CPUuCZ3 zFwPOe4hXRbPOLLHfa2Cgy{oVjpILATPd*7wNWJ%9&yNI&&4NL^0T4pynFp|cycxLF zdU9y>sv-Q7yLhKg!O(~sZ7WvtC6)!tt5^+Pzs>Su(RqjXL|}(llWIGT1@3mMy1ky$ zR1C5>F^ui89T_c{gYKpr-wWau7OZ`~Ms0$7H+774##;PGx4j371s&$)@Oh$dV#m+> znEa_dC&ym3p{!&NjXgkl;hb(P@Y~PXf6J@Mc@19{?8R_nBR8>x<L93jj;}ti0|kXo z<Idwg73`LN4Y5VX*7jivw!1Kmfc*+0e!z%p;SJ*TQ9SdUaJ=OlzCE_u-c7OMtIxTQ z?j>9J+TF4vIarIkJqI8CaQ!QG*w^wP#1cJ;iTW-$@TNWJ`0WD$`*m3R1<hu$j{sWp z)MEMm{MZ2+Cl{M@3O9&t3!Sj_{BF>hnQrF??RP`=JN;3(_27^W%$*9IhYAkh<A=Se zR(u-w0Qr^%M5@}rGer6ff_Vf7GQoaoH1m7_2?;aLf`eee-wQWzI|EWxR;iI-(3v~J zuE$K^-OfWIw#bNnn_9S`7!e8%1non1J>Dn(eF<ilrxqh%Fyk%x{af>~1D%Hge|a5@ zNahO;6mAG2mNRXnU7w9z2s%nXQ45a)888lh7+D($#_akLLFX=ra{|%`*?(8o=LJK; z4t59|tPX_Y_vV~}4RD!GkZaqKoM#IEBsYZ6MEO7MLMz?~NiAa$JB`{vdC)!@5__gV zm>CFVd`Rik<UAA5d#-}mboD2SovA1b<%jJ?3~w7@pB&t2W6ykk5^O3Nf=8IjK6Zd+ z;uCWIlh`)Wn2yMq1^Y4i#`=cXCG{0l%;TIi;Eute-Y0b&-;mXDpVZY~9@I9ui2GHv z8pK(g_GL`fuu<y7mGghM<lda_F67mU|AM=pLh*<DcS?og>n}iNIbiTDWk(xy9+x|% zej|5EeFRJ7y5?f$ugq7geJT4<b%W0D#ZIZW_~yIt7jmZ*YVcbyl#NodMVhD^%49f} z4`7`;6#w(rknFMjv?Z@%a@!Q5Nt5Lde;tqQUyv2B%>;Z)c|bSVWAjthN~}nHtj(8` zJz-rQTpimFzT^%kl>kT={z7h&B3}s$=H%t8A~B{yMms+MlgIXJzPN#^pRe;pP@w|i zzhDBsr7fZ!J<iQaUyLvAXG&yT@WpLXke4ke3SkKiA%umzBmx)yLT-_I3x)U<!HL`= z^$U_jU6!o_^%!OL9@sLp4fV`PS^H28+0a#+IN`MmBlCh-qE&)~+Jgaa(XIp+jQP)j zG36$y6Dg?sk+InIj(RVWgNjgPAgcTcR(Yk|pwkL<m5&_`;|rsXr>OLOEv4ungu+~p z!DG-_OQ|{!Qp8gIxz(1cj;1cmryg`3q%iCaj4AZpz$|Dbi;a>(!wR)&ZxEV2zJXDF zOFu{x98j7vRjohWiWr&+>DzB5TC@yKu|iQg>mC9H*rc}wU7-j>%>+jSl_IkHKTJ&O z|N2bkVl4oB19^aA6q+rN@lWbVU7($ZwVDhR{BwZFgN1Xm^|M0g%Z#@=4+U+(O<?m< zNW0*Gy@B+t_y(pMbmpVVd|S68S!IlNbb{^ZUTQ$I6>;xOI9`<&zy_&c(MkL3f%qL* z291e!u&BQpeHyY)aJf*o%8yA6+IS!}ZmR*cbgTrWP&?m=jjVTkHXnP#s`{%HIua>B zst<5AkOa5dfJCN!XFB4ZEI5i)Cea^@?OXX$pYl80)AcE~mtH+~P<@KHAEp(21YJ57 zLtQLDeR$6Xa1Vutu|qg@c1~~JN5P`cd@a|b{>B?mVG`|Ing*eU5Fm};tcZq$9dPgH zf>Wg_+lpvbFs`11-HFtlfx^df#AZ9uI?)2r8wKofpmJ38NTN-h490(W(&$PUjUq(V z3t*R3Fn-r(0gOu0O7PiZx^HPJ3Y`q;o=G<D)3k%=p2*CAu>fgPwu+f0s$V1vpE3~) z367!#fG=I?7=zov`nfs5fSKebd;a%B=uSr@)C@Xl=&;3sjH9xv)MD!Vdx9K_5)`=; zECe#y<Zz@Ah=?f!V)m;{o_oTOJOqKwbdj79Od1=*7Nt2~M}3s7NYy5^4?uzF+g=P$ zj=cty1tB!DC<*k6_SdN!=c7_91&0pt<Niv03|$~-it?jYK_A1yK!2KoicH<eO8hQ! zMr~nKVl;-+D={iCzvk<LT3}aYMQd_)c%7fGMSR316=SRf?m4cKwTC0Be2h%^DeR6@ z_6A1x#cHrlXM88S3LEVMPg9Td{O2)@^H)*5q4s(Lo4EzG=P;(pqTM9$zZ_)X7H%c8 zw-ALF%bJ2jt=M1|$>~Voo5h;I!=QrkE?&0u#4rP^T4l~B<SZiSd}}JEnNytgoDKL^ zjLW1-TDBI%LF`46vFwlF>}5)tKKDxPjdo!k(4E59iRdm6?$}<mYdJ;eO68=%Zo_2Y zMf`eETVBLRZ-}<T#`=?-Ikf#fC7!vFQ8CuX>)H`9P7?5jDz+9FLS2NL#}4OwY_%Os z;pD-Br`w9J<cMESBrq|+=N~OYW%sdKOe!q++4+Emm{>4g*P%HW*I5;R!>W4Fd1NKi zh(eB70o;P-)6>>-X0V_qVE--9_RdhKisoA`T@xty8=oBXaU0;a5B2lIXT!yJrEPr8 z*otZ7q`qL$?3`zO@sA<JB`51pl#5nVKVhmE&e<!=Da03$Gw}%O0ke`E%(<NP{{uFH z&co!!M(T%E?ZRG0@W4hXmDaI+oScYFjfE>ICREvA!9m1a$Cx5FLHi)*D2bTI_60Kz z>o|K6r}J<@4{Bux<|ylBG^XxbdMlWA*7KVul{(6KH^O@Ye|}vsr4(m^GUqG%koE?K z!BARlGw&%}`5K~`Q<lR)XFZqh?UhUr970Kv%-iraCpNCG>_W7Ho}hi$UP(3}beVaC z4Q6lxB!lau3Xsy<h~lj0x}Lp~d>B#s>2@PfAmcE2M3xyA1!u1$LqVqr9qv31_7wRb zcCah8a1ebPx|f=q-PlBr9#`e>U}2oImr#5T^a^TG5tM>miW*y*n8eJ}oi4^4$c0Jp zV|KZx5tNgdIhez+(~XcIW-+Dd>~<@mu|&=xH<Qu_Zmz^cF+S&{jlFE~(oDYDIV|VF zVlHwq+5zS<gZI05b~OU*--;hrs1Na@k52T^_~3(Et}oH^n2W9GR?K5g%6Uw07i4I~ ze=FxPkL1XS3@tf?;*aHAfQrlMgKudo6iCo{g42hfBSHt+pC<a^cTg8(-=q5C*U<q6 zoj-_~%sXNx^IJKS!ASYA?EY*;heK<&kmx%ou9KnoUvk7$hBMVADyp2y9A<wUia(Mg z<}$w}GhkiLWiF5mQd=at2QYY2cg$o^v_p2xuY)t{nM4ZUsqnXQE+a+>iH@1vh{=pd zCWvVOD*ij(W3Ow@<YXqn+4;zb{abPY&X|NA#XTWsGw(v&=(s+YGY(V-awcapCv8EI zOh{P^fgv}Ez=gk+vzfybl9<l?R!(PrOPaE&EJUmPhiENwa4K3c#ZT3ALN*bplw>R6 zOcsrUo%TZAD1!DU9ElEy`tiW1azcYnyHs@AYyzskAJ7C&4Ault{h@84a%*zB0)JuO z#g9HJQ7OeoAAEHKr6s=lSkEp*DonR>ODHEpd#;7}sXd+b{A$A%9gxtBrnWUSH1(<! zhS0b6O8L#lO2+mrJ;k)0hsWb46Hn;dr#Urn>v1SBXj`lUY4xX+0=1yfs?PeWL5i~+ zk-z}GGf;gZ)gV(<9SL<UGgS=CUP*qSMe$mJL&3jMq2hTnvxte#K2=Wa5{;q=7OtoE z)sG9Ma?N-LV`p2iMTJZH=(d@3(5Z&rEdaBL=EgoR(T<gtMBV&AHkDw(JB7dHAW*7Z zE*w!y=2`J-Xx-&VJLuev3MP0({S?)_pPo|VE_xgqf}UDAq8hJ;)~&|ckyEXQi2?fq zG!(_#G3cdtB}0gJ66;z4jBE@4z(F}8Vzuq=bev?x*-kT9@`(8k_CY1ryPWSJz#w{8 z%y%+4-@)FRHq3Yaj`<EoLF_+X4B78lsWmy>fxPE~MgPFtR*om)H}Vq--_jm<WNWRI ztu?V?#3m=yn3B2}PhfRI)r7d5@5muVWjflesD$r|>Mis$Bm6TIzvrZmAx77nA@#_G zqPovi&*fWsL=;LB1o<{x%|dTb_t4YdVALR@QcQFbBZ#=1=KK?1=qqg{)BO~Un-x!t z9}=}KE~hw}g%fsZCOW|E`Hkq>F};z=J589WB<l5UxJ8vlFRH8b?qK1sIkf?&W{!1M z#YD!g%toaR#ZjV?E>_QE6Sqt8$xA6_Hs43h9t9<>0!V?Q0qUvEVRLGuYPC?4d68OK ziIu8D?mr$__fE*VClW-=#MGubEm9bC%5|NkmcS%R74@;#f*Gs<>_%Bqh)C($)#=Xq zwW5q3=C><in8LD=(I5fvjETXqeOlpA)9_oD&CpIz6pU1`v*&T+dly^GAB-7}Y6sM8 zsFa?-(+BatXDMbXdS0V&G2eL?GZl`MyBHn;5njw-o)dUY4&O{D{4LV?Ht3*}w(K4? zv%%RWn55qlm|9}LghSA9yb(?|T9=C<B9uNR3(jLXxp}<*PfkAW*U&VVuZ83EC(*-s z@cFG3zddKBII(Kf5qn$S%XnpiSwnr$-f7q5%*2b0Al|Ud4#P7yo;E!1xiBU(3o!I= z$>ICGw!RDCzAtAj+@pGfcugMtOO78Y;fsH9xE)Rz>H<6PQR!OncEfAIPxVQEukv%4 zN`Ig7w<^B})EIt;@~10*2mA=04KJSVRZmB%r(N*-T8dC`q)CpV<1r1Ptw77c-+eh2 zL*fX&ViDsF3!<VWaVE7Kk-OWT;4CsNNAL`w#2zw$)JR2}fi0Aig}ZQ+X~#6}D2AHH zHr1JF!Bl@ZJ~taP&qX&-XJTa}a#$ZxbZ<^^;@q7<&lgd9OT_si7}W-fK3M!TSrQyL zQtp;LR2DrxuD^7^=TL$fpyz_ud`~lY#kvH(n7W1!PIcf=E7lvMDu14kaJ(N=<<<S* zrqczb-@6`KSJ2wC0+Vp@J~N1#bt&pgn8(}=#{n~}OxSRV1OB>6%EB8^w1)Js0~oI` z5d!}aItcVqU&~(*rr_w4Xoe`J?FKbLN0JoOM5Pua3--iX@o~Rs4WCPU$Vt9em2biA zH`Gh{#G7H`rMDEXXg-21$)UlrNCquyK%?sU4K$GaE{!?mX(@uqo)y6R*C)`9KP}-m zWjM8{#D1m!;G+IEZ8>*L3p$Uk0u|Mqv(c1wbH--|tMK}GK-vK(6%+PsFLrFM#j~)z z`9a(uuGkLT@hKAi2b>f;wi=ESv<{pf0~byOV<DiCgis8_V;#Woh3NCq_fq3&=jDBd zwm+&DEk3p%pTx-Ue#c|SUX$)zwlh1{C4H!9^mR)gwqeuPD}BY%*C&0J^m+JV-U*eF zVmjQBaiQ4ZMPo`TUTVJgoKt?j&5eAu=T2nZcR{hI`QB7wWjL~n$3$EFNdB<5sk>mO z6<s(J{&+TM;CLO;XhSoFGU(LGplN~S#95!Q<B*>`zy<C$fuHWDHj<5n^_J5#*B*)& z-XqBuRe>TB5ky2_>?>G+IEW2B5NqytF7J2N!zr~vJ+whSjzfSpIJ#&ShEPF!<1{?Q zNuvGrVUlzH2Z5*kpooHHT=V;b?TPP4u(9}P|0agT2eBCf<HbiwZZS4TO75J6GfnM) z5)rMUzfz+4MewoYOvIA<VI!UW8UiQw+!nY!a7W<Iz>GV#;IOGcycC~09p}cw3JAIl zJ8BMMN6l^vC&l@M+kRd)Y*`3x6St*}PZUP15qd!hUP)cZAEmKfa7;mVU-cLRmDbz* zAXEt7DV=NCI2LtLuB1JXE$Ev|NY~!X+zYjXosQ$-4%@L}=Esg(;<m92H%TJaiqA0_ z9-m_p1y>9c#(oEJ6Y+g5FN2|e{WFlPYIuq|KDs0we3D73A`w#)eWBDs9J5G`1i2(O zaH(EkaE*jroFc1|@kBNxGct>(X{OgP*yyhW)J!TbJzMYuTBv6P1j@oV{o){k7aGC8 zbq!UqH64BbzY@jTqPTQ?&7Y?KMd^vnGYG8d=(}h!Uz7;Kouk6)_?jQ>*Y|%#QlHVS z!|S`I_eJw}Q4)SMoecF{-;?n*AqgGLhnAnFn~csF7ag51EoWVxUrk0p;bIU2w~nvV z)pRtD!;C-ox>7yW;q_hTOVbt0>z_jj14(h|_&T1Zqwin(92$HyNj=we+;?40Jg$qE zE??>E|6i`0I=<#d-?f}{eI3;wb%5(O7acb}UGBQvbUp_VfoEP4Iy$_jqwBrq&rN5J zi;g=#Za%c%O^0XP^V0co-!)y$*SBQw)BZ;lqT}m$+OO*$&xGf7t-Oh|>y=a7+LTAf z(|0Wgeb=~dAEQhnaN90AnjiOF%UScK<)O*_*hNRDtLf-`>2{(0x*cdbD_wMSd`(Z6 zzs7aFzEKlU_kSdzqvPv#ae)e_`O^8*<kq<8Xg;)jb$RQ0qxsVGG@U10baXgPPxGVc z>UMvRCZO&QyXffnZhBfSn!oS3=)B{iqvPwl&X2A)T23V{I=^$#(fnvR>$}z)x*k=# z=)B~jqxsPC(045tEiX-9lY81lNAsiay54De1uFamO+ejG{tG&qp1zM#;R7x@&${Ti z^QHOG^-jx4=Tnn=!9_=>tMjkROP9B<e>y!)=R+4A{an-0a?yTG_ijx<-H*BGXnu5j zO;_hn=j$35ov*2gI=+sl{raxUTi3_wijL;<ZWkRLPt()kbUoI5U8d;h_Hv1fj*hSI znh$-~_4zJE=UcA){kvY+u`iGKM~`W2s2EdGH*a2D?U=IihVq)4%9_y?xnsw3MT*xv zKy?-WI^eKSLqlDIzoD`*QrA#jJI7B;_LcsshPrwFiyAMbw;@7YAdM9b<&g^70llSi zPI;rhy0*S4;;#n-^I*-sq4BC=et+%kYDAq)7Z|Kp&iR!U{)=jA2v^oO!fKKKqB+uC zKC4l>t7^*Uz{wzum6fxlYhHD2<@|DlmT~8mFEG8ef<67Pwz{^Wp|ZTOG6BpYx7s(S zp?Y?0ol1bYtg5c5^nc@`#&1Agrd;PUZ(~YoBb9TI-Ac&y@^MP61LgWT0SCx`kZ@Nh zf{o?#>T4)pX3$?>S6v%v^jDUH>$+O7>aVCn(SW~UC6I4<q*|a?`DJhfCX2PR{S-=* zc--i3tn*iuH?R`m8g|=7v+sa>{g+(E|Ne}Mxz&w#)0qqEv#atv!)_8~4}lLT`q3U$ zH5$w3_t%RE<Og%F!={waPef4IAUU24i9>pYsFeKv<d)D)6K|Xn@>JH&_ZxoyHOQ#s zR{!t1cB;5ux>h2+>fS8x<5#vyd}gt{*B8mVNBMi7mi`gNKR$f#wU<9PwsrS}#Z|vp z`|h>#em=46m9vg$x>P^S<_}9Pi_IUKzxm@U0`r%K=jIPyT#8TJL5tU7i6{OyCtQ;! zO}fgTJ7wyWkUv~q+q59hKW_B+(U<GzBb3AYgPT0w1=-%OW)4kX1%|SLpRb-RQ+Hzd z%KamCFUCEn-1C`{iCNhzQbJiH<Eay~{P(2=vvQZ75y;Aq4!JI?IOWK&to%S$ZXnA) zF>543PRvT5c&6uSL|d+Ce2t0^PvR+)vqs*RijYf5BYMX5SzXzwcclyyu>(4Gfc?ct z{C24LAMt)eR(3Qc<?XC=tb4)xwtDu7qP;Q&sjo;4W%=W26SH#fJ0qBtzjR12YkYKQ zIIF|Ea9GxOa11_?g9M*Q=~B?iXC84qehK~sva*+^Ogd{w*~-)vY4J1e8xkFw`m@ww z5aD&?i*lK%!Ur?qLB3X|gqb!dtF)2Q(jft+o%)9}rFhI_As#_T+ai4~K}Y1FpH6=s zQYUAgPR9bBFj(kS{A^3e0%fK62~ie;pGo9ra#q)OQ^!N%gG<BX84r5JDfox$|FMz^ zd6b+rWa7%y?<NEiPoY2pXQup2-bL`F|HxjN=O3pA3y_+a4Gnyn>e0QW8z)l(uMBuo z3_7}QpRI7NV)N4Vn{9yM{Yq}4jsyFq!q=+&i+T%;GGTaaQ&7}LV7yX2dbA?_{67gl z5gu>#c!@eHod~Z$<>&2s{6u)ZbHF9)A?`Qh=Y`~oapzSgZ=O4FC$6tt<*34)bhK?k zQLlheuM^j{3`M;KMg`+F<ZRl=OZDi{4gwihss{~lkSo=rn0Gx(71q)Qg3E>Xboz0H zyHogy!l|pw>jB{zDs+X3KcsLi7yazNg~Lr9=6DqDrvH0|`^CNgAGf&Cf?Iw+BwSC5 z|3gp1TLqr(nJMo5|F#L|P*K17QIBW0!i!B1?mY^(T=-sv>-wP|A5i!-4XFFu3irG4 z_k}+_QQ!3AUWL2qA60n04yf)Y#C_;#`Are+ZK!9iD?Gia9=76v7j5ok4}^q|<_HGE z`RUAH_$c5wt?!gy(aKf#i<5*OlLWs!2|ghSJ~0VCISC$4g7akE!SZ!m5`1P7d`=Ra z@2dx+-;@Mjm;`T0f;&m@pCrNmD+&IqBslxg!T5hP3I2y9_+OLY+mhhBli+)j;QNx` zT}klnB>3SZ_>m;|3E*c#)33czR(vr|fb$IWbA!pvmjwTE65O8z{}ynjt8L$k@dQ~A z6T#6Ho+)*+>S`ueMx<lPUDfrTo62iznided33IL5N--U%ZfqzYJx)Cn!EUW<xT~_k zlbCOLI8m#QG|UhV%qC}eN-?*rtOW(o(ryvAy0&`s75QVY^o$Nqf(701q_O;0$baL6 zSNLf`7tduV*w%%+NIaEcE*EZrj}>@fK9NE}uuxKv#05T9;v$hkL80&pPh&-S&8%9_ zj2Sg`b7mm3)sae1LuJK$4>!<MHPz1WAOo{G&72*PlTA;3C8yq=$_3RCPgO%@rJ7rM z8tX9;k5qXuwQlq@MrPMF;dxa}Q{!AloC6WeXsnEUZ(hA;Ugf-s`tK91h}3wRYB7<# ziy$6*YU*m|Fic}*O=U&IQ!%R{;;C$?0*93g>NSV+?rMxwBG5ez<hP=xu8~~V(v&c4 z6xUQTLkl=9^wibEgUR)5nIRO}43D-mDxmq54YOtl*FELc5tJPk1ZwA#Or)*`LB$++ zhUZh%UtXwA!geZNS&EB0qItRTod(V|86CdUz(*SRL^agpW3I*M@NoklW8l9sa5H?0 z8j_I?&OlGlk)Lo#KF#n$)ewl`^NsKm44i9=nxC)>*CW97=?H|2bjISR!@p<XCjFtR zt7Ul7=k$ZuNEfc>k(U{GA;M|;KR0kQ-B%3UO!quBM0Dr(Is+eP(4Vew-jowAkLOM! zJSV-HpScEpg@NB~;8z;>Y6IsOU(@-G!g=FQj~9Mtgg4XOXy9hL9h@-Y(sY(fujhOv zaLR#;5IWr)1Ha0^FEMbgG3)U82G04m#(!+!T&&ReIs-T5yhGt+mprwqDashN5KPQ0 z-*N*t<rX*aZyV|EQ#k3f&KBdxtIvf?)Z;m6(BYzs=077#h9Ey?IbLYsX8jyv;Kc@= z)dp_n>tO>o>Hprq0|uQc)p=^U`IVl!+lA|S;}vRwp8T77;3fl~XwZMzz`16v<?z7S z@ZcgH6JM?xEOE|pb@=}_@UI#8lLr2E18+C*3k>{fGL6ek|26|R>DL>$N&g21Zqk2G zEzE0q>Ur!D7p~{A4>OaBAL=pX_59I=YdLIk;p_u=?Q`K;ucne|T+Htz{4||PKRmc} zyY5is{sX^&Mff5(b@-(QZno>Vfln~P|HQzrHt?56!GnwZnDut|Hv}y3Ae=hg+6((} zQxD&e(~p~Ub{V)Ce)L6yhhLEde?JKx_~zhr)*HAVK{Wq=HgHxMjX(0OemWG1#-CA& zn({HjS6$p6o}$v>|7zf7_yYz`5$f>cFBzQ96ax<#;VTT>q~B=Z6uG9q(7-7|jjuFt zibUh94g5L-f5^bibk`ZUIW7{5pomYoQM8)=1((8uOV{&0RnM<eIKvm=r^7FEh0kXI zT=yplzuv&jcJa7@o9*H$12@}6!DTWXCTHeryn&C#vjm?CXTCU;Q^O?BTSj=Z-?@X4 zagqK+{4^cD)8cg|ek!ZNkCz?d()cRr^}LdVj*o*&TnwLvUon2XE_C4%^>_*u&NR(_ zYJw|#v5K(72+t;>`TxCvoBFxk!1IjoBd8Q`>H08D)rT)Docx&Mq6-b&92XTBxLIDa z4BV{G%MF}OQ}h301D|Z*j~Y0uybgaII|*Fm)51^VGYq`Mz?%&GdIMi=;NLOuKPsH^ z$;6Lsk5`)uA17hYZi9~5j$Slyvt8^raI;->8MxUlMpL=tVt!4zVR|Yq;-=j0HE>gJ z{K>%0@@hBmFlcFcp2<NNF48yK(NzXsif1}}m4V-2;7bksMg!kz;AXiTQaI($Um1S9 zju|-1MPDhZAjqdF|11MH<^LrEH|75o12^SA#lTHDJY(SGQOlvnz|C>>#|n4rhg9{( zPv=*^PfAxf^JTWjvklyAkE0Aaln>hmuWuURO*;7oZqk`+;3oe+P`Ku^S?P_%MtC~4 z9BczO>Hl2eS`LCq{QHX${woHZd5nz9T@Qy+X)4^*d*>RsIWE1>z|HY(xq+V#dYb<W zI9SBRbT7qE;};vanQobZo9WIsa5LQ}4ctukDK-*ZO!p@Ibh<0QOH|@)vKoKfz^Ot= zi&vWq*KKCI3)kc4w_W%MNyc+EnZQMUrr@X3y<Xw052Rg%AFuBj;ctdthu>`AQw@Bl zfzzqO|3l%LegmHI`qT(-w)a#rhl_lg?R}Vmo9*3a;AVUOl7XB2l)3OewSKkIg=_wQ z&rISXKV$LJ_=^T^me(6DT$k57E?k$_kXuMy(kC5VUXu*m)K|YWaI&oVX;ZkCvo6Os zjqqkUPQI0?%5=$^rZdIBO}RxCuIV?3*!ZB(2yd3-{RVE9<3k2+mgBDs+$_h34cz4C zeHX6F(XaSodGV*Oamu0bRm!jRtH$-Z!F{gqYZbBGE?loCbi45(5*VlStES&d0pj9E zOT09$=h2V2a6Rw-*oEu&2SLS`rlZ&QJ);}HKQB@~3wNyGiu+vc!tSl|(UHmp5zpw^ z<&kpF=vj@8p3x0;^e}kAXso51UM!d^Z$)FI{~0`7nddgP%32Vst;1%k$u~^B3@gqR zcOeebshm5birdR%cK_}Feo&w&lz0>Lij`~Fv;-s^*#o^|jm8|;>&G)A(zRAKz_Z|G zI_WBaZm-`|c&ftnZKg`Mm>r^V`3*Onm*Pj7?)Ymf_|)Uk^-}sg9=~>|J9Py4qAoHo z9sed(AM`WLKjZK!#&59rM^phVV<6+w@${YD8r^3bVd!jD3a8$M>-6>gc03;}ey@t( z?250;Pv5_%;^(`<)z6Ut$I9lV`PTPFJk)M8oUP)U7~Sr$%N6DlvuBlxzrgiC=UdZ_ z!ZBF=(;N5so}Cx#AFGm%uj?NlyOIEca1;!#TooY;ZccIC@%cKyUH1Ta@|8l@>jcDj zx${39*kJL~|5F6_{6yXo|K0JYG-2oA=(;g}broD*SXfYa<>h0?`~8;}6cqA*eu3X# zke`3WxN&~}xWX&P=8Ld1hb<0;uS@avQ}lYieHwpE*!oQ(c~Re4>(9on17}(HIq0!q zr{V!R3ihn?Ml$hDc4r^Vey{U39dm}l&g5jPVh@Y~Sn>NFSPnX29Mi=DgDpX4c;V`y z7GmPdM|=@~al0+OI4*fvGlJlo*|h6mI3X=u)Y`P?qb=e1$}mDl|L%=`b}I58tNwNR zzSz!19ZbIm=`RyW#a9b9O5<s^Gpv9{Xwq<${{klQp`_gO@JCz3Sp$JvN^m;f)WFU7 zqIBw%g8f$XgKTEWx8iMZSG6jDPshn8a_3wA1{?u=`c436t%vYoJhK~e9?EGE_m-Sh zxbs`vl8P;X=pk<aT$RKxZ7Hc}572l^YD>#%gb3O=vt<wLD8M3H^x(+on<E3>X9HfC zBX7MV#sC2r&c&z0A$zMlyu=&uZiOLg976FZA2+R~t(UDKTQOiO2EZE`cp9g?E29BR zPM-4dtTR|dg2~4ri*Af=@zOqIpy>P@-^#BeoE3d0TYu2LWmO0t{j(nr;N$gX+}Vbh zurHQ{u&@BIhjh*b!CgXrB^B}`_oqAX7=?)s)5)65W;Y_Egz<4YOzlW3lS6ubNIIjn zZK1%_g4Pn8igEK)%l_vSSOLb-3_NQFvHk;*vT>Aj?hCkIu1JX`E)eTL1$r6jovpt0 zMX)XS!9rAaIF%-%4kFN7_&tMwTM;mr%6dRPI;?BB<FIKrLTy8iVC!W%LJfy05vDs0 zhgpx==4;s{d@^C2`-^}uf^a8HA`Fk@<l+D=mN>#s^krXqAyU0LCl`-y=STa~UxI5k zKg%CplS5wG;ksFUzAu6@XLtmo3SUzB62Y@Y^gD4(^{uV22|+7Y__gzFu3VfeoQtEh zr=9?ZFT#=)tpmJAb2Q<c{1VvR1JqHn<OCI6mG71}eX&`hK&D^B1Om=NoMiA=4mA~X zya~^67Uxo#V`<|j`d+%Vy^Rk7!VC-OKZhSA#51!YlP=%Vlb~hAZ~hxn%iVWqDD(gw zJh435o{sa=k*(|dn8V%qN|0Um&>UA!40Ypn2>JFy$WwP@F(mmua2VCPox(bo$JB?5 zwlzIid~_>5!G|qm$?PU_2&;WaxA^Gx6kqI+bfx)X{|lGhR<Nh7Cv{yK4o>&QVnEiV zG}S>Z%>omu$_(E~8aTOu)k;?MEogkfxCNf39nM4HOgn~l7#y_=S_Gb(Uj*|edoyV3 z>gArBAsU&to;)~xkEflxJng(g_xt{wd2W@Rc^+ht0__+(^p11xx)l4oCy^eG*QiC< zL;D?MaXYlowzOz>ntkhuo`4|HB8tR{FN6fQd6~uKA<w2`%yi3_7~;>22V+&+Qli}{ zRral)^?Zi!jQiUUnhj1tpcZ>MFcsGKsK|Ds9eoN#Hr|5yIlE~CjB{k*D1dBb#=&RV zp;iaxUZRz)y(l!8dHoxw^Xj{FSd_}~l|<j`rD>g((Wo(0@TfJ^@W?-B@~8xvTiH$0 zZcFZ)s0V2D*=bAQft8Rk5b2#enrO#jH?@VZCYuh+r%n5CN<eGDQK1(~i{5c2_?A{8 zug;V->Lkm)V;$1jAFkM5YQJxHbasQnA-l~E?e@aDRPI{=-|8*V<Eg%%wFWY_;2it5 zu2ke@6VI%N!9((c^DosI?=YZs6hNqDzb|$x(qIN)=8{I|veVKaY@DQYZZIt!x9Mp# zcbi>AjW8V<n$~d-7!7SglDn#WU)lq6qeW<k)8NT{A#yAJzhplbu6XXqB#?SO7{38x zneGV`p*Hit$7wqj7Q##|icAJ5f}WaQj3%!ho(qElf{SCsp#&sO=(;{w(vSdbrqSZs z<*`$X3UIDMD@~W79fn|>m$u8iH^eiavtSGj<pU#Zh?~Kb;TWE=_|;NxI|T|O!M-0I z;fMat9qT~o+OV^5Lm0%u@w<wl(@LV-v(;HVVfzTof5Pxl_xFxN1K?b9m@Uc%aT;91 zEm(BnVpzc#aJT{cIoMW)JfM(rcNZM(c@JqNS{_)rvgb_JR^x0@yZ6c8{qO%?JmuK? zb}u?O*xk)*_pN_`U5@ui46X8d96-SVb<h!gc+mM}i|{RD$5yq<=vQIGahd8@oz=@! zw~9U$9cs|qe#uWoKZ<S@$6O#Kbgfi{UT?cCp0NK#=gXdV4?DP~Uk7cGM$nci+9G|$ zugPva?Iu*byxwT*NL!3yZrjq|9%Wk;BZ`2%8?E!?l&7+hF1oelxZyC<tHbe{occpq zvYx`uBrMuQMhZKeuw5+7c)TYX2u_+<+!gK1j+_nU#mKss4$RnsljG|DKWT3R9#wVi zjn5<lBs4NXxizg+hc>nuq?iz_q+-p$891X8O$!LLs9*>mH9#Z@q_-lWlR@@-JVIN! zwQox=@B7wUZR>^mUQzs@CV)wxs0kn+A{an11ELX?1O)Q_etVxY*@>j}|NPJM%$$AJ zS$plZ*Is+=&$Cxo<@-f+X?hXb9a}aOa=Q<`Oy|G~9#b)hhu4hNj;09vaBOWk4`|JG z+b{TcdW`!#ahObH)LM{ZmNXaHm2Y~iDIR#-Bw08SvwaP8Q-OE^f9<!R4ZyC3KLr?= zCh3s7>@{GAeXyTJ_UL_Z9Ao<wI?lfU?pQ<2&K^-DE)<E5C=M#i1*Jm3AHuyD2dBV( zh^=sZg0obDZ^6;>0hA06Q%Z~CjEtGXpqWRZobaS7K7yVi(oEAvOfr<oP@yS&*<Di{ z@7%RHDnB!km!R?#E_1_9Vv#*|zcs}Nrs30tkJ)>d*BUtHd<57T1A67Mv{Vr(AEW=I ze5BwTP&!(~E4%gKOO$Wb6)ct5=jdb6<!s*tC`-dymgBD-fgDO5NgTzAJl3+IF`nBJ z0F)<FDD8o-92mzOfBYm+UIBwDMz`Y~X-{O{Wp_X}ENdW!a>Vr4ewVEe$~1}t69XnZ zDb*iOJ#__rB|~5Rwd@V{p|fu%K1Md8CEK7OBckF|1hu6|G@in+p%Bh%;kLWc(RXz$ ziXk+8hbTrE@M~lEH*AZFPl`(F+~~?D@IQ?Y{z)T>^K}C#&oPOIkbNbqO_;EQCRkzV zT?Uyerl$6GE<=$$56sJnY|ff57k_D=@p%^6C+ftau-Fw5=isVk#Rv0Ha;CK?z(crs zHq#grh9Y2!u{c-!9h{MwVcjDSq{aDt@L+Fb=Y(wI<}U8{#rb|y;oHdwo`dBZ*7Dnq zmX34wkW|s!K^M%!nx((<;5Kmp{?HpmeX!989wg>D(InpJI9cCC6D*p8ox%M^uuYsd zyeDP6Q1DeF_+iKnchz6IZdik8`fbO)j!PkXNdF}1P_V%eZJ^r#2hY^6P{C{PY997Z zF9VB1LRP3S)=E$2{@Ut(9P_jrppS#n3XNc=5j^7_2PTd4?Cj{UX2aW#m~eLJ%Z^nK z?W!D)Ld-B>Fme#fh?cx>TGcs``gh@(@0e0@U|N$EPQbqbUH_RmQ5=F;vKxJ#REZL@ zC%{casNgWPk#+|LgZ{~JYL@@8JJ_(H@@Gg-t+(Py90pfu%nTXD$&F>%qa&h0tIudw z^XhKF0qIOPWZl~tdWH6#7NZc}$b(1${$(PQvoj6R8f=EQJhVN*qr;klTT!Nkn%!qT zxZ3f*jI)V)`5adwz+p_V>8O;2UL)JYk<@8k9%>fcUO5m443GA&rW-*XMm(A(HUrEL zA@kk*N|)j$4xDWTIIoU=#d!)>79^XScedM?cm!jkkX6{}dJ>1zfG;`{ryKh{$8Jx5 zd@rdfx8g9>!_I^XF5070q%U#y-1*k=Dee?gS#}m>PhsbtLZ1U;%I)58!F&G4HUJl= z2d7#0{D1KpzMV-_zUa!nGQ0T8o%w{U7fbUd55Tg<X2+JZ;p~r^gjZ=$wIS%`vQ^EX z+@skU@f}q^2kU7#<UJEE!VSn9C7%}G?T@dAnM150^kCKm<uM(4m7}bi0XM9vKJ*Py zr_<2h_&3y3Ez#Y!CgRkuhfv3%qNY8%Nr`C1b{YY#iC6st)&Qhe*qzftxI=6SHlxC$ ze!E%)k+PeF?iziH_t2{zXI{Bg%U`<!$Y4_H6_hq3aSd_?`!*H+ZNVJfZI{#mVcMOJ zg#^TW0)Da^dH$Z0j=#16GU(P}J*~ruKjR(5mgc2e(pI^Gn+ubi*eV+da1e!<bBe?p z%Fs8cb^>SnMS=~<`oYeres&i*C!aZtjOGa^#E;z%8uWAp>5k3zZx{gnU6O+#Ojkbt zkS?Q=wskeB!=$j&K-wf6NW9U_b6IwdD;fAzPtIpZzu`UP-=kh@e9LB4^4*K+Bw45b z(W^Xr(EBI+HsWk56XUs=IM>t=XZ}VFaZl|d*r}bj5-!7uyV3h6(Z8*OI+*ZWipe<n zhIJs3f`Vf!-kskm^q1z0L3zL?j@{fJnv4PH-_fiwV%RG6nPM%^02iBP;vXlBO_Mhq zM2C~JO149%>NujoaIRmZ{zR(j?TpxWUyH-#a)1DL+Bhw3FHcMR4$cj$mY^qjYsbl5 z@)76Ok&+kg;?JR<8Yv0m9LlXAmmYy1(+I{w-t*SaGNWS3D#KpxHAH89>i`kYMI@Ou zj98=utS#gZW*ZLK$XnE!vI-;FPPCkHbb~SGg=e_ITjt>vJjY^ISae3MCz+Xucn4+! zLrfeLXyO^2(rsv{H}OnMP?wWdMFRe7*Nx#@5iiHBNbH4}obeY3FRQ@;br^vmxL{SN zYYL9jlM(=dCz&Sh3syx7T5(@i<B!!qxO3KU<kuggFZfI6G}nmc`0mOK45FlSy3EN< z7+wxPW0vgXa1arrO_^pt4(kwpq8+6P2L~9v&cN_?hU4~b`fC_SVg#SLrW5ZY1(>y& zj>)tcn1!3pxsq)hV@~K?HK}XqFBtp|Mv-aJTedJu{`hG8TS^9SKQ425tVqCdu9St8 zi<5oij!Iz_W*T<2SA<tZtSJHbo~!(-m6AHnhe?MkVzNNe{i}IIsU@e%V0UZVk#kj6 zAq*Zu-eqNmShle-ydLDb;$4{C2nqP;?HB-aXfN|cMHM9bB+C{j&QX%4ShmV3IWWee zK6R^84i+L?MQ{bt3@04HMvO7{2n<kLoWVlK;^5&7yft7DkFm~K|6}(f8L`z6T}2qa z7{T-CVnM;qUq^>?7{C<O4MXGpG5l-<n^CwXbP5cj6SC16zJ%9v^n&tshA;7-fuD%I zg*8vsLaC$9s6ZV-M_Y;kp1<}i?Ge<vF}%hDeK75+HOb)~wKwr55Kv8+MVua}RP_Ly z$KyFH&Ve7sZkr1SBq4M$Ax@lvJ7twwvInR7u|RPK9}CGWX*ccLF)`Nx_j>7O{rm8z zd9)vOudp-fJ!pC_L0`E10v5*RMFr+Arq-K5)J9ob%=&XYTyt<?XGq+U1^E_+L{kWz z!w`Fi@wEQvKb36BMMCwh{c-Z3N)b-r$v4W3e8Yy2Ys_cWMC|2h@Md`4^d=8`#Ykrr zW=U$0Nm<S+ukZ*@3OJ__|Nh!f&<o`_*7h}<-UbW+MLY{H9{xIKv7Gk76r&qyjH2F4 z1>2T?42QPWOw}HOag~sA1Y43HwBBHisW}BC1%?RJu*Pr={vkez06rMSDTjhaf9wpZ zU|t>KrvZ+o1hF+D&WolZ(dOtOZAmx}g|?3AQ_|lw?4QEK+;{;qy`0JLg#5p0j9}h1 zTJVV<K6X&2G4cKx3bZCHPNLeM#B|`P5e_{RZ6OTHq+GLce3~q%Ms#o>kJvUdQgFn- z@^>J>d1NLP&E_QTRnT(O`CX{<oY{i2%V~GOh77(6zdO<@Uk%?fW%5HC@rKjHhgDY} zv(}ucs|PMk3hV_vX5I(E)8yQH0A$B!0pahU@e|l4SQ9zNJ$O83%QMI4kaPfGL>fFE z1F`Kgp6jMFyeb^uVF;T>1_;lLk@tH^%rUit*RiOh7N`w=l4VbZ{Bh0%B30DVmZ*3~ zPH)S$a5IVlJ$<QQh@o^xtYZnvLWTM>Y(8PQ3gx7oDN(_)lSrma7tgNAm%K&1aEKjV z6%|?F8>1jpMsfkPJI1I2nK3>W0-z9@k?SV>Cb5|A7=yn_g^9al49@#OGs5CcRL&Zd zO6A~C$D85Qd6Pr+r>_fp6F3(&ddu2!aO#geEOT@+@sez+om}rmuD?`<4Y&}O83vCs z3r@z}oH+u)qnlw@08$`{fru>Xq4w14kR3uJ_bTeT2-mQ>M+-Jln_bI~2G5=u5Y<Ec zv2)-$b`++%6{Mx1uUddA@Gk0eCSp*HRsRi=x*fvF90xJYsK=DM2}u=Zp~?m#1^fIf zH-ZpeI|`S1J2dLvanJ_(P5$8l;$lID6V!vJrQt8F;y+O$+fO}*#7;Yj$$1gbkoK&b z*1flb%)R3n9jcxA;{g8d2l?rWD#+K7JeNke-jucYt9W<+7+{Sn1dP+VSe=@&tvAn0 zA6HiJ6L78!@Rl4Yq%B#v!5|hD>__KAe2#w7fQq}&l2L}TG_htG6?;ylp+7F4S$FS3 zzvF$W*L)h_%;G8&^+d$GJzDVjQmDgmw12WJN@PEXrbfgG01Iq;Cq_kEk>Kg{n8E{n ztEh(b!Z?i@2QNFy#CC`SIh>>$a8ih-sv`Do3m44wEyrj_W<$Nzj$_3_z$yjoIj4+M zZJBKl#__=6RlFybqECuh>l&yPYolla@3gyOPvS@L66>_&=v=V|BsO()H)e@Zcz@Z6 z99N$(L))3`zOv)G;)6~ok73<~Nkuyi{b$QW|8+|mW^_!kDT^Iyu{IMo16|z4crL0L znT#Dz74L|3qviW;W=Xwu6$HAOy=io7O&iXi;WwO*vASGmA?7v^Y?q+ccD$uqY}`!T zY~PhAaz@0uL=u~xxN+(<V%VV+bYX$g>or{2ptyjPBWWG5ell4c5$oy@<>9%|#9|zZ zT?jSKG%>>jtCLxX1C9%4Vu%`m*J-Ik?3LtL<BM_2vc}6Z!>#cIrdi_+bW}F8*^njY z`l)t$91>>T;X|drwF^l8M_&033K5RmIqjB;wsXaK1?Q2{R)s;2;B*?`px8#5H?Ql( z8b;kPUQW%8ewCt?gfVCr<A+v$jq{tLQG!f4!--a+cAQKoF3YGf-s}_!N~aaU&6p8^ zL=GT`yrPGRepB<e!9lUlLjMe|7~d*rdH6mo)Qi6d_eAZ=1DuaWcL;t4xcVKnpCrZP z{KEEL<FOO^xD<}bnPw5ZdC3Jz<#78mtif4|J$rL<M1?cg<GCoOs;?)Skd7Mfo7Mm@ zORZ9QgrjpZ9`CAp&mkda#^6f4ItN84k*uE&O-}n->qs(wsOnlbMXP!yqE`;GrWMAH zXZmaBL%p%j0o6|ECsm^sQGOW9O8W;(fqeRFZ$Xvn9^dPEJ)F1>?_!-f{>Q$LX6hw8 zVE*9Le>mw<xyD$g;kN#9^dANnj`7!y$2J?Qu&}-}jV1Ak4|S(AOO+bM-5B4C4Cl%a z%WRemy^YX2GDPvlp*4;1cayNTWaxurs683_G#TQ6Mp3zt40*u2g87o6v}7nF8OltC zc+j(ok(CS$O@;!=P<AqulMIbWhH{;df8{Y~yi*5aZCQC|UzyS<t`adWi8aR9>RpXr z1P-`ks}SI3q{dhc{wXcd)bWvM!c0*8`HbM!`CDg<?CP4oyQsOV%UeHx$DO~&f>(=t zfBj!@AeXmZG+mEk!uFEdTrQ7sJ=%<2npyR{TTg$@!4>+5<+$-)%{!-j)0>e>NAvY~ z^orOTz7+>dYZ{d6Q03s7Td+!Bh>|rM3uodT?(sHQ9VZxoPRgLN2JpdLY^B0hz{PL0 zq!n}h?e;@y-XifnX2~#8ipT*51{x(T5pPFP$yv0SUQ9G!^w!;BkNyEB&icXjdH2B* zo3x)LU6?cA@Z97KkX;Ozsy%R(AkYPq5VY<@_SgOzl|O15SGAhL#G13LY-S_b^E4J_ zDmG<hjfw^gcg8}K<@A7A|KV+og`B0sD93kI{HzlRdR?97uO0d=+4GRQ4ni;71}xdn z#M^R=aDVI-Yip4F3x#+w$G<Snhv3HoPBqs(iXbpjLINwy3pepG1Sje!oc?&bO1({u z*rVI=+UD~d|NWSIUssFZID70`kmP(T-fkfXo`qOUNalVxY+LjV6)wY|EJt>&PGMz! z5nQ@0!ut9ptd}op`ow<%v8Q8?61Q?R1OWeFjz2h|b&kKh{zLaIA?@LUtxM~?=R?7B z1?MV@?ZsY*M~(bSc48eBkHejbguzBrX5~ox_7n`2@g@at(5>fqV6f4iSve%OHC4`1 z40lEe#5e6Va?#n_7%e#Ok8K%-4#wtj$N;95%oSVt4&E^%1^Y3^#Ga3(Z75vXz6`b= zEH+C*zG%rY|Au{7FhtXc8Kt8bsJ8ZtmSFzynCZnL7Is2-TTCys?3h_{3FcZh8uiEe z-);}NKh!v}jKVU#7_wtRX&*MSHDgg0YwhiASDt1AVzZUD#>1&kMIcf#)h9w3*x820 z{S9iR(mMET08*kc!)dz`t5GQC6IQKkni84pN~q=l^Xc}g8l<>cYL$3njo8P1BG@2O z|KYWH`{wT}6$8q=TalMrA4J}(TAh0O;&HMmj>JyD&*q0IW(Pu8XW>acu}c_IFA2cN zS~MQkuWRrhdVwRI(B`A~=gQBDV+hp5TD{6C-3r2MP|43*FVV<cFP-bfp2fht<z!wn z*|Z23((s5*$G2XqH~oCaftHgF`evX5S=uba`k~J%Fhn!f*_D$vCUy+QXF21T_RoAy zyu9Z874)1KLJvWBF=p@<G%Q(ch2XYJG8u~1r(kusF?P&hw&N`$eLtMNA0v}_=ktF_ zw{S+m>!6t?eh9zB#g~?hvVNGsI#46_Yw^-MRU}|$w6rl{I!8o=iy{O|a1N6mR0lW< zdO^z9_HCgE;N|cTYKf}ZK}_XfQTg|tW^^r!?8iO3aK~FY$A{HP6ki~(PS!@Z7A}&t zj&)0VO-!Z#FCR9xEjkAmU)XbU2z#s!U4(l@`i+O1#q)qKqN~MbjQ0=0CcxdIe^CbA zrq(0wavwK<z};f!%}f3qT5+xw`84en>^K?rF9Hy;zjgtN+pzz~b$DQ<^sjs#nqgQ% z`C3%CqA4tPhE^~-H38yg>4aQe2&Xq2)-UM@Q5EkB<!Z6bK<*f|ML1-d5rr{9Bb?rZ zRKJ0zjsu~VHYcKTv{*+*z~HrbD^@5!iz}3$#jh*o9z|MCp&Lx0$>BvZ*UBWoQ^x^t zrTi=^`rs#jg>th9e<sKWl3vkD-4K$zk-wr2jV4r)O&^@s)k9c{00z$F_Zq+rv4Y8i zzoB?iGK)bnhP8s;4jG$r3X6Itw?;ZR#Df%H2!63z+CuO<sN8}Xc}@8%=wJ~dr<X(_ z6GWzZh)S1{^08Ql^uLbug-jHDGBO4rR%S@-aH@k6wvoOQAert-J>8x8Yh-1@<}Hy~ zIo~QyQ{@>FElI|A@PQmB^q4#HS1JFBohicfRgSdG3@1g=Bpsj05}@DMttykS3`mVN zNED|zb}6*^QIsWn2K_S7vtt*(2moo5Uc81jDHCAp*L)dzN!p|r=;RBM5lu;>1gWy9 zTunrZh7}uvD2}12K~X5XBx0n5y**A8ls~XFn^X%_+9W1x+LDMh4f2fI#lA3xD&n9@ zRY^5{r#MK#oOIp4F^6=2Co)6!ByYi)ishD>=6I)$ZA-y^9lJOUtUJjgZ9agD7L<ys zheqDk{58@mTfrwt^O7j`Rosk$Scb|VNMNCPtDA#k$U!~OE_S@tl5mV1xRB1-iZQrv zet{yUO$uUqa+7Mm-dCLm$3~&^khdGInJ3s8vTqQzfByq&e7BkU+_Yc*0Tn*)EPzgL zLD{L8+#0ti<0{x3-_>~g<*gK$@*&!CANNASH{rg;|JM-csO&U?uZIeDpx3m<U;8e& zx9{$XorhK0gijBwYK+4KynuHqall@?<^MhkuZHHn9@0uvvQXvGlE~X>h<cQjz&iU@ z6qht!N-^_SQP^xF;Or<Z@0|VcMQF5r=Oqk}{VQ8Q)T*Y$K{Qj9zBrdG|8q`j)msZF zf0d%E8~Lkhs2Rm@J-F3r+4dvB%$ARs<mbZ7u<yKpB$wQ8nL{KFvxBx*I;KrOkI+#< zV((Mo-dXX!)1IxNw?V5qOB82{^G-{9%$t6$TOab*tO82jPW#UDq8MF~;w-}&=d)5E zY-y#GC)afBw`jn`a7$aqkrmQ;eO`P1FR0Bh#3H5gUh7}My4)34BQCjd#HBApp)}Ed z6XSf9!>!vhlz>oOU8@h)4zwg>-Gtryh1Aq>u0>G&56c=mkmHs@{PX(a2t&z2$r1G@ zeP^-~qn(azq?L)025d_r{s{zB80GkJ83sp~{-gurmd>h9gUe@X_OIg|)f-b?yu3QO zTLyj4M{1Bh)<eaaVEvwB;_*k=v0-m9RPgFD>@bn@71(FLmz}l}>|gQvA4`SKhF$<3 z1`faG_Y-)(9q%#2fPXw=e)hGnwT#no*vTQCd4ENsb%tJsDU%y2$zM^)r<gtCk_O^o zu`>nJX_8IjmM2LNQ(Szr{0=M5^uyw~5p2Z@Zp?=*Du$K%@b&19%C85oADr{T*l;|+ z8nx#{D6hSx6SdBVd5o%)6NE1xGy6WX;Pa{mYb_~THVMLfV1?}~djiO?ME%U2RZuy> zdO|hkEV9iKPl1H^A7!iQNQG|LDFoAgiQic?#@g`D%iVL<YuxD2PQ3XsQ{HbjZiOZx z^r6ghq_KgI5%HFiQG#>EkdAsOw%dj1lO2iJle4`=CGX0~F8I#E99VEW))BLBlVQ$w zZNngrBTO05NfY~MF;m)xESpw2#;9nBmV*n^UR#KvfA=Oh=umtPUYw0j2OJxorxQ!{ z1L1uRlPAu4IVYg7@6E)h8>0p}ZHF~Yq$(P*jZG#UE$EDh?f&?`LnobaiTNTA{f2}B zm|+b`733%dgOXg+yVWd#zb-kV03cv`o6Q1n@bBm@x^qe;an2}4)7$;E9h}Ef+KFwS zn<;kF-omLVHE-uP+Vkp6Ytl?52KCAji5$Nw9z{}2WFF$S$}>epS=Xd$xta9G?K1oF z9X7Z^vK-4mAaW|xTE`dGT23fp<@70ebB0iuth9|(#^8ssn_1C=&9RdMF>NrcIaW7N z#M=-zbarAP#wVSeDzF^dYZ<{T*y>;T3BFa~H1phC{@=&RbJ=(9-fsX1D=R18%{Iir zVpu<l0s~7dRNsd=&3iG^e_zW|Y`Ru<fYbf{*l$5OWKAp!6-<o!AA9afnY@}>t20GC zxXuC-{@N+{SPM$RHz1$}wqhUmq_8K!CNzh$|AjdS;B$-{F`B)v+4N6r!VeSUTj`fC zURQMh(-0(x8Qx|o<~I;&c>uY(Z|WH4?XGE&l8M|Q-w2bmh2|UxvX~CGu}xOFqFIvD zz?j~UYF-D#kTn2_LU}MWZIL5d40DnHt)_RUbyt?@#U|p82san3Z6XULEyAt@6A(>j zk)5$uZ1vWOZ6dxMFt}%{#?4*e_F<iS4+pZ?q_IXuaaU6A<*<DV8$6d!kUNJB2bjbh z0bw1I{|7nAw`DV89=v$?;Gr!w2uZbLW<%C>mShC}*O(|qTTFwV7D3jqM_l8Q7V%EJ zK$&dh4ckW#snHcyD1d2?hs)77La~pqljE5&0El&e#6Nl$@)H2~a|g}iFvvw>J80zK z9l0u(cU7c^o*`%c+Hb=~AKW4LrCM=vacD~`(NI9XY(%m<@pQOw8rE&%ETcmY@uMB? z*U!W%==3<{fwGc1$`Zi(U0kIzIGzQm9G3qFcO3fo;EuQIao^&htj1<bp&WXKPgb1V zM^m3<-r^)JQ$6$yIeB<4x_EU6U>%NG#fp92Zpkk;UE~pYLK+h7kHj&(bK}HLd>a8X zBG(S0-u6Q|2euvh_^o<;nG!36Z_5=8oIx=Pb{`s3wdL?z2X{nMpP_tCrSXAuDOR)` zX_TTregcz}hYuV+aLUJjORCJ_ILjA%IxH!67(*qvnV=KL0A?P%P<Gc>dYHtra^TQ2 zd{6m>4wYrMx*`Yx(h4`nT~+%i^r=`4P1af|)x{B*i7Z5QU!YXhjsXLhO){|-Hx;#g zxKry@OetDmJ6QLkP}KS}x4JJtjmB;a%mq@Y_!`79FnM*S(q((fYJF&a0Pum3Ytx}1 zivISrBh-F7Q<f<IkL)<SE`U2kzLs~O+v<MLPXEMq*4kKop)+AsaG>gGOo5rA9je?P zr4q94Dn68RXkOqz{o!>7WL`42@D6g)1o-3s6Xx^q0kO0G<aOSiE$7Al8@AATVtJM~ zSe0qGMXhI8K@9PFa37sniZcjC>fh_fJ(=gN>P*9nL1K$oy9-#}{XulYcX-cW(s4@@ z07TkpnYm^Ob^wXB7l_kB3x<7DFabVce*h3RD5h9zI}yU@6??LaY~v>M!8Sbwh#md9 zHzf9A`t~?>28#Gh!2BD|MPXj-a)iU)ciC{4bVa@IN9~NxsCWbRW**+iGJ>5%^$egK z{Iy+}cZFHtJ4?oeaUi)Urf97=c|+F84_H8YJMdA0w=Pmrk7bIx?Ce%7dAcOI^Gn1z z$L6nn8dOo#Oak<%MOeRXmSkt5e=3ED2AFxVq)Z~>s<1UJ(-bN2@EQ>xM_^eo&sqnB zh)4<9<Gmn2%@N};BF7h1vP{!qRlP;tzaw+&ff=^UEGqNQF<4vI3IHCa-GYd;#^4#B zrQ!p$raSGS!;u^Lg{T)>7^cgjH=n>a33X;kW5gb^O<?O8cELaS6e7Z!x8p`jwuX<~ zxxV!dd&uyJcuk2W;(Zefm7DnzMjW!SA9@u7Ye`}o_7C9Y0lW;0*BCjY5fzIZp{3f$ zo1O6)8#uFM6H6P=X%cE87n`1t0(d>ai5k`K#OEcqW2P8eg0MBR8Pnwb%+yVky4oBB z6+)ARy{HB4OTI~A6r#VX+BDQz)ndyHL3}r%6RX6`T*MyF{U?J{p?~<Y>j<5Z0t~T| zFt!8XCd)ZeG63bqC|oVTG%N_njN2LYDz1F#;4Z~S4C@%zl7yfNq-vI6b{`**dE<;3 zDY+WDRJ+40IgdSGpI6=h=}_$OryKEy*^bCUu;R^(>NgzG$(yoq_@)+i%wIcD%4q5i zutW($dW@p-2|FQ64;8)1{~KEDvA6i2tM@<h3=HjMMH*moayg`1q@O5}j=!u($9E=0 zdH``FHoiQANIglBuFC~j*kef;tIfD+B4w0rk!~bTw@CR?6RC^~$&#L>=p{wUn2D#5 zDeV6!60KNVtOEo!yq&s*D#s^*knEzMo)iO)gwd&_uC-m?$Rfcvir9Z9QBQPtg|@Nu z#XFj*LRZ@1i!toXo-r_q??sd-hYCsSmW(3MXO6Sl=Hc7V%uQ<~o01(U>W+v#7Tv*& zRN%;(oZMM5_`x*OUYZFrk6#@+1%q#nh`LjQBiKhDJ74Ip{SYHoG$yaHG;*+fg|cp2 zd=!lp+M^k-fi{wxp}IAev=TCX4&OcCgL|XyO`rwhCy-npk(gMQ1_&!RH*Q}7gc;lM zau1S67a-HwRmGj0-0Q;aSJT)V%NUGNVVb$(Jip?rVvj+lF(+>~B7X`ZpW%+hp5*?T zX_$@v^7Ln5x9H#ue55MV;Fq>l@TIH@&9XN`ns~n<4QZp=wd2v+#MUS(4zl>gTWv4x z;Zp)_8H>%@L|YF%*(l2)uJjQIC)<7nL=<ioUchvlK#SN@0$7R(rG|&N*+QlB0O5wv z5J>otcS43~KNv9WI|ATIs$Ri5z6ZL~qdeeWc?crc@}HT4x9n7TAslq9xGPJ3AI_aU z2xtBXqNj*6LkLW3hP3u9`3~NpH+=7TYy-kp+-dlzc{&Q1J;K36o6bms`8TZ|1%}~w z1Ag`RZAD*WaHt*eni2S68!&Fi(_sGn5c}>1|A?SMJk6MZKe;oGPinUj-erb5iNL>c z_?s~Sf7oehVw>S3SPh1-woqoWf`nod=b<~ce5S`=yZ8*>$yHjQ1RziIrSDFY7aI61 ziSG=0{|yFP*2d&$76ri)U@d$dR+NKT)=Fm-Yps>zW31+2#3e$RxXr@~izHc8GIt(g zZ{*O?p8qxVHP8Ez;H&bj>=V@cYiA%uC=7>TMV#i@g=f^>C~Ipunr@5%p>XU#EbgrO zfQxzJb<V5AvpC`xb^x~`uiSu+9)Ns|VA?<^PurkOJd8Z%5fAG<;s^{?#JUHK-G>Ht zxr(<ifuQ)c7I+Y~D1N%?9RnYv;UigW@kF#p>;tbeOfQPRi#;V|(H*b1;#)pE%h7J5 z9K*9>`)kwW?83Sn$PT^0vOH`yo;pvC-|;!FJNFSSX+yzKT_fJZW`P_}WB9k^0kkC^ zK*4t>7zm3KMcBY=J;{<l{h?yxyb64?0;QOgg}*z{BsD;dGqF<@{WrD$zk34@`uPEN zq#7dyhnF_M^h)BEBo37zld4d(eOrkMm>_t2(*e8_HV1wOw+zR>|M|7N)x4fDN36|3 zNR0=N>^S(0d|D?_pCOL5mSML?n+VFi#~7I3GST!udXJobP_0CP%^dkxcD^kYwGc@n zE0C(3@k7=Pt2`q#zo8A&*s!w0_l3o$D4|g7U2n_hFtnZHZQt3jcn=@M;|UdZ@RkD* z8)_+f^J*N3TKh5Jc9VjiL3q;>GVGonFb!30@TT<=_CpyiM>z2Yn1F>rk9{ikyWWVU z>fcGojcZjBnUbXckvO2C6_?1O|FLUe9o-x_5w|X#1LLrkX@VEkilHLMRf391FdS#1 zNJnOVX+DUkX%Urr^U`4;BHzjKa&rel$n|s#d7zn?(t-dv6yu>08Dr$G{emZzh}RyH zBF>_S(O&to!|}63^Nm5gOb3cBU<yW*$@qS5^?5Y#Zepj_F-zUq%V|kmgOyQ!a-T@U ze64BA+U&CKSS9p8nn6Bs<U>j68)Ow-E^z&pzxG)?z|dhuRL+vD&6TAvc-<Iv-%^dc z%y1}n3GHi6lR7g2Nw_HSLMgYYk}fdRekmZxxQLdDuuUYSDEr?)dI#YH4`bk$DN}p_ zWd}BfqqmlG9&6Dsv41xTpf>ly&`y8np?3+OE?}JbM&faZgb6`w*5#<gy9*}vxn%R< z9J0u_FF+$m8#75cpU3LG1=u0VHe@<xg{C!Cy$8ITfB}>l9|Ps}Q@_EEL&%HK5_?fQ zLNCi;EnsNj(f~2-p9h>;J3asli7&kl0;=}HkyauV&#y2f(YmKXF9&-G*@3nrMmX<K zNUl63UVazV_hVSeAWfJK=>Ou{GDv=MJdX!CKVbM76Qs&j_;F!9(CuqwB{<n2y; zg!&AN&9(y@cH)_kgJ!DvsF~`-T0FygIa!jMBr#)2bw*}Ic^NkJcNJGB%u|SFO`Qo- z+{e_YqR_{*s3mQ5to4#HtX0Tx;zyF=(wR=<D5GPuQX&fsVGb9Kklc9^wMV>4VT#Z^ zOwOo8;yBU<d*^OMucyea!WgLm9T<0FJJ{ebZ<Wu(wDe<dp#(95%#q}=v1a|r+X~M3 zC+>?~8sLBAS-dJry^%{0EB_$Fi_&79DgKp@sE15`KC!Y~J!Hi?eg2ix)k7fG+0Va{ zANCieF3O2@_V=&6T0P{xH~`!hv{&98Y``f)qNC-bkT@6i?x_3$mhbBB!k7Dbb(p}w zMuWZhAOOc=bS}oeqebnQOqk=ZID%f#Ui1+6#n-T4QlH^1RPb@-0Dd8pI$}SHGFtFt zIZV7i{=EcH>}O;v&aKK@W&#--_wX-8wyqf=7;<bhF0x7?h2$t6&0S@MwMD-7o{;T( z1NTx&`QpPsM}#p+3wvI#!xvcAIub6JHgEa=EfN<o(8m+nYNi=!3^PIG=R<E|z0^`? zHa_tyJiUm%x+l>FUB6r%c#-;@*on9DM3+PzLo^DB=NLjEdlG+T2m<yb{x?EcV!2&3 zCqf8zi^CCwKOR7eiJzigC6@#eLjaOlyIlG(p}Xam0CIkA>Wg~<SL{|_kmK8N@wtD) z&HR9{HT8Keu8H=JleTY^ID_e(`p)!V^Ze#=aELEp@LBn;;67|Rm3Zi4;ixn$rs3Pn zx4EE<dmF2*8EdP7B4GI#bL(n7Id%-2j81aHit03Xyd_|;)T(jpXlgK;-Ddx=3mvf6 zf@Rrn<11%u?-{a*J7=Qy(5s{N<5zR93=RjontNsNUFF+|ElqO$M=AD@El3qR689tG z2aH&QM+4m~JL9UTU3(Q5t}(xmV%m>i^(ezDwsFnh#HQtTeq+@v=k4&#b?p<#f9xVw z7j`3nRer+?h$A6!IJDwjkgUPFCJxhr+?T5b{Ej2x^bgd+X#PgIX`<x=BkzP^%}f)y zhB$$)LwA&pBS!iu7n%DcT2AF1!6_UE@Com<G*OPK7m=xEIH^INO;jt%fl9EOS~&eZ z5VU4yhFVT5qDJ0_`5U>H0;xJ&B0<BNH$;?UmG(r-DH&U4#9hwK-&lwUc}EO!N|a+k z`@<E-nL8jF>BrT%VKp5`T26&tJ`6^jCEz3Z8x6#=rez5%{2WO}=_YF8btwHXSVPvb zz?di>f*qR>=PgJBTQ)<^5;^60f+>d6FF~02ptLL0@}Zlbvj)DVZp!~}wH>9wYZQDY z^093Wl6r(CY*nN=JQ@Psv<{g+xilV5|A^8l%Weu`o0nX<Hu5gz|2M_XR4!q)H^nG8 zEh>DVm$u{<a0juUU?KDUMX>3}5Jbc2pLHDRA?N>=dsZqifUn5NJA{rm#?^9X*4Lqz z=lMYc?r84ay;<im(Xxnpv&Mc6Kn%YRp-Xa#8?;)0iOpHq&y{fvLvyhA;cMttV{_Jp zo0t4$#Y5R`t>DVE|G?c@Vf#;Nch(Zr$gsWPI>-)lMlkL#p#mD#b82_if5@F&;*+rW z%+=iEuI4(q>^KC~HLU;S_Nf)e<z~G<sO?$M;N$2Aqm+b96T0CPQtUWH@oCt8{u@XZ zCnB_b;Ko$@vyQVD1s1QxYw-uQKkE-nz`t^+Vvn^iS!7`EQ->Q+2BU}uMfjlO5cpEt ztDFSDQT`v)1}*aCu%mdnMkdBo$Y{$4Ak}fm<x6hc%5(V|Dp92cu>ZgW{42R62eEO3 z)|cap+o_Tnmwa)P7IGpaMJX(4A*8U7mn3rjAJh)5<B-tTB_~W31xu39WmP+%$0#$o zZAGfHq(wV(QK>Q1kQLpj6BoQ9zjA?L{TvlRDle>FSX}HG^Ru2Y)fTM_DbW4OQHE6l zy_d<sL^x$2RsI51-Z5^lY5A_o$4^Ib1Vi&nwD{PX1wE7o^LaFJhP9qjwVt4emHF#! zwj6cTZDB6$p!EcWAvQ9mw0AwT;2PO-A9w;c(rk*2(y-eb8P&h?Q<!vcKxwK}UHjSF z5W_MdeQ`WlqZK;E3PWi<^?OhViw}gPD-D6vOmNiGC?c^xGBIgh^2;-ri}e7AjpPA_ zQChZ8`e(F}v@Fb1%W2n4hVnk^A#x)hACfrRZ1Q0*(~q~DGKAzNv}Glvop(fRBz@D~ z$aD>B2~_3>7_Z8Dq*O+$M;BO+9-;-*YY{i^MD01g5RT_C3NDIkL-suwA;)Dsc(_}Q zKF4=kdaeAF)L@N!Qma<fI7t9=`kA;FduQ*twB-ASHK$vx(2ytr(tLoco+P-}2MlG1 zd(#m2V%}K{1JpViZDOvnr#!##i}n=T%f^nntUX27^CMp#_mPdlJQ?<peYA8VxQD?* z*CCoZJG(vjiBWLLUwb=yHWgj4TmF?95Na3*zOXd{r{<s{U2<%KR7O>rs;;m?eijDB zG^cLmKbuX-s@jPfh}I}1MuW;()GpdJkU$+a?4MuMnvxKrQG`%Etd?SH>jRfU=#=;( zICU${zmj`~$dKDIsmlEY>mZvaGSj0kK-!e8!;IoWvG6$)L6_hx*acs%(lJI&4{k0H zF@xM>F8Ns)&FPS&nL#7XY=zSC`2m~Cq<(*xB!{8|MQ%k4gG?ql%#s3;F{MECc9qGm zQprOQ*v*HNRG2h&rakPlu7y6TTI6UG>IXn_s^(Ov<846Mh)IhqO9HK;xR$nY36$C~ zaI7iaO3fw^G#O1=6|^xd478^yP-NOhDzRf$dnhp~!xxnp3T)!ss8*N-HdQ#bWS7_a zT@3`|7(K141m@YTQp%Hu4plBXCNOHdy2M6C#@rt!wX~yL(7(VKF!T!TNaBCs`^4_` zahf@3u_v^J+h7y#VIVK-PZIv}QAT>`EIQC)8=-jggkF}U<`9a4X->ko(6A@|9aPZo z#d=C&8O9*``FlK{j>p{^)_100OW7oA14j-1$42901stDS1L7dImt?Sk6v1|;g!^{f z05Y-<#9A>NXiGU`I3s_v;{fWnoTtDyz8pK?oT+H`Ui{j@++ObM2j8L&SaJY?4;Ji< zO{9k|KTbdy66aU}`#0h>fC1}z`7WCMDL&vx;TVEvVzrs}YIgkH@dU;P128@qpqi1# z<=Dc+GaDh$kmC!+YdtlW@-KM}E98dt*VRk|2Ptir+Z?bDus-n>BQFsWuZ8O08-Th{ zbN7gKp}g1l=BR%Kq~Gw7`~LKm2%Rzg_>KjqM%H1DXMCqoFgts@-~JR*Tyb#`it^#d zrQtR)5qm(DliUtC6R%(<FgnS`z{}d8`YwMWHv*}jcGOJnv{r)@St~mZa*%RVcJWqI zOj6m88rGjyF{aFoA&zpaa@6f4a*y_DH_m3nX*r#jfPOY(tg=BxW9t5uQ#oSU@F>Dg z>L}-3!1sinKP;JYEJKnq$1MkuHb4Jj11$N1O!8O1jA;7M<+NdK;1_0MH4_AfFjge< zE}m+VJ7`zaRbw8Gra3KElMM)6jnIH=q;nvo(A}h%(so3#HavkBVm0~DqIA>c&?}UF z8ayJ)#08ULH5tMYYG`;Du+!&|H^j%_OPcwkF!N|;Q2DWyA1$wwzoYp!M=@c0F6;}m z2uE)<i6UrhQF1V|z-@fd_dqUmf}gVK{Q^NXn3;>Q3>#mx&7ugSnW8i{zooETGUt$+ zPU(Z*T*(2WJ@=w0!eFK-BkwetU$s6j$0Wm14=|p&eEW-cV}a1uc;*IoJTn}pb74Gl zQH^KXTOmW!ep-!Z{+g`@H1uQ}wx7+u4pQVW!oRW(2E?#lP$L?NZLnQUw#n~77kaeG zhtUuk)_=(n&3jVapH?Fp^q5bpW>7eE*u|E`^&VU0u>Eqj9MW*ay26R7hBVj~+=U^{ zU$f<y=4myid0LHWu2T%sS|pnZFnG~zpvj=Dhisq^gEQKhWD4LZ|7kU*k-ddv15Iw^ zphhNRU^oE9f6v=-*yT(OYLc7{MMlKa<N`uv5^itq1vRQU0ddzz(e=$4JFGo9Q=^)T zLQ*6XO4eXR<|c`p|Fjy_oTiZEu;ytsta+L=RaIGrTKTcoNtLyj;-_i4psI*6N~)G{ zM2pJ7#(SAtDGbaoqDR^z>Zd)Us(}p}?;_cFvkExvevc|};c`^~>JMw%WTN7>hF)gd z#p5<gp_H+6Fu1?#$GrSWetEKiO^7m>y^UMaIBC|i2I8mnv^Mbb6CoQQX&H5Et66B; zRV55*Z^df$-N|ak_OI+>+SZ@4a8rpV?d>ZZBJ{T7FkrB@m=AKzpJNng1*KKBHVg$R zj&@`MJ?u_T^NCcmnX1!}(AF|j0l>s+@&hX>xATY6U!y_A`x<5u1D=CUIk8F9io(d> zK<n$i&R51Y{XL9ug=C8cm-NwWGik$`54)QOW|P&8ZC<h-J5~~v_ybi{jJ)^qpJr!J znO#mG(MkqQdp@kL%Kw8<Fv%<QQ>uA4J;#jqqQ@>G=s7b;G~@GOb?0La$(rwW7enF$ zR1}A|4%np=iXp_ii21Eh-iJp1f3b6ph?sSIFb$pnIO?f^I6VBeF9UPrecN4*dw_5m zyDP^%=^XdqsQP-0dp^Xt2fZM+AA7?%)-ts$yDb!a1FKK|+EMIJ*mv<;4*$vo9#m~D zRkbxabHpkq&6p!~*`L5Hg`)|!8uwsSjxI%M8tSc7!V^-xrF~|E&%*Z7i*5|r%jP^r zLQNPgy5zK6{*`AS0I&f;zKc+ev>UWNeCVz)PA8&N4tSD12wM$zKEtZEW35!WpQCb9 z@nruYscp6z>bNXi5JlMOQIxr)0!=%HIVyRp3L}=JUhhI!sx(?rSEY9u`A>3)15WiE zyIGY38c~`Fr48FCQAHOsSE`DOB7A#Ogb~iqpxMJ<q#Xn$a8y8dh;v#W;y79@&1A50 zp<z*p9aD$gf7(;`E-2lT2_j~4h%?_;nQvILT%Dzrz`D0n)E#dd>C^x=qbw;zq;$pn zG;2eRETcd1QySS#VcDo?kN|kbz@X!xYj9|3_~{Lg>42eNq`V!8=RV~ir4}Fn<@lk; zSf_??S~e&p&d@lD|HMj+RNQfm1DE5S6Bwzmr`$?>#tXe7M=-BTcv&`=Cmi^3()j`C zppiC3A`zD(8=j}zg&_@{ctpgT@FT$^T(bTJeMDG&{Qot(91pjaRNX%dhxUObxpZTf zUyRzbvx|dUxefM=XbA2LV&5oEn>GYan0g4OgdR;bFo>PZbEv1;zQMuQ4UA&uq0e8N zT?4}StO4OivuTKiabv*a*-s&8c$-A6bi!fPW)~x6Jh9t}r)lbmy-_^PR8Kgeflu?) z(|SC~vwMPVvC}F1a-uC(hp&BK&aMFhY5fs56A`NMY~pz%p8d5GP(FkbD>eq35dTdA z0DClhBQfEr<SE>FHm>z-_Ieo^CndLC+)Vkuoc#nKVgM*`@sxm7F5qPcutoxUByzn> z1Y}H<QX%m0Sr<;JWq<&fcI?`n=QC1sqIP*Emh~ULQ##V%cT3}~5ht7zvvD9WkAzkF zgxx4S4_%#$i)}bO_cOVwy8LJalk+$>c6ptNlQhf8D6?#Wby?cjLOG(xNqLefK)(ux zay>Ob#he7ryt$Pxx|(sYI#oqe-+v@A&?slTw#MhXrN#(KHhoD?zyk~p4{c-AQ+8fm zVh%J{F7!cb;5Nj7+VNw9C?{Bq>;Tm;4bM0)SH>~1%?VWmlbd*n<#xdFPi#ODk*-Jl zwXcJE-q{yXLm>`+RN_*WG!=PCS?aw;K5uutPBaK9zb}!_ej1Xka?295$@w@cxpJ%R z6jCK3Yn#TXn+dQl6GKImbx`HYt%->Tk%~I&kW%C6Hj?ecbigs1@18$FrT;v_BdOp8 zBZ8wx<>W?B69DH2#fJ3^dn=9^7>v$sw;9-!iIx5yh9G3|xI%m{fsJH%hlT4b+#s`f zA@10+fd7z{BH}}2z=MxW5WrDyEErUuFg9Nej&n-_zHEIX_I|4EyE=G@)wvz!AzrMI z0~R7qR^c3mr>Sr*!!uNP48t>3xX{W}wgF#NN!!p&+Ymn_;<FWk$<&$hJUmz4#0r-i zDS5Nzp{u$ACY)qc4o%EN&ZQl$c_@{@Vyx27U^Rx51bnGc)t0xzj4hjnXS*Ck{I#{R zj)$j7tFqg*D)uU>nN?MdFO9H=w}wwRNCh$4{_-p(u?%&yXeKb`p=!pf@j`g5_(Qz+ zhkO*d2P8Qe4f|6(cnLZ@IVQ~sDxk6><**~UrftHGoPBr(I$Va>)OHd}`(hW@#m8Gi zKXA`T-b7N#^P2wQdC2^1!YFu#gqCC9s^Z03HchuEFc-3Nbn7E(WaZZz<L!v0Y|17E zyRAykBh9cE1m~!G)nWI&K4Xk#`=#3zXJeux`}%PWzA?!%h(82-VOoyNrLd*gtEwR? z%A8Vb%l~gBcURshgP9Cd<_M!4BKE`1&Y+(B!6FT33StYzAPp0~WN1Pd`zf25F<~E& zw@t0Mxi$$qzlo18RtW`v#KF!=#=r(%#`o9m18dz@sVCW}Eo+`b9pA)~4z_}ms!T+; zOkXNBL$^&GN!#R{5_);t<gn^6p3H_~MrF~pQAz9cHhL%B+MukH%u8Y`-oOk=w<jzX z59*r-YW@$e0S?YT!o!@Qq(gedzud)*ex$*l)Y!`)@q=Byclo+pn)C<g(&;O`>oq#W z!L+yh;g-B^LC8&uJd;1->er2UaML2s%;z;a0>W&pT{^^J*pHun-HZp94%1>f-_Q{d z4&vw1Ar60N{d-*F@#NCso%zD&ydLJ)y=Ecc(qTH}iE<r=pL_iT0phrL%scbOG~H_f z0xk~W#G&j-&%Nd%;L;%6rNO&<RUqKfadAoOJ1zq5F$ahI5{L4`r>@e!IdOT_<LA<0 zTKw^u<uMFDUIIVDNXPw=XVM}cynczFONTg2i)Fz(%YfHv{9HP`GylY;tnb2)*T?v| zIDF5txDG$kVtTyR;pe7Bewi1_hP2%B=ZE_)9o|WYxGejn`0@G^el8uxWthB>-W~Yy zdJjLB4sn<cWka4K`0@G+el8vI%pY}wGMbMcuQ%~?>5vbX7xG1XUNpll9o{KB;^pCY z3x2#V;-}-d;bDM>h=A+w_z_Ni8J~10JM!e}{vL$gxJ;k<V!kOq#^d!7el8v2kd}-4 zAi}&l@N?<#J>xPxrgbZRyuJYhmyV0ed{d6o@gvO#9UK>rFv^&;zKb8r<pu|bY4ArH z{87#i;P)N;zRa~?R$1AilEBCtD;AgBSV2ddH<rLR@1lhxOLFqY1U(h=7R;)2UaJ>3 z7SCFYNTp@K7&Qhc^6Ek7A0YlSyn^p3f)%qCl$Xt4I5%+p>_GXV`3oy60;RJ`<^>il zB&1}~;?jyQrmOg$#Hgj<?t8gG&%p5F#fugPfL^(1G3mk2aAj#=&f-N20@qiJ;N#*- z!X>1lWbv%Zl6fQH@0_9t%wJeuRT(Hph8L7pmM*UN{=h(B;q3W{I-4Qnv)l<TDJ@Z< z(((%UFb-Tl7YGQ?y1zn&=akKwiy-4wl$Op`p#}37mM)nEY=Rfes_uSRxUh7o0xtxT z3V}rB!qN(dpv=ge`DLYnZ(d*VO}DJ|@>1f6EUYY@i)>LMH{I+Mm#0TLd=c?x7xACq zjT!9_92kLoW>wCY<@5aj7>4j<!V6~yn5`=LvLaBiC@^Q%V$Z;zTtE9BNG5Q@cljSk zFPS&L;z0&;5OwyPFUjYqg8ZPTn8u>_Ztj6UDxFJia;~2f418DKdMApMpdfS<o8+S# z1gIYM`ijf(h(xGYD9#>gHPThPidjp#b*^#|G!CyOL9^Tl4vdFn+#UYWxVt8WJ*5km z1hnVCt&pW#y6(O8wkh&@^EL%(ckXN4=dlW2T&V8l1+VSmRaU^kL|4~GT?+1zlN5Mf zE}zG&u2Xd1Q*^rCD7<d--rN86L;EI$-|W(VMLiEG{N?F~ZoBFAQFXg+Sw80v>rdRa z;CJJS_g`_w#dFPGjl##AgSwWx&$#nl@`u;U^`C1a-8-lB^q&ur^&cK_xpG)@8)(Vv zqMPEx@#DWA$eA={QaBKuzp$!07#KZr%t$AH9?uX(z~lYbA9=jhncizM2BfV);+cRC zb>7KI5QGWKbzro)ybAF%7{IlJOphCs`B+MLP?nuKZcyM+pD`$BWxvp%+*tn!g9=m5 z3>=gj8k7?n6c{%s3z*{urH%WFq{{&&FWE+g24%89e=i{(&-ZBXfo-Qu9F+BFDq^oB z-B`cd2eqc9PE8poDTZ8%A+~2D@O#^d|3^77IVf{w%J?h#8>>?v!%1NM!jJYhVgpi3 zQwAc(;jd%?H-r4+;vmLj4$6$Bq`WpL4M9B8#~iO~DSYs<It4j+EHykRVEe`m%6YV( zF(`Lse`C;?*nsGuI`6W9gT^4&$Sb6f%quvHB6_7mYb$126)ni?G0MxKHIcMJq&0ES z`qb2ZzROaZ=;m{~L+^P`20?Z!Qzl-~e**Jq_lrE*AGsVekh!E_D3?zi{J-)+;!n7u zf3d=s=pRd=NI9}>vnfAZ+%uy1MLFpFBBu_&slWe<Dq=m`2GS*+GKbFVNjg%7-TCg8 zVd}(;FVZnVCki^xI&?m9^kOyj%_)m8%c7f~iG!Mlr``Y!xqN9LPoU=`9bCU-*-Cjt zuIN8*b?Of(Kq-*8BaoDTcjYJ}T;`9W^?5$-y38x|TO7gndYPK+b@hCaDr<UASUMh4 zG&*kG!~r)F?mj=@L}MK$eyj5=>!=e>mAyLWLA#}TsF*#kZ{smVgS&mnLJ9YJW;$ge z>ndPBa^UOPF~lY7AnrfGkNgy)Uh$H34fi?t5uVEo;*#|Y_XYS#e0ETA$vUHgkeWlp zdFJh5{D>cL44bSIfW;kn>$M2rlDd!kYW#@bJe5$7N9rc-zr&C4HFpr|=sxaG;pf%L z%grBgQe}^np`KT&hZXaSSE`2<;fq(Q?2Y$?|CfAB|3Z$RbKtbi`t_20NSB93>+m`U z9?*dZzv{qqdck)(aM$j;ubXAyi}_OJIZ)bk7ngTsi_<-0bRfdV<a4^Guot{dJ`eQF z>;?bOffx3If9k+p{dZrVci;gR;NE3b9GGm+TyTE}UhD##yJ{QKWm}-Xx>Dk&dwQpv z<-q6Z$OvES(68wQ&vx*8r#sw%SNFotb>P!_!N2Fgdx1T-IPjWYFG3D{RWJBN2fn5k zoTqzo<n=@^_#_9uz89R|rxAZ<FZg{9{Hb2>QU|`V7o3l&a-`bx#RI_4><N-ji~E58 ztPl9ZeZZ|g;J@kv{u{std(LzP9G-HV`}#icpX>wvmp<VC)d&2!KHyx*y_|g5XSf{v z?|s1c^Z`H62mGBr;3xWkf7l27vp(P#`+)n<4qYx^U+DvWWgqab_W{4I4><csmrHke zAMi1Kz{7pO`RT^x=uhecKCKV<j6UG=`+zU*1O79>uS83@ezsC@*%w1_c^~+q5BRV8 zfd94+_<F!)x{hI$eKxWnCoo2qcqT2ne^J@Q(n=MW^uYXb&yQv;EUT&}OpTF4oB|p- zzhd#Mk)uXpvZHcjKHkj1+{DDi^Jl9UqXAi3I)CmwM3T`ZrKyV+KTx{ZV=Pj0F7C{b zM?HFyQxBdZOrDftPJ@ZMVM$^B!ucb=mpl4q&&cTbQT)s2-)R2b#J}(HFHgS7ldtk5 zI8VU~_%?rx{Fia^6+}^z`1ulllzcl{5tnaAE4ch0Evb!?|G6Zl_!%vU-6SD5<q>|9 zj5<oeC9#`s@>G<}D!YH7r@WLiO`g)~`IVmg?kig~_dZB)er2g=LFs}DWP5RG$r2B@ zVa%yoc%KK-n9a$x*_CRF%`<0lDNyBX9AlJ}{|q=~r6qV@j)|+vIUY<!Rd^~YXD_O% z^vs!4R#h?2Q?_W~+@CHeCyBX8;y$F~JeE|Jd8!s-2JHbvSzK1S5Ij|LlESm791n|2 zXU+DMlr5?#1-yLG(lVD>`Q$z<c%Y)P6y%pKW<E;pUtH-aT|5UdN~_CV9GN4i0Z1;y zESb_fna?Gqi|@ZrhL+BPOu!(fHporoqB4)1a)O%j%RgRFV>z#j6)buEfB;;*;jA|< z{Obs~_`lTPoJ)1#Db84iui5u^;YAw!2O4~q2G{YoYH-dAyL3)yaCW6#_{$tS;p(04 zRnAbNH~el5&dC#(&iB$JnJ>^;>Wm9Wr%=P^o?%{uhwyXhyxI%yu;;lNV@O`aABUfd zKUISlYVaxzPWo<-ePu7WJCE`^4L)9@vq^&+8obGYvnS202k_(dnub3X&n}<)H8>}m zT=)$RW4-e=SA!R7_<!mHPA3+;NGFV+OFyB(Cus1`9k|QCiFfjH#%rXb^FL67>-+~b zxK95T2kz1@cgPoN_&WXDHMmayf8qdIUgT#Yer~?D^Z{SU#Rpuy<r#7sVZxbLmrjEQ zFVx_(x%h&sce)K4d>r1pbVhL?kBj()__^@MG`Nm`q7V24F2dj<9UcGQ`hdUgz+E}J z{rfjH{0L~d{Jf*VZ`a@_H257F{FDZdYVdwe#UY<X8oX75-=e|WG`McBCO8ukq;s8y z|L9lofQxX}U&i58%S9zzz0<WcxNc8=*$bYfqI;h01$XVt2nT`m1NgaeTd%=&J-?m{ zS-6O=+r!^z@L_o8(wWG{02lGUiJuF9M1$+{dCP&be5tCgy*jVq>*f1*HY&JW{2cY@ zIpx5au8v>j2$t|~;pg(RS%d5RT<8PtV`GDhbaedRI&haCiG;tWd%>wIyqYvRI-gn2 z{EtiLE`{zH?!bHJ%hcev1J}*hT^d~1^T`@q*YkTcxNcXsJ8<$t`(KA2uN@lxSUkJw z?$O}4YVgxkdR#6YHUEIM(|`m^dFpbwPJ`?D`nCqw^L2v;*Yj1Y!SD2R^Z6SMuD5s3 zJ8(8*l(jqG_iZXSF2cs)=jL~+24`8h@SkgNU7qVTxZeK$Rf896bguj+9&q(eH>|-K zbkjXY<;Lam-zuLlCz!1QF5I2pe8GW}zFyx4T(9s6*Y$jq2B!+U>2B8GB<aGpYj6f# zxO88GXVU++2LCo6a1pN4ztLGhCtPnI3pMx;@y?~65yS&7;uFP%57*$d87}+>8eHdd zf(B>M#ozc{JmBh0zeR)V^iODTo&JX!T&Mq&Tt(k4FL(a8q!-+s|9#GZlOLK)m(ML4 zTyLi`@)Uj6$5i}$>d`aXf%lekaFjwIT(|!i3d+mnQ$688r(W=K=fzZwj$V$H8vIAV zb@_irgX{QjYw$@Le!qN`5c!;}!E-eD6b=5b8vJez{#yr5`DEf(iXX2hH8|~ID}lJ4 z)#ya<?DAiy!F4;<sKM{h@ONo&-Hz?m;9(8_7o+iji}@XnpPTL<H8@R+3;&x2*Xwnc z2G{8<ya|zUk-m=quNqvZpYlD4F7a<b&`tNN8hnHX$Ap5sdh6AL8eC6zl?G?kap~{Y z;JW^Q`{r)?I-k=t_*9L~PsViP>+nhqK2pPfNQ2*~!EFs5(BS{6!F4+St-+^h_>CG| z$3L#YS;bvBJXnAST$CrPvJ0R3eL@vnxATAQ177BIR7gjc=bd9E8A)H4=iM4S02DXf zUukf?{{F2G`2S+30T<KN=|8Q(19<1se@}z!^auX{NVrHxhd<p1{OvyASJK$w>Me)+ z`hb^f@S%w3@+ma9-mdM{;5z<a3Yn@(m!{68^Hw3D3a;bt40XeG`*2=^PX~%ir)XR^ z{*N{I0~%b{lUFpjj^Coe^>i<4a2<abJ3Y8k@Vgs7m!DDxPJ2tcY7zlgxrVRX)z^FB zS3CFz`oMQLfe=l%!vhSNjO0hR!x<V}x5K~E;Cg+0OM~m>a$bYeguD5jOkv?7KRTU7 z8vG}C=i)Ed;5z-)8k{EF#s94ar>S<~f6?GHnJ#>z2A`q9H*0V`-R&A&w-47-X>c)L zG_fxId<}k`2A{0K^>$~G2G{BTFAc8q*{Hz-8vSMsevbzKK!ekix_lZm7P!cN06!NV z(cn6rUubY$KF?|Jdo?--9Js6J>zNR)!y5irJiF<>ufb{RT=)mQ=rnst1$&e=e4Wnc z8eFGyy{Y1n4PDMZ)!=&leMo~-1zdhaAMj@#IP=SX)Nk?QRo4stumXGjuF=u!`+g0s z*WV)=T(7^!HMm}X2a+f*=J!7QT>f)4I90=i7in<4-&js2aFLFVzea=W`0WmSAn?=h z3pnNenTD^ISC<CY%j*GV5*MSV<LB~O?!aC8osK?KY4|$*<r-Y4FE=nb^sm?G`zb_R zOgD(1o9<8zo}<Bktiivd!LOT!2VA7Xu8K=%xCYnLE!N<Ax=S>;p6-hpTu=Aq*-TZX zI}3L=-Ia4BSn@MYga28BhX5a{&^()Z!808AOTFM(4*Wnb_z(wv$6OVl9PY=@<!8DB zXF0OIJcA#v<r;noo?ZMS8k|{l;U_h?p5Lr_q}Dxe_JVr!eA9uGAF8}dXSfEZO1kho z4Ng^Z;osBXQ~?)0R)g#OEb9gDbk>_*=>>P`?E5K*;v%2p@N?l8G`L<~10Eo@!YAA< zuPb`N-SQgQ3+|TJPc`^N&~ejk*5G<Mo^jy4%kio*a-;as%duL6>*ZLh!F9Pk>%d+5 zZaMx<!`I8PL4)6p^j-d6)8Kb#@ZB0bs=*IvaGjrP761ts%Y|^a9Qn+Pe5T2e`WxVc z`Chk6gEhErmjW8xrAd%8Y?bK}Uhd$T&Ydv+TAk-dojYOaPMEj#PT0kt$pEfa`LAdY z<nE`-^r{ywzB`{bq8HqqKdkNrFTO&>Z|Vhi_XWE4+okXB3(Rr&a^dd$4-Zx5<-*<h zBKd``26y*Eq@_yqB>sA*zIjGg{A@wxtow1t!mzy0b3^!!V%EsY(&|dj$l0?hXL&~6 zUs2&1xp)yDh@LkREB{HPkzDS6ptS5~JyEc3@5Csnz@S=t;2r{gsZzQS2`pTM4<shu zIpw=pBQJTtAzM1{zB&B#L$Ut<>py_l6n+0*R0^HvTO56MU(*)r*EM+X;a8{w5nlg@ z0u(z92AAoWj;s5wo%yx{cZxwp!hemEuB&J6i+~$&?jvv~&ED|?6}=FhM@P+)FF7|r zm@|!*guC&#JNo3laQS!Xgq`@k<@autit#UQMCb0tbHRlOTuy%N|3_h%4kG2pG~D!E z`Ar7wa{Qlj(tq8F@7~<>-Ft}>|4J9Zxi>9Qfz7?(Zu;(>c80Wi$FEtcBChEb-_;-Y z&i*dr=k~^{R)DYdg1daXcdD5i)=`5_d>zJcZ`|KIuwKRN$#vq7>7`h1zFoS%LEv)b zH|CEDW1f>B%a5kcji04nOMZH%%~$h&t`OEZ#+mZsR8;TyeBFyh8L_ig-aP-&i+Jz+ zvz@tI{Pj;d@zpK)-#fnC&UN3&MK=c2m3LEqeqR2~H;pO?1a8X9%jbV?ULcT{oBO@d zqXU7_`8SUmBT;7#Tpo^2Nbz=4^m=~qh4Nv-#s85^-cu-ph0wRb9_tbMIkt<v;x`QB z?S|83IE3}Ibi%LKQ{Ji$Ye2m2;fZj75Nq?A_M^X9g~(AHXUPJ~t6O6Y&VPJ>iI_Om zsT$rswhHwKKOc|O00l=j_$I(BlrLIPSGD_-ZBcu56xi@p5WCb>`QtVJJbizB$HUD` zKY{cgkxAK)OE!vZpRfkz;XtW6AABZNGl`EB<*Gk@vQ3@^5xP6V<8wljBjUo8NqL9N z*aw-+lK-)H!QCAA6spZ8pU9nm)jJ4;aPSNP@bwYK$ui7t*!q1oRUr)AHMsLkhDZs# z8=mq?4~O=M+DOUPQ0$~PoLXD^I54Ca>)rL|uEPmDv7=eBV_6~Z-$UNrhN!zCP6T+T z2;t0(uy|D+^5qSAUk%01;jpG>__}I6&gdBaYFIc72!{diMh0GiO9gd|KxhTr^6^Yi zc<+KIy#5d0725_USn$_ZFf`l0`dZ+bvF(}eAu!w4gmI(``z@hHl}*+mChU(70xn#= z>?WPBg5XXmzeq`~l))>_c#Xp3@hxCYWwQ;DQNlQ{1!uazdlxxK{G4<~x@X>mrsTn4 z$VHr8WQxz=(qRuyFd75hL98DmQYJhv<m|!yCWq8_)qPqs6bNpP2Vd!&bpf<(_`!!v zW;7MPQFD$W#pC#G2jZ(hG*YPt<fGZVwH+0rY8SBJ&0{JYp-LZTa5chor@{BbjSc?V zo$^T~ERXJ)`Ys&Q@U)}K?3`|&Y2*BvBff=HapVkM&EP3D)8PSa@a$|Jgi@AGUg!yJ za<+2dAyJt#yn<^R*>>ScqG!tJ_cnv6IynEKJ3IWg@(jxyoWoD2%Tq3Z!@ck)*@Wl! z>60j$og0a5$Ej+Qn<FbOu#+{%fA=we{C-&=)32w%Le?^z{_|{hu6#T7EKWYcaTE4R zm1E_5Ire^<*;vmPA?eKn^k2sh65^RfkV&h5<wejk?a8kpwVZ>e2Jkc*1f<JXxFjoS zLPl<fXQ0f<yK)^twk|ykltdi5F#|<0;}r7LR=FIKJP9~_yv?An;6tw=En3h}^+e&> zS8?>rM=rCQ$)P{K2k91`ZA|gUPpOd4AOAB#qCRhTeIoTK-zVmi{&*aar&6jG!7SYm zCLEO+yooe$+7Z=CDLPz`?l#~S1U#M&qHv~lpdK2-cEXC_Ve(!uud{dG8L+x9F&Uy! zc}oNl^grkO>MGyWr`GzP&-m&bk#RLlObV=H{M38aSD#7|S4)p6{@R7WJ$1-J78_xO z8ho)fpO|_f5t1ZoWs#WnGMvcU;AIw9g*}@)nCaSoA;$BJhf}Z`Qetf>bHvn3iAy-I zq`Us0+TipbTCshhDe&V)L$-^qQDDf%m?bzpxN0Mu>!jlhoJ_}gyx$bzIt$(+W2JTN zC^YzZeC=9@P9DY*+!e)vP5wyi{dT(EsT~Q8p@C=3hYdvjzX4PzL56fVomU6Z9D^R9 zZfE*d-~sNSZiGnhZK|S&?_I3(83S1J%z~z>gE)-^PO+q2C@Of*y2ZbeA30c)e6&fX zxaTRPb0}KUSOlLz%`I)9a7xsR@GdVrjpZB<`5)gFJD&<a&!O~fq6sed;3+k{8OQs$ z4zO`fw9?o3ZvSIv!DzVlkUu^ZX)ptH$R!!|LD)EP@T-O|4Y%n&GMHIFi!dD-n%2A& zjD|NO$(?ij|FS#kZ7rZnNj&82sho=cH^uAGlGo3SN1op>>^mWr>7Gylw3!DZPitD1 zUsSRKMWzr6V5g=RqRKljzY2%Ql8X+)VFVPMpb4FDy{7=ur}fs#o8ny$=iw}&y1Y7B z55xZFGN2B1-aGA#*WuHe^}V2xanqSH0)x|+zf}a6gb-*^!3X|doRKH!-18I&-4?Z$ zZH$6g)PA54HVuBzaQIja3p6Uu;J7h*ar!BI28D3cSY$;b9cD*V8b-mlmLD>E9-hN? zE-G3f4;ZAJU2t~xKGI6oJg{=JJPbxZgIlz}_?JKbdHAG`lcF6BT>bf!;8y>J->}K? zo{6JY-j0)V*x@uR*@hd|zq4sItVh_e%~_+htMFC(h|{iGk3Zrxt7ucvpc>w-H~d<* zqi9xfyc1GF(@In5^==jN4NL$VU$(rv*}zpjX$YByAykS&rtk2pvupc)1jP%&({+}R zeVCtY>#mQgF3KK7NbExGyf{f7^@e7RT?HKaJvM5WWtX2Cr1Ui6eU)dvWxc>&nLP6i zJ{aGZ6$B?OEpLr=W>#Ja<Hg8sD;>IT8%|g)@2Y&i2u`%({QM)fY$)V*A9|V2flWN7 zX%G*58>=176!zhm_i`R&p6j;1bPP^cSvX&<GHNZzF-w|@?8-Mi))bF_!&Z`omqgnK zXJzmpi!<2#wcmnL0J|FQhhSjfVi^(2UITX62m4uMkKRWY%RYsU^Phk_))2F^M-+(* za5ovnfu6abR0#M(xEJHZFxU^V6)ul)h*<EgV1qb-lHu8dX;B-e5)OlA9))rSo6#^p zPZ4RRX(J{X%4Dd}6u#`PDQUNU4O312T7I7l>NAm-Ae?rWIk{mcvB(~~-<skB)A2*{ zF?;XwS_5uDMj*l%&?|Qi=3^0k1$_O}@{xjXK<Q`^uk6-`e;U6tv+4?#O6+s=u@=g@ z+7Hw`mnlG58rCu#c*mI^sUwM_a5iQw8%mG$wE;kRAd}J__%DTV%<;!h0_7Ewl<;n! zcha87yvy!@Y*^Mn4CRRFul+7tACzen2MY(xk^^S_@zhgStWo*#*RnU*ht9s8_!!xU zmTZHDjEIU;5!99<(Rd2OhC+|&-4+QpI{L1T1?!>j5XA_?3VYz_9Nxb_DJrRRqhBHU z{ipH4KWRkaeIkJJ9Fuqm*;lgK1nq!cTVbDVq<E3JVruHxSCg`V%$3NV2j=BOHfPP3 zi@&tb_&l@o6LnHwSnP_3bMnkij$ln|QGiY>cu?UO6NVySim~v+@ea<C&am#02e;#Z zS$JtRvU5VVadX$-5DVwvPK8H8BX|y$Z&=H3J6bx<*+WuAbH@P~y<yES&Yd%7PH>wz z5b|$m6!pPIBY2RQ=R}iuqvK?K7frBe4t56j8^Jbl-teB3@j}5@jo^nkyREDK(sjcc zMAL6O_H|qe*+cp#Nr!?BhG+xbhG6|>$}m*$n*Xl)uy=YHSR4|vLWS^&KsSB0)lg|e zv>Tw0^F<4dV5bp0gCiwPMw7;Qc6M}Fv*B$=OvAK%*|F-OU6tceh#7S9kb_u8v;+ru zR_7?MxyO`}1JjzUa031f==#sh;W?iryXo><qJ-=TaH|w5I1Fv1-GRXfXVP+H`5(Ij zri>LJ1KuF~wYTC)90pfu<cf^qgyXX8(Gk(0)n_!Td3CqIp$O9rS@(9jC-0SI7y2Ks z3nB&hV~b4A&NM`8uvxS)d%>f_nu1$VriGf_XFX77eWD(~_pak4k!Js>D*}J54V#Wi zS?Gnd;JP8ri&OhT!R?g;aS;D#|LQW-Lmt{cnkF^_%nu>+-Tc15NevSRv$x`&S9jqP z^Dj}5%YtNc^Uj7|pbE+HDtc%ktFY59z72!lNHd)5)SvGkE!q9s`jcO`GcsdGZwt0W z#ZGh2vD?!h-%Dy@Yw%340j7G`nNYz+dvwb37wv~J27gwj6-H-kN8WCyn98!VD0>P! zmj|9=OeqgD^*^=&lyJ&^nsrYn>^^z~ZAdPa$<=QrbLO5_m}*gPkH5_y*;e1#A9XhV z=yozt`JyZP%IxAVcjh6oUM$VqY+2*RX2+JZ;pCUjc$EfK8-iXgTh$E89sY#lJF0#T z*3;k>CDZGV8<00jJ`MfL_<EQ*#2NyD#p%ezv=qI{QP$0X8`e}G`i7{}X=rc!8|tZ+ z=x$pRb4-YT3{}*$M>i=Et=LW@pf&NTf4~}m^a{IkS|~b2ORyOg9`)PRD(wu}e|Y9& zw_dG)0KufxD=2M7;u_=(_H8P>$b&gF{?U>;AWXZ{v5<h6Pekp}ji>ywU1U1`+6Kr# zwgXa!&uTh+IPqt^gV@r%R7+&e;|gvrOmbqYY$U)z6k^UP5^pF&-=NwFdS(tbB<lw| zryA{}<eYrwFfy7acv2a=A2jF<64D);?cXo}{JSIvLzwJFqC5MK=`t#5TUV1hObR;< zq)ozs#2ei_mu2U;k~!70z5hq`TH{+btCH_tOee`Y{f~b{@1OA7h$9(IjOTE&GaQX5 zAK1>(kP__F&RZ!N8BW}d-am={Z5`CXT+!H$$vF9jbs&*~f}^$Qwl7mKr-#m=9E0){ zY8+3!KQtKw(7&U{%ZOpC)Mtvd^pznt&BQ+r)|@79IDi!gMwV=cPStTlgW+7iNd1Xa z)7u%b@4gm?s^$Q}j2&w?gL_T%1iyphGOH!%N#5FVV5NK%b|xu#UpK`$^iv}xVNXPC z1-bM{{V`tzV<GQ(>t~r!F=druFZUXvv%YnJi02}b%o;{4QUdUo3J}b;X>B5JQESR7 zjAT2}a>mgO#+bJOa}`_W;T4Y4#;maDga>kF1|C>pHZa7*0l6lg(J9@AhI&&W!k{iE zt%}46Q>+`qw<2DSTanlcF*)Ne5MEXj6=yL5LvX>WP}dY3BP%5U0#7nc+!w5h7PR8N zti~U!fpF)n;mEH)Mqm3eYQ!|xh-Ua-&A=eaETKQ@$xRqu4nJd-?Bs9|fM`>u*^k3I zgr8_fX~JP6Mz1q4yq$r}O|QrAH4G#%g3nyjiT9BL%-T#pir1Kho6fnCZ5(4x=v+0a zYw0f-{EqadeajYR$sZq$e@n^0`hTRo4SZD9wKqJI43N;2nJ8CNYjx-iZGsjPgGwq& z4w;cNFi{jJp&}m+;iCqKBmvs;5jq*<JjWxnm8-oiEzkSZTW#xw`&?1{peB4JAZh}N zK?H*+W<W5al7K+o|9|guCOaeP_5Ho)m&w^@owe6qd+oK?-h1tR_7<5fF+M0UzQ6(N zl!cIsoqgoaPvjzBz*^!qf~!O3L>$_@uj(o@C3TbsPKR$tMS-My*A&t|3s)KJZf!eq zF3U>8;6ZaQD-RgUHZ=q{fLvFs3*HUvi|&1_qaUifwagPXsv+5@rsE|xTBRg)W7%rE z<iHq<`s5vUIhcrSmf*;wCLCIo+ki3Veggy4W_z%pnH)Tv!Kp?V#AB?3GmIZZGRC%m z(N%)sOCa|=x>!)K^VjoyRt#WD>IR{4{|x6*<u;*kb?6irL?>huJ0a|iY~bhx<!ujN zVm}8zA!{pZo~VUFN9|#q+<BF@6x{@G?OEC*sC7edtqb~~Th(h5!#!$m{B0nhnlOvl zt5~XPiz(`1&^QNv7`tt@IEVfL55(zWG(EB(d&06nvGptqNsqMa))+YEI&d0ox?caW z2d7i@q3#uRhTR8s_a*2Hr(VFqi2SfokE&3w=b|=>+M?H=<EGM?MV*>4HVg7C(u_t8 zokNYi!&n+7-NKQrc}S?fwXXrkoJcWX#K<?wjC{j}ums`HstH*u(sb{}^SZl3%0_hC zSHnwEgG`EYmU#`Bf`Tb1dTT#NFO=h0%hRO0cd=Iy%L2*e*U*b)w-358tbxWT?7mdE zeZ^-u0DB2jwFY8bWe7QfEx`|3Z?MMH>;e)3Lj-DAL$C(_AwGcsJ{ZL=hr$ML^bD$C zejVbc0gkBzV_OKvU^kW+ZO&O5uq8Mn83&s)eM<WK0qbWlF*jX+r*|+#t$Ckl2t~KS zZ~D0xXVRfg!}0zl3bZC@oItfd0e9fZ8*O?h+9DX1@p*bfahfQo26S*BkLY$iRCvU@ z>h~Z(KQfaFXVZy$CA1uMelO}gJzKCRrDI`3GOxsMY+BXM;O!G9EZu}RbQ2$zU43}1 z>8XPmDWyq)y`V{%2Eo(hOl<+#;w&J%1{(LnHo=+*A9rRkyyd>)9Fq0}j7XWq7`yHe z@od#HgR6rvoKRrV$N=Hl;o?4(#B5WWxt_`sHbE`(DQXWH^2X>1M5?Hz=)=A*+}r;k zOJc=BKq?qwNZm2kvjjz<Lj4)mpA0w(WvA^Es9@Pn#3$0lvt#lFZz1<~_z_o!jV$nu zQ4lI4xd7VO;j%!c6z4$z6haen-H6|K7Sq___&2^toO~_&fzXVg@ir=F4N9ddQ|ov; zm^x>IR)6aHpgWEo!Na$&V}12TIoTU9PQ+gpO|_lteaQ7U%5cCG8PuNyk0J|p#+{tm z0>Pt`VMhQ$Ao2d-!KjDYQ?E5kLnF5nb=?Tou)2o}H&dG(%Z~=nn(jB24D?3Nf$Qi| znCe!L7KXlh9&E^msLwvcpc>2m8zeOb!tsrQn5NXj<*q|gMOmn_{!rlo@2X88gx9vh z`Nlw_rjCL(OonXlZ6PiuWayyIEKS3|w95ZPiR?J}JQ6!)Cno$1pdsv8H?65-KxXPF zMu%$qe(J}+2SI+aqzdwNB+sc4&NpQ(ybA9g91g5eMS#(*i`l6u+mm@-{J6A&pM!I0 zfVbudA#KgV4F<8K@EvqMjIYp7>Q{LWS~AK|lqTjZ!^ZxTY3PrOXV%?&(C_$I=ry1E z*<M^}qMi)7cZ3VSS`2kKhW1aCMMU(2XljfY0bqe`@9416hNJ0miVIwLpl_DckX|qg z4mjOWCbmNy$YCdWznwxjRTi;(d$4e}X9Y$(A{+9pvI{vT0#-|4PoFZjb!WCg7@Oe- zSMwfUj6Ny6)-_No)<&ZdywmO)`{VcFP<6W{N9T$)Aif!AOlt6#P?qtV@&2-o97mtv zq3uj`U)gb8`AH{~Ct%)Fgx+Qv`p>40{_EB>cyx4Qa~3<)#yTHv0d#S(2R*78nT#Gw zHQqPY4-@aV>ydi%N(gidd(-IF>Q+S-9yjqZT9;=}#Eb;Nb^&T_$J-(iH>Tred9FZ_ zGa}|C64+6J_B3KxS_-<bKuLOyBi~S5pp_$NwV3x$Fpe1O>kwu6Y-r-R(tue6HTLQ7 zFv05him<_d(R2(^{b57u6niB(X7M=Ovdm&Sn|x+5foW!O03DSrY&Jy6A;#B=)g0?V zrN5&KNZv<Y{UHj`Tu;%Nsc1V_o|o`u=#5z!z$m+xTQb=wRv^ut-}O=rqi!q~uDM}5 zDO!;T2JJ@iwN>Atf757?=?V`gT8Y|GBB7WlqlQ?MT_h--Rs^@eBLa!EAc(x8hlzeu z(+|MGIFE_`8ICS~x3GEnG%O!5Ud!DdwyIj_kA?=}JRZ(|hpnebG2vg>ku)AVu8vE? z=2oUz5<^#*6O^bKn1%Tgb8x0)&)Sk0QQ_#3SRTr$`kHtnP^F#M&3<5(T4l?2E5mxM ztNJ6Ggz${v0Ffm*C_;f`{_@&{+t*xAlCeY8*EuPgOQs`w)c~`!D0<B2t(^<?#ySU7 zJEP@(ZHo4QHdUMUz;@Ik$`4~%VgFz$#Q6SpRH^Rqy_(m<@$2y}+L_~h?8j)>Ud99b z2Pgl-PM69x+|&b3>mNh^A+u<>x3+iyWM5QN-<ige_}qiK)0rhpjpA;Iy@d?ti4e<d zh6uff(EB1p@y4Jv4Y3asu(m|#lSHUJ5&9w#;($g{xsV9Cz`KNb5}~w2C?gT_B|-xe zp{zvc+C<2o2xTWiIf>AXiBO&$@~-*-8gJKuXj@kP*;gkv7*`rmPKh-{+3H=5U&v@_ zh^|I}i;)_lHTX|y8I2vE8jW<DozKYKHh0^Up<P{b_mwntb-C;3?!Fr<uiVYz{ouc0 zb6t16(Kr~zgyki*d7K{Oe6$|DG`;!-r=I?ngDdnAD{$j|3Ga0IrZ*v#4)H0q+la2^ zTcbrcOQBqcsxoVC$1HsjN>*<un$9Swd~L8gcF+%<6hUbX0_H>G%v9Klpm91JX@#%9 z-CCOFE-^lamkcANkQiWKpb=>fxjRZCXVGT5;b^|-t{ZC&yAzJHKCpf61F*z8?PsJ5 zJ_8QVb$WoTae&F%!+`<1U;={HoygwW-=gw|t-zJ7x}jsvSyVQ?f$X^&ihPnyQCY*r zE(~`@K$C@gK(9YNvY|*UHp39&%Gg;u67+gWnz#1ae-%9svFbp3aU|%7ekR^lV1)Zq zx3R7U$-h{H7qh(cV|>W{%)lYk>mNlB7%7^88Rq$$`KZ;O;G}<Fyj?BdriQFx?RahR zd6xG<_}<soA~?z#v5q{$--@?e3Bn0{g9!rGn+ShThRZQ1%Mo3xlbD%buoFMbuV2D^ z`GUsJy~h!IGS(=;4HMnv2mF&+-rT!dXL&2?Pdjf3X%7}|TU_TpujQUAJXbZ&TIhy& z<j60w2lJ?S9AY~XG6Rjis-f1H6bzN|CIxTMt><_kGtlm<8W`P{D!dd!>`?;ob!)Ad zbapp{3(tF_TL+<ov1Jr80JoC9avR^_H0e;`I~ZeP&Bx+46s~ArGR=p_=@HEnj(p(V zcmNZIXd2;BI*Ng6YoBlg{=*M+Hzu*L62jfAyP;(t=#fh>*P_v=|Df*}Yv6-g!{~Af zOLt?)4u{eKEM#lKq%7vz+uN=<#RkM;D{U6z@ViQXC^E@oXc<`9hQ|F(YNgaVBi0V2 zIJXZHfcP2|ivFZoE1IUbk6j7b9KfG$t*$|e($#Iexz;$qbs|_GQh)lo`~!0jlo|cX z-P@3tJ03>ft6S}Q`qDA7X&i|j$9dGJQ}hmmFwerBEu)t(q+aBQku_;N%-`1FzxE<x zLzGAHpEExzKR}=++Uk~vx2`0-29^B0`SNN62a7{!qdarD`9yvb*)$0^gyAtd?K5aw z-Rb8$TAEMT=sa#2$iij?%zHg%VZdm@Ji9#MkBNN%<FkTsbnE9HJ6?WM!AhPmtf7Zs zxG`pM7w%fL(A01;pkPvq)~8^0xFPz1&1}cJf%JEpKVA6&nan?5@M|8Q8Yp}NG}DZG zJ)m=G(aq+)8LR^}#yd*9^iCNGm>JD&OqhoVBf>>PgC#fzrw7%+=+Isi^0ho$DFU1Z zd<eBf*6dukaxkg<2UioimL=BXuD!V9t?=<-b`r(s(W!+CM6F}p5+@U<@|;W$ z7Pc)ohodmD=Hw98SRJ}J%X_i`u&-u$&jY>yHFseX#`}k06F#lS!I>F6Uc4T0S9rJp z1jiD0-nQtk+RAgS$fs_tWXCCB{mKs!du!*RxC7Szx*iX#l-^Y@Kr;fS!DD~}ro=TG zgT@|hC8JXlAa0h9=IBB&y(wV+ng<5U;$10^ByI~JcZ}L>*kqazg)u=RnBIs~zlW!e z7OlC>jwlZ#t|KF0@H)ITR+14gEzcvqMl$y(V0NJgm_nn?i(symNr0!07H}ocBbM~R zPr*ug95K%ELOzi6%2w)zA;<>`R@R}>getP>TcM@bBV9=V184I4UBCmzN+u8fuEmp- zSrn3iuy`skV^dB+qu$PKARQdyL5NSo`H{_S8qVjH$7cre8w*zQAYzD|rwJP(L1e0j zs8kurvxw`E{xwM75Q&0MM#ccd^l8R!yE;f=2h#TdB+@;hrn{$Lt*A^`yk+>R=9=Tu zWO-^vbAs{Rd?3ehHRkSu)$$zT&J;uUR1G!t3_C@mQ5+B|N`U99Z<CpXWk71ILB_Z= z+b(Ha9z|KQXV8a-4YP~SU2=s@dg;5gNjwzT{4HN<FAJOWA`ioaWQ@jyQG!%iRE{Ph z#ef;*F~YW?sX<XlyJSS=nZ|W?6qG-(6`NEGRN5pat6PGISqgcEt#R1-Uh6Ur%2cIP z)Atw$DVP(^F{#WUkBK#Wnl;{Cc&2iNsi&<x2BL6iY)`=%jn=p{ux=-hwD|xono%l_ z9tQHa6|5Dfmll4GG%p$BJe9X$AeJFB2ojiR-sa@s1LU9{Xcs%)ZI0VU4qS*sOvhnx z-}E9yOq-Mo_vB{Tetj%E54Md$=OKTeZhU^1l_B~DVe1cfQscYL)K|Lo%AHjB{IdYs zy#;BfqGD;>f{ZI+b39k$?KihlV9JAND?D5ai8Fi;Ed0L#109t;f!sH=!rkaKt@YM^ z2=1+)bVbj@Ds9H62j&ut!;JG9T9u=eE9|vX{vY$1=Dr@%N|UmX<<T6^-xDzEQC0@# z*|(v%gz=J!S+JVIW*dP+{?hW#S<5d%qpiCyVR-Ca)eNHM5=tCIeX{h8bBXdlXSY_# zT0r^B6dm0tSY1QS7>6Tzx7jV*J4n#i{3(<C%Fr{cyDuQgMGu<#K!L;TpzRe0xTl{- zNM`tBD%|@kKepSmwLF#AT#{vs^BL#umi7a8`nhg>C|J81DEWJ=yU!cr&=nbn<1j~g z%oGS)SSfkpc{<ix?1E#sxvk^K%Hx7~d%>@$%`n79O4U^J7hqkiimNd$IdP0jUyDL% zqW@-$@>C5m$7DzWp}IO&AFQ=B$3@+Q-TRf$)KQK_ko^zS<oUS`(IS4EhwJMj3@HmK zN7SG6J&8(;b~?&~c#SA&z_!F=pF==JVU8b{VQ>WZr-oG#&7IYq0ZyMu?_bCJvNtBX zc=>f=wG8^6kJKQ2%!e9ha_jehU_AZ^J2vbsYK1$OVTFnCS74p}TkNz&uztnueJm9^ ztBKDZ!`5%PQV;KU;5|GH_>X5-iSc^STt;^sR&u~a>#hBkK<m_AfhiLUD#>3-<O_Ju zIHiGjnCwh}J58_|xcw;-go}%BR*W@cOh0HG3*@$9sy6Du5|x0Nx_mIYqvGoUtOw`1 zY%DnLXWqR3xR&4E+=*J}fghv##9fA`0G@r1Uiek@E^{3zn-&Sed|-y{Tl@XUut5FN z@hZriU_N09d=}Yy#8oID-bdML+ET$ZNDO&}A$^(OSu{l3@Sm5n<}7L4Xw#0r{TWk! zM{n2$O+x6j$a1J*7av2$yHZAR`ivnR`O?^76`@adBxFs<c9%px6wa>ebo#(@cVHed zd!z`{+qE5oIF2wyL_1BaqlKrm4O!OB3XD<F5Ul_gy0xwdL;vnYaL}RHEW9`yn+!M> zJWnQ;><8wbg_mWzJzq`-)OK&Jj!`#84Z>}QIZdQ$G+^n2NIG2D88UWwV}F89+T#-a zB_8Jk3Hjk+)r1Oil!8G?p6=eJN8I*^0sz16Zqf_E!Jp7wbbLyY7(I&N^mcD;2mM%5 zJF)C@3&pNmTj`n-zF*xNXwR?H&GFNv800HkBx3w3c}zI%Y=7hXW`)nFEbkh>L@Xx# zX}iciGX@o*(~@Hu2t>Ft&GlmVvyKi$%$z<gZuSrg&Ppqg${76McMB_eE>3Ih54XV} zoYvakh_!)|c6M|T#wVS06__^db&Q}FZu74C9N((Y%{)7g|EJM;F8a>h>kR;5Wu^07 zZ$lhRhV`K+FtEf#^)&c2r^3@et$8sPT}wMacfU9KJ5bil(dAm<=&<*(=kX~Wl9#Tv zI;<`N*I8h~TRRaSYe7l)1_b25);Pd5DeOtG3C*GRzbFR*e2#GwMzhnJbnoa!{NNbh zrkgH3R#)8uHv|d7!`npp8E+!e3O{l+ZPIY&?Vi$5WHeXE^SI)zH0MAN#dNTZZL-W2 z&602f!@VKYybg$(*$;_Ac`!6>79&~=bCLgTx_gg#PnPb+!O<NdE-qNtNERZ^hE)Y7 zAezn+E8{I=o4d}~Zp3x~hEqwG;O0zldoa(vp95Je(pW2^I5R0zIc(p`2G8LW<j!Hi z0i2jOLRg2y|ATb$ZQX*H2QMBzcxY=4LPG7BS<SrO6pY~5Q6`Gf7Sq59!%u>2z`F6f z4rwFSi5Do7O}t_G=pi|}!VCp4t>P}tcvFjhij^GC4hO(k|7ZM1??QZ%pkXa6<~LxF zON<?$k%M>SszTglksf-MoOx@102_U9w^)~I#>mB?t*t~u0eP|!$?C+@;i6K^+r(H# zhnDiA9j@2+VHR|9jPgKP2_0n#VE!&9)5(lwK`MvE|AV^^eRgp7yY;wlbx~F$vV~9% zJ<BIEM()F@Pcd&Xk`}2RdX}6lpN%eF9Riq#V^%R^pTAG=8*RWkL?GXlhD7@!akzJG z8r_L+BVb0v+(FpgekiA9`=QU?t;d%s(ITAbymA*kD1pL#hlW>gJ^b#$-Qm<{DW8*R zd>~zl6)i^^rRa?vhm-Pf%i)%j9{x9l${dcde6gm(6k>-ll!BWMIx!4j=5$pJ>#nan zSsByH{zK35J>{nzD$j0pM4$oEszon$RUe?xCt)@;QEP=%7lu$zvk=vJfl^sF91Osl zq+>2_5^DPpyVlE?LbSlPv8JL><oq+2y3a$6#%c`s0x48{4PqOZ{JN9rqCI7`J~Y=4 zcz?*X@lY;`eoWdCYQN<ZCCdLtb{}5v#~mVH$2-t1d4FJ!cXT^zZM43~c32g*R6he3 zm~ON~mHVPpH1nQuhjI?h@we0;Uf&|};@iqQ$O#kRjr}{!=iwG(PyLDO-FuqP8}Hn( zmDUr}v%JBol;RdPpJfFJ7;oer;9<_j83aT1ANApy%=6|FU%-t)VzaSsFR<M2<f0qC z+kFO3$E}S35NVI8=jjow05aBHAWkza7}ia}1b7VV6M(QlF~wZhi4aDwSd(311#Uqf zZ1dBASmA5jn(-Fgx5uzD(1=Y3%)9Yi80N*QKsf0BkPUaFEA0L_Y-MzYjW=O$=HQJe zBiKn)Pe01RTiXS{E6f7lnIbNX1IdNqqBUdW4Ou5YU;*jv#zzV6x=^GZ(-iku*{z8) z*kkyZa2u%7$L6hl22@ehOak<%MVP;C5@e^Ne=3BC2AFv<g-k-ml|i%AryD6D6E649 zLa?mxv(^D2WTa?Tu^R-aImRfA$niy$DAROURd<Q|HDqoBFoUL^MP>da25akE0l-7) z?TAQg44&~>Dn3AKyxY2V2y!F75Ore-!(>tP`jaJAcAXw+2w4NS8(4aVRq#(ejfk-3 z?YPmBt>q(Eu5TM_4IC0OUYDW?x!=Y_<rcn#5r=H7r8_aO79_S~{QzFJ;APNwoslyd zP_f7nTB=RFSs7olfzu<KS=xY>3aE};Y<^M*;EgyPHL~A{&r8O@Q;a1+SQ^;`H+dgD zbu*<d7Y9Lw&}6ycscm2MeF~!p{Z-kfq0Y({TPz6TySq9uOU%rLtYWS|$xMa*;mfWg z(5WJTAyyK`av<F7=A<9WjZrvT05>cMh>Tkq^)jw_Y2z-&M-1y3*A#@H3Z$w>;N8au zWbPPah9Xx(muh$Gk@Hyd^;OjkkPgL;gXBZrAlng92sq-KQN00MbmAs$9KNZA9rM=q z7c!c(8!S<RkRGGRe8NtM(nCdW^gcn0J>qun^Yz|Go`s>ktVsP#PE3b%i}Z6T(&EdC zw74@N(iX%GS@`k{B6TH1x;_tJ!x}-tSgnYgB2q@_7U?G9bc>WP6_JX#kSyt$l3qfj zj2V9#nZo*y5~CH9i*<mYhPP9<Q04e!ASAjds3+q9N5be-QrFrBH?T<XjUv{c3Do1= zU7_uv2<AxNS4<VU(l%d=VflK-fD_-1C}9p264osd#Xz4q#%i07Z$EvT*9tZTJ5bc! zA!`J>gBhv75j8onvLy52G~HV4gPFxNI`+d@X&$;=Se(MQi0d23H&#EQn`b(TgB zrms-eZ3~a0u|j(^<#o_Ta#Lit#uQdUq|f2I3w&^G)YLdyAbtYL`4NGMd1-(!b92*< zML?Lc126X@d2|7M_Npqb<m6fxF25>eZ!9Adqrx<O<#~Q7Sj`@TNMlz1K1BWkM83ow zlRb&`HKp)Ie{=d%uv#=T10Si1H29@$^(#)HnbsCa6Yn>sA#GH<c08J!*&2n7gDigI z-L{wa^C^zDjKyYdrmcsbY!c-VlllmR6K%f%A__MPFJQWLpoOf7eoVz^slkCxwovI@ zK)6902nio@-<6?T5Bqg%tRFlH)hk@j_dvIMlr7#>hahq#|GpHwWv9vw;h<y1RaxTu zaIWk@*moa9PZ9ex1WKDAt^JFBh<E4>Pd$%iKv;@fijSHnqk!2X%p}@mM#|*B(s~pa zhTpsJtH*B}`Wl&9JK{AVaBmwh#^5QF|L(=QyUhCtD#Fv0yYNq}jN_ABZG?9|t&<4+ zHwyoz+=YKwX{lqG;Ukz0hOo9$W}<><(b03z9a}No<*i+KhVR5IEl~WBr~dMfO2vf+ zK1<-+gWi9G!4|bKF`7j|umo5O-+&e6V3xJg9>tpL#P}GqIT&#nnh&=*m|+nlOCq!9 zAoeB>9j&?FkzezC9Ln7(-ikg!y|;D>QiQ^A7*;|z&t5#E_J&zoE6{Xf3<!l|2V!Ao z^(UOnGv1(IC6>hzzhU`tD{+ej=;#56#}M2G#+xD)P$nKm9&?C?`5xm43{}W{0F52K zzwCfw!hs<9HRrhywIp_``uzYtNW(|6SmKFjq39=WdzfCr&xe}GqBCA^#kYKT7Ngw; zF@|Tw_SU8e@51^V$PT^0@_Z~do-{{{-|;!F<NF9l+E6f5*O2?LUMR-X82&AK2yKZA zQ1IOe27<=%5-i{~pJGX%{!p>8Uj@Edfl`dm!oRU-l6FCjeORfA{+nF?-@Skb{d_+= zQVpTP!;5#p^a|ppAP$uvld@2hbzAYf;2?N!a|_-X76*O@w+_L7?+fdAt9c`1ma#4e zAvqpAvisn(;%U7=eU>=pI)<GdZ9G@3J;uQN_R+fc(FcV4LADZw7IWlX)%l)K)FLE_ ztU#*5<A<yV%!&+c?yfetv0-J090(d;poFyOhwkRDU}!swEzjAY@ew|V#}g`S=GGR7 z4Yd@#c{vV5t^Evet5L$wAiViW5q5SDC`DDv+`K`+?iJw*gyV0530N5P*e7AV>rI%d z{=I<Qv`!}B6C}Nl!~oS+ULuR$$G!{e=;XkTxNY$)7>9LC6THY)3>7&h6O>GX;TRJ| zIwJFn3qVA=MP%wtiwA*-cqhus$sGtG*OM{ifo8&`1p#s>#!VwKhKp7Eg-=NluRA0} zoJA3%z4BxSV`qux8IE{98;T`h5=N8>_<nB9c{K1&Vkg%#OWoPaX^wvvGo$?EKAr}D zt!|0h?67WICG<d=Kt6utw4n4ovWhMjxPI4L`y3u%=rAKHyd>-LL@8vhA1?1(m*6fk ztVJ)Oea&f<dnO<W2PIY{<Tgpr1%_NN1q2Zn(NYn%h=deH{~Ji}Biyna13#Zg@kNv! z*cgJ|TF!aQMZ?6t7AS<;OogGH{QlAp37{@uocU(_afpNoL2K6M$i%w~Ci<0Nb9oL~ z<XiFi9caUol=D@z-d%_lqHIGZ!z)zUSp5<3ZlOq!#AiTx<Kz=qaR_-qkzDb&P&>3& zM6ebxv~X#F=+-a&cC9V;!$Nv%R~`gZu7xA5cq*P>Wk{fPyFxDqdl}h*wj)L`|BxnT zp5m{3i0b<ptZ{r5W-`E{$RM2X@wIKl+pTRm#&piTPg8X+V4RLWb_A@7r7!vW;-8{E z!(y}Tz=EBa4{}gUH6ImI9bboMST8$E!f6SQCDj?3H7d%npucO}lDK{n(acHHVTyZk zjY<l=xJ6B2qob{t0)tu&5su#{C@!9EH;y7Y7AwWGzz}@6XoSSdldyH;P72e|=D;~4 z6X7Tn-^Sg9UQdZtjWN<LbYL9EcJ3~ld9z{;+|rM|ixPwfnIp*$M(Fh?Mi!p&jy@2* z)X)3Kb9hyfdK0H0R{c?g7o<fyQ@pDlkq<t8KC!AoK4e8ZJ>FH5<%2)k*~hzzANH4| zF35>?_Vup1T0Z2x)DPSiwpaZmcNcaUGCG<+)r@mN_wK4YF@0Be55C;buY&^v3k}}F z@<nWm(YX-ojuy1TnJ~*+c?7+nx6ng85L?TFNqv?#t?;v|e*8iv^~QHll;OgsDq!Nh zv0LLnv7QyJIF~AKoepFy+{1q%vh_^}!H{F2afw+5DI_*NKyz1BX>Jwo-N!}yzKd%q zg?#a0pe@3vpoKNB*W(K;b3F+cmd;u6e@l#u80g~(Z8g&jH3XR;@^ji9-ypQq_QuD5 zgQu6!S9itRpzD{b120j(<9qN{?C27&V~9o}{yak{WLNy}3_-xI`2T|trdY-pO>qsu zZgJRx@W%W|G5#~utHhK*d>}v~YnMwOCUl?p5<vLpCcU)Z|LuM93vzrrZhYn4cpE<; zY)yTElWRtM#|g`GvvCIQo%+u7+@`rr72ptGz~Hm;y}1Xl=v3gLi}fvbsao)D=6jq_ z#=VWzR*$yTKoKx~4Bxt(PmX?oMMfvMU`2MCJKi;5u;i?9^k`~sIJ?cdw+kJx*K^CW z-@{kVSl%;mGgr=pt!u9iTaRDOwKCWo>}sx+!FQGKA+|8d^`E9#1GgeotVnzZ5kFzX z8axKj&9XAC3|qBVa^f2Pg%sU-{K`ieUb&rf{yG*dxAPmTCgHckH`ldKBLC5gm|fV1 z0A~3Err$WC8Hcr%AA)2J<~6aI7UaG{PT+SO38sG{Cq@f4iA595p9J!c2h8bdMqa=; zj;=#@l#U~T^pg%U*GV*=%s+x%I9l)tZ)uuQfvOi0sb<)zL7t6NE5U(Gu$x*i{UZ=G zr~9<#Q<7*P|8&77uBAY#HkU{+V9pt6RA83&c=JgSTV%wU&Mnwfgb4XZ0>(+B0u$P& zR~}>TfEY+WCie}i={VASQhVhv7_p~-j}&YQAeLF0WnkjxNFqu%Q5~<f^uu5cS<3=r zM#Vs^*n~K5M;chNso7KHl;?4#7)-weVd6W}F0J{rlb^Ezd`;b0@ZWMd$}V@H@Jpir z%jO`dM_9sUWtz=nz(6;xL*!3PjR(^|rF6=(8#OHR5;NC<{7VJ@O|dhTOPK9V2^5|( zDm|c=w&-?n2eBV#A@lu3uxZN>M1$#Hb{y#;=l>RKRw^-ougu6lgpN1H)naAVHPFlR z{Gb7MH22Qhtn+ZREa2L#5#Iq2!|y}rlAPoMt!7|iaTeBdWqg;RSy=n<9dxU)IP1b~ zi~hE9X?9yHxYDgZa&=bF`ioqhwFosbXl=Y6vV+eE#+@f&2F&N>>a70|E4hr%gT|MR z<{oo2*Un|fA*gP^{7){QT6v69`vrfL%d?=t$IuT(DH$S7=!RWL(PI$B7eVWV?;%<2 zh|v6r6H~6wI>ufUSiBCejX%ouS$|{#-c{F1_E`H8MF#f1u(<(cFp6kUgiksSfiJnd z%1!_r75q^y&>~+pJCc|0io}=-8EyUqq&f~ce2HaS`3_RGbMtUodV?<!8oL2O*0 z_09O=a;ike1z%jGg`60Iq7as_5JFhUO9Hvzk8*|9F-Yhd!3k4E!IC6&S=J8dG0IFV zTM_CkXwlAGlxhq$WJR~@#09reP&F@L{t^{IC@-vD(74z$=9fKV$|YJCQlR@)HwVlJ z^j;(f6JeKuQ27f~dE2<brWH6UA3GJs77R@<)8b=k7W7aU%oota1<VbUs`(^EEX`lC z*|OD9wS{@KgXWVIhOvn;g}v*U1;@x%c)%055oXiaBn-Q?iBY|)zJN&w2b88v)v=$+ zh8UI!=^MuqHCm!mtT2@3(|-Vkpz(<z=n6w1G!q>4G>S;<&rD31mx786=3)Z?#wPLr z!ze79mi{GeBrOZ`)O^Y@lUn|lJwzTTz=tIEGMfU}%k*Q-Cj*AyM%%gy(#}6(Y$AQ# z+Qf7N<|3%fofxl*dL&gwsYe%BkCxH`s<nuVcf!^zkB03z0)-ci>on^DjF4lZ9xU%x zqp$GYmRc*nAT?Oyp465|YIG97oPKFc#oE~iE-m_Tz?{{sR%l410BJtJRZkLJ>jQ=| zjHzjedolkkh5>ROjW#h)+Eead_;q`V<z*vozN|e(*Yi_PKG%`m3_lsxk$t*&6S#-L zL)RgkIy1XH_wzvEC2#E*_G~J<V7I)hG9c6-5IjNiM(mn{igd}g2|^iVY0A373i)La z6w~awRq$LkB`a$uY9Lx8%@_tMXHmOo*FXYwIAHzqqSBOTh(-}Y^)OqCrL7NL($FdK zgs|&Yns*h~43QzHWs;TqYt}(DPh_S?Ux2hJTbmilg=FC?CW0=(S+EPf9HnE7njYL- zAYul&@h$p!5Y6epgqcAj&1`Au`22uPWkSDCC&-~FL6J+*f*|7~hgm`(BBl_C+O9JB z)iQYq0;~D3lM0i@%CzMk^E&9GtVOmqp?&})Ts0@Pj`sj%BPJ}eC<(NR#&xufi=foD zfn!bSR%$kZpvh>$s-TTwVW2%tfg;m3Qi*M|+Czy^8NRN>P+%SVMzz8$u&KhfC41fG z?`t3!+vq7>B{0u!l~kU5bg1&sF@aIr+huHGWcdEz)Ka!`LH`0{K<!o9k@)|@_le!} z<1};7Vwbj+%V6UlVIVK+PXhkRQAS#N79D6~JE3@VX|D)Uvj|1OG$r6$Y1rd`0u}Uo zF`p7&hB1h`{~q_J<94?J^M@0$q-?yok)sChW5e*V0=Cbs0dWv}i)65X6v1|;g!>NM z019NcL|ZW&XiGU0ut)xSM+@q=@KfL$UydEH&r~@3E&STS+*@4N55A2$V2J?)K3K3a zHj^H@{MZ3yV2oo0tlx;$00ykV;$1lV3w*$l!Z8H*#A?&6HSG91;|Yup`eA&~Pc|cu zi?M}{XEs8hA;uSs*Lrd`<sW$+GvopD?`xO_Hd5LlmN{S@V14{sf&92;ysp)M)DLx` z<|j9<*YaQIo1@;9kp8Yuo%g4%K<JF_#dj>&HL?yqp5o3x;mqtEUh4};aplDYD9YuJ z3&X9$5!)imNh}APj#n@f7@cHe;AL)<eV4zG8w07Iveitiw3dSuQ7bzRa*%RVbn(_u zOhVa@2F$;#W=xTrfN_*#m7`84k!!S1IdQfiPV=e!IP|j#W0j3E8dLYKn#2*y#zzsh zQ%5=P1-?sr;jm!JwhRf%9Jd@q+Wh>B4Y1$~GAUT|3Zkh)ms0_ABfl^+)-XYE2xCPu zAL6Mdv4VC@9iru9YnoHW8nOYQ%MluI1L+(HNpvSErnCc5%#Batg|UWwC{eoUa_FU{ zp8}7_GI7DAv4#v`3pF&n^VsRL$p?(jz?U%dM`7mC%%JjPDL-0XJAX$DERJG=)@;}p zXc4yFYBWlqu_cMY%si*@Mc)ItPzip)ruS<E<zQwu#xiVt(KZ_;7|oQVvH2~7<q|oE z+*C@RBy%MOjMnUnMhONpB^mjr(EQ5zc`+s#f_i}Q%;no(yc+?8-o`UGIOCZi*qsaG znTv8f)7}ah>ee%IJoEQ#IiOh%<qlfUWnT{|av0%VRR;qSFkh4-8i5^PyP9Z|KY}jw zXp;}4Aq<%RB}OzK33Y!)j%d(hJ|&w$!=}S7wkWQT*eVCDSF**Bh9lOMc2qf}!Lr~k z3~BzJEygs@$T7_`a!hl*WRTV((M*8Bi%tVg21Pw&1AQ2r(at1N08a(a$T5xREhHLf zaw7&cBAEb&15o^r+#QD<&g7sb!P&LQi17@$fKZu))0=xyj%toW+%-aUy>rG6YfsMP zsOF*}D3S>&YcL{mlRz$bMviJuQAlD~^NbwUJVTnYsw_jT{7mVjidszZ(==U>RYV#k zSxY#gMde`Qz09c;0eBeEBkd9Oi=I*Czy^(XiD<l81?+aeM-{kmxheqlhqZ0gQE^+f zSJ-xOyNxm^W%L{j?(h3BFMknVo@`_jA`ND;aZ4B{#d_92{Is6tMt*)`hz3YlM%CIX z7MgZd3PadiV~zaoWDR3`S9LLM^DkMr$;1=(_EioMlI=JQ7_2S)L5}&ejRLKpu&U<9 zYe9;m9g#o}yVKKrBGqiBYBwabwak<sFk=n*ffW_Y`L*=dX;AULhFQdb=b&9qY!a2C z2o!9j^>tnsNaLFR5k|O%V2cKq^wDfH>3}&Gb~hi)CaN3TyhJ^=tt2Y(C$g#p@;@qg zhMhracIiN(mCV(xxv;u2{|`gK1h3Ffq2}H6Y%`ujk6lF2vpq;O<8xtk=fa0%&ULzr zn(+xLip^UG?9y?`5aL~ge@n|h9VqxOcFqwIUblzSa1sDVJv9)Ai{JKTz(?M@-Q~Ck z2$!+DV%(F?aSyhtugAFOG{!yX1+o2jD~N3^Q_Hj4wA?o_`{b>?nf(dt9)8Q=T@}ZJ ztgU6TwkAABta8GP*-{t%33w@NO|ay+2cvRyDaz7NZ-o*b7wRqSGb4N%v=(1<Vu)Tg z{TOlSFj{cQZn?ax&OiWQ1A_bzp&DT~XnXk3U197_M41@yBzh2*9PWIHS#8@|$#lO$ z<)-3^{zF3BEIHJ1Sh!%6V5LWiZ&4+hb_{c5@@6$gED62di?C2>w4#nm?+p|@#UTzj zRdeiQRSam1G9Q#SXrV+UU3ji!6*o%o?M(?rI6sGG4}y`l5v0IT0i7YvDRqcrYqc<w zxmEK6CY9JWb;$h}J$3Jb)IE_PVkU+-b3IiB0dt0<v$PVJ_qL0=<GnySHGs`1O9~Mw zU1M&Vxv@r+(O>u}jp(MZY-BV@06b%0&~eZ)IJ7kU^oHAXz)&z!{_gnmUvQ983lM-} z{Lo{pQ$si{8<Y}zXdK1=_$rK4oN<i}7vr7d7^$$Q+)8}L(_R%Lm^TExJe$)KHvAar z+zC2pq;(@6kBN~D_tWjdkcNkNgp9Xwjs&-G$@&-c5n=W5|L@rqc(@}{{oo92+6R`z z)QwefF>KAu9+$g~%V5tKyK)cYV%;cqn+_P*VQMLM2|bz`z#w)4_n|JeJej#~1Tc!3 zgFb(4b`1#Qvj&78&88t5#DxKmXFrW#z};xnibFWe+U#*i8BgqX;;B?Vu{VmR>GFwZ z<KStIeA<8~v3E~yTl7>4zno}`*5Pa4SF&q>Kw5vsO-F<!c-HZ}3D4fzyHGxa5-U0! zixB@!004V5dlNBnQpwY}b8lSpx$F%hGImOCySRn&e<k}#K#YE%z{yhrRy%-KY`|Ip z=#j`^kqF4>D5WCc;j=F6Qp*4VFzr~iJI519%?Vo-K1}N`zgrxn!S9xe%^Q!~J7!}; zU~UO3^$Dv{xF5RQ7Z=NLxbJ6TR&~YE5S;VD!jD$e>DWoLf{ZfDI#?H_jU|*f_Sh*; zFa_vUU?|U31624Vu;<Mke9_f}jn%0tiu(RDiGfB1<Fz%s&@DAakh1AbdWIV-akJ&5 z{7EanE<OvID<=A&H8?gT0JY=C24Ol_0@;45VH%#X^G+L+)3MA6RRqpWyu@@n;P_8$ zKoOBgk9cc&2vz>smrz3?4t`YPP!=>Lc|lp|y+S^JU#!m9WeE9wgLK}ZA=xIDEJ2&> zkE0SZx5`Q(St6pgDU3Rq0Q({_R76n+Wxkx67=IY4$h{6J0q$-i*p5#I9HaSe{|PGn zS0Qdmg&jyk*m_hrH+q@?-F#qNz<idy726DCqI27A1~&UJ)8E4oXePHS#P<?dNQQTq zxX!{2GK&@AjwK8DubC-EY@i6Z@R11u*y@c1gX$B+;;YOUmn7iJ);FUcr&^w?b1$(v zx5GTd#z|zqiHH+qIEUd<8O~#PiVP2Dc)AQ1nLcS7@Ku$t4NbHSu|q~|rbN)0I#Zs5 z=c-#+;qpR}w`-PO+2z-9NJiDQ@#)C9u){S=Qwbc0S^6og#yBJaUusmh<?q&`%S!QV zRe*@MwpP^fV5zVw`y8uc(duEp#U=RC2y1w2_=JsA5TosH&ruS~P&Z4a17i-VW^4&w z7;ZDRl=r@nk0keyASa?>eToY&L5DlXq}f3Uly;;7b|g=?bl8!z%cr2j6)-lpoxs$- zv6u7W#pbo2IC~^-CaJ`JP28tAv5)Y1Y_aNmTgQF2`PoFE@L3XCfpx2r7js#uYEfV= zMCIt#N7TrwYZ_whh$U^xW(K>hO3y9LuoeXSsJpSo154VIK4T1Ld&RLU_QFJ4_VuH7 zd4?y-Ahs0tLN{%h3t<bfS1*C6D051!t>C|<+#PwN45l+onInvH2wBVRl|eoEgGCy` z6pXDDgD_0^lA#e{tfy>Z#tf@P+%~u3=GY{x{3brWSS1wv5eF+P83PM=8Q)ub0IYRe zrJiKNmZ*6)b$k;`I#>!$sv;59GJT`e0;+B5NZ2NOm(a`GCYx28@kBNxGct>gjY?Rj z_s~1()&^;vL|)?C@CIf`9DBlIaiPAspyvPd>SyEpGd%bV1s&2O{^c$%^dk-agvMS5 zi689py~Ee#(&Tx74xQf88?4YF4&2`2hg;&h9U&(z@=X4St6n$Z!AXleGoRm85fEl$ z?a(0(!(RN<>oz<%beI;?`JRe^a4voh9pdnZ*1yM9j3<W<@5~oI=XEi^&NTx8hYr&r zPn7E*{G9841c>9{G4IS9({!$R2sk)|6Nj=VJ?EN@fJ1|DhX(J?Rf&K@$H677A36xQ zM{OMPOB~7%pSrq6;zwLw_4qk-m==G0W_b+4kC%ZTVWi{y$TMk?4_?2<&!Iycrp2=0 zon^pl4So(C-kE>mQr7q2$Lllv92~x9SzM1FX)!%s>+y5aBEQTFWkXs{`SZhlhYs(g zLtK{qV*Ggh1wV%l<1$QMNN+5DygtIup+g*|L)nn05PrP=hMz-+Jo880pp53?$LnqU z96IE~;e~t=pBK%rLx*?Dj(GX_-Hsoxi}<NHPIwUD8WC{4h9BYNm+?u5vLjE9?(av~ ziOckvFXo%_V?17;;^)vI4rw{K4<pR013!lj-!m@LV_J9M$Lo7QaOgO=%s1sY89&l| z*v4`22&0Ti>qq#pTyC&&m<E5O!5`)P5Pm<z@0(onW|WsNi1>%zRJky6Q)TsxMP)Zd za4ztI`9mW)`NMNvm2>9JsIp(n7dMTYu@I5U%7Jn7aG;2*2c3U{_&?zl-YN-J&X`wG zK6n0X|KOSaiUo7$S5^AUW<=)r7tALlvS49Z<=4}d{EuhUGH`cmUaqTuaN)uQ3;jT^ zTCkAxaK>>}nSa*81@ruaD{tiE!YaZAq%yK_Mpb0aP?t-bIqIJ~zoNRzUx5tIE2}D7 zSo!1re*gTLa}jkWL&#@^9b8lvk)g7RN*v4VA3Pff2+w%1Qif-h&zOxM<5iZG&6J^e zbLW>WngMKr=gnBs{V;!i*<uNv4<s1^iK_W!l{P_<ky&%g%lzLTT={*ctkv?8;t0*J zDw~aLQ6jh8W*3*MM>%{Q@iqtXf500)%qG}B1o_OUnk&lZ$9^yj;faLj&-61})#7EP zzjA?p){KR&{`U`_`2Zy2zu`yx?@y1+nOpfVgE@#gbJjQH^X9^WT-P`ni{#bZ{qHNA zO>S}q&&u`xNZgVWMM_W*9u%A4qZ<UM8g+2x<#<FQ)GHKc549TVs9oiZMcq1AwE!B2 zSL0F1oCr3In`HbXc;Bdd#s^(x^B4J*Xa60LrBk}jy>;Y7alJiKLfY;7TIYF$gpVtd z_lm;T_wp()<Y1z!>(ed?cL^s2o>z$H;cMz7-H#-lt~ZOW-}2U&U!1mXk@!sx{a5Al zz@lHDS~~KUH*T)md;5x6f820<<h<XH8u!k(&p3FF*{hNG@Hxn9h4YL%-z9!{y+Zvt zHqyD%rKkQph^+qbh|7_~+L53ou8U5Jql=4w?9UlLaeUApo;$yKNv?m`(BVVv{JC5M zB>|WF7x%f`OMLF{X7o#2i^P3^Uu(Y;P7s6%%d=s$xx9+-3ow9d5t$w}!1q{6a6p!o zI%<IbQBPn%&Z<7zfV^nmy9N}coasLxPaBY<4e*Z|kOj<91JXu)OVH&2lb2|tv;jUA z=pO{c<+_yyAJ|sP=mA-erXuz#(v9{RGoUpsby7-yK~ZxkYHZJL#P2;j{-1?oa)57D zO7XY*2G*oLhMmCr1Rw1ii1te@OX-gs2fvjC+zj%Mi-Q=KKEM}ENqK!h8iIJ_8FRd@ zqwvAYniS;VvDDxIzvUS<Am`COfdP4|`UVCJkM;`>sB<stKVUd=jl4n%iM)cdFrru4 zw6?+1DrrGpk5OJWt<j{Vk=Ez|8&XsIcrHtAw3E*rHoX_<41(-drHuY|-@BMkt54|B zzR2b9{>&u>L%Dom<Nuux0{^aW_Z=tk1^Q<~C_;`b+ic1Y7uSqPeo+o8zsRZ0Z|Wbu zC5u?ib^z&;PPt9zjRYMb!|r@{%P@6x#@FfSpc4k2=WIHk+j_Bv`ev6!kY&-$&*%Y7 zLsD;mhFrchkSEadkPfcjvuuStLf`H?YEA0B6rd1D%oa$>pBy=g2$%Us(Ry5;bzSBa z`YpELlU}AKdR;wVq>7r}6PAw06ormcH?hHufIH6*+0j^siQj5Ji#lqDQ$?@Neo$_y zE-Gfv>j!vDQQ%HrvPi()uIYA}h`I{ceKvdpJBGMK9mM^9{K(HZ)GJ=1uHillKf?2v zL0qDq;XV&PfzJ*qE>UM>5K^;=*w4Hz$B+1a+pvi`0a(n2w_b+;E}{FlufdP_O_K<9 zxrA=w{(JlgUptmiTlaB)8b7yEUQYgqlPY?o4E4NHU96a2zfxVS2w%Ta6C<?lcmE}V z>0it7^ERBeS-oBs59wmlXcb;(!~H4{;hi=-CkejChC6oOdEF!eU(c5;&;G)uJGi_{ zTb%A1t^yJMKs=|rijv@M;<>+TdJ_D!4KGT9e__KN{dZoUx8Z&V;M_%3?4M}Q9B^M7 zKF$HyciA?ii?%?0b%nrBcO|ErWy9yF$OvC&)2~T_XWRJ6=?<~sOOo*OY<OuB{8k&D z1a{qS!)uaWXf}Lx5`44`Uz-Hy?w%ZZJ(&a_Z^Jhv!TEg}@uw%jr`hnQli+1Gd{Yvf zkEvp$+VjOj!1wh8iKm6Vz<=Hge0eW$vlsYpdVxOyc&6)2m*3_o$G&gq1^=mD;D74{ z{$IVopYH|EncU0Chkb_2!C&hIzP}fEOE2*Edx0PC1%A30_?NxFFZKfWpdGqgzP{B9 z{EA-S*YpCvz85(ANS8}@NH6f=y}*OL!1?LM<>-&^1zy?<d`d6yxxK(Edx8G~@GH;~ zZkQ<*T=c~dT-gi0*$aGKFYrI~0{=gNi*#+nD*9|>K{zmmMqJ|;Jh-5IbXk=QjDKiu zh3mc<^UJH35GKdS8eKp`=T<J9G4$r4aCTG;Ex?;u@J)<fICrLeF$|E!WpiiGK_n4f zP@1%0;X`E$U4aGC=i+#VT=LPCa6Pz6;5;dVPlJg%VL@T;{JBGK%^P-`YiPLmX8tSS zzhV4$3;*59fBE7~zIc@{!1)qh$hQT<#eWf}Ktd!XfnOl-Zx(NdN#f$|FbNm`hY4yo zi~o5fCixjAh}|L}x8xIki->x&gbQM~+~TT?%qV|wzN?~)o+ek>lDSo`Y17IV%$^1b z&aEnQ%`2N%iEJ+{i!5?+8OE&Y`O{pG#!NcbW>!fTn`_p>GN1}?9AiW(eh!@SvIyQ+ zz;RVI%LP|drK_@P=7Q=f*Q{CP)s=Hx<qPJ|{@J_=l9-JorXd~sF;Z3Ts-6!I+Czx4 zu)J(Ocv?ayg=;|t9u}6(nCXg?FQ_a7ykf!Pa)(**<UGuKsIsaI<QFewJ|Yh;ta6nt zoP`)=ODY^3kt3+VG|-$6H<?ttX(FeK$`(E-LyKq3t(xWnkMM4gp{fPtF5z{WCaa5! zUjXugIt%|UX0pU}Cjq#U;f4ag2JapGUn_9>R2_JVJ*MGnjsYBai2}b<fzMFjD*iSF zPXDk&=ePoAm)e29!Z8%C<aDpJhZM>1pD6H=i09C`HBFHD8lA=V_<(eZ6nw57=0&)M zpF?M765M9bbv4G4yof&vKL>x30xweF)e4;Sou2!uB)H>G`Mm-!R_JV2-~k2RXv5i~ zX4d`q@p@gsAAx6w&vz6!olXw?2Ai?ue9cziMGF33dV%vW3tprX#LuB0SKxOk@ULvR z!@rJq;<CqWq@(iRUxBOq=PGcO{_Qs0p<iK>FH-PT`ePKhO8?)n5iKwBGa5f9Ut4>D z&*vlru4H*?c4JI9^XkyqrNE06_)Jd1;7U$+mjWM!_YR$#IiSZy{384u_+tuO#XsH) z{4P$$;36Fr|KECnzhT22IXnIQw-x*lXgU16ufWGB@Z$=6tO7r&z{3i>k6m%dXNdxD zRp7TP@HPdm+N-;4#{}tIui!s=6&`RA&iczZylOeQgey5+Q-Q1Y<kv~?EE(PPToT-| zGdJ1@r0>Vik=q6ZuIl+<PH5pGzG@GjP~d~`&Y?4!jR7v=e;+>w{)hrs<@2r$XZcc9 z9eZ_N!B@-oH8v`^9Q+*l=sIb`nXZaoZ3~w0f5p$?XNv+?`MJ;w+{4BO7wM?@zq8>E zKLQE=o=JjJS9molbW}dGY(J1g=N^gf8e+qf^Q9~BF~D{5b&mp9^?ZT?SM~e>1+LoF z9X6c&(Eiuq$7{EOKLXEAy89LQ9SZyul^&NvNBSW!hw2w#Ax~8f*DG)}Uq4XbYQAnz z;A*~V75Lq*Za$w-;A(sKf(>UgMp-+4zaLP!aS=8OKPSJF6gbPuf&Ws0tMc5Sz}5Em z?+SdJLg$L_;{jK4x<Libpp))7DmN~N|5ot?-(a>3IB>_$`JxRceYL*#8!Yh&SM~g6 z1x^)q(%quKNz#GuP~Z$YaB++co=N`)3j7Crz(u%9|0a7Pop7~%EK=b2;+;c3BNq?2 zh))y;K16}jW;pOW6}ZahT?(8*2Y=I#@PI3sezO8s=^t0%D*e+6T%~`1o}}-Tm*WSH zB*7g&@bfmD{Lo}Nd~Q|XYCDyYFX^*BrsC(3kFJ?EJXy}UH%kP<Rr`-2p|~7A<r6k` zN`hC|FD5B;)N-s+;P(O7;s03$uHwI^z{e~2eF|hk<a2@o&r#qL75Fa{_)ir0?`$~b z<HN5EKVDBMaN5IG0&zX3&<Ww$;lECSt9GnGfsa-2_bPDJj=iP8g9`qyhT#Dh^E(7T zC*40QaGDke{tpGN*6S_>uF{!*3nJqpeHH%~3S6b1a;rcW_%|Tvq<fVDzfpn1u^_Hw zy?R)ItLd&*;H)|h{e22t)&C#d)=gjKvs8gkQs~@2yc=JIS1ItJ3jR_Bev<;X6u4i3 z|EB_1>HN0>FIDgx6u63iOo6kCJ92oq5D&O0PgZ3IKIzAVO1Nt0|Jn<@-0rB5jw;W) zM+h>4zADe3C~!YeoOFMqz}5Quk6z&ao1F$+Ojo7<i~{%LokRa41+LQ1yc0;cNJoV~ z(+m8)Uf@^I*x^c+!?a%D6$<=X#B=yG6u8>1y`{ia{J#}3RhceLokQo{B0?ox#owcK z!&UomUV%>ribJPlR5$)l75GC6T-B3T6}XDutiaWDFDh^qe-Jx8xKi-@34RVgWj37l zmUdMq0<H=LU$v`mB;hZy@mqSqcNT*XO|`@Q0wNi~k7|cA6u4@Kf1|+F`uMH_SIgzR z0;dUg@;iaT!bN^mItvu|{dni#uTbDB{WS`lCfvdQodTz+cHn<g;53;Ie3Js7qQJK( za5dc>3S6}hgQ+yQm@k@Ghkk(qzg~e)P~d92vp|8X^#8X4SNUvE;C_XElLCK0fq$aF zX-XYF12h)6$iE*y2Od)3DxF^`a8*9fEAXibofaGJ==laFgzK<^KLXEAx*scWnmPym zNfMnVH>qH)vVyPD`AUJSbO!4(9@$Xk{4)iv*59QHoGRe(WAp-l&W1C;>_`0$KVEf7 z@Z}QhdQG9D*7tW5xLSXYC~&p@9#i0I{q0YpxR~E*_&NONDR8QW120kFYQM39OyD9N z6@RS)SMl3zcz@uh;pex@{YwR3Ew3&Gu9nwB%p@*GPsh*Uv%-cu^gC^Rs8;Y*`YRN; zN?$Bwvgr?2=zA$dTue6?KPTO56?l#U|EU81p#s0Y6c4yahg}ti&JYEzraMl7tLZLM z;A*-rDR4F2S7tI*neGhSope{t5@5m4C<Xpk1+D>ptweKePJ(CH@RyU|SvI^S2|mz< zkDV<8l*5DgIs8nv;VehimuK<gwL-y<;Mu`HqQIF&2Yy0<tNG2ELu%cAvlr!~>-#pG z{7~f`IztpVRnmdyD{!ik1HV;)Qw1FO2nDY4vn&bTY0o#kngn;~9QYZC;v%1;@N?i7 z6u4Sm{T?E=#3$S-uWu*8o$?x*1b52oX9|2Y=s4*%DR8wM&)D$fa=fyf+(>@Za$KUo z)pD#=;Huo7v*8YXryT#G;H%}hOM#C;`VRlEEAX)je4hdjEASQtuJZHUc|gL&av|I) zM?Ui+pJ^f_|Mj!Oe6QN2Oa-pmCBFi9XcA-(TSdBrSJ-&EeJ6~+R{Qx;`%YN89p-I= z9d_`iGk~jA{FgKca@N)P-13Ek@A%VhOoBW9!zD@Zao?8l8<XJ9`as8iJM^9PfjKr` z4&3qoaC2o|4&3n<i7#~(xU()IEmfc=@Hg1?%{8?0=kuy&Jcv7HhsAx46T<ftGlo`` zEva%1ojIdwhHL19m6fic3m5Q#==npj0w94jl+)f1m6iXzCkp28?HG|t462m}t|j0X zD`oSM!2AXHP-67m6Muxc^2kFr*|Is)X7Ljc$@>4V|9-@#==&y7DYBn$xAob1O<Sy9 z-^GImzakZg@Y9b-z&N|X;4~f6adh9YGe5B5b}`6E_+MkE>*$&D!tVs^`;EAhW^#Og zWfG$OXscP`C4B>g*>1E1+=;)#)+gtM!@ol(Xva^M--p#Q#=kfb?Yk4t0T&@~Ir(+| zABmych?F1GaME|=HvzEA@qf-v{|!67b92&n?h!lw6%K-ZZ(Jk;Taw^T`p%tphP0C7 z*DRJ1*Cxex^vAigzsvY}$#_d7;5$ihhi~UjHFLr$YOWn$g)y9r`v)7ARLrhCJO1z_ z#d7lP(0u}d%avczpC!f|J3*EoO`Q`zOTHHTB&W?+bABli*4oCI@}es$IX+(}u_z*T z){2|!uSvv{^UrqXa`B&jO2+>Wc}x6Hj$d9b7j`YU$uF+_TM7#D3vRomAkXi=B|pD_ z|MT+w{`|bWTZawv`-k0fTmH=gb9(<3!SG!v?rw^1*PUN0A13Vk&qVUBA`vWtzTpTp z^N~3}gp0%)hn*pwU@(6l&R@R5*}Ft<?!-Y~PrIwnn*CyR%O~PQglL;vw;p}xX;2B< z=ac5wCGgEmz2NbFIj~9k%KCQTaBoR$LnC202IP?q1mYZ)zC7hCTv%8A+UMI7XH|u* zHF=DSLk;xkrLL+4_8wHd@Y!GC&l}slyn+11!QUf-1M6|YW{Ks&L7+8A7y0e4=VL3X zIvgLijqH(u6Hao~Pkz3gJ1=za#i9Kq#BF%A2_fUc#PRuu^ynu(O2Yfthlo52XA{+C zZ$Jn_@veR!0Sz125P&m7g505oLGuq{kDDNHH{qEngd#X4@uXXvlxW>p8;Wexq9@$J z)LL;uj5rN@U;Vl3v6D~qXjb%tEY1Cz=H3@D>TZZV2NF2tLc`u0L1U-fEX=LBcWTjd z*!1aHzOLSYy*`HQ3>r2AhRpzYBLlDEXa>0*fwmII`yn4Z1q>(Z^<92XbUO~y!nuEi z*JgXyTn9Woy2IyeCbNBQ5L?6ioeVU{Y_bkAVQ*{zaB*bJKGL}g1owzNIYN<IA%j<& z@EWDgZD7Ef%w`)RLlv;^3-*S=DPZIv{!7vs>gba;F&_tyT*Mwoy748BhS-mtkcPup zAl6S2$%hjha`xkXi%sfB@?P2mO~Y}?nOE3*W&jOJmV>iseBo4_v6^!fDIUXb2M~7x zF_0>>0+1&Cj&@Y2>b=0isUVYZpsF}44M&zR-BO$(anmku?H=(Y6Bb(lO~R=;Q@LwW zRd!B7pK-d7@5X;cs@S>)ucmOfo5?syEpuizH&iLlCNDfuZ9=v@2t=SVXLyApazxvQ zCxPx0(Wf?nsX81Y#AEUB+s3^xbFiO34{x4$0UW-Cb156~{4viq3TNkqqC2oV+k~dj z$_wnI&GP=_18?j>Q6Q5CQ(&683?|^Y>^$*y(pl`Fgl#LVRWir&4Cm;_X?jCFUufb~ z5YT@EKS+psA3-Lq-c=VtOSdMxj?{7vp6th6Z4eMg$Kq(SNFy>b1}6;pChX0#1=+gz zFi_$#=*AQj#gvoCQ(M&vNb&^WI4f=ng@v>DcEMEas(!NQ>`oY}PaS5rkV9{5KhiBa z+mPaoos=PuH}+SAjQae2_3_lFJ)i4Od1Em^o=&M=0BiOjn6OnQb2DjR*CeWyRCF9= zx-Wp^MZn{!Tog`e2kK#9&>k2UJWO~C%&Y88I|Eh^#3w*BGH>x*1ijCDu3GK6`s6zA z3mI3<GBU2l@op(Ft+A6InO8lXVq7gwUh&q>2kyy3CbHPzK{h?nHjgpsLR=FhYDJOg z)-qVbU2bM^b<nk?gPE@V7h=4?c-T#AS4y-kWtK7NQv4G3J?XALs5aO|h*s=?HWBB+ z(U9%s5i2lc!}SPuA+FwpLweG&myXXqgx;$g!8#MCPDab>+EHjYEAsX0AUd(BOYYt< zHh%Jkq93>O2%p-a&=|A}qgnG|1Cjsl0ToJ+Ar7w2uY+hlfF7W3`#dZ0fMca@f=H(} zR`aCry{z*Y{e(R(Y^*+rU0ravmaq#Yg&&!>dsmequjY6UZIW(0@HEmn6pl2M;OwEM z<~C3`Y1A9Ry>6UXmUB$=KE6GAJ{9LhYw6pKMjYLT6IX*<uuYJ2kT&+4miijo=Y8xf z7!B4Q^2R114Q7A`dkIE85H@x$yei;H!)>yM4EhRb5hf!;rA>>$XmAUX+%wDjFZ;so z)<PaliHDs1Rg>`lZR3q_<c%}M$n%>4>u!i;vP&z3HgkjJ(#B;4C6V1IGKo+KJ2e?6 znmRA9!okXdiw?qJ1Y{(F?&`!5ei9(g#@<$SORQ^oKK3N4V-t*e81z1$0d=Tz-)&{Q zfwQq$-wPWUH=QXXkeR;X-4Yya2!WOqe&YSr8L<=315bm{$gsI=Qy9d;)<ZgM8qQP0 zCT2A((6Dg^+m`V(sGs5NAq`uWg;qB3;O&r1BT)FSD-P*BH{oGB7dBcU4;ZAJy*M=O zW2BX+d0^!>v8jx@mp4xze(7(271xmQddCTI9C7DJz5aZPp1aMv@d>s*?lUn|&@tGI zhhy-7`2?HUfcd9Ci`yfzk*&dl+Row(+(+zo)_nXCHj`*((Z-^I4Y;@6@LSQYqM60E zQD|Dx)Y3G%-P;WD1}1@xF<at&Z1Ad|3K$}xfFYAL1QR{@{~G&H!~3X}xj0Tc%Xnl1 z61X274z<4_>Z<5*XvSXD-iza3_5%&g-jldtbMX;jt312n<N&G1A@@%1EtmBodwpVW zIh^(Qv8X`U(P>3%w9{X81&kXbJFU1jZM%-GTr0Y&j+fxHuGjz+V|1Ax(p-gZti3Z7 z_k$Y1o#jR-dq4$o6zvr3QHL$va1H|X4SRKYAL9p5dSoJ^2C|og&3SnxR@F|I?%lYJ zWJ8t*XQJURfb;cg14vBlxW`Q4sG}U9HI-Q9J8`VoumhmtVLS**M!-f>AUYyo%*^(e z7#DD^Wf(h$=7ClbdQ+<@l0f!2Zck?OgX3^<4lA}T({ta|bL(*$6jWy<cRWlBTi6Rx zAGAj(@=-mv2@MJKnv6}?Es{aV$54@Oc(S`Drrq%!__n;YKUDHJ9pV=3O1?+DW3$`@ zN#L04x4dh94!az{i6nlCBZo9AL=pafD>qRdyO2L6ZvR<pzd?Cddu1U-zv4z{qIUNI z9qzf8T%s%<nA|*X?H$OX(3<$0IOfb;=8rPt`G9gOD5+04IThwK&l@`klvhboz`IY| zgC@(2H`GA}U2*OVkmz@FZ$nV<*4_Xpg%-xv##yqkuiZ&%&}ln=-rBxE>P4sDi^q{E z3_T7r5_QNQHcplp4JRQV-MyWAqsjUpw<qgSAHtC!)Q?fb8RDOZP#YQ5>+tzM#JBfo zBmta*k;T%@iT@Pxkiz>7^u?U$GJ_r~kmAP1Xx@!M=++34KPg2X@Jb;*4%EvDQR?wG zByvyhL~1D=7k3c+T<#zkH1>v!b7C*ir>W590w`xV8~eiHNDCgf=F?$bip-J>^8vA) zd>EP2!;$K=aO4~gLkn4f+q(XNn68q@PNO6D&HAqE2fd^J4(GP$kuJSM9MO&gsdL}a zarEE&xecs%MrYV~e^8VD((GCC%0<Hr(L*#wy`I|;&ONBtpBt$UI;W$-Hr}MktnZTM z9%r!Uc7}87^!m<`IEY#&tqxS%fV(X)s7}k>X|xA&+caxp7wq*Q>>LO_+DYbjddDT4 z^%l-OgA_uMon%BGbUu`O0ML+k;{iRlSubqdLILUCd+JNvzgx{9^6S@3O~;WBJcY3K zuc$X+qaA7#hIpoj$;}z=2U;Owf-TymCHkPIup0?uD^;q8FS^9vg_Goke!y7iVJn** zW6)npj3s$E`%mfuv3b}<Q8;yao*tpegpuTqrq;l2l?hpQ;RGqI@Gw+;1e3wW_^@vX z<QXmA#~y-3<q1ex;>g|yXkR0p5C#UTNH7a%*zk2J_v9?6r9>>vcwhU69~{vnO*e0B zAv8;Ox9GP+0^Y~#ywBI^xkv|Kn12jS@XD)W2!rNa*v)2^NjUeYKBy6`GWBNq$qX^B zb??MchKaoi(P=oX?sb}w4+GP^wHw&rxP@uJxHET$W=(Qe`2wj+vnK=!v16@w%~%)$ zo?b8xY2YMdWE1kwp*ThR^P&$S9UIj9X{zcje6Ig3%q&9qBl6E`FH&6vUl{RgW)U># zHEY~RjNd~|(A)a+eZ!G`zpFoSjg{ex9vzw6Y;4OtgQFPtA46k5CjAd@k?f!|TH!@& zSjvi*tmSYmJSWl$qO-U=f1h2B<)TUQ)B26z#;+I?i%ng<k8LJ@IOWlNpwno9p4PV^ ztyHE}zlF@{`&(lusCuh-q&Kv^zOyfCM(oiYOt<PK?NvWe!bq|PciOj*`=9Rpm}psr zrCk6bR6}2M1zUH{Ge9<J*kUyYeRb?7AG?b3M_(YzRlSUgg)?IOZg1>P2%W`_UUKZ; zVQdjA2QrH_i^kg~SXE%&rbi~BO8~`3Cl_WU4GP?(M|R^@ubcN^m&v8DFZCbbkd9&X zQdBE<(D*1_5xd<6CU#GS9yxigLZfVS>P9maF83T2PSv(V|L1>@hg~0qzE!P|x(3zG zif1B^XfK!nb~wBnAJ1MZge{FVBb0`%VNEPf_-lmRy|u4E8lqhiMnT<o^Kg6v-a&wA zZfYnp>2gFk3GG9C3*LqydYA)`sM{sRt`g(T#GalFN%iKEx~HdLpVHJxq6jSthCpw! ze(R!uIg&#z6w=?6F3mo&I-L|izX)V-d=0uapj{N-OQx-1f?u}Ry3+4V;`eLye7enV zx#agU%u2c^zlHjOe$79p_s{v<f;}pA>y_*ckUI86N3ZT52*DsorL*7ImGut365;rD z7|aL({$oAVL0{QW0S~Bn#o7?>WcLrHuZ*YZ&P3N#Y|Z;78&=_+3K?H;gI>neBhx(C z6m%Tv8Jnkz+d4mP*m<;+H*46TQ2p^#SoQ1B(zM&7?jK^a*(F4dKE+!*Hf|M<*qIlP zP(R%&cBAcj595bEy1NM*A|pl)-=RwrLbtcRH9b`SfhUBqo%_7`3t!lnSQD`BaR-dX zfKjr#zO^5=vjx7$9!6n83^)mxoWiaL%#zhOc%3X_c;1QLV%VHmgMs|}aKLPx1F*OD zVYtdMPzL%}IJaFFs6OFxD=`jWOW`6wz*PlqCC10_G^|D3Wi@i-h~T`{TGu+(GUSe| zgNvs~8TWas!-eg*FRSrJIU!;9$2fBBhtcCZ81=$UcViRIq0PX^4@L&a6B;o*9&$#H z?BUVh0E8QTdLIr;5q`2A)ef#NjJ~H}cs^wpNYvx^ItIe<K={^n@_iw}NAVh7#L4va zZ08txbf>m@LUz~U8XSBHzu>dX5$I$_I=wMEcQ6z|7Ff7AjhDGD!T8t|62WkXCBqm% zVZob4K6sPdMsRh=oS35{2UnXZsiQpbn+(vSTS+C|yJjS<vvBvp>eikXLR!yvAq;Lp z?)9qyX$Wor0AAjbO&D&V9|=EnydOrnRyB048iIa`F|h9}r3&AUQ=;IF#eDK+%`AcN zgLQfYb`=Ae5e=;H9JpvEhF%e<_r`WHlo^I|oM(YHx=gz9eu*=pLf-5V)l!bAO6t(D z3LBr{TrSvY_y=@z;%YLcTft52qF_7~+@KqtY%MXKiY*2!A!{q^ny7a|BXxC0Vp>mV zptrUY1_;?j&Op|xUfU2{>#Cvt2<`1^g4WhRPglp^1R{32WiGLMGqtz`t%oTpAlPF3 zwokFizlP4OW(Lt?0>Q|B?2*fo!dAR~#zg<o8UqJo2Ttcr*Xuv_;Iytj)Iszd+y`~{ zCFl*OpwQ(Qksmg2IO-(yV$pXM6$Cw5ZnB+O)EP3yW<k`tW;AN(O=|2;#yI&Hj%>|C zLiMeE4LBG@iUI7NO%@EnwQj6q5u)sBLe>g4sONQehm?>QI;@7brv_OR1ub(LFa-ru zQ1sS**a!T<JXoG4-Mx!?63YU~<yYj_t<{ZT4RjBM-IoftulNkrUsxGyAVzu8Xn`F{ zkF7RXVk&m=*eWe@+7PV43y4i1Abm!$rC-?Kjh;aj%&$ZIG{7+x!hSaf1&t*Je0I`b zJc(yT<A8UjPYHiNZ2b(5?3*sYQ$3g>*1S(NgreKv_x;?9v-wb`L*5}@(yGDxM>Bi^ z{>+m&(~0y@q&n*7_&mL#I878#gP4*-{nbN-N4%?k4+8XqGpTSkozPd}3^UaEy{Pl_ z%)y?Nj)e`$yb`~$X;nK*Zl5@3=_b6PoBOaF6Ts_EPb17oDNPFO1x?B{2%IKoY758~ z!xNG78fe@P+XQPOeDs;c@b>$Pb4c0`Fd}6Z=Xhf~L_Axi%;4%^3@0^M!zdDO=Ci}a zeJY7<E|ReIRGP2}YMD<_Ysio{Mo%VE-4-^QG29aFdC~rf6&to<A%@f$V?B+7C{(CD z!}^mbNS0v0wA1zpRIqF(;uGoO+2+G1cni6=!<MWL8(HAnTe}2RkX!(5>~L8iQ;PE- z01BZAxo*U7d=VHKI~@PU7l{+VW%)rdN{qMJ;-FNjGD972m!!^_6RJNoGU$$DXY}yx z>sU{{(dEc$*f<e?8OEEQGm-0k$n`hMu$@8uN$@DLU}xOPnJo}JIvI8ZAOsTc4<3wq zM5116mIfoU6Ls7O*07p~3pZ1n9kY*y&zkNxmJIYp&w=acQP}8KkQPS1dLC@Yhp5Ls z#5j4QGv5VCje&4{qada!^_ViCRu^TV%KAfv2fV8`NrkZ$&Nl`cHFXrUVKQWUZwqlT zp+pCJW@#G!rB(hXB(&q?^GNKJotUUENJ7{#+#Tf|12R)bF*;P+_fx2;??I5CEUAKg z9m#WQhx27w3$Mbv2ZsY|R1siwOJjCz3S5gld0zauw0@t1b7^?D<_IBe&B6_au%z%E zdIP>f$EaWBJ!rxxLs6QTa}68&Po|-q#WU;fJs1RjEcBXB{cJC^G*M56+&jXBUoD0@ z979(|lto1Jd1z{6{|YRy;T;{O!tpd4co;z+%?RlQG5Cf<&{ih4LLA6pM}5DYLO4|x zv3q;4aJFYfBMd0BA>S&yvBRsjS^|6e#Ie0S@j)1e0t8p{9$$=3D7@}y$3(MjG=g{9 zU1NXzr#M_5{VJ+{{8b#X>9k&P4KFU|J%Yy=V<s`>!&z%~N_qBqz`RGtru2<S$<#e) zt~%LaHa54g|7)yk!YyFD#=ZAZt;kgLSgP^9vHlD3e!Cv2H?O1s`N;mKRguL$4j-d+ zd3G0eBnWO2AoOaDm`fxPOT*3bT!A8HM9iZku-W-FVsj9~(o)bp1xnIu9Ce4{0a6>u zqT^xSKZgen80)74uzWt0Z(K##EQ03x^dd~|;9fLbH;b0gspStFQjgdV$<fW?=?q|$ zSzIc6CT8(C2GY#pFghq(*kFh<L%gpQs5#by>V8KTki3tS<e>P>^%SC+iay86^Ai3R zG{&q9!>L}&%};C;E0E^S?|P|*V{Li_!G}Gh5~*OQZWQ~gzC%Z=(I68RuGV7sW#2>} z3HC%3S3|7HE*%t9D}uwxh7oH)5P3$=5*?-o5WyVhG0``}>CNvJHZPxo1rf$;x%<P` z|I6Cjz(-Y_`{TPwgalJ|QCd@Lb!|gUsA6KUl8TarT{(*z#Ug?&2pEG<1BoO7Y*j)x zi<}-0aBt<7`)~1b|5tCZtrz-2#TTv#D2ez&B9<2;7(_8EZxNLQ6!QOm=Vddjr1kgt z{m&=aGxN;MGtWHp%ro=M%$cd#jX}v&+(*P!`>6XQ(IxG~ms0MOIB43R809j<(m1A+ zxv+{Bfz_kWuy&|ub2la}CtSS}??m;~UYvLpQKf#joc^Gc(j^P%Y@*wW_tbu%P>5MG zRL;Tz)T4;x{5+7He0Ek7WxTESQk|o-a3PY{40I-2u>*drqe72i$_vfS-u;u{l;G6h zUBPKnx1cSNd512LbU;I(oWA<&(V}|oc(bf~6PF<@)}1Hxq;J`E=+&MFr039osjMkv zC5{!<9e*4{he0JJzWQ4Rg7+nusmNqae3pS`)SV-1jT~=^zlAav2p8*YhH$+D*So?+ z4#y!jP4V}Wu#TkbaMIP8bbXq1(Uy@|zDT+}pj^T-lCI38D?91(CtZV+uAHRnlB6q; zbmb;pc}drmNmqe#`Ifv-k(ccx){#?q;>C$g_JwwgOL$GOC-8d_{v-D8rr26IxDTr- zwg$iCmfhTS%x>n4*{SUO&9gU88P?M?`_0l87-EgHU%3UF&b+N6e8?YgzOc8^ZXSY4 z;{KZguH<nk9Xp7o*FK{g>aRHeWi`cUfAWEIm2`RRmag4dEy$}&d`s@NW9(;z!kG*y zYpWSlcRjWlOhx@#O(hFu>iAknq;j@vr)&;rea@`uPDw_zY=5bJ)P2y4sp%G&#HGG< zpQ3}r#VH3lXWsbUc{DUITNa_MVXyQ6PsH0b&K-UYZ2i;T1`N%-XDn|w>~PFFV8+MI zL=@SEXbxZiCLrkBnbuc-E!uz74PDr7*;b}%a#oWlXH$t^kSl47+FOzLNC>l>2xvSy zs;RCH5x^ywHyIbkPpEW|?uD6{4gan%tFI-F;IpIfD+Zbft%7~~W3RpP5>W7L2?A#N z=EmvC|JcTD+^g&0M2xhcjV1EA8|V!-e#Bi1{SX?Gp_mXE-ictB{+YhJw<4$n&e873 zl|YFNRSgK;L=dhb96}IcZHN2Y(p>>-EKiKB4q<CS<;(bov2g|q{*}$2_zoiVo!DfB zMS|GY0N{sb`tomTpXsY=JgP$p=?oWdUeMq@70f?be6nV|I}c{R8lRVK!@@7TL)A>e zpir~FW|%uJ4GZ=NNka(6^)v_ug*yE;gJYZ1#WclGWhOAb<*pE`=H8}g@hM*{^d0bW z<7gDXvUg!e8pE(w8Y$id;}V-z7Ia{MLH!jiyTU3Pn-Q_0=@(2dh4|2jv-e{uLG-JQ z7+m_+oe*0&Fj?<ywY-f8Lr)fIdSodXga@Jh#<_#<w!Ft9-kq2%Y{7~#HVSlh3^~Fs z#ATQ5jKK|n)qw~mM(toWE^S0lznzjQh0cz*BT}L>TlJNRU!p>+RZhL=oDu^uW2V%k zz0Go$u0ghPp4;BenKXMR_qkw$OXJZ?3wO@mS#I~Q@NPy~Znz&suWeV2^|=Ei*WMR9 zh<mw@rdeHZVL^r`e8$eels*%Hrgf-6oL{ZMZ}3^91}FF97sK)Gi{FEzF4pdqm)I^Q zybf*rl=J*rIERSKcw=v2WYqdmVGAjB2)BjyvAfk>yzSnsQ(e1TKT^?mBRV1r#T9aH z%W#TAb_@0e$eRwC*?Z7Hi<ri8AIMPY3R{X6^QPq>#tF6;HiNf#>->365H}<WB7?EU zG<&n%6njq*+x2!RYgg;B#qW{G!c#^6!fRwh#cu#-rhQum@SK@{jdNQzn?Rkt%Se~i zEfXPTc54SS=4HxAaM}(+7o5ZZld@!Y1)mlCbu%`R1-KQt4UI%L?0ih+>?n1Ao7RF6 zCh95=Ay*+MEYo1R=&`id0Or~Unv-sXm7>wHX^9(}(|KQL1~%qZp2U@)*fZ0HJz{OA zXZj8`0rvS!-zmT=(QxOrz}|0zN;uYt3q-Ti=|I{=8Qj2v>zTW+oB#XZ;*;&n++ED! zQ^@^A04(;^&p~yE++SV>58I?~$up3QkYm>~k|X2V&0%|6a50lp62NZOPEgB2I17_U z|H6xtW%VwWS2K5n3LC;q+G;B_El9$Yz!A=BMy}t6uWNU(wL>M87c)1I5D<7NLhZ#Q z1VqbwnJ<>aJqnnrbj-;j6Ge+4uANzcrmo$fO5V#X@q?bC#qwHa+-HVzAnV2Llnq;; z4;3wLK+g$LWdFA)nAM1UB?1`Er1x8ZhwR179`s!TpX6B#oB^|VJ2F#~Phq=Jl{S<G z3gHp#3*sKl){Y?VDPF8DH*GFj%nO;pa^9+Jiwseyvsh*FNZ!fZfc!5;{<g>zbTTmv z62~93Us26LGCP#D4Iq*4M`pg;idKlmgw1ERzh<^GK2z3b&~8l<{t7*$IANxIrD&<V zkGVU|wlZplIaapH(QXzOrHUHhJ@cDoA)y(N8(WY)K2zzX;6`5M$$`OnS7La_fj&<Q z7CLD(KGSfV0)U-gF);YN&`HnoQc!TlZcZvCaFtc1B@sD>oY-(AQHo{_szT}|J4Q^{ zi=>jE{t?^INlzdubrQ3+T!F-y41Px4@wfpX*kkXJxk|2PZL{}~F(2vcVp&37muvfj z?gVe~@#;m6mAUu;kYYk(OB(K~bjN3cbd^2wrUz8CqE@sVh6*<qtq`}k7Jq^~&)DNL zs;>(<CE2ooK!GcTH|r9-hY~a*+Uc&hTN6sjfeLY%>v$OVEzgq0)Jgf6p4=cTpT-a6 z*g@$ij2#N!wCqoAa<j$IAnN}1MoK)?ic(ddV=?GP3Vh)S0M%eY>ZzF6+E<x<A#_g0 zMF{=sS_(vEAlae}?&ZW?#yjWzIb>s;vMrSVMzHu544PJ8_7&8-cl5+gK`Y&GF@#|u zj4}IE5WUKN@)i18*Z+s~Q{6X$TbYs<vOZc9h1)`QBkIcbgLkMdp}eGE7A+;S*+*d8 zerDlG_u<o!X!n*gFqeHxT7lGANR9)kU)H{TGFks8Rd1Cl1?0cXQOicr(mG1UcwAMy zS@mqYkfFcz7_<D`wzAz@zCf1q?{=)gA`Xj#zE@mipLGf@S>O*TaPKbuQ1xdkcssGP zFvlM6w@;~__C0Ub$zFLVTESb23%9wqoU+GbG%_C7f{xB`(!gw?rR2@;S)K4>Vz{-V zYv1C70(ocAFDT7W#CBTEUCz%yy4b~6XP?n&>@#0VLT+OCW{=LO8S0G7mJC93)mk5< z?QTtowprL*^a~-WqqRnm;}6G~g0B*rV$=C;BA&j?49OA6O|+t{ZONvL-a6JoT@xcF zXqZIZCmc$ZOtxrDo`$7_Y0x0<cEl$SwOt|m7{;aNF|V$7<;YA96bl=~79EU1A6bJy zEQVV4aqNTJ@gBaxXyPD;BgbIz%MW4lQOscAn}NqThAYFS7q4&GK*(=Ud;%JEf3*r8 zgx4dyDZU23@Ow(_*Grv;u$5v5c6V?}p#IwcNA2$53s7rfbEu%PwCqz%rD6KnkAz(E z#N3)7HB|g0F=9BvkOyyb;v^t!9|+~QTkeBfGQ;urqfYw6-^cJ2do+O=#(O<-#{O+@ zO_t?cW9>K?DeOcpXo#7Z->CiY7CWOzEY=l&UfbZTB!0&wT4)rm8Cp96D7c9Gsh)9= zC5p%oK`^CZVGB;N0Qw%i7$s2*(wlKC_j&PENmGp9$?(xT<IZVRs$3EqKPC~otftM~ zzzLQK9z>e9(i^egmRw78!D<G(WT5?$TY?eWzKDB!uD7)8eK9p=E*FmyOUIlW+X5r6 z9pw}WRi4--jCoYrr<PL%0~X!X-Jrs9SC(LQpm)O_Br6_4z=`;sfMYxNNXC-(Vc`kP z#Vk}S=$xb4f^QyRm}4qvy+FKy)`H!HjSwR1Xfam3Uh>5+M;w?ELT^9EOOL>(0OntV zLN2YcAlB5{3oP$utIVrR4gdmN(k=!CIp07VP!e4h=lo+dtJ7CM3u8=G9oVzFk<7Q; zO`O0IGsBiI)LGbIITIF2Hpn2w5@Fv;8j}-yYIgEn@W*f2e_0BAJ-=FoU$G<h+D^d+ zF@uSny5um*3dV>DP-nFWz}gq7b2iKpFFB<uCPzc*Owx%Y8>tVtfhG3Q0J(z&&V~U9 z-H6cOiLn-pnGyH`2e@SxE1AqH-t1d48rC}Jr0*TU-)UG7kShmz{+<n)lk`>xqGQoa zC<EA^_>5v2CPMGRiomqi1=w6J)dZIXe6b_QE8+-?Fj72rvTxai7mCc~Y+M63<=OE} zC`4cVpYdHAB!(ft@ii0#YH8=8ERjD<ZLSiOz&zk*Cs)Jhoz`Oc#x~<06X=^QhwHbs zyE$P2Y?v8tV7ct=NVF(`0!^D#!eZT86@gg`B)r~v6E!g+hzbij7wv)lE{jE-CG1?x zgb0aWL!@O`nZ~RL^TzgvgIui5vb-Nda=m*Z_Up)dEu%TNVt)8eERJ<y^0l$ljlPb8 zxEAOEm!QVn@o?fBu|`Z&+gt4TZ{g);4H8_ogQhQNQrx|Z*8Qd`gHGT$iH!-E^bCMg zZQ^$iX9PE`0D?WI_wH%iG#xG>fGlj#xeRj8?6LUFOmJN*DbNMC-wnCB-@;@mX}9A` z5rm?rx5=RmCd>hM$AH2^D5HH6qYm+@1)}C41j-WoS+QM`6ik<Nin?oinp7N0+xvC| zw<1Sk`0%T~7<zjTK8-7ZEN#iO-PZ&Hw_UvA9+qcQ3vr;P`U9cc0Z(vmNfj1);;gJT zY|8;}k(qx&Hym+t29+i(LNXmIesM{~ptv9S_KM#<ue5!<=ash`@!r%)G$V5bd)l6+ z&yjSbZ(>QoBhmpLkt$BL`UMqjPm?g;va5ui-mr#I?d^qc>V3S}4^l|7Zps7+{Xhz4 zhprymjc-GsXvA6s_H4H0?cUP%@!O5~GRKOQ;BxH6TR8(0Dt@nRMC}WE-`?{Ic@<4} z$yvd&_ztM)y}S4BK9s><M+nQ_IIG%z6^t*nKW*DIo|MAYnblKMsOaHM)L4EFv^~v0 zvMtzFk=w2d9t5O4h&rj=NnTIlvYL=M5G{B)F9HpbiKIFJwXw1riU*TU7S`-0p|uZH ztzM=S3`J}e>n>D<T&L!a{g)sT*tLOKLozO0i0_)Daw%-!a$5<8(s`|Iv#DMNaN)Ks zA2mKMb04MO%@p;>-+iy_U7dqBs9ec6qPy}vbz8_cR&2?QHI}G}t>WFaYw-aF1a-ZX z>3*n!h;!@ow!F4kf!&RJS2qI=9GmzCPN4^U@eiOx_d=6wvl>4dWqG$*t+;i1r}g~} z)S+0h<tyZ@EI>)3Wrwg79Jb$*yO8C^Uu;6%7xlg!!N-I4%C(5hxwiam+<Kh8(2vP5 z3zml1BD{?rd(#>br`1ZguokhhgSprpSagOeVCRL8rG}@0bxTD6Rorg4f^PI;Z^*aq z0CZg)5nvl6W_qbU5Mu-(zI7+V-uEr<PR#AT%wFAInMb(2p#ZO__e0CuiCH<QB=oBB z62L?yLXm=JeiYAFe+QH@ngqk3L=;w$KWrs|#m2zFiIZsN67jx<Js`KZxd)T?*~jrg zB`d)r5S}Lxt|oT0u?Es%PX~q#qK+I_6vYuNDYd_eC=|koogQ|A{)po(bs{+tJ1yvz zV4qoh6?3&agZ5|`^kdMmc9LD#W1j)_3W0+TjxS^uPMmTV@nXl&HVXVg7=G~<N%P+U zm^=be)*{NSZbowi13c_dY5~j1F0^GK7!mJ|sQ1l?y)EK>6};HZ)bP6*pQCUMNXw;A zXA@oI1odGZ+?Xa!aQ`HUE89S!p>{>BuVO@Z<Tj+X2$cjNU?Y6v+>ytyqJ}ZqrWNpF zbhT8xHdG;7?Bq;vjtA?=_{L%!CYZ5>2s<cS&?%i~rEl;Mo!CqS*+CD6y`;s*=YNL< zAB~}{?BdXdWgmkLM5DVI7S`m$GbkN`gaPykbXOxp&MQms!jdk2BkoV+$D@(5{;I@S zVBiccI)^4eSTv?rj8R?Df(%?~&g6C*hT=qr>Lqfk3`+yxi8s!K=&!J9R{sk6LVluC z^L=oJg)fc267hv!0#5n>T+f#;B<c;&weYg)xK<e9C&KlEz#|m%6;Na$Fls-|B&w)o z{ES!B5L$k-@7J6Pyn5t~zP~m49{F!5-E(r*&n#0o`-$Z2m~(P=OfP3Q%De}q^>Q{K zs9K$e7k1&`H{$--<Sdh%%~=YA;w%G`oW-~v%oO+>fe$-t7&XaRCQSS%$`y5<UIRB` zw+m5fhb&8mt|SLBgOB^;a}WeWDj;4*G3KP$bzHU;6k<eyfiW2Y)1r5rw1u)@zssQ* zH5N6Oce5goDO}IlDWG?}NCMS!t|a*S0)t=VDSC<xb%J0)73&kyL(0&2FksA1M^rXt zRHqs=4Z0s+EG+P2Edl=x7%&XF4g-`!gVA0hw8>6k?eyFIDI0mOQyTK1Hz5Qa^Y)`t zL%%iUb>xCBYKj~JIjf0YP%?z0Qe?!vR(B=PQ(?r&4M=y2n7|JZ7J{yRX+9!Mc?p3# zKmmpXezi-BJ43m5hTFL&bJUhSh$f}A_!PgKtmOzo<T11GO(gylNIt_GYe&i+MJmj0 ze|7v*u={jSHa^-FdGO2Q+81>7IWC(U!q;UYZz#Y9c%g~cqO?((!4v^MJTQwps&@eB zJS}PwcC?7X$W;80C5jg?NP)$su#Y-MBLS*CQ{v1-w1_(~fYqL0dU&udCR%1ELcSjy z434*XZ_2jZ`vaDHa{x3_Jgwr@3`cZX75M&SNgJxb;D<jAp&WF1!7L2Cxa&)NKc5N4 z!R`MMs)8){2jQ690`BdYe+9xYioWX<wi#io?__-ReJ3iM<Htdab|(`J;?HDkifVu< zzZL(D_}`2%%AjB;(zU>GTL)r{gKrRjZo|I5K|dm>1imRZ;YaMeqfhQ;LYO~@f$QWF z{y^;_7JjgU)512!N3i4!o^2w}MAHez9;riVq0$yD^uSs^&S0?)j94_nt>>?rEFM@G zIU<R&oS#Qi5KT2{60<JAN;c6q&_rnwv&kw`*jXuzY}>1hHOmhAgO11@YdHdQY1!{c z4DeLZ0Ci`7Gt&4zx`+=W`7etIV%*T^t6zY;AqzC*N;#Kw6n-@FC>wPZx_S)$A&nel z%<HZ_%oRoZ4bI!d#S#!kH(2s1^@`2y%#B`rssme2<O0l$hh0i}AOjz02JL;=6&G=) zqEE-is9lg&%tuI)ojD#PEsY<keK%x(Qi?B%9g!>&JM2|fzxayj6iL+Pf4eWf3VvZN zH;E|$6dUYs7FPP|4rCi~mM;aYup#LDx(*I8DS$7S^@K{atOFHA366O8TE)UPhaow? z3ftHl$UXG(c!lkQrPwR%Jjt3t>!Pefv_r@opIu}_SSIA)=jO~Hx_CIiZA_ZVZw-34 z55blSSlEl!6e-@jU@Mfh$iWdgKu$=ntRG{)SmN_zJw5MiXhwz@E#{%B_H6ndetplZ z<g4zD?3wn;T)5tSnt}UX+4D4gZL4W??s=MVtg@B#^bU;^?bz?Ejs5G#j`uy9B{;T8 zwq()LeM|0t2WenrA!n2bd=?XpU_;2M$_~!n+L11%A%^Y@+n=J&g0c6#t)D|LcaL#1 zPK50but^U-wC6#aR-t5Q#4r-%bO9Rm$AG&_CHy$t8^#N_K73&^TH>G$lLhQH;VytX zu^mJ}0fG0Eu-*1*ER_F7K(1aXv+xU)zDMGK1{a?piN0mLUQ(ApCEUDVCUnP2<_TJ4 z_lI^Kml^6EkaxwIDe@78Ur+=j!sb#)S{7UmBqB^yn=Ty?q11Q6l42u_Hv<PPJf69c zJ%ZmOM2nxK0Qr^-Y!fWrjTr3SGIGQ56O5KI0_j>56#LL5j8SgKr_#$$VRWD~JG7eA z^cF9#HE|g8hnVwf64n%nNIXq_<cfx_%b>Iu2Yw(W@$gZB^4p9ajvoQ}Z~MfFGf;?F znH94zD?8AfQ7x-G<$KczP$)_sjGaNhoY(BD&xT?|7CK728&N@^z>64i{}v*Mv`Cf? zx64S#Q4HP@>0P*YKMcdtFLHbqm5BNq3OhaT6xPI{ieC*CLw@dpLca6e2j3?Ec>u+< z?Fk3GVMe60U1r`}L$S{VnGffYM23pb0D&7bRe7Js8okBXsmi|QPRu$@Zm#_R@vbFH zkj2M{^2VWGH;FB5kSI^$RcQa<3&J@YJVZ~}&6oT0Jk^TF$eni|?*>$E%p<PEeE46a zOGN9PbUhdBc@(E7F=`KO@wT8?0ZR;jAHBoJP}GSt2L-o90kH^>7}UXduLL(9U_ST1 zOZ{~c$`;C$q$Se#fnu={r|`|h476|PboMitD~mUS9fmTe*HGq(YScB9nkt!`CFK;U z+U94kUy3a8aY4@tPL?KieMAj2X(5z$A9J!2Qy=rOj?m_@_A{Z&+il@abO?+K7OD<a zB#)N0Cys(pOdg}V5@n3KSH27aJoY1X_~p42^q~{Oeo<_K!uYAwt%Vh~6+<6Ash+=8 z6~kH2M3@y{winfk32fS_?~Ua2Lh*6m*qyO6{e6#cM?q=&)m#%<@}I(8nHlR&^DW_e zZfSa@pWk#Wsg|CcSa*hR$rR}c#JbP(EeT6cUaY&HZwakKq$zj~qg+pMXU!e?TXBSw z-PL+5Xk$*`m6{u|w%7n;x2doJQ=Kq<-r~^MU)((pd!i~kLtbo?sNRPm)LR&C?u=Wk zru3)z3KoA{(;p|(l%`*~3l$5cQ-xl@7k>sq5_O*zy*~F*ZwerCQ~U}1f(DPhdIeli z^VkJl>Xd^E$x|cHG1km?Hi>XA<_$0&*h(W#uoz$IDK5qYE^N@fEMmXwtR~{(RdqnU zXkDp&+7b96k<2#I6lR_%(ot{XQX#!+Js{zS?>Ve{c@iI>4V<fOJV&`tG$B-+n3LE< z7nMcgFLa@*J&C920*^h3|9}hYJ>%?_#Eo$FazydM7k?b<lZl_Ay(JeV68{R2DBZd8 z$7Yu|6H(yeyjXCO^<4kiEBf(IepZhU>S<|xZj~+P>K{LIY{yK`R&2oHx9B{<1Sipm z6HGGst@P~8RUny1Q}A4x_?xyPlZA4jS7)4047>3G={sBn$Gd}V+&XU!ejy@Q^~O}c zTn3N5hrLlBai5JGi+8<kL%+$z?%4kH{Ag|mzS_r7?)ChN+;{N#G<GEo-oOn%QTLLI zqV8iCiSeEL=tbPqgKt0IL29AF8;_;AgEt{Z?55m>gol}s6ofEfbF(juy7d=wy&cmV zX_ougg^$v`cnh~GaNl(&&t$;3p5vzY5nuf(uqAdH3mx0w!0v>Q6R`IM?Y+Up?*nHY z)?;yq8R}z^+<4HnFPwE)F6b7m7n?m=4~Gg5hMeh{c0tHKh%rZRlCFKBtV237_jj}& zD%^(;ns?)q<H?zJ6<TFb<eIH=1500`xCshmhP~LrSswtQGu<C-JtC2Y3Xc}8=N=H` zs;ESUA!pWLy9%qz2U`z`)S@7I8M<hF2@(|U3)zS4DlEhwU3`G0L&Q+l0eN0qUDv+W zL%|pJf)KTIy{~9}2&tUOId+xb-j__$i<JBLgIRk)8j6+!!tAQSA?H4@^LpeFwvPtY z(mwf#9)sJ7&VZRXuc;^4dQ_L^L<k2Cyj1iTxs7J4H&pzYU4$Kf;M60mVy7BA(>`Fu zglvrOx<vWJl72Yr7`aoC`%)0w)5MB<sPIhDU&wamat5o@X`$jHb~Wamsx#+b59+}7 zgT%$~(;!pv5J<yWpLOj!i_d=%du^&QS5Tc@*oM(N?02!F>|zM!DSn87H--m#PuVHV z@Kkb7*~o7K2s6J8LzqL{Sk{V|*i?pnXxZPQYbN$=d=tZRY%2TWy7_-t{9tZJJE*eU z$GNL4?EX&fDw~gn8FtrQ2Hs&V9(tdf_(RU$<gT*+7CX@FPr~+RT5=C)$yKH7YJ=#8 zod4mruf+$rC86kXxvdNmd;kMz)RHaoglwoviX8weJ`KCid>h%~n1|NGI;GrKc7UTU zka#JA?Z@T5vd87VvP&d+Y<|fq19_h+YJeGpA{hkXa911XlH0;m2B4_uak;UKbSZKq zE#DHEF&7frdKjp>+B98ayIG;8>k<)Fr~vnIX5d>=58i@p+*tP2=;Ai8WWfbp++2o| z*aD+qme3G_Stv^~a?#^*XW0R8=wd+$b4A4xC1hE)4#+X;>_ZBo5NCmldgingV~8Oe zx@r?&c<rK^IU(ogXb3`hq4vV|>9bRQc6Lg+wd{*D$bQW=A*T#-FS3J*P<0?g{tJq{ zQf|;`MOx(JM|grq%kxzF*ir^L6bf@4y1tOJhFo=4k;PK|rK&9@j;1awpdNHqks0=S zrWE?_>>_9-Ta^KtK#fqF_Ijb&-StfBTXHx<P(W_VT($m8Rm9Lt$lpGYY|%10*$PGJ zto<!8gzdw&z$+AikW5f?wo*iKpI~M}y%betvlMFpu-B6YC`O^#f?1zYN9qb~J)+fQ zu<*09SRN|ES1@XOP!aTH)`8YTAzM%r+_VJTF5G9YCw|La&wNA9e2C1AFmy#bk|JZY zqc7Nw9;5~|TM;)MMctVhL7XWPDn4yr8g!?^?u(0d@NlmfeU9(V%vSj+u|XT3jcuXC z#z_XK)6eX?u;+K`nfX5qIWv333LS}LAk_z`IvWM|D1o4C`>sr+JzaPLW`kU}r%o)8 z`jqEJep#PlTinQN&Z$o^Dm|7_$o+5EVEzsJ-;OO<59*=tFm{Nh-;>*!|4FF$jIVwi z<kzk4f!^{h$pBNsh>#I>uFMq;>5S3|LKtOj%C^D=`B@kkGgaFv`fDyZD_bX8AbO*q zJsen0pmkBNi8ggQ<o^7$(Uk;|j4Xuc1+hIX<lc8Ch*3#K1c#Yr`j(`l(n*l+nPlVs zl6DZ?6Nx!%EI{1kts+KJ0W|^=K4&Hv5}W|Jpi2uKQ*gSxmzpmaF`Lx*=RXiecRDz! zX3$BqSivlOHNmbjDc?tv=unlw$SrhXpz)K!9KjHgQZU5qSD8Im6OcU^fnA6-xr3QC zcGNwb;am!Nl&wff6WRwrVvgrfu<IQ_*@+2_ENTM1qJ1fK<9rCUQgCc3y+X|{5IC7k zXchD^tPJ$0X%J-UMhdY~t7i!@8pD@`7y``Wy4s-@*i~6LU!~dW{ALX}qqLqeRs!`L zS4rt9#E7Z@BNHBP)7)dPXL4V>;<KI}<M5dkFl~Y_Qja8liO(x%uAq8@^m>AuXyzr3 zz?>HCCJBFGKO@(lfHi7wArxLu@CAWlE}^K9mLz-=6?)=#z=H8ER*n*J*b(M=hdi5; zA8Ll2D<)#s+XQDFtpVS%;rPA+rx>pRav*z)Xt3cG&Q9i}@$>7&-LZDq0Uc?_Lu&TU z>e`KVE#@=uO)`xJyAj5~Tlnt;ac}WE1Q;8317Zow0Uubn*&BeC#|z@{m%(uw30OLe zuK^6PhT!F~qq(1AgH0NZ2c8?&VY$mW;@5@*41@kK4EoFN<1t}WSn#v+0S;kUFkSnh zdoixF%3jA-#*p*J<;)`nKH|HaEoeT8#>Dxd!bH%1J=pj`f3$(RJFZ+EEPS0I`+bYS z{jJAz_>l|X;z<BJI+&YK294<s72lKllF$7VTwHv*5>@%|W7JR07AA0a%X-2W=Dzyr z2!eWmRgw#v%USmX$Ot*VBQ-X1Kcb{d><pL2iD->oduW`9P4Gp_$tEG>`;l@jQ;O1r z?ESP+_UpkR_mm&eX?7z`>yg3)q_PDz$~u{hx%-w(0@2PoejTTBM?JrW_@3Z1dj(NS zBP21?UfF}Z`L!B5UbQ(tQMCLWBr{ExBOzxUKZ~=MGeb}aB}Fvv!&jHw@w>bo$qEx8 z`-r`qWPs_?GDF-@77ZX7U1wE@oZd$gXB}sM?B%4xNYab91CfGRM?fQr%($pHdpQXT zIko6;=Wwv6(1+}gL6=bP`_Z?dd#T8M4WAyM$5rLqU*yty3A^_~uRw~5p%m;=NNj1+ zh?%21U5q(U3KQX{>~g<^P#Q7!!iHg|TSJ7fVoEdF?UqAhiIRhFCZ@xwR0%`Tz4x?T z3L~a8yYL9QU1<jkTVyEO0qmG__qzxii3ok!F*xT!+A%|Mni%Yu)6$OVYzGf5_bF+| z{4rM=G7m$z!|q>mF9R28KKPb2K!JpuXK6l!91%Oj{xsPae*jrHt1sS*4lv~WNmw!; z2utQEX~|%ud_;DCw!*`qwWzKSP+h0P?hCoXl%b`%SS6LF47M-#z?Au8uCQgEA~7Ic z+A^0(0;w&M-2(_btvhBCDB2-A=DnbddM23zXexS2+A?C4knEUAjWA|JHX)b+5d06k zU3)cU(wIq7b_oh%KSe4)8MDx%xM!s`a}eyV6Rhi-G7ePFrc7Ehr)`0eL`YtP5K)?B z<f5mfHFJba66VZP(wupUIAv3L2(9vCV{j^3G1*Vm^o499QYpz+LQ58ngPrz6x>1BM z>4=f&SxG-VJE=5i&}o;7PMb|Y_4j8rfiKS01R(y<wothh*wpp{`z{_2QVyYvorJ>u z&3P=#@5Glf>)3@zg_)|{lFG@@o@>B<YENe!KbNsZ2P8D3scj7nO}#3aA@r@iTz)6B zoT+_FdYHHKJ0AQkGf(Q<7ik)#>TxJAXj{w!Y4xX+0=1yfs?NHRKt(G@WN?<=Ia_@q z*AR169SL<U3snM`y`1zwi;B+=f?2Oqp(4DFMTDWVN7WO%M58J~MeC@2b#ReXu2~<z zvb6<SRJg>CZkt($oY~O3g&;QB+}P(O+p*G;XvBwQQwbG*Q1lcBfl}>q;)q%@-*RU| z>n=s!A?JPwn4lH%Da5=NpHkx~_&78KJ~eYhH9i|!cQ)pZoY{Jq7_<+gp(xtApqCCx zf{^Ys=Cy(t*%tkYgK{LqY}@^rxOsurP8~?{z-Fn;#<Y3gdYASNBAi3-3VSDu_708! zYlOXX6!s2ALF_-?3geK@^orb$VE%TjQu*qy;dsKmmEWHDmL%Yjt+iaX*5r&4o19Q% zitA!Lf!PTq39htvV2xu)QJ#r*D}?Z%5O1NMnc%aqyWq4=Ax77nzevc5qRKO>=khH% zE-IxKjC>!iI-xhHd+6zHFlrD{E)1RI2*Q<S&SzK>SK3PE`#Bmn1y770lG5f%6GxNq zg<XoBBc=ZN)#%z`-pK5oT39Mcxqc09A=2nYwMf4fDteNp4Jb8BtcxlP8N1vMp$)sJ zQHd8bR<eoPrTA8;6qd~cknGE$q*VmTa5O+|+8i-W8zt33P3G6kl|rmk9ZLV{*|PVA zls%ClQYKBC*%>uOA!mk`S!xL^l&h-ldMA`c31BzMnnFTy*Pfl}tXm`M=y&|+M+{R~ zH!>MG0GeSKbnVd!hnj{T32lOQf}&ue!dDW1!!p0#k7Nt`!LV>tJD_HRP~z;5{rF8R zfu*AD8U+{j&Oulz94WUmJ|ZH%uwdR0@QPfnOepvP;<*uc&`Dc%LRmJjXY3xBG`ut= zV*efYcJK(AwRspLLhD2OIDgFLrH?n1)!seBSN}9<5^Fhb)#<2vPww>m%{X}V^5gc_ z{GC`Ufw@o>vT-C9PT$3nMhMpHJv_>LmYXps|BWcjn1vYh*XMFA5~nx7{b=qQxG(2c zg2!@O;0$@2ZFvO=&I@k`9q>`z@}$%bcrEy;IO*?HehyIS?^gZ>_{EV!R(^*SJCY{9 z<bbmQ+s0qW^`krjPqRvw2>|i#hTm7uRY787wAcuk9)A)5z#h#lVN6^TGXig{z*!FN z;82N|B5}u68(AMO<mLfr_Xm=8k;MzSIRYRGp&$W~4*NfiocO&w0mQ{~i!Ho`W4v}u z){YWre(a*2l@UtMi@H^Q><)PNM`8}Xj#0)qR~}R+k>gxYo{3sdFwX77fzMmidB51{ zgQFgM*J2m#k6_Y1T>QbJh9ngz3>jgeG(sS-t@FyWj{YN73(#+X-U3e@JeaO1NFMly zv+OBNhJ^nkKH`=dmYq+>{=fC|l4;1Wf5cPly~3h}T;xBrw6Gy@Gi-OUKnUT&S;!$s zXD*ykp4g1t8<w3-FOEFyV16ir<z(kZaky$G_7?z*U&IZec_AJzgz?q$fSke;&!HWI zBm4wL;}sYsa^e+j!$4m6X1u}PYO5yo&vN-ImCa_cCkjHQKIuv>_!_&AWR-{pX^^Rl z0ODC9G*!_`WubIiP4Fo4CP5HO&x3me(TVE-H_lIu*q=vu#FjWfb(fs{NL3M2$A_G! zR{)FB5=9vN_G*a@D|X>z5mQeD9Ui-g&o^v$4Z^V2y$Ua|E8dK^9cO}|lV-;sgCm0d zZrGd*7tXF@ouGw;v8!uPyah0Ps=Gb*VY-`fQT`cdl*>DzKH|G&<bdO`<L^j!9=FZm zvoPs{c+%G)ec07QU#IkySdL#Q4}J!wlm|ZpOA}{!#=B)ai=>bY5B81JT*vlzO{DDa zbq`+H6W~&D&83MN@ImSGx(Cw<9*>3o3N~_FT7fT2YCCY$V(g*G@Vl8n<Ewv6Xn^o! zp?LUdGHJsGV+x#8yO7^RIV<bv!zXDVq~rO&kTDNcSx)J6#F&K^688g@jgR%>IdE8Z zKQK%p{JB6V5@P4eLZk;KD42L%uXAayvkFeBW~!iO3M|)xnmO_CT^O!~><yC<iX&sC zy*$Rb<gh*odIQrX&#C%{=RISa0>-6J6V)Q@tCf^F4^1}J4Ju2BX|J$S-CW!hpN>>g z;cTF@SLK|2gd2941l=$WU%^)>`%*s4jOO~pH92Z;q^gU?(OWY{B<mzz0X>qe1HpVz z4YdowIMxAq*irOnSr3~3sFUe7w7aYW=b>3BQp9~&?Lj)5Lg*@<--K@!$Oxgb_}Kv5 z{H%mU!{=|}wP8G7T3z8&8pg+NZbCsJ<6wIyQ}D|GynOXLL0qrKIvZ`&6>U>t$7W^X z!R~cp6`7c7>nr8<9aD34B{i2i5B1!dOOdJwPZmQGBa5h2SW<aChw)9XJV@mw%92=v zkcho2kp+gbVp1NoNb#T{{9ir&Rceh#zyD8>VlGoWI=!Y(<NvDo#I8m})_C+gso=jN zB79vc9-Us(qy75*&(P^REOmVS*7&|^`G)jCkH(Xw!u7i^x~}g7kETQOPvh+i&($e- zbh$L2b$x!TF9ZsHLkb?9ug0VC`u+)?>r(LObh=y`ub9sN2e>e{5|2)=(`h{V{q=u< zgF$0dxW<$E*7d}L<oM|NmA>BJ8Oo{CYkKrs^GVC=<-JMIa{VL)PbxlL@4DV}InP1@ z&zwH+==d6smU~TKDxP~&@T8U}l@9Gs#Z#SvN0&>#HC|2E6{!f6KbC?=r_*?}{NbxZ z@r+V$jaPX+jmn|Z>9^*CervdHAD3$c>TRds(e$LgHJ>$Injae7zog*N`D#46T)JIo zzitN_&+-&JI=#lH>tDmQT;Hk@sQ1Tx;L+)IySPln({$<bX>_Yo@Mt<Te|5cRxzTiK zd>W59Fa#c*UdPjZO^?Q_+x-HKK)rvb-a4Irr{dFm(e&M%g6D%2JUYF8>+)#1(R_-e z;Q2!e9!-ztvwmy6q2*|H3ZB2G;L&twe(1O6i{_WcuhG4jf=AP%-&*c8zCsoMdW}H6 zPyZ7<8lQe&uHpw%@VuIWC$(If9xZp8Pr95M-HsGII$vFWU0=GswfyP)G@fHAcyzeN zqxqu!8t?rYfqHkP;L-Hx^ct@&pDx!8DR_7?4j-Lfr_+A@*7dFB@lKh{qv^aq1&>ar z@#%P4jx}9ZDLlHpd_M(`POsmZ4*k~he4oN|g?j)0^_nxIqN1`aFzo8;d1Y5u*Up$< zesx*poH><qhn3|OVpgnr)|?qNDp&?wJ$}YKBr2~!jB7@4;*8H(c>Y1ee-^L!2NGfR zj5$>mv*+F$7*bJjPoS!D_S~B4K>3WaS%J#Afg$$<$|~oTSEuGH>7T%)<)H2dn93Uv zo;R;@UI3A6D(4Yjb<K>L^1#e_m2(0^s;{JXUJc;_Qe8H0MornQVIGgT5j-$^ZdGkf zpb7<^Q(jX(ulk1r0)e^r%tq3C=t4QGlyiQ0nIIM5@~Y~2<rRS;_e%GSyQ`&pX2pzq z;bh9{^74D6YtHPs<@0ACHj0UWIWrcT-nnzj7wDk5h^pN{RWrA|S|JuinmN0oJn)?% z)!z}-aaO%awnXOEl;4Zuku%p`r>gDjdi!$3>vY7k>g~(%MhsU72SmW988x#-E&VVc z2nHKP)^qO(uyC~^xH?c>8JIa^o+Q^Z;3q@wnF>AyzJC>e16gIWW>?=&XC7+%o|#{f z-fN1B@;&2)k`@MU?^izqepG%hsmdENGe2;Zc%^2V$4Y?6@M`xYB_<GXGx?C}bJ2;6 zC~K(TvqWu}7RBlr^Lyp6rV>(!pb2PrI)Q@m=%zcuKN@}Ogs`W4?)-q^58MFZQH(q5 z)jn#Xc>X?0f;-iFh4zn>@bM+`T~+-0YkVq-<;2jj9trn|+3230V~d1;#PSA-_XCNi zXM4$I8{ZoDv!m{{GJcE3|DyB{F8P-u501L_jcXcSyMEEk$JZPjHRm^@$M5>uaUCyJ zP1nhEI0Q;Qi?knah9&<IyvY2gIyL{f#AE(vAl&?i7mw!0ic!ENp3^$Vv17*kFpxK4 z;)HM@I(u&I!u-JSVIzjAa(X<2B?6E4XFu|I7y7;5%I=@J0tEO0$N7`uc|^SlD^TuV zsCNn8A?2P=!bcDEFG~v#%yH944-7n-5gM4c<h<a(f>^(s29~59A26^WI500bFfe*x z4q}cTm^u1<kryWr`G|fzIMC0E{jGp_JU?J(g4k}_*nv5ZrX%$d;*Fg*ZeV+6`lPf0 z0%K5P46+Zt694b0^iPO|s)7C`X=A?DFSI;;8BVf1FZ^h~P^^D?dD;M!IDCE%;%1Y6 zJfHCAmVy3QTH5;qGco@Nueg5=@3CY)Xjz_y5-dv(4-B{&qX*_adR}N?!IFNVfg@u5 zqXS#K4-FVN0;NV-!G&a5L0J^ZYg9g?*~toA;MX$pOW_(zTtVU*JFq=H{h^F=VjHW= z`I5r7hSUDw-I6rxYyCzqPanH1LzMGol=IsISkB=2<jbcjzBv9s#J}ll{l=3o?s<>) zL*$c!DT0rz+g$PwPbeEdg5K!a^rEDS-t<46FRR!rHmX?2NQJ`lMiP(UVQ;y6d6+&n z`^$JN;35D1s_=XxSr>wTqAtR$i(Y!bzuVGpfrOm9Hawo;z{f4cd^QoE;73I8@3tgE zo>UA;`%lS55&fJ$WNn7$<DPQ`rYA>jXNRVH^k^v+PJ+&UvfxcK@aVRAfr4|DgU>JI zOSECe52!j9ZB&J&d-Uj20g`Ym38y^YgFlTIPN_$aw@ctB{xzyjL|X;yM+)AqvJh<$ zu%9US3bZReqOIXQ6aU1sf(67Q+8N$+@K1QV8mNml!w7iNJqn5Rir<Iv%lHL~K+z@u ziz|4`Wg?nK9{u6*ELZS4H9!`!3D|EGyr5LZ7qSoMTKs#B`YK@~R8P7`5w8JBI2-1d zpL7o!!k3?Pk1DJY^e5rY`cjGirr^}g=JUMpWQm&(On8HW2TUN`FDrOn3VfS_YrU_7 zTZH4w<>GX{$1_0abm3G#QWs}=Mwmdj-xK~UPe}^AL-+@Hrl-Jpj~(%sh<ESLr@}eF zQ`HL+u2TvgNP(jg@eD}zXF9l_f{)h#^_G1@mgo!2pbJF&tS{x8qu{g5$Z%h(@Ykil zdDsANtVqpwsDdv{iC>`LV!ho6`+<TRAmQZ7J@MBGU++&)!I$=eglnvVuSkLObZX*R zl>(oj;A>Lgyvm*Nr>DTDDfrqHc)5bFPl3~$?lBsh3cnBW{pW}~uMhYGeZU{?1Mc(z z|JOd?zXp7e=Xg&*(Uhm&Yx;=)WFPQ9^a1Byk8_pxZ+*bIv*%p#Ic7K){MA0-JNkg{ z?gRdAAMk^Hz>oF;|Ev%A=|12Y=!ec#uJikVU(g5q;y&P)^#SJ?>0J2^?E^ld4|uo_ zI6vV#7yb!-z$f<spV9|>b|3J0eZU_8`~oP^@$9(qh_M*ni~ET0^Z|dY5BP8Tfd9XM zGvBJ8ifrYWjZQJaF|5opq4Ms^im~N2(lOz_*;Sq&&6rzJyO1zxGY2_EG;DVDycxr; z8HUM_nqfr<nTeT;vGZo%BLjv5vY>qSy|a)=Bo~+_RnEJwe4Zy%Dd%ML%#lZWJ;^Bv zPbnr>$}!u)Oto8Jm_2v)upbl*zs@r(I_4Vw6!B*`f3D@v5BO6kLJCDtp#T?3crinZ zMu=aLrbt30CK10##J@&_4wuM9=x_-azrzK#Ys7B>kx6=n3uM;{$hC!pUn`PcBjEzs zwby#8%Vt#EJ=arJ&Y37r`NG*Xo@vu6D({^J4$iJA_sl7uQ;lNJD=(Yx;jX-ywR5L= zz>Rx2iE~eloXYXcoL7#hVz!Pc%BmhfoQm=?gjZo=t7fJLQ&rWT>Y95hYim3+XI9i! z&+=4M&b{}ibE=5qUSu&1`6zE$O@*g+E@s&7Ly~zF<#R#PLQYtCDy!g`S3ct&PgzA} zbvfWwl?y5~vBIZ4bMC9IDF^xm^H`3uyXVz-%ID2Qit>e3I*uq2!~iJgViwI)Q6VHx zlyrXiyt}6f*Mb?~3P{962kEJ)tUyFD%_POv^EvbvABeN(di-Nwf_V6)1)o&-D+U~w z03_q{26aAseGC5@&uC>*5PpdPcMbTB2K+w_xEVi9nIOc&IdYBvdj|Yc1O9~pH}OnR zrb8+{|7O5P8F=Pr!h<I@{w_7dCcFgynx3z#p(x=&1OB}fxFXN9Tn!}{f3y+5$$*y_ z@DB|*@#~R$cM4q3r+iICApS81o+}J^$bkP)!AUNQ9>71JQAYfc@aytM3^*sBH2e<+ z+$`6J2E4?Ge}ytNNT&%OXTZZo{5b~vCIh}m!8QFB!uZr1@lE=d8E}*SKO1lpKMxq@ zqw!ZsujdsbzKMT_0XOkKpcXP%-m&=Cd|T58e5UGj8Gp19Kd2U<2xnO}o~;JF#DG`O zK*y7s?@j}5;vcORfEd37{~G_}2HcE)q7V2jN+5~HjQ@Ba@V6CQ^I4Dc_Z#se20cd& z_&5XpnE}7qfS)qpQ3L*UWv`RYQUm^}0XOyJ7Y5waGa(%J&xd$u>TABOPzzRsv;8s+ zpCvi+otm#}z)gMfs}#8MdY(&xYdteuEqD=s0RNhvwFcaj^C493co^T*hrc%9mm^H$ z8B3*)hw;CIe+_@cfSdezTftes6m3-<o>NAAvwmMyjMDLkA`PEI3eJ4Z__gdL@DTo8 z{A+qP8gP@IFZzIIuv5W9JZAiVS8z>_h=iY~QsCqrpJoG(NoNj)1CPctL3%wy6+E?E zmH{7!xVl`o8gNt2Z#UqkoKH32re58o;G~E8zXAVzHXHFr!msmv&48QwZGQlf@Mt`8 z9s)Kgg$7S*xxQ(@&2j|{xLK|t2HY&yA_IO4^3inus{uFryFV*9yHC=j=lw4I4m@}W z8;yUB=T-xLs{z;RgN$$TbCnU_?0=sy;NuNE11PL`h-WnZb-pDAoJlpjD;FL-n*M-S z`qPHUw}$I^&Sw;y_|5iy-uF~Gyi7SSGT>|?I^SmvI7!g(mkl_x((qOTPN#-naRoeh zNRNsC$~*xUaI=5B!GPa}C>l@p(BAk&so~!<;7qFFHyUu0&YKK)z7c;t)~@-GP7{Bt z0XOj<G~g!wqXyi>e^;SEpR7kc4?H^suIGVYRB+N`j>ESa@aqw#%bRnJ#6JM9bo^&Z zujhURCmxf}!6F%f@KN~Jc%llf<x0l#cqXO5SEztm1CNRSUk&(=4E(Pea5MfX13tls z|J~s-Bhq=h0l&$BPc-1G4EP-e{22u&f7l<*#y_7e2An)=ClJq@1|CzN?=#@z5Kr^% z0|S1u0sqK=n|kcH0S_DT*If$_9+sD)s`0;Oz^T$S{Gb6h+x5^NAQGNbJpX3E&G`Ri zz)k!^uj|G0eK>W#HyZFO4fuTq+?1>32Hec|j|TiI1J6MNZp#1U5xw-7bpFzSPcrbt zihJXm@ZTD6Hd$S+Ck*)227H474;b*B2HeEcX22&K@sAmBGk*3D5eX0Ls{sF+p2rP1 zo4$sxVdKZc_&4ES!;kg>e`X|O%lIZgm#|Y;aFd_Q40r(H8vix}ZnobOeZbpqBzBpv ziNC{u2N16D=Td0!uv{ko@qNIL^#T7*2@v2(#WSr$fCb#-!@54;4F=ql+dT&S+d!G5 zKL`&V=4-}3f3yG#I90Na|3d?A#vjVT1Rmls^}|#HekZ~-o@WgBj}7>418&O6l^i7D zA$~LdjRxGz_ooKjjK9o)oBDRQf>Ym8ua0L%cn%oxO}%;(GsC0fFIDl!D>%Jo{DlVG z)WeGmxT%Nh4Y;X?2azdwh~I3FcN%cBULG*u?6NffcNlOJ&rt*Z6C?f^18(9UNTJ6= zde}v1{5b}kDqq8g8gQy`4ZqrePch)v8E`Y-F$Uah7f%>)s$`A-&j$Q51OAQyH~X(H z18(Baw~!bQ%WKkks{s!nOy@h<fKN5xH3pnrfsX&00XOlq8gLWO016o%(qr=HMgx8q z!ZiNr3a;gLJrm+7H{y?kU&pUB;5QiXniM=-@8a`-5#PiUGvFqkrwzEt=aUB9Y`^ET z@!%oZY$BS@oIc<;D>%!`anx%3^O=+a|Ahp5?l$m{1dV^L0jE>LYYn*Bet%}b&G!4B z27H=<XPW_MQ`7iAG~g2r_}7RO5BXrmzsi7{@mDDL0L0J4f1axMl}3ECzW&32oAq@* zC!z2#c^3XPoqh$^_(cSSf8B_0;=jy*oA{qG;6n`jTMc-=0pDT3^9=Z)Tj0S%I<LUL zrgJ+xAv}b0Xrtk88*npU(b=f@X1?E}P%5~Y?@tZ5nQz6+-uN@%)cM{qs~0}nfInow z*+pL>qj{F5z_S&6SqeNy!T*o~AFSZtoh=>Y!`=AT^b{&M>yho{Px$9^hY`OFejWcW z2K*ia{-Oal%X>Hl|0W{GbHa!pfnVc4W5C%IH2l1uGL@`Hv)v6a;1ppU-*3Q8dd8=~ zyVZKr@)Wqnv$aBGE9A$lufqo1tgo&Vc(zRLIh_L6^>yi-Ui`$P>+8n`oL!TqXR`q} z>+yXBAAq=KJ)SqW7r$ALKQ-WHJ<d1aCg1*B!8LwekL!*2W<72+;NuMXUo_xmJ-%eX zqelE~2Hd3QYn8p_B3#!a<(m)b%oHy9(_gt6ZtA5$2Hez30Ryga5~R#xArFMFQ1LAF zCXD}j9_&#Ao~7J;tx;|re+?aY+QqNLL6F`z==aJ19beC<U6~43nJi3!>wSaGDR8|% zusa2=_Xp~JL+7jKe|XkD9}U;@MdCyT1FrW)WTuPg$@qHTf@fIu19NI-+>JMuhsArA zcHwJ_8N+JI7uI-&-7}+RhG*E_)zzM1^D60K^ul4-0g#L|jLY8ll~+7)b`-4Ns}yC` zHH<Hl!^6D<{Gz3NE;5)~i4Q2o-ZJqjtd*DDr_h$qnl_W4h)B}^uYLnaO&0e{!BV39 zS1Ebc!ED3k^DTHX@LysA;hwcz0>-Nj!v`<((Xy}g%=Z*rRf9}~-#V3V$@xi;a0Jfw zihbn7nVP=gXDJbtSBX<HkaGissp-BXT&I6a$&(Jy^lLm}l|Ge!k3A$)d|fA0Z=Ftq zOW-&c|2F<X#?bAT{9_(Ef6c$!0XrA{PpSOhlxUK_I)DA9?xp*JWDM!3dsx0VroeUn z`dx+abEPj?Bok^qq|s>k(QjtM^aVPCdbg<b-%NpPy7l`Jglo4MHKEd*FuGIY{#L<K zs@c=2(vL_HEM0Dm_t$WotNuKHlrd(h3|W6)!@o|i>yN>yc{62RjK96>F60-ds8Z8Y zt)`F&2#&8(3jX&g$WzPDe&$^1XFV;@c>Y_ylE10x)%Kcc!z!=F*Ghpv;k89Yg+<q0 zTT~bbTw7RJ#NPtA3kwQ<Fno9*F#Ou<3a=3{rw>>Zj^32!?ZxQz-1w#XVaERdNoMaU z5zZ3G>mVFx^T@0#u)Ob%$4NlHrnB(PwceTw^jTF_Yd0>IT<fhp;q;F;JUkJX=EOR@ zmiy?gwZIZp_h=V3B;z}StfI&I=Rqe~iyJ!;hi47rR5A&}^-+(kArKdN_2aFQ(c*^M zS3lW;18nL6CdTCjOp8lztk{{Jno4zcPakv+FzEBeUwOER^d&&wBZ30=F+pajn}G|v z>xkcS23UnSny>-aRc<DEB;X^RUG1t*w)ie9@${a(6ucwCW7&eY<I1*)6AIg`*kM08 z;am1T63<)_#7SXm-~v;8OW%bfh%?Lxz+F>e98yLug`MB#J|W)n*fi!4Dccf^9r6Zw z*Q<MFJ+62T#y;|f)9dU1ikKlAXJ)?Hc=9qF>=xUf6MHWw=zTTleKTY?d_T?zxCkkT zqn5(<%kuC@Z_xX45ckD~?57!Ay9Q@F4ShLmD*|jq0BBo};1_X!kUU%_xENQOqa3_t z5*Oz7d-&Ga7TnahH8WUzNv?1CrHE(6Uh?ac!?vsl;}9@5%OFk(TZ1>-AT##G2O=)6 z8hev?z5#^W#94WfGI@~Pi!BI7tw(XN7f6%E>_B3O0#5kCX<xWyk`yF<PCUc3JOn2e z;(DsnI1|sZKbv6TI_kxTdDbUV{g_9D;VPdzUV_VcDFUyO@5wEYw4KQB0(AxwqCv>= zaEF;cn(l{dKXN>P|CbPv_Z)}Pg;W62V%^Y*233nwmGW?L)T9%LfmnlZs}-}DjLU?s z-s-F0CVVnuocV@`@8g0r9->#1o0pVlTu<k}^1H|thm;{`N^Stya8u`?dvbYxRz)sp z;f<ZQ=gPaHL{ydxLAY8?^nLJ&=zfv>E?g5dsR5VI@fueAZ|2#^dAQdl4_6sY#KnS> z-@^UK&G3K7%kiSQ1(DcGIIZ*cmdN5Ss3>Rp?s(4^zgtwuoivbfQ{zKW0XRobgiboK z5n;FsVTmlU{|3g1eVA!AH8LP5ZjA!|H}DS*@y;Ufq}{jVG~!wA?XM%Zygi5d<IHk8 za5<N_Ewii{1sR8%>HN39R-hQ!zF;q+B;t^bDPZ!HLnu>6%_4B}BfxPN=@c>xcfW3h zs@Ph)s^rAWP*le>u^UODFTMl$mYirx^TiKISB5YCd${bz!Z#Ze>1#7Sv7YqB<AAJ9 ztF44KyBkC(kr}jsIB-NB#YzhL7Bs$)Yk{W8NAgiQle^FkLzi!Za)Iaew?Mo}-n8Q& zb!Xysutt_Gkq@WuZyDcMnsL#gmA+@PzcJI!z6d->gKCW*`oQ_d+BEwjaWj{%elFr3 zYI9J;rVJD_Bi4~&Px>Me6e#LNm00dW;NVs-i?}rG+1SNG*MFTco?$wisJJyP){!>T zo^&R028S;7wjVSboEk?hwlg>pSBz4Ty@q!5ITYCls|=^o*RIDsZn&O(wBN!7rEUnP zaoOPp2lpMv${TRqcQdXhe*IFgP8`ye|5_9W{P`lW4?B6wTm3Ld4Elw!Z28cEDF3$+ z6+)2xGP~Kr2C(Km$N}26KVvaGxQ_5@u=K9x+6?$!W1G+JFZ6M7bL}3S*ws*YLg<Ck z;t!nbeM`zwR%b#6b&_RIU5k9$qGe5`xS_74wF4Lq*^PGiH7~Bb%sUYDJ+>uwD&6;Q z4Z*A}yg>~2aogdIyfaL7RJeaY%4_^h-?9@RFkIi}i%&uxEC6mTJ0S?o0JCwD?KeUh znRwlqK?427)ChN?K$BY*fY9(pWVvmo@9S?yz3s)k3K^cf9W|5i`*-_|XxSUb$DqvH zL+&kL%blKJF{GIX?oV!hsHn8;6;zpwPz*hFX9=3T3jBsuCaLHm97;gKN!U%@xD{3c z?!*O6S8uMlHs14aA<mp@U>A&b820@w8{*L5y~WLb!&<zR?Y+2(X|tF!*`2lM?NZ#E z3x<{!ANKv?I8Qxurmh8|QBmii^-&;;y7yVoX}FLRhgQ~sO*m-tIF700oq<2a-E=`5 zQ5jj><OlMI%p+9%-9>HI*+;6epNrb<;0F{^-fM*?5+5S3WXl67*Co!Uw65rtSKcuH z+#h}~o}m-OO>nqpP}~HUhMVAg>weAN$9p`E209K$t8s`Ha(>NjHst)r6XNv<`#43n z(a&1$C6B0n)_Lp^)y<-hMF$)5ZvOtSM8Aq|7RLgjYeiQ})#&wZwnYg0V|2#siQi<0 zSNmkh78!+XnXN5|IE(%-kq<Ha5v4M}GuDt}Ke7fH`~(9IbG#wisu*zu?bpzHPfvJ0 zfN1FUR^f%qCPqfxirlJ01Em~Cyf5=C(VS;F>Jw*);`-nZMFYYKeT&*--GQ15pxl^P z_u|26TX?}oRZq>qQe5a5ABbv<Jrn>pmtYvHPWt2degk=o=t$#Czc4OApORa}D>QH) z4&@EUG5VJA11PI(B9h{8*{Cz8pwz8-*@FxHHWO{c&A=s^_zU5J*7^`K<H4qNAc%L~ z<sn*2sax?fE}tB}6Ie2s4vdlsaBv`yjttrN<OWLZFK|_I6emd+09T1RqZQ8aJdIM( zgS*>t?Ke)TwDRBPg@N{NtMSw*9)Oz}b)&h{t;@FwLEdlWx1b||T$8ZrRD9#<^3zpf z*%`S#6Eko4Cg$dR^;a0>n+|phawXj(cPWxvz=={f_buP@2cVZjxS1+IcH|Lfm8io1 zvw9Qtu@y`*(hiup;w#j5txr}`>~oCDrij*k9`J|*VpD3A)dQ7V;H$p@MHEt#*p8bp zoreN37Q7Hp9_%OO3D<H%ofi1wdl2PCq7?An^BN$@vfxb(;6YD<Cj%tM-C%<S48HpB z14^bvanyZ|tn5o(CN{{lDxa^uA0qW3)9)k_C=^VOy-Y+I3PkNgrFPRH@W=9QiR3q_ z_8^a&JgYrK%fb*pCh@J?616{xpfxh7Pt*BN(z8x+&L<JzhLjxEZeHTY;D==1zd~M| zi5@4M;fB(@IOx*1E)3ZkDat3g$UDQy#K#czTuhX5{1uV#0NFl})RQ~7dozOjr|+Nz z6SiNA*eB)L(iCW?62ckH#W|n2+K5+h`YouJ5~noVnJTUq;d#1Nw5&EWT6Pk*Vn*E1 zbv^%!l%CSEm+h|n?TtN`UB1iucii7)mGxL%sMH-ekk`uJW#M+%ck`Rr@a*oW{qE&0 z)^qpHlutf7X0RTtu^X-YrfB{itMTM0>++Ml^3&c<mD$)c3Q5y&KC6}A9nEi`{*U0| zb>iwmvkiGWLYFrL^Ix_*L-`#+cVZ9p_2n%bW|nml&A(e+XK?9fH2*kqh?KodLafVA zMe=t78u6{$Y2~+C#myVZAj@}aW2yJwm(q#y27*q|!WBTgsJ8z1Xg5*26JiwQY1&az zbDU>FSBaD$i+X9Hb$LtFi;P3LvnU?^*up?h%{WWQ2b7f+b#pl|2L1;bV_^ZVhn2Fx z*u4CxB$__Gz$&B4gp%Z;*6!e5k%_oB;U>Xg@m`4fNM?hJQlQ`9D6n_?mfZ)9%A4?V z#4Yessb9;w!3-Fy$S?=dZYTLTd%1#|5~+gryTShrfFi1->CTnA3C*#*yRGZN0pDW{ zzP~kC`N#)gsDGFy2=ZAlVbGlmz1hk-iRSOOE^p@jtdN`Ohq8rT>wOuw-Kw*##h~G+ zdA4<uKXgp@)vsZP;}xm_c4z)eL3fh3#ve+5F!%OQ@q@YJeaml#BH(Q{<B>;Z6zt9c z|MSRB(f>T_hs(l+B>}3chA%#`{=lP`3&8x5g(rgI5^F&hEdHQV0ttH69X|^8d!z+& z+jy#9wCv4)Z~W+DH`^cEKPtb~-kg6NxApEgfX;qg)^Fb;+RKjzi%+}5(-uAFK8&e_ zzlyxV7%aY0_@=7I3ehD6sQpIrpl{g3;t+4&vJIpU7Xdp{yY1bO)5Z?umCn2xH?l2R zJKE!@s780pC|_htV|PEajQFE3G2fc!^l83-&8<UJ>bHpZAD-o#>{*4TtppN^p+B~W zy*t+#z?)1Qrk#heI_?*Ve}nwTSRlt!`w#^SSA_+<zW9w`I;$O{<oN#sWs6jK;8~ns zVkHsQ6gk&fWs@)@fZ$`03pJ7n0dBF%Ucsx;a&9eP+{rL6aB0)<M#(B1MGi8Ip@{0Y z5fdk6LymNrYtSj%-Im=-fy+NB&yVkww&eKdpYTJqM<H)Di=?bUv~v=JP)76@EC2@_ zzIBh~t^kvxN?9|(<fuEmh1H4q8o_s8{R`lR=$C|2IH9h|=1^;IVhzH;z)UYC6ovF? z7EVI{kl2XOC|D15kRjT3slBz--kv<8xhbXHoH20k7vz(h7EzR-M}Y~no$cEa^+8Jx zr7%!`RlHRDDC%@#0R9r7!F6UB)&O@&;x!WO4j1&YzqX8VX9~SvYUk4xy%mz)a}X=> z9y%ZG1>>53jPD=Qxe+H0TkZ?FYru8fkpac?zi>ezNTE|9s<Ga{AmL723S&kv@PAiB z9IVAnRhR)4L2M0)ZVvxY`@QzbL{4X7Xey3k-_DLz%uYq@PkA6aQ(9%yGH}H6c;d4+ zOc$?}0laXI^klx=;cbz|gXz%fm!hZXR95#DI81yYBgdZPs}rYI3$Gpb!wd1V+%aDC zUGKntIM4F7u&1@-c?`plCW2vaV|!Ml@x6=)Y&-8M=V$(?J+Ut2-s%n6%^|yVX=8hT zJ6?eJqIj^v1RHQQJSl}<4>_evqt25g5$1U}L^|qBtb-x{E+$|$%>vk0e?O+mVJIW| z=TUouC8EkHw^Dm2j*u?_1XNYwRce2TnT8ce`%s;<9O0a^G}yC}tqi3j>7e3CV#a&U z(r9rf-VfFJVqB0=<1t#U{b4=sg4K&@x+`07PkA;hKPVYQzP%ad@zCQ|**2J}oHUCz z`>pe6mcqTN6U`1&U$DNXz&xL_6(}0<|2hm|%s}{8bThn|;Qa{3EaIJ<>)ApZd2DxZ z>Fv2a3+i~mo)vqVB?6v7W!=6wCwE|qpa`s7+}6%gm%=`F1V>=*ux6M7QCRU#i665` zUOT)r;!MoL_2o4eIce#mGca#5(28v$mMq`$QPj?2x(`~n{-|KmYKBE%+(f*qmjcoh zUIPGTc}v%ebMV8Mhfef|5$@JP=4!#{Cz%4Lh?A?B+tD=&+E~qpt_eD&V1Bs4DuZ5y zAv3ax4W5Qe(1Gby2Jv3kDNLE+Cw$9h0yl<Cmi=z2wy01xWl=pyi>kB%1FNY0G45%E zp2qxu<xE_P0d9lkhSzh50(&aF#<DYVgGqZTz5t{|+)Zq2qTLCJRCcF4QJmTn66mY% zh5|xyQ8J))YgaUdS9t0uKSFwYS|GJ`kkh4!?TCnT%UMdC&QB>WMepH=1_-j4zT+4! zeF<W48+5`LF#%!O4xD(-n!>^A0j9+G(H(~g#x7jbo@F(Dn1S0H&!Y@t<lx<7dCx#@ zxCDhE$H>B{jX9V}7{y}jDjEnzvb<DbP)T>hzBvc1wt{wZ5TnT;hm&zGK1Rzn6(FO= z_I@}{Ugj9G<D?puMyf4)C94p1R~K;?u|qv&dAlTsgz2ypvpsbvqNr$D(vTxC;P82* z^wqzA9_WL5a5Gvg?^cd3;yDO-_=3WQ6_!1`iPJ+-@0sE)i#|s4U&!3t!LahA(gHbx z4)od}iMgoiQ6eo$+7zxs0N5rXAb%!N+%InO#g3y17B(P#Cg4~K;kX+{L362%IXgLD zJPB}A)oSKX4u2=={uC40SAT(->LFxt(D&=6NNh9aeLwNxj#jkkh;Qg;)M}XhqZ<AQ z^O=Wm#~<;bN-ea{2?bWum`qVYO=3w7?bnJF@AEDB4G?f1oLNP4ISG9s?zBXke+_M( zGjq@<lW&F&8FV53Z_ccFx%B#pvmRWJ5KeRNl{Nup-8s_;H8Pnh1^R+2Wf~Yxm2=l_ zpdEvmh`d*U<0sHf&?aJze$W`q_WQ@=5p@7yBpNg(&li75q*Eg0gqMcnxVXn1PL}uv zJv~Ca?;^4dB@(upRUCDIZP1gH8WQA-b0!nHZjRcmFt^0?yy*YLjtwPPNFim$UOfv5 zMWsUQ>9$s(B3XkWN9FAoQ9-iG#4qxNU(w+gv_-sIpi7oU?HthUt6zvFNGcHR<`J?& zri>{71IUCHl)4%J6G}kH%_HzLp(JsuNWuDpV3gW_XODwgsTmaM`g>{mtXYx9BcsCJ z1n#<sUcZv<)EDDochvqU@jR3_XU;^a-$bduQh`+gtyQ2=6hReSmrOAPUR_|#0Kt&N z0MKAJA`#^}=mw!=UPc?Y!*y)t(c%r1X07(o@ww9j_QJuw*hx?w+YcSx4%9-)*Uo|N zcpvT9j}(Wl)azZ~)HpE5KN@VB(ugGkN_9yNnrt9aywkU2y%ZQFaQ<<SsJli(8tw#d zZ`;kdSWw~w`=H60_{psPA8_cULw`eNM^t8_y&wyr$MDv|I}T{>8qMSoZU2uUrvAHu z{!WP%=o^ThOFLXI%bE8Lgxx&?u|}5w#%XD+u1&$z;@LDWcuZ=)Pe8d;yqod_lQ!kx z1w~j|yo<8|pJQOuzxq~mVdSBxO{}>_?Hz|QQP0B9wtFj#zz>C7)7M|kLQ563D&l=9 zTKxF}h{FL4Wkg++i7^jVjT~Qr1a`b*qZGIgaJw017=a(%2=Rqsd}BgT2@`uE8gjTH zC7^PMrpqe!ZV4CPo3W@F3Y5i=p~l@Bm{nUUfoIQ&<GK>Y2Vz|L5?;!8VgUxBm~}@# zCc16A8MIUH+B*_IKFN+@6GcDqVpnhPl?Wo>ToXT-F^0_~mV7wp!$GNqZYSj2YT=5J zX5{2p8R)LMIbgOo?B@8_UfF_I$bJ>X6`)y>sMvvY`(1nWry_idRo3WSNCwi&@uypr z!!ZuMv4#RQgdGKh>jem-T08C$S;RB(ax*SK6*D2$QIfGa__gD+kire7VR(utDZ#k< z6xD-B9Yl+Phx3zJyg<fYJsp6D=R)|#S4Eu?NUq;1!Qu|yB_k}SWFaTD0#RGa5yv5U zmNRBL9k4RTOqL@PXUupyGMzC|3{W<*!w_|bbYH4a=jIGF_ZxZ;$@fTU9;(k-O(r_& z7;`K>CE;&DVw~zICe`bohf_syLz&*fp6BXlYjZ{rbSRTb<N{OO9uuhfCMR0$CYiCA zY8``l+3gr3L7#}~YKph0+CfFN!#RRv;Ho7!QD%%RF<_dC1kU&j2V=8Y{;s!+TOXc+ zJqGrx`8%R+&29`zrs94&uG&Z4Cy6d;C%(ja(~Ej-+k>Y4iBT>yEX6I*Vqq060;@-# zVeL@S=59<{PPk<&-ihj|y*TkI^3nEve^5&4k_B`&(QU<hYCljY#H<-AXJG;AQABcn z9!O3;JFAH@-d205&e2)85Xox>I+Lx~0YBDJp~o=gh301O{z-63aBA?b;Iye*(3Z%& zLl;OopdnCBU;XuHQRgn}-o#}Hi*@G-J?UF^9r~!}0qHsPUn*+~S&3ssb;lpa&|y$X ziLd^af#7`!W-2mS6Q5<E8FlB#S|i7s;%}kM1;WKTn;~59!1b<hk;8F_O;h~+B&;Lp zI-GQMCS9K<U9@E+mM@Yn4=9(gjHD|w>B>&J{7Ki~q>FbU$+VXwU4f)4H|fetx~@#R z3Y5#Y<b8^~Y$vgfoWc_?PHeI-v}0VtYl=OA-;3}cv3EDc*22MkSWU4t_$9aO=B{IQ zGiS_BW#@06y?M&8o}SrnmbSnUYn=VcE!cGCZ581|{($p^y^VJB5L6QP-xP2qk4x#; zK{UPg8QoBS#rZF*DMtH~51gx{%VW26?apdJUR^Ci0P@-~_On9aOoo)T)eNe;9@`A2 zqJFKWl7&o#Cb$+7shsWFDVqaYpEGN^Q<4!a+h1xQbszL%YPtm`aj9?Jr|2MY5!OM@ znK!<79t{o5mPKf5*egB26Y+M9bBA98TmQ7T0YfwI8Oz%ZI~=nPnDKEl5k<BkngbYs z2?+XjruEfdi}oLNLl?GNww0-xoYh1!JxwKkL9V1RYHvl}BO%OkBB1f;sHVC)L;#my z-eg=DKcUh=x))|*HvGH7tiF~wg3pe^uNY_|v<mj^kG=NFOF+T1B?y@5n;WMm|6}_^ z$X;CsCt{=pZ7h+`-9T@!5x2U<w)R74NQPoUWOyfnUHWJG?%s-^5;#Y@BUb_?HdHkr zbQ3|inwHgsZ0_C;_qV0H0@hfb7+W2})`H5H@egC;3>N$=n?La#MCv=S$%=bXwgvz{ zJkytdQ~OL`RpU_|N=Rq8c=Lh=@2Oz^$>NhW<K1~M`_=foY#SDS;T@`G5(b5u{WZhf zacNkvM@Sk%Fs`RTFeudNuNfTMoGzv*hAK0G@hx|SST*-HMT<}QVxjMVmm5c;0G7QA zJJJ}2wbDrOE*O{Cw6dTB0}Se~XxSB3+1QMT4NbpbdMU(*Mx4DLO9`T1ZN%Wxx9)`4 z%7MvxZ>!~PL>PLqNYf)r$sjxk?KjRHe7EI29`WwPWMK<djImLmvt!5+b|EgiY-bE^ zgsl!lFfnQevvG+pdiw2@R4H`0zYmcTo!P3dO#BiRVy$xOMdy?lh#51bChcvOyL1h* zmGj*8cFv^PJGsvV8(bQXURt<w_Rey<e}#85%5uZ~D0*$XYOK#4Ai4Iw*g>Dwcr?xG zf(r{WJmE8T2B!3x05q*b4dVQ24Ss{qA~iU<AHNumZ(sZ#9CfjFue{WJG2wM+<ENbG z*TOkOT+SYQ3nQb}j|y8zsYAFew2$4b?q+ZIW}WKV-TIM=z8ldIStzcMb6bW}9I{)m zFF;=M&CK3|23o{4mis`4N>|uYw0JmD1~E>sy|5X)#arjkbAq_`Sr8eFHKy5{?WWj! zirB8VLs`38k1c+WL>8VZ`WId+9x8qVI5X|rGJxmI{A--sve^Xc>|I8>tZtbIF|%7c znDI!N@o75<U2qZuOv;ko6?|6k*Ui{O7R>Y=YeOTE4LcuGIXg<--=?)-go(P!L&#Og z3ClE?E_y8OHGsMHf##$eVWntvY+9f2=IC_ZADw}Xd6g$|MKt!zv|*1}+v%CULrs8v zKGSy!@Jck?c`dN_+n^GTHR3{Pq=N%#7iDk*iyv0Qb@P88Tzs;fnY)WQd<wb02!O@D z`Z=iXko(Ka;9;BeEqMl#5pwK$Msj3ayE**-G50RuQB~*O_zVe<U}R6)w5CdRY-5{v zfy7{Cs?}`RBYSY7QB*>U0)`;e0Ffj>FGA>KfPJ<bIHz*z`C2`k=W9>#Ybo?Xy>d*r z2D~L;1w=5YU`B2cl>`*{|9)%lHM263>goBu=lSm^nZ4G#-u13`z3W}?y6&~C?fODS zrzSw$EFE3yLO2_fNB_J85!~Wk_!qQ4dV8l)(i~>gcFQBvhA4~)8sY3#r22LEx_1NB zi}*AmA{H3|gO?)IT1ZB~G|6j=E_RuF1Rk%@F(->eJYEEI9ZUi|b?*jO%ZcgH2j$X* z&m)O2@2f;Uko3Y1>V_rA8>I`I$$-_y_HTin-GX#o0vI@x-%9{Dtc6S-{0)K6m01ju zfv_GW9I+{<u+`$_*2o5j@CfngxL3KoQ^&pa?zPfJNo(oCO-$9c9z%3XB#2D)5|t{W zR#!$y|6-(XiA2FCBV#~f2Xt$jR~=ko8`;|d66wCLrn|j#xu{Iod}amer`r`-Zh7if zdy?^O^pN9(8gpCe5>_OrRX@wjtRHHdIbMoZtGGB@lmITP&)(o>5|#m}u?ATcS)N_e zpMC^o$&Nw)tI@q<N1vw!3!5|&pJ~{3F~IiE8K^%eY|=BlBpQ;jT9ZZzQe{y|O+<=@ z9UG1)o}pQZqHyh!6(c3=Me?Gc{DH05q+bJ-Hi^lajv!)JLY`5l0yhBY=d3+$s;*SC zw_AHCnD^!N;mjegPqzZPGu9tEQMbT0vlhMsqL|Rw*bjFTI~7@A-Af*6(*rKrQ7Tdo zjgk$e%f+qUp%0PfS*s$m?s~&6%W*RZ61ZZ1gUrF($UzIx&UC-gp74wuxDc0nS7318 z_6$W#n^c79$#r7n)AF9%ckpZ!`VJ*KOzXp2oE*_Lh&sQzi5d^H;+d*Xuo!d`6~5#o zfL>?8wNo*%wQp9=mtk`<FGA=Sw^Cp#6VVoAaxW+Dwts#0p9~BAl<h{*D|%=fI!((l z`wH%zd(Op9!zz96VkpBr492X}I$D(jlq>ADEdTfDr@3!|w6a`TxaHBFDA{gUEhsB1 z0NJ6qgz<6}vvdiC%{Btt_OnV(IrGmzqn+E%Vz{g=Y6nq!9wiQ<0k`z6Q_1o_<+WDn zT0r@`DN5ZaUD8O+sKC|r8@!fn7ZMD#A7_%ESZ0oM+owo!&i%HTCvcb@w7u_9xwB8h z<!1OjD%@KO-}BnD<-D!lo|kV`1gz6uOZ&Dz`&3FFN|*E2`jYL=ZKtgY^hPRh0rbdB zyB~xttkl9oB84vaF)`fU*}Z?^Awj&W^k>v&7-Fkm{eAY2!MfPR*Jz!UajdhSi9%_j z`(};ItiRG8lj8~q)m2)3u(rEBA?haV-p_=lj+7R`?SI%d@0H&go5XJu@$@y!a3$hO z6SXLNd$KB{wT|(cdMidsurP_n580I}t28;7JcE%Era^Vw)r(Ia8oCYZIQpginO65( zZqLl^D3&yfEjs9fE?$X1EQXra3G9R0`8K}6*vd{0dyaZ&^TU{Y6f+q3X5dlw;i|Cd z#jh<L4E@!g0Um}CKYt7!gf}64YkVbs;m2I<%jNdN*h;Z8Y8~U0K-1R&j#@qX^C%aw zIaKgiUiA^C(lGrTKtwKiVs1^aYJ`46is+6o<fnJoaWW9L-Z6?gOy{Q?v%>Lrqjtvp ztI$2grx2iw!Fv-~@?isYwrO8$?mQGJ=|U=~h*_B5Xn5~7E3;HA)`dQ4Xtr07zU`1K zEDF~Q&7DDHT;P5rXB^xdMcfZTFr{H)3r<J?wMQ;SPCNn0%{Zp>ocO9_YmDE?@R2*? z&O4~|Qb|1h0h!okZr#uWnh=?gL1gO|dLz~wuGA9U7&Sv&ZlJZvDMOEKf5f?~z+YbV zu9zBAmy2%}OUIlW+lWD42l6Q*dTC;pFy>J?J~i!H3}Der-48BIXGIxi2T~jMpjq(< z0#3%q1CH(7HxkPoAC{cNT+BRg1)XzL8}ZEp2IiOwS}O>z<7mO!ij5E=>1YV6UYoS| z<-oyELfGwRc>xmS6vX_iF7(o@(y^x2QEd7*m{qtQTMRh>2y#g~1P=1QiaOwFbXA=5 zkJ0Qdt!Wzim|k&U&+5|@zUi#z1eTZ?HZ`NGq}jB`&U3}!26-Y8<6D=<<iwsgJNXvm z6ELkmF9E%CKYt9rVn^(CT|x|E1`|7VDPiOlf)Nv-_TwS|YhUEfUN=p=+$mKtIcj7u zN*AI$O?$u%EV1_oxjR^RiTNOeK8;ZQ<Y*IvnGyH`2ejQJRxp|w+Mq2OiP1Xeq#qc; z--%cda90lG{5>l&C+W>jpkvWY7z2zy@fpQLOoZNt6@iKEbFsPHH4|JG&|*iCR>T$~ z!boUzrMC3TUlxhGvvJMblxM}WU=X#YKjFJJXbeL@<3eNvX6g0A*&=-mwYf@AhT#D} zI~j&S@5DA!8{LY3OrUSzmFe;3hTWX705!}EH#1+>tBAB9hzv~}SH^7JUK_!%7DTqf zVy&ko27)Ls-M(lK#_w*nXtTsP7c(J3<5!Ys6;`G(E5fv~{oxQ7YqL%N2hd#qo{04_ z(q2V0`*zF^kH_LzHzr?O%AM%T$cSTtA4myi%&CAA--xwfn%dfE#eW4aH*1h#Y-z;M z7d&~=y^o{&^|cD0pm7Qt6ENu+grxS0-#wfWT)!Ly_MF+bXYcw+a0vxuW_9~A=slCi z;xiM$<=f;yX54zqa0)KLWGQ*K;!6;OtY_?XyEd3G2izG24i6)b)+zKl#HSWO%|{4~ zCHAvoyCgZ7<nk%XZtrSxak$^UHzK(8J`%%+Uriy{?LGK3t_-@gG0SpZ5(JzM@rwJH zpY?5|fsz^sf=(wq`o6MSEcC=#SbMQ82eL(Cfw4Vs#3>mRnivsM=veWKyIkbP1E9B0 z{O;Md_k%s#-e|#leHY2xSRll+cQt*s%SXm~<`gm_ACM8b;#6xuaItqa8Pk?tBkc6L zl|;2(E!iRW@nSzn3E8?O3oHx(E0`S`Ho6DjhQQE>wFvCl+*`PN<K7S6Xu+2`W~?mW z#|IOffiXgF?;X+b{JuB#Y@@8A84e{YL>Au(Gre#3zTJm2`D+Vh*%xO~TQ5TJ<<>`g z*H@6!X2Y3wuD-<MM;9{R6x_R-ffSp*x2B*&W?ToPLr0l3yiQq<<FcC2I4~__IXeOi zk%g!-0Hv{_2ZjfePA1mu#-X-f>D78SrVuEwJ*@js6z)1TckJ`1Y3$m-tRV##F2Q$A zu5l@8=5kvZy3&R1d#BU94C2D=-XfIvn5_NOekV(mBY*dA+xK`r-r#Zt-#~ZV_r2Q< zZM4{u8*3@^CbmMm8&=^13@GYaSEmP{2qO0FllB(wofh2PvhVR$z(Hd@-=Hb%fEGUp zBf1ZkWV_k&{>`R;yV-skhRD2X9c?I9Z22<m6~)L&wCXUHg2UEp?k;3^<1fBk*&p@4 z5y8iU){0d?=3HCRc5Xe+m>0lgn2C{w*dn~09&7zdfzxhgm{^Ng(aBV-PAodZ6tMBa z$5O-lL3B$*08QL(xO69avER_vyaQX;NCMafiJ4xS4`7TSL|bzz?0?tvzmB=x&1}`J z6@`Rb>x%J;`rkACU6_@FNkXd{F9S>zA`B^H7C`p2rh8zNQ6(4#BjQmN>0_)Us95MY z*l{w=R3iSDum|Ker{EBlO(iw%7Q_0SAlP3Je4Nx#$C}B9H3<~fi88Vskri8rq}=)% zP^g3vD<f>{fr#xdw<GxxtDo+aVV_z2F{WyD>DEXL=trSp#kV`$mDZ67^9qH74UW%a z5_X(=7x81q&~_^PJPiEeZ7$D$1E6vQP*wrub|<qnf({;bD78W46c_5UP>hIwXVkwV zVr`H3UxX}nGdBEA<|oKpGvab7)Lu^)B|&@G2sfrl6Wl*Z=Bn0FX=q(h>W>l8xp6yU zn}oUyAmC~E#yB?~$BG*IWb2p1i{8}|@mg1lWU-So!8snRBjc-?F_>V+79#ARY(t~e z-^^I&BRR2|2)ct740}mKC+2*E86SzRt=q(*4!dm(HV}>MVOUtQ4^M6e6bT*ZlW49+ zh?G~9;e{n#{6?G~xF3&3ss?&F#sULpaM3ty1%z2+d`~b!4<c1_Gi^7zwHIA+l0)&5 zxLJjz0m#H3XGFADST$?fhPIHO=+s{Y$uRTf@of<;ya_bv18^;0njy*!&{goV=(tuG z;U~gPxsVaExeXkd2#i{*8O6(L6+hz@C4`#as{Mjffx~XRN&9Pyw)j6`bk8f<0Fz9U z?1!#oN1a!)qf(N6+D$vRUrMq;!PVo1cwrX~ek0EJRmn0+Z^=>_JjpUJDOvREAxuHf z7WA;QhNwx&GGgLCkguq{dL`Vz?hvZf0bO<lx`GnK41UylJRd<ANCm~~82X%4yUxqD zfJ5{s&@rYUFtkYZlQvQpthd+|qs5}-@^A3iV+_aFI|l5IA5ma>&KCt=U!e1gG(}6X zu2C>7xMF!id&n6o4?2uF89-%KMsa$brrd|{#lqYG))MgFj1EKY_2{4+&O?2Pa7=a@ zYo}iyNZlxWnc7eYy9p)eoP7X|8rrQ1FC!H+QSOCy$SuhWPOf0D6bW&!)qM%HROm5s z1JZcWSpt24un;tC(;Og7*o45H-~e5MfVWGFJ43m5hTFL+*=x(m<&e@`c$!~MHn0aF z(wJJZ1Cc)hk&p4l+L1RNMJ&v2e{uQ~u=_MO2OsT<H2CFl!}GHEY=_ki;cK#xHVj}h zys*TpklQGS!Bl|&JQx;t*6jq)UM)%y<7k0GWEy_x64eV7T!qD^u=hJhA_9s%%cYqG zw1{(e5UV|UMmSGq6E(97Ay?^nkoaEzEjgz1P|$R44T49irx|*j;XwC#qr0_5dr<_6 zJOcd?%1)Ob!a~Q3yS~Kt^H~ra+<`k$6cl+thoiC$(%U)b+XzE1`o7cHW`wQ2mH6m; zJPMrs$6TU~XQW*IRAN(9Glue8@ZW;}4d|of>RpJ}2FD$pz!(ExE`RR8zP{W$2`Ync z!Y%j_JMZXocQYX@prhkjS;iljU0~q{J2*{jV_b|SXUJ?lWhSbQ9$Vaq+`^<SnCHW2 z`2>T-Ixw&}2sfX*rcyi@VdRS_-pKhmR0UC0lS5*b1w_dz`U<KjN5rhM-cZ<HAqLr& z-y5u%mLAY;kvi6L1m*Io-;x>7spSCFnf|p%%e!bI-is7%76_u>(4sZXMcU8>4&=%? zmvjt%RPrb*buF5DbpD}@>}1UDX*j|aMe7yL+r-5Z5PCOQ@+tR=&FxH$UVN&9v7AT+ zl!=F3N`+tpA86{<e(Z{i*!QAM$H%DM&{oVxxGdW<e27{eKicq?VSQMRFN$puEfPE8 z_eTBVE2h(AQ4aq*wD@E2i_!8{F(rU(L;S5`l>T@pl8xBQmH>uD82cBEaEM6(e8DUy zRH9X#C@5-h#J|rBiLp5bl5=XYjlG%DLo1J0*g8~>y~6fySTd+x)ODz~fyD9IMGll@ zY(9Q&&C=1t!vSey($xLdAhmr6W2vBty=Yq_p?!0=z*vhEY>@)=g#5bYqwE(;d~*EU zxi{CfB0=;P3sF>i)_)7X+EXj|YJ4SUs<om3uD4b*aR0VFtLfYOI0v13RujjpT0u{$ zYn<r7erGw@zhQKR_DHsn*m}1ni<+)2dgx8W!5|AMBS(<4m}rC;47)Z*pT4CtLrg<l z`Fhy;2xX?n-u1VC0=wKZ%E>$#whm&G9(<_Jx$7T8&QOUlNN}eMP^muv+*#tnPr$vd zLb&DO3zevex$7zg><-~BhCA^pn1BI-?8jld?Jz8q|58APt#FeF2$I_3IH3B%vt&_Q z%IhU%4!npP=1zs}Siv;Gi`)F6p2yt;<qpXE;!G6jh|JF|1ragk@`$v}y&ObDm?$=x zI}k#y$BV%=1lS51*kBywnHxDH_&q{2^cyOWwrKEPA>!S@VDpw)5RRWDTILAEYxAJk zhvveFau+_8UUnM21DV+2$H`49dxh<ZBbYzLoYz({nt~vFiPf}6j;QD|51#d6#}BL| z<{uLzzfSaU{3zIeLlY;?z#w8}R?Nbz=tOl!u{_@8zSoZcha%^C>@3>l!d9&*2Zj+z zNR)UFP{E*}3k-Mv77#>SM9YBNArev)op&I;1^4dx7+3~GiqD`BQGQoqoL+buYvM4) zFB&1}&wVh+<KOz}y96K&keK*t!iH>^5c%wI6Hk>;>=VJ}{6ezGQ1KZcXk(_T@RL}J zKZKpCY-`42)~T|!;UMs?qezg%2S9n{@GrKCEo{&zU*bhrfBkvkoDLbHCG6qL`AMNy zi$}RT?>^WKsJk(bv=VdRe}OK6mYQ@uAM80~=Un3EJsgYg)x`=}V)(mg9X^1ePMpPh z2Urvt#3Dc<x086=^rzopIuE@?`*jM&7RHpUB{KGdW3dsZWJh8$>NjjU+ZoK2#akf` z#hBBp81qCO${I$^%b7b%$|+KBo1e9I36jLe1?QG?vNW;leOj1t^I)|5n3HuW^)Vl7 z3u_+hIBQ(qVF`DlQ&5~c&udUc^k`K_;usjk<T08nk;kZW^=2^Ovlchvm*-N@heizh zMX?DA{ikxL0i&=j==#V>^`b3aHte;Ggjw;W`%tWyz~(sh?Hf705IUiaem!<}pthJh z3d%EvaZO~=e+c)iEUX=Ci@2U!o-r%HZ#ov$xt{!3Po}nLg6j#!diraN!mg(<)-%A} z0f0Eg&!U&>3w71sQ?vy~I9c88$8`&H0^90u!rEdp2D@8JnlaUhq0ejV8V5o>v#}>? zR+r(&Hi^3Z=t8}Q?&j-plf{&=nlC-{LH$6SOjDk5^)3`Fj7}|D0WJO%lqBk`7Og(_ zQLhgId29UF_yrF>>+$7q!OUY9bh%v(DI}){&@k4|vDb@mKjsb4AK1b{oDea-((|Mk z6SS~F_p*rfmi;&hhaPJL=>==btuwZu4~=B9k*#5-i7XxSCoUD*>#YYQ0`NVHbuVAy zAnL&R>c+Fw`@~j+iW74Z>*=DgNc@>D6tyq$BwY}=FY)hiVZCRJ)t0yk&XhzvS!nSm zus)giA?jOlQ6lj#0Eyh4FMVuw*^!8X7U#wEaptoFr!ODCKlihGd{EDk)+c7wGOqsd zGsh0h^lZTfEPjiQ@7eK-uca}=l*MnQr*EhQ%RHKb=hDP?ShgF@D1cp^jH4Q{_J<Eh z-{dMd-kq%DX8)D=g^FO+8&m!6GI;E5?2US#`)u64c=sC??3=sT9XpUw6fNk)SNrJ7 zy<AjN@FqT=#;&Bib=>e1b%tCNbsoJ)^zWQUF5;dZeEaz(Vhao2a=f3Dw;m~CH{~uw zJi>_Nz(9x1$@y~BY5FqP+cCY-&vYLB@*{LF+{mp8+;`o@Ga1mYXTK?aRBL(+Vu_u> zLdSMEusgx9gVuiC+NUpk7c?8O9*aZFP#z21jR)QP!`VmN1>MrMVzWp45u@agVNc4k ziVf=!`W&e!-TRH~!xEYMJK7JI?8gVqyYb0!WtLToTB(avbG+0b(oIx1!GW7#ids1P zAPCx%0($#Vm#9&4taL5+fFM<mOC)I6)AFoZtS%pFKP+O4jL2o^(zRuXP_o~!4qLTY zh(EUQ9p(;*M)o`Id2Nl|``Zue&+h{x-qQ8{(zOO+*_HWLZNS=}jFKYCef)a%KCp(Y z<%2P+HqWphgg9?N8e!|0?k(+8o??YOoP8F;#Cc8U^!8&iKPL?wIIyYo&+aywEq){P zu~mv4e~{E-7O`E2ooNSIFouQxUAM@eSkez?AE$I`3O4E3o+eh@jgqsaf2P=(%2}*V z_cKCAtvbv*)n(1O0o+0Che(UzXTYW>Ll6yTf84#lmz@7B_S)28uAnZbWG{N}7{7}h zWfwy+PxC_zywN?7d&*8@hG!P{l->9>05Qzpi!RJzZY*mDCN`CEH`*n1O~sy#uc2Fx zO=X{6Kj(J~e_GJl0j^Bv3GONjJHK^zmCZrL3_EKsLup|y9(JFb_znB7?yj=`6g$wY z55v~SQgh#tn(O7VdoNViu>ZhqUkl&imW0wL+-+sh;CIl0Mk!e$P3VSKNU?VyijTt1 zQ(s52IOd`Kh>Yp(D|?5%F0gnhf~_aqePvI$`^tv6?6LYKiwx|2<Z%PaU=-1?uk1+o zUhw5^3-b~HN2O1=8_UR-$BxU(B_c7VLPpz<fK>Nh$(Pt}RwDTtB2a}1aGqcS+M*`N z7GmSZvM<ILw}B-yF8Jc+GUUV(6os&ag%H9*UXsYAPq;hF-hqTJ7Mw6u6f8+Xm)+U{ zJw}<mM@1CsENIcroN?6{YRHQ2)rn92R%!hV!~O{>f>2(Vy|8trcg&A_$8@)recBJY zUw^G(S3&PZaxf8I83>jClq&BTH`ugNsq*ooJi(*wIU0RzDT5vggSiGxpJA`0RPDzo zV%Pkon=MZrRa;n0J7_;fVOVP!Q`o!SS&&AyHWNI78(}uBwZgJHYZ+BrbR<)7Kxw+E zO8c2^h+&zKzV%MBM!V<~D-5N*>Q|r;wvJeWt}p~bGr>`BqloPOnu!VXQd*nCT&x7Z zT1y^a7=>livp=Sdlm*&;RGLY><l|l<H%jppjJG|g6!tRvo%X|qCAiVoFM_m7_FHR7 z-*nb8UBjLOmAMH6T~Uu*l~L-^r>sXmr3F-L5jP!0ovE2R&J;01XRJ$g=U$Ba;-VhR zPpQ!-_})ydl^>BBtZ{E@^IU42WPmyS*t!pUe(yay=eveIHKkT)NL&HZe1NOoB)CTj z4CPq&Wg+gFl9L!Vxa;<`iN&rx<++icwWrt?cjL9^wWsKn9?vY{{<mu}|Azf<$LFpE z_b_<qJ47?46m%7RXoSvcO=F<HPTe`!Ep1UIgc=4yX4t;EKvbl&o=p(S=$58iS6CrG z4ufKrSGP+4Qb5VNwG%ZEt&wgG2bGhkU9@YWPMtBFpPW&e5*^VfLa3gO?P-Sd;8`8L zlFSGWGt1HzWuVZ>kZhUU%KaJZAetvK)2lB)+LW!wjLQYg2w3=piJ(hx66}I6sdS9N z>GBjepAs>L+yv(QD2(PbFKK4bNHbe{Holr*Q<>E7V@Yx-N>Jn$x-iHD$YH(^h=?f! zqPD9{o~sE+9)iFw#QK6fCXF3+^E2&Bp^t7Y^0W!{10XTSb6D?w6Hqo{!Xk^3K&xn7 zO4~RGO6?gq)|8Y|vk3%EMiW*AZ43(o?P)(KGHoN3*fXoWlo*xavq}sF=4o3UFbiy| zOq{RM>bHNn5|Z((p3+wW_v}}>+EaoaRWW)dJl>}DoVAwGwRp|P=gujI&n(B#Mt^~J zB=Jx9ymIPtnm1^#PhZbrUg9W*)1uxa;m;o+a??qSMy-v6!t2wY7bIp9iUMg%!q?NF zCw>bm=<j0XC=tgvLOt)0XLIsHO~d~7-PrXu)?UNWfVOlvzOTS3#w$S_#9kvAY<PvU ziz!L^{CaVBtOMhK&VDBhZ-&6^-i>-K<}>h3G6xM-3kCzP;lB&ay~ghlFxaq~fh9%` z_`t%+SqHK_UJ!@B<i$Biz|vuSC1Ak10xzExE%*o<Z2EEVz;nYoO=lT<{Bj_Hfx$ow z3<kQ*$D?9UVZzVG2Q<XMg7G>IKY)InS@kluG8*>pmobeP<cRNbHlq3@S`rr+B?;Yn zS#LQw5OtvOo~s|%OI~Kk0c|0qzvZ|LKl&xOcoG1Q4(2A5+)+J7XiC8*&G`sYTzF;{ zigNy=v`?)jCUAGV<%BQHwWdi3f_cEGqyS?sd(E%GhGGAf+*nBcsHa_GXSh2!5w)>< z4+kd)MAvQ^#Uzyc0Aj9UOpzPII>0f?0ogg^p7NtI&ThnMKU$K2R<>b`vc`?Z)U`$9 zz_h)FU&nc=qnuv?zE6K@pJ2+f2uaEuuk1nE{926-uiy(ZDP8s^qNzicqlUePpT$|r zm>@WWks_IQ;cHCp_+8e4Xe9~5I%+K=8xXoXG6SxW%>j^$E|X$P?;?u5hO<A`GV-BB zNzv^DlAe7OJR-})1(Vh?GGy2dXmDq+v*(dFtPjAKFz*M@wxM~cDR>E=9-zhb@^_%r z;pipoJOH}_EegRXSmn^z^5h_9hHP}v=Rhu0f*-NT{R}~O5c2@WFl=<|Nf4u$@+>yH z)v#D1=a8F9=}0<PVxZ_eaK<XfAf`O0<S3e5cN{FnB3GgwU>tM)b{Anc0->*Q49>Z5 z$1zvpG%<{0&bZ^4t`5l1be?p_F~2Wx2Qu@a++pW01(!jJ96o4^nqfc;`xy=&3|n9u zY)_MI@j>W9ueNv}8bHJTqZr8?6zcw@JCZ?9`Ka6cSsopBtwnJiL~)%7JI@!0p$tc= z3%#iBPzKwV&tWL@`vNhRd6LY4b$2Xtnad!pMY4GSgJ)#JOa?_gWW&4<oYBrCQvgq; zPr73n(Mw1+%;ZK4W<)Xuh5=CggZ}P)k~4QOljLj&GGaYRF2EU+kiEEP+|kS-h`UjU zu5ZrRQSHr{JDNFT35sOGl{FX<xk)0IKIx8Tj#5ZsIP;`CoOzNo-Kz31YUKw?=Ty{U zil3(GQ@4t^M#-%u9Lb_`u+e^4Rtf`?j_8T@iuzISsP2FUjdr<cv{?nb_P$pY`1E{L z0O}8G3zJ)eO>NJ!?c(tu)lkaVDHz;e_GeyxE54Lj!zRQvnCZqXX`B@6xf0^1^|aUU za~VrCK*BPr)>g65w5zT#guS(vx!=hwV{C2FIi_v@mIr^ki6`yt3mh7x+i@5$SX;~k zN%Q9!1zJI2RqZu5f)qzNB7t6Zr?>e;ss>Z_8WP%CW~vM@YZ>{06&0T!=-DsRpd!4H zS;RnRk5^7?5|yGbO4rc(%HUGhxMm;3$kq~U(cqFknr$X+*wbNmOTcWhy0Ohm)??2~ zq7ol*tBO%_u=GiG0$sDqi6dIcBGZ`;tGfhg8}>s`Fu^PIQ>b~0o@d6>=&@@Edfv<t z&G>X!-RYP+vZu>#qHY~QMe%s+hFv=3GK6?%Ft4SfXIuJ5cFGYEvuzJ$;pPR7b{fHw z4`Y^DIhZ!@+wO9_1BCO~T`}It=6DB3fVE(}a}47h^n%!aycWhGof$O+oqEx$Sf$dM zu4RA1xt-shXp0i?xV5#~t*yx!BUU+K#yqKu{sd+xJWX)i@eW4g=u%W?q23B5JS5ax z*k?xgIPA<lBV&l(HRmr9?nKe7vtG-kEjl3zr2&F`7p_KOH)wn4NmUrH6HzS&I>{b{ z;|_B^#*(;at=x1!LFK06iT*=U+Z=a@BU$*=D#y-|^1z%rH0>DPxXIfM7^x)n`X#u9 zN~0B(D*cjC`Wp^yz^R&JnN=~6v8n@5+OUHXb?IWp%B|v7IldJt$H?YK(Co`$q&);z z;HZFdXmeB@+IU(m%w$phOjn6LQ-|Dt)LZvHb#+f9h?vQt&GgLrQp27sb(U5F3*}x> zcfV<5Qv=wHvZN4^(zT{%*=tscGWsn)`Vrj}mW>+?5&+K_7<BKE28Wi09|^68b%LQ_ zq>^okzhaqR?nko3_(2)rc=dpm4N8f#KMvqGu?Qm-Ij-^GV!U$*BNg_PJBSZN;ENH= zD*|3qz?BIP{toHf1UhJ>O)KGzY%rd&&S6NyOH(4&-*9gSkDysqh(02$KCF-Z`vPB) z&-cBmhWjULO{>9^Sj%y0&qSRm1(S+4;NaEEPgq-uUdLJqh6}ZZg(I<W`Yx6<42)i< z@F?$TPG)Y=D^Uz%=AqNyRKT@JoZbNUBLyqrzMNYL9xZ5t)9|-i?iD0BFT4YMz(;e- zlTth3HQ}e>q`%Aavx7>1kLPcOUmQ7P7Im7jqy5}3IpA!@w(;i+0?3b`)9S^`0)TXP z!>=`QRglz(78`+~#~%d%uty5Yh>2@rM&OMVIMc=*9A4xlh}?P2(=3nY3km_W27*Y3 zNaFc|d;t)d@E}1E5Boorl=!_o0i?xqi%q<Rqe40=rK1d%AG@fhWf~cUQKvS5-2wCO z6m#&6L>XmYeaJhB9Or`aOw=ZVac(CLeBS7t8-txbIO;LA7Q5g;1e5mR(7^@GNiL8X z3c^HgghF6j=heNA{v%Zr(655uVqYUXn64;J9{7i|?5RzPhW|Y|;+7ibolob1zoul# zI2735lPUIIVbQ`}<UhQmq&aab#_nQ)5XyzKkPT>O0i02u*o@s9rj<i4jy&vSddP!m z=M+S7xM~&_?*Yaya1B&1;PFBjt%(QZl$?AP^%xT2Coqz(py(1OT~Rj_;w3xc&DIvn zt5Tnr%3o+~Hi$h@P%`h6uH=HRvJ1&A5>X))Hf0vTJadGqDr%{lDOpz&Jc`^sypg%* z!99ZM#PxtH=ch)jPa-^GOB|rO%bom4Hxc(%820MrpyFAHQgnV(R$|@qT{u}pwG+C{ zV;AxHhUKh87}mNU!wceyx8iNZ89}%ES@B2Vh+w}PHYdY{v+GzUs3BqO>dK9`0ftX? zUyZ$&;bdM^bQTun@-CQ<_-+?DX#1@Ao36W%+vf0DnCpXj(%0$wu&al@F4tFP+5yja z@G~&ac<?i@e&P(zc#n%`k`=Py!@iOF>skM<ja2=u@uy!t7vxfL{iTU|$icJcjX%vG zxB?6PHLT=38{nwFp%X_f#vZPO-^l_Qt?5x=0m7BS@bJ@Q@`eq@R5-g~9>0mQS2WUx zPtw3h=W~CiU>>eD?ea;$n1&h>4}g?~kM-jDaG2Hr2+Sq;6G2c!#Lky_h!09IF!9Ee zb4kis3#V&lYGG!IO~-_pIXVA6bk_`PT_r+sWUM=09%T<XB2R)|$9Tzes{ZbI&)BAb ze(7qGT7Z4EE@$?`m8!WxVTpQ^QdXLqi?_xnA(m@!*3p?VIlYf?!wwVO3FGh;e1)<< z?ZeC{ZqJDwzyi3tH_|JMmXTXBM<mN6UIROlECV5YQ49_9AUKu*W!PEzC$}7={81*8 zELeB94D5%eAxjZwzPAUdH;1rQJiiIwDo_x@Wbv~BxcONLvxd*##A{szUea9QQySu9 zH#ec+kT}@h$r$`H057fSbugE*SiQ+c9Z@$u>e#GII@rBVsv;59Y<;2BzM)#K?xf}N z&O<%F<?>kd7*A%yWyZ~-G+{~O^(^`~DSdE_m&i+EB|;+Bu0%Ej%7RIIP$R{Iits;r z270k29r^z662)Amcw~IZpQQgq>4{y9K$djmThyE{N(6ZLx>P(ezT`*x<=aE+^Cj=F zl=$*3>3z}sUE!sW9$(VQ_QK`6FNSXDgO21w%1_emi_Wk#I+8CbXIY+?^hLmfe=m)W zOjpv8bhXc+bA1{e8BgX*(iPMBe}@+OR^pNIWjskozQ6K!XfSA$7cS|fzhyb`AUQs= zd|hAace3Y{@g+a<E#)Nj_3~8IUalXc(MhK#%Uzb6%x5nm@XY9gj>MOAq~1&Z(&;>q zMkhT#>3m3kI-R;SIx=7KE$K?WzMW3M^T*QY$as>D)IWT6D4v_Wx1{TNeJ!3t#*=R; z2l<w8SwAk91iZJEMo03K{+4o<d`Wpoa{ru0N2V+3$b89qA^ox*NIJ{X=*akzo-BU} zmwJ7>B;dV2=!1@oFYCo+9-ib&=1-D)JdKXzL&{f{i_{y*m!v1@hyz35k?|#-^h<su zU0LtvN&?>dx87UElkaqTQZACeThr(qOrs;?%eTyr)Eg<MNE)5rrO}c6NIA>5v>Q^7 zrl-;QTN)k7hm?nWOSwpSN&1r93u$yDKk_a0PSPv!@NbX=y!V;Up(E+Z_vIeGo<`@z zG&<?|lKe=$lX8;zl;n1%(UIxO{LAu^<t_D3rYGqfPopElB^@aj>6dgLk_5bWcN!hZ zkBl$r%KXWEeJ_m;PsZUR<I8x`FW<7fr9O^#qxmGC52ewO@gzNoC-qqJb&W?y)|ac& z=*al;E%}gdsm~93biVDq|8Ko!Os=V!RTUgMtZsJIu)2oHbE=0`&6+V|*36+*g(a93 ztD81sa=jPq1`Mm1JR6a!Yk+a>2u_^w=|$)7AbuWR=sPaKy2&$YYo^b9Ab3Sh&6Hs6 ztm!lB>w?vjtEL5K%?w^KC0I3Uc6D8Px-S1?8MPYReFsx{gTk|C&zc<sa{a8?q*qrz zxxP9$b@r?o!7J*nrgwHd;Q~@uHG6V>)wH2L-&l$wIDKYqLw&Fo8J<yHUp>3-yMuzk znNy}C>J++=&sxtpr@Bh83UGC8-R$a`;1v(J?#cJpx$dbolOKSSG3%<Ur?{>e(`Q!C znG9@X69F?O&r`iKXI9UZK{J6W-5^yzv%1bBEV49pdQElk8&}kQLlj4^a&yHJnOR@` z0J2BPTz9=!Y`x3vvxwJA#9rn0S-cU$J%WQGkkjP)>7tar8x#yfj3VioQ-aJ~g9xq* z*3Ak|ojluR*Ei?~S4_DVatdB`4S$2#Rnw-|Jw#_AN_)!GFUaq;q0%B>g)q`$z?=H& zXV9J150I<EE2b6&uMw~GL<?C6P#IqBp5#OY0<K2CqV9ZrA|dJ;3b>c54V9``H+fD< z59?<^3lTIH+9o4-Fdp4>Px#J}w~r0`s%Op#D*oX2pgf-7dc8VszFRzhyV(VIdGF=Y zf1?YpD0APnp_gCcQxkG0hK`?e;XW}NeeT@x1;RgKS+h&`piAf6t7Vrx{o0rxA9JpA z@!KT*7hHc{**_os>CM-@a&7ZVH!PU?#L7cA&-mrYid`3;ka+24y3vh?L!jJef%N0e zu;f327pVU<r|LhKc+~$)gscDX;*s)Leluu^=Zs8o^r%ta4Hk~Qdu%uuoj$W+UQuxP z&=EtueENKOE&-qa$9MYt^8)@$at3BC2Ll1XasH%u7JF~PiaqzwymuMihUcC`#zzhg zEbSK_obP0e92|Tk(->U1sJ}kAI5yyx!DanU3>sXl4=&UP2S*Oh2j<AZStBnHX>kIP zk7&pB!2uTRuLQ*B`wkluU_1Rr56*ui1F;v8Zmj>9!5vu{<N6H}6m>~aXB&Jq{@?WC z|5_|m4Gt{oH|oLx#<Gm1ILWeq_>lodY+y!pzd^`x_=0@k=8%6pAM)q6!GT!6e(w&> z!u%t=;{G+fM^pIVWm!MuU};8paL~ydIk@nV{>I?qMFWh%BVq%igWLQM4;nlIxkg?g zg=AjASrpOhy>v#hkrlKcucefiM{6``>7+G!a7RYQ!<px$Hd^L$lSgkQr~M(jMg7bR z2aH^nF?wmH$mgxd=hp`@pZW!q%SRr*IQ~H3-*VxA3d+Ul|HuF!pAte5a%9;SP=0uf z9Q+7=qrLe>PCb4z{&;~~#A>!t#6m}EJUXu==?EF7@|}`l#^{{S(lJ4Y^81TN=c~!G z5b_gc5oTGW_<{WH$hZv}a{kir`G$iYw-obPPkKTg5h1@jk^=dSCy;*s;Yv}UpZABN z&Gdb6?tFn6$zEIU&<vmKEv3WBQ12%j-hK)lSvSAr!MV!8=V$Iq)M4TWy)qYd)C<e- z$=;_2NW!rsoc4SR{(ii0%6nvgy9|EPU+I;JsH=e8>A^d^Bt#tq><1ovIqDT3QP=RE ziht5s&J5xa^$hPB_$R!>>!^!5Lj*h-K97j&6~FWGOZ;MwK~X0Fi+k|4%LJOwJ^I7v zTjs$Vy$-U_O~8KX!HdgXe4+bruEM`xDX%hCLhs4&dCW^d63&YG*(bxtityPd!{=pI z3HqaOXMZNgfA!$B&Fb@<@MMdd4^()w2M?-1xHo(7!Zi4H4=(M#3~m#S&*qEM`99wu zVbg`v`*Ce?wr_+Ag!^sb&-Rt2!8?V2kZ)2NocGv~ewlcuem)Y;LB84)NVraW@L(Do zg@|WRvOSZ*13Y+z1bA<^ZO9gFfg1EBfuH@Ebn`v<G!+@{OFjCHX>cAkz#A*l)4kGz z&r8EE_TXZ@T?zY+2UkGC$(4K3Zxp`NkM6;jq(H(o+Ji4ogY$H1(s?WmKGuV;OoQ_( zcj8Y<gHQC}tJ2`r9(-*YoZbwdQrW!l2Z0|r5AN(f;6LgEKEDsR-3R<%`hfoe@Lb=C zb3u=%Lhrq@5B%Ts0smbeaPIXuUw;4E2b?>5&WF!F!};JZ_5t772Yh!Q@VEMaAL;{s ztPl9deZbH30nbD`biRCD&<FfWeZVj71AbW_aQ2bTm+qB)z(@1}5BCA*Cw%9lKei8e zWgqYfeZZ&p0k7)={$s$u1S49(h8vIQi{TyX1K;Tb{);}~PxJx*4d6_-_J<-_x6ekW znBW*%<r_Qe{#iAntLt6I*axTA`tF=Ov!-DlVeXh&=M>S<>2<Rw550CMCPV6nmLg;- zW-dn0o<7A57!JtX>gf+mLnIMhP#QOD_Jh^4ea0+zPDaig`CP9rIVIsM$K*;iW;>Xu zbPEd8XHFmbo#Nrw`-VnGUCW<R{tV~Ob^Q4be@aA1i3lnY;1U-eVrc0I@hjq#x)7I= zz%Lc}*NV{LE^!e$+=YwZ;ey(=;<uQ@Tz-ZNV%G`CbtQyfC!${K!UeJGuJhGZO|H3r zrmwb|Gf}?kdDH8C6DQWpdSD_XIK95wH=}w+9kM;Ux@wM(yYi+s%$(?hG^TJ8XG*<0 zmE)T_yBerswvI8XYJUWrn(8Wq*J5I;eyR^sRdv3)`YE#->U~qE)-=>j^VQ6n`M?in z)RM#lNMa(=@w`>_HNJ+Km|=SmQD)av&je5NIAP(NRSVDT>d8}lRW-BfssXQ^HMd4G zD}2&3<H5T6YLK5hoB61^e|EjEdiGSrsGe6VaYT-w1`|PZCZ^GRH8n!@CW^eysh)km z>zX@xdi_KnxWrrsS*o8^15`27G!g3h3G5disI%_|{9|8&c=)9SpLF;(1&&JqlK8wq zoey7^;9t@i=?y6eAELk=1%8tP{|^PO;`j50Af&@Na!LPN3j9(9{;2|2>5TP;4(a^- zs{+4Sp))579z5yzySy$o;br)j{CvghiW06X@NcETJ@$OdysiZCM=JPR6?mBfe@}sv zzU;a8q`~EU%7q>R>5o$Ad|QDV3jDhsoa{2|LHzT%S;4;%ewp8h0_WtDg#S)~tND6Q zftM-x-}Z(Y<Wq%@QQ%<(e})3TMS(By;F5n6VSJhte3k#D3S8y?PYPV6&jW_}Ncy#| z*SAf<SLyFm;41wec?%iL?`Zr>xvlI2KGkb<i9b@o*S!TO!kJe|XNv+aQ{XimpyNqT z_jLuX(jVz901>|o|C0U_3S7lM*$4bKPa#Q1#ebp?_!}Nv%31dF4=DH%g`Z;ze2fDB zSb^WFz)vgir~?0rH(n>7<qG^G1+Lo3PZhXoXAB(o&xdq4)R%Hw?k!jm&iczZd=}-q z@APyX1+LnYpQph+ukYD3xU@6Fy#+7Q58_|)vr2)hdVU3sJ09Yz_V5=9{BndzI-_ay z@euzT_?Pg-3S5=X8y=kHOV##@!*^Q2SIhTBPf!y7O2pxF*n=}&6~BRv1Rlb_iGRt@ z(+XVW=hHsmnQT<>kdBJ~ZysFoBara(WEz~Z<I}3pQTfcLa^R74#=2hLl^#4jU#0>d z16-M}+ZDK~=XWV^RnPBL;Hq6+@4?9r?SC`=`D{?|Z-if_`;r1z?c0GMknl)4?mPs> zq*NL_>G}Ga0$1}DRN!j9u2A4=z7{C(+mMdr^IsIW+TQ)igR}W0PjcSx(r>_nhp>_O zmvnAd;I}JqxjsmIRi2M2_-gz6YXx4R&>2K!#X~wH@h{UYQ{ap$;oSxB;F0_X{jR^? z74BQY<viz89-Q>m`riLrUOc>1Jug+@tRgbqXB0SDknqh4oJmP|y8@?E!oU4(c<_)P zmHyR*0xaNa`}jQteg{w_ot!IE_#`Re-%{X=D&aRNaFx$n6nK$>zZPrPe8{Itzg>Z= z^baX;mHsgWuF}7+M37IGqnrnxo(7lmz%O`k@}u^{w<z!%5GM1Rf2~V@5MCMh&vL!K zhdemxsB+dzT?E2!#=oQ!_25#kTr8h&TpE127to;4QR)AS0>4wC|Dpm{@lPx8u?qe- zhr0=p&$|@(EeiZ@1^$=<zej;T<-sW*wnx+P&u60or_4GC#Ir-8quTTR3VaOkq}&cF z@LLu5`wCpOV<!}NSixU&9XxoLU#hC4|B?cyNt5tH3S6z%SAGXbc+%<os{&W?|F;5H z>0fz$iq2JV%5-m1;8!c~2Nk%gSIZQ*n(prv_%#ZhLke8g|H=_5epEjHNr8`3=)^)P zd=>sH1<oof^Yv>5K1_kHQ{X`b{<;EJ>FibDl?wiG1+L=fd>2S~SYE~Wm;5}Tz*+Sr zd?hPC9^&7Ee+fU<2mGlUiS6R6@?6A5-Gi(0T&lo>2$%G?D{!^`p6mnOaTBS#>8kWQ z6?hQgl70b|1`qS4(y!<Pe!LI(H_AW&Pdc56WdbbVsvOqz0dH2|s^0EV;9m#HB>y@* zc$lt=f5Aur7I2zmiT_;%uHs+G&IBIPQSHOM3Vb}mB%P-e`1cj~ZUwID$<^#6;URq$ z|0V^lru#z$uHr9M;Htgd?ZIhpX;&+l5T17weATYr!o=`M{3RZKg$Jis#h<6ZRXe;u zfva}7Nr9_&IF~}fL;7lc9IwFDa`}-0XOku6zf*y$bdD+TA1L@|6}U=&FqIw;`C$_w z>E|nOntTbrQi0QiOZYGaK0$$BufWxGM=5Z%Ui?~t(<Dp!e^TI=DeyNHxY~YoD{z&5 zk%`E7m|vC8+ZA{aVKUuH1%9sruUFt~3MBqZ3S6bruE13~gQ#S9$d4+Yn-utc2$S?D zd2p$>YZ(zwwSs>m{1Shb0{@-@uTP`H^)5a?Qt(weF$J#DS*^fTIiFJCYW=-{l?M;m zW)+cq=Jx@=)q^v?>_<J0e?H^V;6HQ0zWWtAWI@uOsle%!@CF60*54m1aJByahXS9d z(AloQS=A){_Z0Zu3j9J6#X~u$_}3_K6@R%09|Zg?{1<xVzCyuQ%j@42xLRHpa1sg+ zqi5q^@)_{plD<Gd_*WEsmHuT4T&4e%0>46`zeRx;De#>NyikGX-UbgI^7(E2OFmy^ zBZP-=c5Nj54F#^ID;gUQUrqO0R7wx7ru#z$uBKZvHHAMJPMPjK(^Bw}3jARO&L(<@ zi{@LB2G8-}OVi-_9{hJ{@H`Lx&FQX#a=0J=lAjU}&T?dZ`6K@M+@s)E!7uUutiY!z z@D~)gn%^U7^w*O(o|6iG1b#{XtO93MknsLLWGuHF)p|Ebfm4Mgen5e%{8XgDd%X3g zWod9pXG@JpR_KpfUPlzTT3+30@EkX~?@St8me-{-QuIkjme=<cIGZNP&jtmqmgBn~ zd=PNea_m1dMPDt)A1ZLQ9Oo!-Rc`<3!6kiJj%yWswH%*T;A0g2Ur^v`Ic`$mQ3Zdy z0$2IDa8@c`gv)ZIe)A!pS;FQ14D{R#SM5@+0$1%)P=QOD1bM?^p$~*F_wY>bO&I^> zJlG=&Jlk{gwbFA-{FQXz=@7pz4T9vp!GPZlkoa;w?do*6m&m*{xZF3`ng*Bq1AEfo za(|#~H)OhU{)cDn^O0~lUnEXsP~dW3L{^4CPvXmc3%;RsKblcL`F^~yHZ0!LqzhkL zOdeWaJ+Iz3bjsxV$-bfY*VXxk&YndN(MyJ62S5^OD3`q-tgiV{ZxpQGdoil&>WS}0 zhlhI!_(e<gOe8RK7CxXDecRpFV6D9BL62<pw24#siHOVk|L8Y}*c9=AG%97D{~Ax9 zWiaco`dk7}CjQG*Al%cIxqu3<!O-AkI#Tzgo%xmr_lm)dgx^Ll-LeakAmIr1_KJPv zq?sPS`NwI9p4U^SWFY4T2=k`<l5iRSHBX;pfaG7&348I=<@e~rZj7(Uh~8Vqli)Hq z&L_X8f9GPz`b+sS4Vk`_-(7&6kN+pV^mn*qlD{&2`KIlq`%6g-*U>oNeLtNBm+8xQ zEyB+izifdUQQ9F%M(U4zGa1G&mI&Uv&5QrFG`Qqjz8520x>eMK7hi?ZosRn}50+NU zzAi8Rh&08L`IdBl0mu2u&-Z&5W15#B%kM(`%lNYV7@VFqV;08vn_73Fyf{Ub9-n44 zjYU9ke3fV5|ByyJJ^yTH&KG~$YC*>LpYAL9n;zeoK4%v8Q4O6n3?D1uDY>q+w50U< z>q@T;2CpkADdlf*3E;)W-x)rf;n!V%{db5tY0!dj^p<}96h*)9rq7fQ6E5SXIPWPF z?=tM+4EXHDPosJ{6@Kd%bd>B^<*(1dS;Or;xKDDGzoFY67;m0G8h7QyI{l{e$S=6* zE{bE0Szsm2%kA9KM+fF3CQkdqxnfstuv{<hiCWBg7aY!$c?-_%$&7}Y8+LrSG3qQE z0&LuA6FYmZ{`<>6KYcB}ZGIcmPayrpA}Qxl!A7~0Y1xBHaL{0LCa&X~$0UxslpB8g z;YM**TkQ0OTGLbDHFo-f`a5H%v$dv#@D0@B&2WHZBcx|qx8&Q4SHWdiE!I}+mS9nf zQG|DawH;T{Y`sO)H5{|X@kHb0r?cBOx@YdhZq9J&Tf1=HP|LZ?N_Mq$Ugqz?rRnh< z&j8ssFW1^294+r(=5K>sn{n$ej%m9sV6_x&Fp64uc-wX)ThwM0Z9~dTv{j^oRAM*x zYxp&o3_zAHlOy0t+=H&I$X{Brv7T=)SbX?rsk5UHb!{?#9M~r=LDXL19m#NBp_%vu zhqk1`<yqTzo7S1JX6y)#;(B0`Vb7Xk*mI|uRTt?_`G>k=6nuyb>&|U_Ib+Udw`xr# zs21i{!8pYL#E*&iv5Ux;Gv*8te}Lu*r}&T!7xC_HB6e$QHt5bheDMOt{ZKeyF*5=y zc4Qz<Z^HkvfnjaULHr-WS>W{-^B^S;$Bb>tSI#`c;gC3@oMA7p6)3O5ahnImI72>e zgiqgj5GNCL!o@?#w5Bs(h3@Lwm78$1cm7r%W8ti+>li-D;hAObb$57woiL|9!n+OG z%OoDH6yMjl@A0^gs<4Asx8c7B*QdRX|5xE|!$0oBt3-_;ex(<0!W*bI6+CCl3&=Hb z99nKAPTX>nL$r5*{u)VuH127hki0-JMJ~6j5E1&jv?uVSw2GjGtI2c6fSTkncMQ|< z63!jNB$A$>>LD!|@=uK*YWl&Z3ldaEg6f1<NM7Mwiev(=6_wGG_r~Ges&QoNPb7zM zAzt|J1Q)qukb3UOLXk@D?0ndqi<yjvgrec?)FP(t+*QE4-n{5uGPwV_mid%WSCoX3 zJpt9$@FMNp%0m9uGV21YTUq`O1SlAGq8Fw(1J+u>DjiF}Gi3j9#J?Mghr98*!d4*w zTTm#F!g!RidjTRTnK&(V+^cj|1mM~wT>1Ph3ySbUZD|(>-s<H271sf`iHqCa+trNF z+t%xb^|r2!{s>p`4A2(u{&GrMvD1FW7i?*ZUPVakbUy(hf7+sh0>Y!-a@Q^wkZl5z zDIkvt$Z7%UFCZ%g<evc%-c|65+M<VEtG`n(dQG=>;;s;!AZwin`*+k|ImUTp4;w#Z zTqs(}4&L96lV7K5MS550#B5x{wksTZyZ$Rux@HwGbj<xrPa|kcAWSz7Q)9)&X<JM1 zLfNicj<;bsw8|2X;K$PZE8*7`YZygCvL_=}swUucf1$Bc4HS!OucOv0&%nx&;4J|h zR$F)gcUW$zzYzYZxZZf&dnm{b!f~emk8tMK2Jh@RG;J3H$2bj@;?2C3#`Y|zW+a6A zcNbC|k6RTh+v;$OK;dR&AI2be>ImHU0rdNLA@41fX6#h|h9wdIp7Kzu7ORI9{)~Nk z*rz{@%=lhlj|AsU>pMFlRj-=Pke3?;z$nP!!G?;VLT-7ypn(GubF`*f^gtooE4R7^ zYm}3BGk6w?A9lu_g<FWjf@(@TB2AQgV>95Q1|UCe_;1DkZv1zoY|8j9xIHr<anj9K zUvOd4Xxn<3HDdQNZIT=Vq`Q*05?2IMQAHqbJXY;WC5=x-q3L9@DvNA06IK9pU@BF% zC0*CB($uPaC0UYapGp3FW-a$=mXa$r8BTWm5TVPB;6xRkXPaeV$mFEC&?-HIT(b}~ zyqL+>A$N(JpbVfbp(sU)puyz4FenA2nQNvX@K8z~&0LeRO?s5n+(bY!Ma^_>WYi>Y z3Y`hCeo}?pn7T8XwpozY)^vf1(Wny>UV`H(m;KzQXsTp9>w2gDU;QJ!yYzr{I}PTm z=mk7`4?buoAeo+ji=nMSzA9UR!iHot7|*>uX!_s6dv2CB(6A8fS#|WYy5A?9LJ(?h z6yd(?+_|LZseSHT$|32Y9HhtNHsvSRA|)4OUF1IzcJe?RDI=aNTTiI80{7v<^kn=L z8~<${q{MQcqDco2xSaz;M&pp_fq1(TBOvI>g(8D+w56TIw_0(34=&9f5cRjh!pUnq zjnHYdF}rZz0NR*wU|TYa%McJ<<X>C#1Oj4banr2Jgtlm%0N}D(mm6)-{}O;q0^Ih6 z`=(=O`xCGd>1&Io06-sGmuJ`)!wpFF6?##(bpo8Rap?;Co9l72gWIU!zQndh^#8;? zpXlkcaT(ba>SE*45)Sp$^DcH#PG%MFqyNjRjUXyvkr3{Ab=+R?dfHcDtZT;GuvV}~ zEb$0#P4l<GuPt7N3veLGlToV`$Y36kdbce@<=MWt8|MqQFHuLwIgi`b_GKg*m<`Y! zrGYU+yLvS+@crEeW-)3iuVIhXp@B)fj#IADeEf~#c!7K?O^4QWO%4F|R{+K^Xn3lZ zD|)e}Re@WC+(4@$kaFTYTL}%OoH*N6Kq18cY6QWp16Z!6bx(@OJt-phq=?*;B65!; zV*2<0WARZs*C1J$D|o#gdF~$?36^vvmkNK$sMbHgC+N8e{J+j`Do0*Mt)%>vJSlRN zoNXO|!lvf`L71%+pZ{RKd(&0q2<PXQbCM5FmHhi98(Rltv7l7`T+zxXd<(0WN=FI> zvA%#_kv@nBE#+IvgKj}ss`nSjhtz-SRT|%l9Aw_k!zXjos1ywSUhZVQkg-8fDc7w7 zIQvDO)##L4lEgol57IS5IF9!VRNW+Rvhw$?Z)AnyO`;(SN%n9MG>ofht?LvvH+Ov( z-dp3GgW$ZOjDxqV!>fBdOwRUci(dd1t+LwVmqYHPb=C^cCNKHYE-UkuTdl5r*0n&H zG62xfZw^e#N6&v;hZq8Ag}ag?0E6tDxBqX3Uhid|Q~iGoaVFtL`(~5}ntu4o+!4Sc zi~ypcSG3q{7-&pMU@~O}CQ}-wB{GgH#(FSIL7kAOgguq&_J7}4b2je_mAGUfO&R}@ z__AcvS`HX#8M1Xi8r_t>yGj9;Ki}9$mRU(jPZIfmo?n>_B$TSmvce`apj2wfS&C0- zoRTt1M*HvNyEoncZoU~?@Sz%OQ78XS`M6OO3H*2XP36DQE3Y&;{6ppbx%mdSqW7S1 zt(04uoldsD7~t*qipOmPATNn4<R-~}Zu&rw>A|V!#oudOfZ0c*C;3Rz9m!6zSiyeE z*2_pq8HBoI1YpTRlyPN-lUms~E31Pr+L+_vM0Seex_sfyUC*`Xt#Qt6>u!;+E{0oM z{49Jl^62&+M>Ns*roop6K55*6a2D$p|NpY@X4T!e(@3%LCp*ubD>+%RExto*%J~pC z1iYU3*Awb|d;FvpUynTFIQ4UhM~>hmdbD}I#KUxPM470gi)Jh_oi46BB_`4ZarqK= z!}W}a@g>BVznJT_VN`x<m|{E)ioPTx>~wo%~6iz4t$XStk+`4s(H`%%|TI;k7pU zT@mZkyT_L7#S%h*OG?_(cahxG<vMO!;W`mkm$W5s0i@#&7y`n$kqVc*aJeaL|El0F z@op-Zgg5C%sy6De!+ssBLJ{ZcrbyKWJ@&pooYB-Y1sH~fJI8jkoVpBS{@8*1*xUKK z|3%%u!?2pKiW5P%nsr=N5w<qFmv8xX|7JaQ3YRFYW^ltwPNQuOTOI?J#{hUE123Qy z-NX6yg=fxTSrW?E$~Jz${M%z2{Si$2>7gM7+OkXCS-yZ=h1j?}j7wCw6sO~s6=svY zEhenR2Ll(HzJqkW3W69J8rXMS)g)x_LK}in?V`9C1+2N*6h($wL7-O23q5lOBz{6V z$?+)kX(`W%(Z{i-48l;}y*}jbvC*n;BPwozFT_&9_zt`=Co}#<5UJ!CdXUysjCkM( zw=oV&Xp6rAA0k`_hA|Mo&AIwu7F<yW_m_!DOT)S6EHFPPw?4eh$+<G(Jlqqt4kqg- zqKY=dur_Losp0N?EW+<Ya`zoT&uiEzBtE`HTf7y)q5ay@HF%qTT$-A*0TVe<e{;EW z<Cdtk8}%IIa<T4*d<V=P@VygrN|;^A6&_@yG8>+3(|;-&>S>@%1DAy3JCMna6JafY z!13?&&M{<{U9U%QpK7^35%uFLs`pWl&A9G)SYmDwGiFw8B=d_RqM!=f$!r^@mWOTE z7F`FJC@)#k`a~{3mLVJSkDNaXO~{;(XttM+3g+WQ&Q)VpYW!=E3??@X%xD4*j*%J! zRmn`sd~Ha4Q>5!ll{c=AvUZ}9Wtj_q9AE<VVf)UYJ<J|}d3kNk`<O5Dzwg{Q60`7T z%X=9@gLvzXg=I{h3uRW}w$aQ^(;9_k)lFGHxYt|fw8sRWK8opO{plNi^OJAr&s_sE z;^bu)wLX(5$Buwz!@2VuD%8UF-?#!-Nww)kSi2k9ZWOg^Yg(;V)I`0zv*q;QqV2l# zPx+Xt2PD?g?{MM5w~>RJ!&V#S%=Mx+eP>VDYSDRNTZ;~y(T<Vj*PT3{)fTpPckkx) zG9cdUEZ+$ttit-`ST=3O0ydV2?YtGtvL4#8;J4AL=38#ai_<^<f7t^gEgk*cw5+iO z?WZA(SZ6<LY|wlx;%^?Mz2KIHHL5VthV{?$89!HFaX}ZZFu_GU-Yq=VhY+@DRt<#I zHeZUw%veX4S+t4w_-K*XyIrh+D^bxSSker{&R&3fF(OVypiKM4)<~$iY{|pV>)Ow^ zL_)7=Ki{Bdziv8r1k6y2_VZ>Jl-*`Db!km2GJU?XCR`=*2psLlN}5Y{I5&O=dXeKt zR;b>2s8C;x`m<1vzIvAr%S{uu!&#JrmGR~P)?s#rKB><$t1wF%$fKp0kk^dg+`LV= zWEmIJ8CIts%bpj4)7U2&xPlxG)cw6^hqejwxhNn(JC{j}&&%UHoDoV))hgeZy$=&| z_cn)iTbSewl(#}nU#!QT0j{nE@)&=7-b>CHf9ORj@ce5qOBdU~RVoCAcDlhL<jW{T z0Tz`jkCXP$cdkRY)2XP2Fb{XQmWYiTmWvMHQkkf=%i15c%2&dYv_!4&Dl5D;YTe!3 zdFC{)VF|B_+IKgbRRG%ME2F6?&(IrIyY+@P`o-8M{k6p(L$*vEOK247cw9=Dg+vI7 zWVy>~<GB!9*`h5PC<6kq(_CE}S=Z1;#n@?)pD$TptS><rlE1(?CD;b!vAz(|mR zp*JY%`Z?BH*6T&PtcO>%AGc2Vw^`+D>u+O|V745}DA`f&3@I+z7WHG5Barh|76%Ia ztD-b=zRc1Hy^6wUpW6Y$w%vYs?Nse6JNyqf-|+A%qyaHjwon1?X0Zoy+L(F{R#hrn zAk>YszhU;i4oA*sBKd74I}*jH6i8NdzZxHYo~n^rX4CFyhTO4|e-=g|+;mcF`WOyy z(N67|s^y6?%?x-NWCWm{<2O({Go=>I-WS?kpCfo8f4MoEaQ74$%`7O#orKS^sVUiE z-P;_s9)3*6Enea0VVljzqE_`<%w%VnR(Pcu>%@Ix;Z+f5_`s58Ij;(0nYqxRX5ilt zCh_~iXgw--YfV#W@9cZm#+y%I<~8#YZD}`>F>%vYi@Wq1+5q*~pp9;g^<-*`PqECj zz+h;H+v1U3v?LQ+>dOGXjVhwACD-F4&=P=)2!?`W>T89LM4%%RS{lAYaK64)s7D0q zF`*^YRzF|IzLQ;g(XOy{T5o?pY`qrtzgvH+TmJ8%{4tSx6U!eP2Ld@4dF6i*W$6~b z5o$-RZ=Ws7KkUcrD?7rWPmxy^^M?AbV?D4K`F*Us3UvW(Odx0HiBX7+lAM5A^F}md z#!54zVU>~5@H`vB#0w~OPmZ{ZHqLXqN_K>CQ_>xx31t7Iq}gl7K~0#I9IyOfcKo4@ z3*Jlo3YP&PEm2$TyPt<sXi?OzUW;@$npItfQ+W=?0>x_I+l>3;KI*}p=@}+=@<h-C zVTT7c%-oA~?rMqJDE()V_&LM*p&x6}C$x!zu(pI<3iJyM>jc#%?*m<1^Eap<Oh@iT zc)t-sN;@J>-Yzh3CDauriyfc)c0)JbhI~5UW(VkHL>M&xPDI~`d#e0hh_V%(57RLQ z__5&#`$0x$x&05^W0>lH!0@31#{Ls#de~rNg@k)Da{HP7?cA93ieYt`vEyh}kAd+m zI?Oh61}-*f)-B8tgkwMe<<9M1kE*0OQUzT+l)-$3ps<x_^PGA9&?oc5;BQ0NdQ&g@ z6ia0Rv|>&U+HPd<uE4p7llf}Ye*mCu%&_Q}kR$SI`cDWB%}{H@VfJsVp2Pn;zOA7S zdIn<;(*!yCz}3dYOcWgasLH;?_gyzCj4yGU>xMb=B}Te#D26Zb9k|tc7szaeK&TYC z5SyzGorwbE!P=hqvv^Hip0Ht|m#6wKR@bw?`#=BZ%CX(=TU}_~TTb^Y+MuoZ1-s1t z6Y(8}GX{+yH!K>q*aK$R|IVR-VJ~LKeCl##T!8wr*c%tvk1qCx1?+bm$T$2OuKKwc z2Vhu$Yv7O)h6Y!Ftlz)E5+NKvVDP|^!wz=P8-8P0A`QcGQ?x|-9=|HPPUfAkNJU+- z=6p-+f&0P6RQ|A!D%p9!kjU!hJ$}29ux>{SGOcy_&;+xp1?w@J0faHyfR05O4AMZe z=md=XrDp7H^e<l1?YsihnSiU)pd!}eyuw_!Cln0V*0fVqQG0$vSeJhXv;rhXx>hn? z2w()e1%ifc;y$^oIQBTi0|1IXyskxBplHkffI>H&brpa=!(L<wI*8q$erWzK3_Gy& z42s^gA7?BMQ}t)57M`83jhz9<ygA;C5tbHdrDVaiUvKHWxaHJ<Xw{yPP}JCgo3Zb$ z+-i&L?66MVmff_EDHXL8^`LkzZ}GpXhuRmcD?!5(+v<nC!6uL)KyW*&_6jC!*gp;! zRu5IA^J3k}83>w1Eg}=<&JL`Hn&?J4qi;rzwwCN|=^22^9Digp(`l&uFEVV{g6QFq zqJDs0J{ZLcYC265^){ViZ+cl6^BJKR8=li+H3h@{`hRgy7j;$_BeBDSUHcgEZ;ljg zsn37LhqR;CiKunVu#&gPE$G0Falnq+t64y3-{Q<Ls<pOeGYTjRo(M+D%~)eI{laV7 z>j||-XGW~E{w^z?3E$zYh#z<TZBC~1e$+admd=g9GaU0AiV||APh0vS7>-muTJSvH zroE1Yt+uNK50GuHbxS74=^Y3~*K}zYYFdAOi4wuZq-2R>b_PPm+8Uu^SO%3tiwFXV zq&0OQo=gSOXVMYqw=H6nS0xa+Evl{QEO&-~DJ8eRpC9r?t~25!XRo6aA{b*cMcnjQ zw1vD80i}pNr06qfYgPyu8@ZX~Rj6}OdmU@a7$@^(p!pL_f~FGGljFM!?sJbCJ< zOPSaqI}#F&V7_7=iWd?jMQ#H^%@b77prHb{l)xeejDBeHCmI9rn+rEA<2+j9gLa$> zqx+i*TET}MAMW{H621|huTA(2_+mZh8U`nLSS|Rp)(-*57WTsy1&4vh5{}>@Usf2i zYHzgaEX2E>x!2d{fe!8-WQDLN><&<lG(%hCguvm$<&tofXShXd#V5d*)US&?J*IwH zZ^@#@-L+Mtv-I`Fi0+!Lj?8lBFPRKi@1or7-F+Li(&Kv-pxiq9#qi6kY6>#TaRV^r zjv_ot&Lb@c2d0%@U;OG@2Qr2pGf;6|xqYT1+(?Xalr42CQGN!uH)H$-<0K}_O7@0J z+<Kfig9h-tBS)ou<6X}mMzFQ(9!`phi=MgN&9o;5P2AX=h1;6*c!l!_)55j3_NW~D zL0ruJO>_;7f_%p)J|}FKGwz)ALD4B%%l3ckZtp(j+|?gLWN&=@>;qG$PA%GO^%&M$ zupii2ywxb$L*!FdtMzL4``D(8hSh2->M7b~6m?jq?Vn^B{<mRFIk?_r6dlqXqu^Z2 z*~>29VzvHT_v_tfoxFib`XFa@Xlu6W)>)WbN=Fa9q}|>U_Wv6-7n}~!ZM`DakrC^` zv_d_4X!c#W#1~c2Mi%9r%0+F+Vwq8NLZoZJh8ft%wwPK7SJWO|95M>>w53e|;Ih$g z#uf~Ly+HH-0}wRr1@1MTy1ifsTA`Cd2cx8qo96RM&OO_RHY{rOShdBvJy6dWovE$a zg3c!UQvz4V++XYrZsMLbL~D8sO&X~f@*-wbu84&lGfjRZrrV>39L~TGpkS?{{t6R` zWTEQkk!RDMU#P9Y4X^bDg=SS78f$M}#Tgao-lxa5`1Q~c+`wIoTTo3z2wI)mQXR(7 zt|`ciAJv+!gB$EXFl=nmhn-R|ocDI;p+6JbnuP}NhMIyQl%Z}<?9u<rt-DhS%CtwD zi@*f#z11RjftgOov>oCsN?hJrw1MJH+0jjGe`GyC`*TRGw<hwE6`MB%(j5x9!B^(T z)z_#N0d!M0`_ZIaV1&@RY0G{HJ7C!05II8ExL^obMkB{!!ge0!z;vE3U^`dR%svCJ zLJp!}ic3!FVs2W@-=Z(7+hv#{e9@^ucR`D^p{;K@jV{8De`|UFVkalS79GQ{q7y}1 z%$@I`Gd3psSFe%m<tOyer_S(x3!Zi6!@~YWq~+B~QM4v{LO}>R9|A7sz1w9z<N<}C zE&UVO!`Q~Ke}d|f-qxSL{~%lYO-#Igos@q~!6e$l&uP~U+``@ivEC(WIn<MCtTlZE zJ|LF>bY=+VzB%pRLXC(*Bepd>1m*+iOyv8u_(;ebMIXSDLHr2}$PjA?<Q4xZ(3#P! z*iVL>t1klBu*YVyhK)cws;$Xj#}BG#R<)Y;DC~+H-s%cx;U-#~)I_D2r$n?oq*9j3 zTp8+4dr=##49tSmrq9i<qDYNy7KI{FOA}WyC*vfG8!$r$rl;NJb#*bI!Fb-edh20L zw7Zn6*0dWr?xWB2X5u*nLP`NY)ew22nGtfD10$W-iBMb+jx@@m2tXA@!~Qzc$P|6+ za%*$4J(K;i&-9ms#Ucs&B052Y-=bg#<Sv@)!o+3BQ!<e$A`zzG_TCR?FOT>?r{19e z1^F+tER*Di>@+QS6LUXhrx04B+ZX8><1#Vq8&~Wy@HgbwU9`dct!t~60Aiq8RwNdp zDPk>b6p#ZL75^7psF1D-cp+Y8`5uFWJ8>6AW1<L6d!B1w6RQ9^U#li0^IwlM{|mRa zqG=QqsJNnyJYN))t3D1Bpltji*2`%B_*IFRLaj9I(LrRS{!4ZsqariDV}5q*Y__(H zT{n5@z1H*!eE!E<@f+WZGG~A394;c)mOc)U=`>`bN5l4mv#-S_ENK4WtK9y#kn!C< z6kic10<e&<%f1^;LR);V@YejzH~$CL25S#y3j;-O6t!5pVR51$krlNH3NGIsb)wKC zD^b)I#pX%qQ$Dg<W?IM3-JSKluc4S4eq}oADF-1FAq?aflarlU_<$Lc>6J>AOWI3Q zy;qwmEWSSBC=mGz`Wl(7`hsBcUhTvgXmzjtgjuzPV>>RiZSndP)+ZQLt^zUp)=a8t z(7xHM`aoOrs#%3iEyL&FYIMw)y=B_JWS7Rj&GeH*CZ=Vv)bbF<9IvnoQf&Gs;0J06 z*KX6f6%u8ZtFSa6dMILGifGOw13QqIY3o6IJeIA0lohon2cq@})1H<EHO5WiKP@oj zK133!h=h)7i)n2m&f+DATkfoBBncp5j?CRHZCaTHoPLD=8ie@{UnK0pKGQ#>AmW4@ z&Cq7;XS`=fx5JIloOh|X!H82HAbZmcJ4?qFOQbdlb4r`hit3>je#wR%`}kr8lSC8# z=7WLEG&Al(cMFy`fZ+kBq%f7U51n_+;f?1vE#tBAzY@S)y$2LXJFwsxF%bTDa7994 zw149^U>;R00*0|{eU0d%WELF$hMb4Qv@+*kh$tpth^;N|Pduzpbzq9YKmSfa44g*o zyaF+*#w6)5(EHiVf*!1;Xh08Np41-*$HzgGAU&+COZyp@daZWn4h%`RH*_FdlQ?GI zL}OUhQgRYAM4O?NoeE#*pkNsllrAP2Gxk0*om+`XtlW`Vp$`_k8S(d$dF&C;ilX6y zR^C-$Vg?@WN?ga@c^RsKZr_6OkhXL?I@ZyuHd={dG;mR<Q5nYsW1JjexgwN2ln%*0 zP+0ENXB0=A(Ib%N6zU5K&8@dklyax0Aj?E`sHGOrG0$~06*SU;$HZzX)rb$>%Uvfo ziJ_H55>pClQ4_fs`O|`VB9UTx{!-8gOuBwA;?wnO5nJ|W?C-|WTHh!-Xs1Bvhgo`i z0`L0+VX+zb`}tu%2X%J_@iPYf#RsuZD|T+6w&;F1plKiD|5GmNaWb%`U<9VaPYMRg z;NptzgaUJFSj%gUS{*>$QgV{WZ^8K?{!b%l9F{HfxB;S*F%VjWdJ)DPKNek32y{aC zicoW)ErloebDBR~;6y(NN!$f2tq^S^+|XXQa|%%C;20c!H8U&fZ!<!#Fx}nw8NUy) zD?dzn-=z1Gq<1e8tla2&F}=qKZ{Vl0jqn#||CUK(xpoV@U)f>xnA(~Tut0~jka@@# zctB`jDCV*c=^^MDil>Z0tqf{rP%~C(`OQWE(!nn>!0={pz7^Bj=NO8KS}c4cOO-tU z<MW=coFo_@AXIjt9#ulNmGuS1ZVw)~15E!bu^vAe@8VA<D31S_KSxNL0`8*YI2_;! z6PMcfPw;<&$Q`8E!=DeB$lF?cFANXRbCCoXE<8i5ZvGq-^GW#X0hNif4K3&b;7cJh z^fxW`2lPw83K}Oym8w`vPf`_gld72Osv`T(lh_K(6MH;RBWM-peviLV3wm=JB=19= z4SaR#a{OY32;bO@=ZrKKZ!s{WifiM`_$3Osz}!P?-EMTYp$vmD1B?p4B`bEWf5U$w zu7S#j<SO8Nq@dA_h>C}d=VpjtRGvU3H3(Dh{Pu7d7M22!iprz?jJr_)-UIMX?Pq^< zeP#Iofi6}Qib-eG?()!wTGRhQXt{MHamoM3+S|ZaRb6@iTym?SrgLr-m1$|kX`D%{ zQ;5*18Ewsld*#OFR;(aNCm=IXi~mPPMiQV?d215j%<)40(^{Els^xj6PU*A`%v9R6 z)iwbn@s$MMf+z-2%r&A>kpx8ee}8MAdkJdindkHQ^ZAgo?>YNr?X}lld#$zCUK^eP zUuRQc4uVF@BXR#p_|)=rI+GBeVyiP}zy4ezQ>&w6F^GAh`0<~rx^Z!D+G9zd$ujW_ zZ)&%2F87PF?Nw|CVKu+wVVP4|Agd$&fI3cPZ!coaXG8WGppDrnJXn0OVAyjs+{fpG zBbd<|(=Pqd+$im4tlTDjyHYRekGASTH?+eB9JB+0;KEpYREcNwdMAL^9B=$QX{Ni; zizasI+xpY5YG2Df25EqYe7glkkD^e@y2+?!UQnf)Zw`{D^s`4lyJ%5vQMHfil>saW zYdRZC=vzpo@2kOg^e3x7ec4&oYC^*n_BR@m{|Ar{{v6B+ulDfiFzg)xL)hr<5pbya zMtn=4?@5B}gqnI+e_q$0{n<Vna;Gom+x>*H8crWJutPAkeU$^_-4S4f?LI#O6k&pP z!7-AdY7?(4J)$-T^ylU5x2$22^{M`zp-f#u+!LoEjx!j-UI+$^AP<HZgEpCJwi!I& zmnIRH)W)!Cb8JAVzU*NHap|AriHTleHvD--e_qfZ(GIMP=J%_BtrRxeuZOh?s9|Lq z(w{f=r!RXiwYv3DjXsSsujdo~upT?bMa5<q^lU+{eMbW{aZ-5(^~Y%7<?OYtvfOyw zz==ZR05`xvYAYvXzXH}$t9D4993jDm^24lZ#80=SfgM`%=hrhO4-3OOEuIRlj0ayw zu<Stcl>C{QQi+wl071YxOGKWP1cn4EuL;D@GWOSs{;rx8-@{b7zpClg!F0jDN=mKD zj2~N7KeME;3PBu66cKgK77k~BLlsnI?mVxLHu2a-Hf4(+88j7CAqXzp#P9atnh7mz zr$6qkyOxz)t{9c&d#n8gY$d;#LjUlSZPor@+CP}~k7J}Ux&2_Ze=>gZ?n*8F!I$O6 z@rYWe-^rfZj#R}{_-mNZ9O<p9*nz)B;Wn@N-&quzPMqVd)|FTOklZwS-b!SOu4JfV ziK`}sz8W*Hs$`7LOI&rC9y6~>L1kSmU@YTfozDcbu&%>CMiCj=EZ07L+&d>4<?s24 zC`=o#j$^m~B*9^>iYM9e+tF}Qy8aQY*HIkI)to$rVsVxQZ9~>V@Y<g&R^)|r=ElQp zt3Dh_T)yCOuccTjT#($D_77usO$5sxPX%d~m7(fj!G=^Yqc9oy-P3fPqgnl5!CNpM z%teQ9B*$CT_3u_;Ph&r$pA2XK$@c2VAScL1d+X#c7Welhv32&a*Ks6r1annq)BEgx zzU%#9TUEz_f-%o!t~*(s8T(8jg?|I0M-9vk=?d>ZGnPjIR8CmuB?{%~P?Px7C>~`z zbjUc#8L;Oo_I;fbpQ-vM8_tF{p3u~m`$i3k;s~M*NJkX*n*U$wZ`r$i5I>rRja5D- z+<{%Kpd;n?R{JmeL-<3X3oL8Ptv7~a?Fmt#wsZ}TQ%M*irw&VQ@6B#T7>-BQ2|)yk zFvK16aZ(%VFMj(pT&3!tk~zi@b!tBllx@;LRbx5~W^Lh^L1jsKd&^!qR4o6~n_E+z zQ-vIQyG^TSj73p$1tY4_oZ8J6`wJhjSda7v)8w3qQ`r0Fd3j|fdL_FwOh2>JmF)<o zp});6@gnWEu{iS6DHkSoh@@vBaO}20F?9@@eVPC7I6ef9qKIDN8FO?nKMKieO^W^1 zLNNCjt8UK{kJPlKBoWq1yB332^Jv?z4pnrnc#tnIOK!?EY%BCukETV+hvLh%ugKG& zl+A0MwC0F5JJdYi7&t56{xn*O6{+1lG}KFNPc1ozS86i<YTsfxgJ|;~;DA!Vkto_3 z0`V)<ncs;L(T{n5Q-A-}9LorrUf>mVeM)1&6NbciQ#y82zqysIz=5IQI(c-&qPP*j zM9q`wh9ZR6IYJ83y2Q%5qdXP*K|YFInAS|qV+04;qx~y}zdc?zhtD0M-<`k#5dx>b z{mmRC{x;XBno|omgmBHV=fI{@^mY1v^Wz~Qq*8w4hTzL7e^zU%9-p%-o>6~rZD4yj zbYE+b``STsU;9_SRY!(W6-O(*?{%8W9C@^=;#rtpWnrh+tV5DbC(iX&cardj=-_8n zUC&$Me+ei~V2(|M%&$5jJ>|Ta3C-v8suM_L(qG2nymBtSNHwHuw`-0^&oCzU+!7S` z!G;pNR*-hZa;qbKAifg%(HswhEKFlGnRZ8ns56mjg2@bDa+CP>I7dlFwQ2uV_G>zm zKNf_k&ZKQ$kaNM7kdCH-(G#v7fh}L5;&eNHGR4so{r}EVsA{`LWGD>3{iA)WNs8!i z+Qc7Ms)%FvwMiy+ooIGPP9TRmlWn)-Jye`*OZdxv988X9R^adQa14uoq+-as^LE%W zGY*#u>S}DGz|i7rgY=JK6B~S+6`91CNOgVIAB{RMyhzaqlC1(8Yd%$v0<>84O<o`p z6@G|Kxc&xa{PTzZi7lS#5r5W?2YzV$557pVhB9_cq9~^@`KnCAlo<6IvU2hQ1EFzp zjIyS3Fzjxz8028%OWFA_$W!zfpPlwQWvhBpvO?N_90Gj?6JWK!6PuNoBSB?o0=paN zI-K$!EZNA*YM(h%thg&Rhe`a<wn)WJ`GK9EziiKukHn9iChws~$qc|7wq+dG#l?kA z6=7AH_}Jp{B-z^}3qLXCE{2m#bQLd}K-&lSUR^Q{$w!4Xb|a)8e&R_99Gk2O=N0XO z%TVn51|CDbQ!<@IF+(Iz2b|vGhZIt-S3I76)xOT>JFF`YmWV2;{^up#mZ;gmH;f>> zl9uny4y!AEuw;wNi4|FrAq*y0DfJ<iK3KAW49q6l!=Jd@D(%%Pgks61e46;^?H5tM zk(6>u0x@;QaXHF4DHUxGy&ceT>7!@f#J<HIfA{Fs<6hIt*gMFJ$DXZUh^-yVFEV0e zUe?cSv309ryDHaos);^l6X$8xFWd+=0uy2^@ZDLmlC*VoDSvN8`;-M^zPdBBWS$;( zl+^I<MyaW0K9L>7G-~8JeXlN=&|iQiXBb^7pm+nQlB1a#m2^Y}yqL2ts3Jb7Rvv0Y zf9Lbp8V@yL@4IcL(4xH;B9zzl2z8RQ>h=T1kBt(9zWt2PMf5;jAgi}Vr!bTa23Pt9 zFWvAeYoAbO%G@qmE|$4-=0OSkEMBM*<Y1An4J)fTMLTA&&>yf<Dwv(20GWQ`0k7#F z)E+O{KBE4KZ!MmsW~5co6HyjFXYS-@om#DR`~E81ar+mPDJq4g4yTP=R@Jh@TQi+{ z)#u&bnk$r~(kF5?<9iSJNe8a|6vfnjNQk^fwvoCa{dwj-HT0O*^lFqEc)3e2WqO+U zxVPE^!P?7gzDk$|l#&uP(61zC9F*&TYQEFv7pc0p^nGu`Csoyp!rY5W?brBZ^+(wm zWer%(A^z09ph^Z7kKr-fRw>BhPB%#aMCuhdoxr9wYlf;iKt{%d*Um;2#z~>3*VMFh z{MuJ@d16xp@5J}K=4C2wxLSP{eW8&aZ*{k$ABQ0HO`CsIVm|+GtE6jV+anR0o@v&B zHwA>g&63)Fz3f$(ifmF-@;#T2uaD^Kliun(L*$F#!StTR%Y^~gLsGTj`^OgFEb@9x zA4NmnTz#O%M|e~Bgo<XD6zhcswobKA%q~7#T@r0F-KR2uvR6>SjU};U`5`Eqy&rxv z7sQpa{|mjcRaFRw)RXkK^{Hbhx%BRFUe5Y})b&RPesgMl;4K8!bQkzj)kXjlU&Z&7 z=JdiQg9F{h0OH|w?Tu#VWQT_GGY<lnvUFv&U+UI5LB7XZBmZ`R(5vq{T|w_-YSU;8 z7V9<r8?fumfY)sHee(R=I%L@vU8O=lce7o&8ouOeG3s>h8~()Qal9FZV_2b~><nat zP|l#1@WY+qA|mt&toCdf*+M;tMzs>b=G3)P)-RG1vg`A98}RK~rOjd{N%jq?^Iy!_ zuLTKKQkAtXx`o1KK3v0AFHIwn@nib)hW_l)pI7<gCXv~k4rR9iRjZKqU(5+LcZE%Y z4@hcQ)bdgOFe=U8vf+^7nkny1+`kC3n@w!3$Mw+F6XBP~;aMSfc~li>0?hsr12YPs z=4!;<iVHLo-}ct53O~FJx6HAhP*i8$KdB|>k*wr1Dz*Ba82D*!|AVTu{1!Jm)(HNy zRA2La_9ak^Jr%~y8HduRvtPqJd9&zQp-~|37z+%)De!3aFQ_};cGA1njyyb))qaRz z{U}F;8vDF8FA8oEx$Wuz1a|KDL&$v+GFj=NW38pj|9r%FO5(?l<<xpARRV3d$YP2W zJ-y;ZwtJelx|$Q37VL7g+RqxK&xwOx(_`)<!VMprLm8tEDxnL?!oF08%kqH9QoK6M zlytA6CHTlBBbx5elF3!n;?^dPia2iT-O!hn--5k(z^x?Wh7^KDdZh=w?{#F0oPg`F z`9Nr=I$aiELp^L~3d%H<yBC@`)=*X(r6f%%vU!38Mg6<7$s@TBhD!Hx5-<PH1RPTB z%!An^LvGUWDf~Nq%4FEIWY{YI8Pw}=3%mY&3{G7boZ4tKxl!^dTdk*bss!%3`J+L7 zgH_@2pfzK(Gfy|p1;wKVK4<pAyv#U9XJLvj2|cKnPphhLK$h~~=54G9qs4xV7HTkW z>!}-~F<kNxuiTXJ=5(uyDLE%>zSLS%KsgJgs*@e<+(0gnWh7UU+4$!IiQjHoc{T5m z4&T+jN%;jELVgy`JZHO@lWxZ)O6LOvWpoFIyS)4-%LVj`_y<hU?iDYlf@SDa7!Qim zn>f3(r9Xwn%^-HO6~Be%(wk78W^Du*1Dejw+OXtI9_jYRwd5Nnxoo4i=1<viY=a(7 zw(RBTpw^2J?DE}5w&%4O3LuEh=8($Up^#y<=J_QWxWC8mEbAG12~6KLs_E!xwDOm{ zYdV3qcH4?574#}O{%HmwkAAvYGN>N$8by~=P2qqby4PLE`YLOMEreZg1X%-SKP=A1 ze4G6$<^h@R=b-+Ua=K^E%kOyG9>eGbq%h7$^oLKgp60){$gY>@d3~3+{u)R92xIE3 zqL#5AXInDG$+b4PY_ii!v_fGRqZBWf8In`=vAi`3P<iQ)ZDUKz<jjSHD_+JJ&kRWk z3v`~W*qiW*8(TwrnUhn)@xST68vh;OsU~VP8GSZ4{@N71DIEVpHvU~9NK&Tj(!ijB zJ4FMnOU@GD?R5Bf<4PsTGI5ywK4b@P_0<wlvHS2JQ%kJTY-%-1hNM6D1uzY^YoGPj zDY!<<Ui1F)uG#K)^kn^A5%zswrV{xuuHIv{&3=VbIJgioz*34iZv*#_PQhRS6g7QI z4$#<+3hhw7qD{G)9SwL(XqO;XvLiDU60Cg%1&H^{OH&)d6L2LvL@VqF=ykEP8pTSm z>9|+G8)E+2cCyHFhLSY5Pm_jpXWD<;j=;U{?}L&K_5X0ta3?ZIZuFW9m<E~-Ujcrq zveA_x%?{MF73j|74sZ%M^xp#~fHUU}Gly+oKG$ZhdQkK%=Sfgnjk{<`<&0Lt9y10N z%o6*#kS0NA?3;yT0=IR40-RXl=I&qeZ>~0)eU1MwQNOHW11tVF**_)X^`Gx~o!<1) z>qq@(BhW(KoQ-6$k6!ZvM$}Fv-bjKPu!-Q_uSzxlDs+^rw4{h(c!gm&Zo@EC0Y1(> z=?{XmA+P1nDVUwlpP^ox)iSh&JhTLt(2$2RtD{e=Ytd7axHi`vO=1AV^vJZ8;B1rl z#gUVE&xa>*SA<@DbP_){auUm*G87<koV9p?X77S_jOE_CD-j|>+C)KyJk=t@3D!Ew zPxfRvg-au6U^QanQv&2{#<%RM!HQkCzgDrW;WHws5Y228fOu{C>+~MxA?#aFRm_?* zj<KLUyNi_={MKuJLWrEKHM)f=Y7RrUa-z4Bc_mMamW@geFXsf3Wry3jH}81YV))9@ zuI-(PZW({k<?87Sg|P~xBkK#83)dJ9gm?1Gw&Uh>EdQcgU-EQ#g{@*VRy%CQgcu8n zM{rw>+OsQq-C`nUBA!ru(^{%3#wNz!^aftcfteJiSyqY{K(s7>{m=KCq`;AXFE$I* zO@w4(`WRET7zF^0vizkUY<rANtZ^j=IvD~Ht*Ea{7JJbwoJ~$Zb0h)I?Oi_C-vcjs zGQx863%aZUUHxw)@?(f$Eex63j$x;?axgc5m4g+J-hPnnCJsi9)BX;vhMda=a2wF8 zc@DYFKBQj53CN;t9Gq%76bnb_Uq?6y@^GB!rry7b*Tv_==f-cCvmG!TuUprHYg)FG zKNK}fAk9x4Ui>qDY68}2rJLJ3@XsWNc_%_~P-sb^=Esp981iSZhXPMhO!_637H9=d zD-K)pw6oI9(YZS9Z^)RcVK9NCWv`Pq^e(2aLN}e*;H~Qrf#;E@GZ2Qn?LvBP0(=O0 z^9*@?Q2)Haik>AOLZ0zHDxUztSaFMamJVmnkW|l<;f(9GB>5h)+v3Ld?0)1$oC20R zwWase$J|6UE*0ve+URCD$YfkAd$#lkv-#&1Qdf00PCL|k6Z8J&R`eW2uwq#maV$(` z`ge0Kd|w9EmU*_)7taF!+n!~|YFQWU*u=?1|AJ&_%9u%9@w=9iH^oTIdTPWz&&}TT z-PQPzghqYpoVCeYcOJ__Rp$D_YQGz+xGC|ut`%qIQ_sNXLp@2>X$pN(*6GmP8^cPS z*~)m(KE`-V&0~+#VIZsHm7+1!KFoCLx_x`P{t32NSH?5R$k#Gc9uc(y=R((~1sio( zJ9Ejq(=rWLs*PE#5M6P)kn)DfxZfz#AXSTLnN__edfbeM$NR^>YMYlrhbxyHmkO+E z;%aSCrm@F^NqpsKD{g`$((T!awA=#0#;lL-_!H)BPRa;(U}B&ow;ukXe#?$V1yFj} z_wmQ+vo@dDP8!ko-~V^}KIKX}H|OKKF5J>%cc9d5D@2d?U-(MC>#p2Kx<3A+UBAST z?mBL!HV=ykoiM7es(%=gY3FCiY36Pf;Z<ku*e+(-xRU)y|9SRH-QKJb-M|>9A$g@Q zxDl$GIu0=nOqivpk5&9Y%9}=b7J24uOC>8f(AK$Pmo{cr!wHG?8Sm*&`rDI{y<YQ8 zVv;95;jOL{lMFYK*qYDrNKM-Lef*g>m|)$<tjQ|>2D?Yd(KV!NdvAZ1x7*_tI0T)$ zH{mmBYqxvN|G;n&MIsch>Ygox#A?Pr%i>mHTZ+qWwS$tpjg9y?I{bLe$9*gaKVBMP zMa0EnH<6M?7FWZ|&ShWKR>nFaL90pBoLViLMv8_&u>CDCHXGhkBWUNWC7~V61N^vY z6L>uCt@%Fi6YgHqBi#;zo3*8(7RRqtW=X25>8(_%>=+>^sEOFRS_pR<cMW;;tSvSH zp!+LfWI4M>$Ub01uke<l#!a$+&3N1V3^K+?GS?L<4BgfPyk-%xWn;uj0z563QA9Y0 zF3Kfp)QppS+|*7~jD;c_9j&gDp?vOmEfO`oiHg_ncrK(h4y$f&OK~{cZ>gakZ_Re# z02{BIqASovot*AZQ4c?gE0=<qb_#*0zQr%{=01@r?1g?5bL!9fbC2K>IrCrDJ9Yzl zfs-1IwOB)w%?^u;5-Zjq9bt&-x>A>i1&ULbHC#^q%1P=H4a0<L`T`c~*+-gQJ`qw> z!ckQ8Su#{Yq!V{G-Y=XC{6hI)ENY$C5|C?PM|CeWpuNo96MmsD-kOb$rR3Hrn~?+4 za&|zk^nD80?lJXrE%|@wYO0bpB<lAq{uB*gL<P*{;(3)0Sv572sCdcOY(a)i0gCz0 z6={m>S9#c%yc%LDfsFH7ZsVf%;l_33(YAfp;vY~oI4Q2I9Qb}`OEn!qrR1QX)(2)O zEjrNwnR=_<8GehmR+5C30yKhP@v@Chj&r2A(H-JvQP>nWPsG|3n$ijXou-3Cdzo^3 z59ACfT`XT4^KOFTTfut@j~){f<gYiUU9?_=Grm?s8y8W>=>Ec&M8nBV&Y>cv&;g}v zbldP1S9T{W-Xhzly*o7~nj-<n%UA^Hi{IJvR@@)PrPphITC8XoR`i%-MMf~J66Hs5 zorRNuveLil<Igt-E41eg2Rau8a4Z}5GPKopEm5rAjzk5`pUY8O1U6zDH3wjf^R21+ zBS0UkK4NU4=t$=Fh$5}kb}U~IIr7nuqr;CgKJH^d_;GUNNYger(UA(1-Sc%@wdZA` zXFFC@?O0KfSdj+5aV1o!$wxXQq1r(R2Xa8DtvN_G$-Fi9X<{uYcU_&mcYrVmm7~-} z5m0V^^5eAm*{k^(dr0#WVtU_e`X~C|ai8d9bkqGJCXP7$22m;H7*09P&axW?1@T|= z@uabm?XZ$z4wUx{<3M&a-qc6rkLj6coSM&|y=m=m6tH=*2%<K6g1<GAmy6H1qfJbU z*fyuJEXV4Q_!>rXzIWV@Ovui(L6(z+m?Kmy<FuAF%%f&_;k%*B_#WS0ro`O)MD{A` zcsmKVl#;Ls4aoCz{E_t1VGw9rbCqUP(js4}5LH?vis$#Krmui8;hFh4)2!D}J1P<o z=@+jgWX3)18VNvzV{OpN!+O>(SvzTBrdi<S6@I<k$gWqQt!<t1g`Np@&g#^=c8y%G zzyX`83Ad6y@6NBe{;=&1Q19uF9MmVi>#e!k5LSGT8{1M`UW>O1dD$Nz;BpO%-V5|> zJ->7EROpZ554i)d>H60~mz2wbGlL}%@3Wj&BTl?|_BC}BuzqH)D8^+89Ua;iJFh>& z`Ksk4oez`$($$$M@2Mg49>m6q=ioscT(-box>8Lyb#d&p5%uU`b-^#plhA*ULkbEu zLll;3yXhl#RVf|s@y*RAXzHS}vZikSR@Gk>BV!$b88guth{}`jPweQwN^!O8zo)}V zaerGp_@gBA*OiM{xuB_!Z-l>^nwfHG#ZJy&z(hVVDkfXpZv}*(e$cl(sSODN72zkI z1m1AnRy?jI<>Fu}<-(Q-5Yir`AH>;h0{+fa5FbLonbjT-7DkgkF)dE`jcr(`yv?(= zB+5>tGfOAM{e`%0oT$!}#8UO=a0~{|N!%q(I-n}m80S1iltze1hmQzPdh`eZxNt1A zgMWx^1Wt?l(GstDx4v@CkvMJ=56n!WeGGWvP-}8ixK35oClS_903E(8M6W<|?QD8S z!MULJ!ZhJX07R(AX=PRyiQ-QRB522A^T=t&D=rM0gxW-A9+6-EMagviD~#$*TdE8G z#W{o0lYB3bAaPd#TB1C4<@-Z>N$Z_;>cTEg<I|Vw%NJ}?XVmg&uO$tQy2gUWw#<x3 z*-k$k)rJxr<4)6>jW4AF8<^~3i2vh`xXls;kJROkU#EjlbOHZ|H)<gA6;VhABKMO& zCma{?z6v<hcZ@@cMEU3|sEX+PaFmb^S_Po&s~FFBtAZce>2s*MJryAe5^-XxBhRNZ z|6>vh;>N0aq_n&%?Dxm^skO}C;{y9l{(mDDEFs*-HQXDrYy;WbQW2dOvTX^!v5U#{ zm}U+OD}ufh#McH16UYf3Y5`3bcPRXgFKdqRG!FB)s3Z>yv3TLO3Sa^;ttB?o%5<jg zoJu<wpYWfm@(<%p3%7!;g!V;tv;I1%)0iBk^N*$d!H{mWB;wFn)zn^?D0|Xkzm)G} zG`b}PDA>(E(f+lpkg=-a_|Q?<BvEyclC^?~SDG_6k#`z@nU0)5q_})pSL62xcGOCo zp|yk!S{WpNu2p^svI`5_E9ymNtaZU03m<3xzoGqXNONWqQK?jZMq`Pi!T|}lp4RE) zP~B5}f;Db?Cql#0KoF*8DZmnPnC)z0qP@PW@mDMqPk5_!rWcrzY4yDJkyGxI!K|Ot z76&61f**18?7%0(_N}2<lm!?ke`|5#(~HLf&UiXn`;0*33>05vT1MCh#z@7s6+1eU zKi5Qt*%dVYT#8zd#;y4^3Z~cgH|<0m<DiyYcZrR5vZ{V3tn6U{rpt!>bgRuL<e@E; zYfT^*0eE_CD$*5i8pfaZe~}ZugV%Idyk{Wc?{f~lafOuh-!YHgm+|Q3$}SYfq7g2= z*Go>2KQDWRG5Pa8%tDp(=Z$)-J!MhPdGih|c_C48gxHd>D|6>9!tKj>^O_?b?z~+{ z1gL%u#mSZ<%ionR?~kkehw<gzjk|IeSZyJ+>H)zj4fAIt*hWAMm=WWy9!1_`>yZJ) zd%LiQD-b{!J>a<3=ShKZ_}&qmw%@e4WqTE44{VQB=rRE>^Xhps6~F8}i(<w>D-2^4 z!{(3EqMR4yq^)e{lL09)R`KML2NM-T4JAmUZHl^>8Ozo{>}(1_Ms?9)N5jxB3@IK& zO9&?NXQxr8@f{oVWFeWNIht%7V6bq|o`q#Y8-REY^8)@EOO=+l(|r-v^2tt~0+dOr zBg%BFAx}-TLu7+{vAn^cO-&^HiQ^SJS70|fjqyQO%9H&U6VuXdrsc_B)AaxvHQ`%5 zi1yGBC+(kI@q+7%w|<gDf^YDLY4=F3sv4@Ye#K}1=BWvv+MN%F;lJ-~#xM1blD>jp z#fn%b2ZvtIL@)K<;WTc?@R+jhTe=rAr--(~In2k)o^5IOEuYt1ca|u*msRYAI~hx! z{UU?ZClqG&X74RbY)seNzND@+z3inrULVa*)3#DW!~x`oiE~Z+3(BfX`ZL#_^q=&f zD7&@f1>z|5GHhF$VR+S<@#j}(zJGo<yZ;<~J^yi@9C5_<ahq|+j<-gKSJ%Y-=P3Aw z3JL<e=b0AgRA-vcX@v)|e>9qFP0qPf=~dfbfJ5lK@}Q1=cf$wd1-0RmK>9&}*Rq>L zP(vJ$3I0BXYh3jTeOM`7X%*(LlPgxKqbrB@CC9w6>flRT3jb;HmMQFL#e3dJlpjn4 z^9ub*T-ufNUp-Z1XkTK?KrZuTWbPR#-`8|UNiRFrHHC-`#5uKAi^A5xXBXK<83eAu zQ?(_>yh??^ycm%rU8RZgHz#kof&#P}LP>*(VE$NtAwiZ7_6%5Q>&Vc)93YhxDBqXx z2mFOa3IEMiSRGETAY)?80T-v2PWBAMAAAu&T$%EHleZ)&71WIL7smX3`68z(P4PKC zMnNv=+Bg977miI>Se46ZBk8{xU-eoZp9j@qa?A;k$zphtqYJtI97(`EyC(m_FpCP9 zsCdtxoXRW$Q)?)m2o@EFFv3ET{*d+WHCNqR!p^NFFwVDf)t#993!z=DoPZ^cPE;K7 z7a?*iDqMUy(1G@Y0!rUM0L&1FRGJ*~-q60&@cawm*<XYRu&7AkXkLMS-i>>=6@412 zJQi=-0l&SC<!LXA++LQaV{ok7;8?d^!M@*KtY&-Pzu6l=y|}%HoNskl+0Q6-v$rDp z$Ars>#hZ?QdGXIy-BHrt2UMxdy^5}q%=}~m{qvd^L*L2F<_q{iNENm?e#-<*1ix%1 zQzH0R<xTkSCXu^C$~};y+_0BJdm-IK@b7EMx$1yX@VyV<6=4*7An6}wlzeLw+MtZE z+H?R^98P9_^;v!m?ImljWE&+D<p;Df0pjQQ?B6R;09y@ss}(B(@HF@GLk4(<LujZO zK-C6NA!7&st{IzefT}0o`yg#NxI%CoET6H))QSM@d4sBk_U7PfKMk(&meuBe=3X`6 zt!_3t`sMfk+i-382wXcHT)x$4$TALL$f7U#PE5YH%RvK%K5dYwRWPI~p=Fp2vjaM2 z%udY?t4n<514qUR9Lq!x=fv@dKe=H6kyV%oM!fL6r2m0UgnY^OPA{oB0CA0m_8Tru z1ohCpH3y3b$G}MbxJW)^Zt%3pIg)QVR81(F?%#^zd(CO+&=}^gV5f;-qp%um5Q-i9 z`!L%I$#EnvoFqONY!EX1Eh=gJ?({C?nC!wRFaeFRO@E8A^~@F(^;RE_8U(_oYc<C| z9VDkJgfr2;e;_}jU3Q@rMj34SAvGlZH+-wt7=ckH6`al#>F$r!nB)Hoi`0vayzsXO z1{kAFn)sOa#3RL71VYcD9Gi@nzjqqS6O-r1a^EJyFUK5^%xBQVACld^e4oEX^`|mh z)NUeJ49R@eraAM-k<5sBbX@c34spP6n%XRCU~juRb8}Qiz(mCd{^#PEIVZi<EjAC9 zpCY68lm79Mv+}TNgBzb-+fr8>66Q|W>3ja%DAk=<{FjN~=2K+FLgEl8_5oC<S8<1{ zqR5|1@Q67dlpjHAH8}-|?zW;yj-N_?{U|?u7k+x_$MRFkz7;Kh7hZa)w&)WTZ!OsZ z^e{XGhw6eGO9so{<pwmb`D*Alv*@I>uhm5$HA#kOGPnenJ0{YJkXIS)xY2ZY)`Wad zvVCDVw<bSOBFwtk$qZyQiu+Tj<p?7qzD5<y;Y8*;AB<Q^;uI4KAw5p;MG~3+aUzaL z!r@A4_Er}#=mIFWGP%i}8|u6)V#||&IZYN&-NJ1MjDx~~@V**BBsc=Nz?CC9l~{Qi zG{=>(NYKO<e>=%?IyTQ{Sftgh_!t6sX{pT9_nZ0Z7)okvHW;Wu5RNm1xW(kd>#CYx z>zW4<$JF##HO>9U%cH^Pphq{0LTX}u@G9Q)N(Av_=mp+t5zEuKRz?4F;*E<T>X5-{ z#W_XPS^}w4#f+=4#%M4oIT}J1Zxj)SZ1prEW-@$~h#_D_Zs~(9XsIGf(&LffpCyQf zOmBp!1n?589Pvn?ngmmZsXczu-=e}^%inSV-iXsL$QRhE;=dOk$^OF-qJ7@qSZt0) zxM=wwpqK2c=GK`oaooLsaK8%O!OnWh->%&J92I}is=8Tk8JO<;`-jBXvp=F1<X$#` zv&*o%;B}jCFBgbC5&YRKuHn5d*etEVTQ`Nj+<mPMQ`yt1hCOwXgKCNA4z;U5BfU+1 zC<FbYWol*F;N=kJicnAJE0E?u1ik8#r};k!aCpQhs7#lS<<zMU9dC}#6m3;e1b!j~ zk8P2rfMKk~sUA+RKwmkG6?3#S2nCVpPi59i?9XWvXa{Ga9h~Wwk?)&kk>a-&AzCu+ zLgo4fz9szEKcNG>!Oz#L4dS%zU{8XuW`4FKdsd=68z;OHVGx-ME3d!go_P5a`m*0! z1@?EomHU3^Y*O!}F!7)oaw-Q?`f#G+#*!Ug<}kwlst<0X?&aS%#;pK3y>6U{uIe=_ z+%9Ya?W6?7E7<I!@cu;5__Tf~B(tXdIZ@BeN=5d6W7U2W@zx7XM(q0&!B2G4hi|>% zT5jno`H~nT#~jL)SxcFoL*-fMvm0Gyvn!_7z16d&v23>MHJqTyI6n?8kBa~5MFT42 z4EdU+x9p*9>kO)k!39nxufLOKMyf7{62WE#4EEQnK_G-#shU@)edW-e9CWP|E6*nU zL;iY!0n(j@M&862DMBuLt|_(jeToE|=Ud%^V?>ct^==?je9R$OBwbcsfb`c}Oyi)D zg?E93(Xjf2|2A+Lo8J$cXPII05A6|;2>Z8xaz<KAGV?9?3sgj4zb-!w#isMh%!1tF zi|j!!Mpk%OOYcW2bjr-P&}FpvvNro^w3&3FmfxG;T-I~&HnOHSJ`9y9jG1qJ;HOb$ z(naNmSbm-T!gP|0nFr`IAHV+c?FusdA${fxIeq5h6o)Kft4^O8>|;bynV&j+=I13& zp;-=wlbHufE&z*CBfQn^Fpxy>Yp2mz?u6FW{F?kKv~b#*{2~isBKQx}XkImP|Ebex zkeCm-WzY}nk%(=>^{Q6oWahyVQ)#5Jt_q7fmFAGv<z(jPC8pE-)af)obvn%j4nT2> z{4xQ6ALJHj0cb+F7U&m&OnfHa0x(VfsncmpTF5WZg2t2@YbJp@0O7wH8G11XnNw== zkd3D!{!ax3NL3R#Y3|ofs|gpd{}M6@tfxcfw3-imt5HCNDxeTXZ}OQZ|I}$UhlC_k zYkum~nxCppZrNk1EMr!_ZL`G*sWyv+ezB(GZi+aj<YtMj-RV(UyqD!B1$T2xB0a6> z;nRyc#fHT@ZHu?2K)CLoHU*A<+!TQP;kI2VCT?H+L9Jan({U3-*>n_!`_HTzFs(iw z!DcNXj$wY7x#gMD2<|ENEbbX>euZ+rEkMQ@M{?T{99n$UA;b8szg~^9aH+Jn`lKm2 zKk4U(Ydp_ye=il`!+abDrhTPXHC)DtLZ%=tXk0be{03D?+pz{t<2$FbPr83tt%eJU zc&$1$$UA?%;DL+o*PzD7JRycEwyQ3p@PxeDmc$W5k(j($+&A}mvSY4eUe(no29_AE z>ZkW=IuYCgF_i;se!6MR%g^JGOG2A(xT%sTe|7RtC6+t3D+7|aWLYY63tV?C5GDfd zQgX0DpGM}V>I>QUhw77vNPVFNNo@QUxb7|3kb+xs;$qx?gBcsbHUwWf=m4VJ2iUjb z<!>e?|A&Ng3SxEpyF#<o=lo8j_h9e-!+ckI4;em&@0#8-MtTpH@DB8zH_>~Lg0y}- zo%CNz72I0VA1~XLsCe6JzEqT!x#lEs@VwPoez@6slbfx1%aNv>v9S>ACQo3c2q_`s z^d7WwM2edVS=5XO4;pzJe^!C_l9?qR<Vu*7Ejvcm8H{dY^U_u>Z}mGiD2*V}mU-hF z;ypQP$}v<EB5pE;Coe%{oVxQ~Qicp`*|qyVlUvK6$q#vI%Q#gh2f}ebUBm(yTfB&+ z9W}=_A2gz|<mvix(niv(qOLFT^2ZaC?~{rHq$7Kr>#8X<{!N6gdn1`)L|wgDuG|#& z(_?8A4d>fX_Jyo(VFuStCSXp*IW$tm38~uHWLd-CIwB5P9lbw%I_({Iv}X-cGOyy? z5^b2A2>v=pv*HpcQ{hk#y^t6q3eYmDk)oim>)%osY!*j@8x(1;Kw^r<#uWntz>H!r zv?s@K#A#L{N<9R3f>EeY`6Jn1vYVgVpY%<CI8E1CNnU9TkJHkq`0w}gH@g~5#q0v7 z-kZL25KTpra-ZI-T>ST@!8~d2Z!OXGMEL%I>iH`5ut=x;Y_`QTn_2PST*?RALMGU? z+ZWLt5#s<k@Nk<Q1&iU<T=Q=8mq}=Ek<h{(o<e-~u+z?d?8tLxC?fCK%~Tm(7vbW2 zq?!)kV!>{&okznhIOjW&@*mQM4N)|>K|(1`sU2ijqGg=kW};i&9as11=U}cf`4yk4 zU~7zT<wq#5gv$2QHG<<b-KWH$c5{8Z!yq24>7ug{`_WH|NK0PJBg;!Of2ZxXujmc? zm^zJcgbfqjgTkH_J^o9sF(G6=uA8y@)p`8PbeqAl4b{H<_>1pX*x>5mAt8y7@(yKl zIOAlndFv)34dfbdvD{_p(dk7~vv9C{XpkE4b6~68z|X~zWnU6qskr(Rqu2t7`(xMI z(M{*@SXgnsw{AT!Yoo1by8aS<k8LvS=p^*Ps|laBXU+SG+m>h_I95Gfd(OO2{D6<k ztneWdpY~S2%bFX<Upx;-eAT1Wyb^HoP$YA3dF%fU3<x#pE`Mtg>4x#vDgVv>mwzRX zFGoCj3T25P-KEH;%`49~1ljIb`CcMJkz>JH@E;F~eh8ZEAb{bD5PhoAt+vGRe1fg5 z{T2r&;mNlxcAjli<JQd<<u-}#Gf}T+vFo6aSJ&fW=-j%ufE(M-KBGTnkkuJk(^i@d zX}cPMv?`gaoyur0>TaZBj=7MW=dHhyzOiS$0XLtdqGSIfcxDURqU-Scnr{Euo;UqL zIreoh_*~lMt!^WsO-b%D5v7+ulJa-4P;sc}wJ6~*IofqO+q&&+>vk>SWKk)%G|80@ zKsy@JVIiH9VX&XVcccP;78lWoQ!7kE&dF5RCOX$F<=&r{E4D$Uw4HC&;Tk|Q6OA^! zHP14{)qzbhJQ&*3em`6K<Tr#=`$us?O#Ay4=;m)9Hm^OK10W^Y29$DBGhapE44>hl zXgkR~@nLVx8u=mBpMyPx7+&HQHunOZr%SeVCgpPksXEet8rJtnI0!U<8aH;fh>S$c ziQqmZJCmBj)Q7WGkkOQ95^~Yng7zw(i*fJKoX68(Rdwcyhb<$=W3ki_+Iz$#q{t?& zJM!g3wrnkz+pNZ?s8!GfEjD`t^UDK3Bf3?(HE;#L-1co|ygAKalj2pPm|gPNIXS9> z9c(ka{z1xPC~Wt=pnul`Lgy*MV{<*(N~gr^sB;!|IpVXu^LT}P4A1e_%ZZ53wzFJ~ zheXi0iJ#}Hvt-!X2Lc$EClw6|$N8YB$s#&&A48_->ulQ-Z!c`2HVOln*iD=T`Q4sL zp)R~0U4$qY9}TYPkbA?utVAG2V5Jpemo51tc!MYW<c4_D8xgzBteXJ4qr-{AeVhz7 z;7?`ZTow-^T$Q)!BB9WaFiBv@N$zf`;&RQ92_rT!mlFQVcvR78$BDT+Z&M~7N$5f* z#=3s@)tQEKaQxW?1&wY>cHxxCd@l|w2^@#NyhYUE-8rD;OYV5dwy5qjU`{q4!3luM zZ4AL%!Z&&XeOq9__lp5%-=mnVv+4StI8$?)KlTUNb@&r9Z`<)*Ukqi6)VK{t*x-hN zAgMLNZtoKJnbOI%okYeKImy2YCjiEzaid(;!p?F<Z{~kQxVDs8=Cght10PQ`y*XO< zW0vi!=6dA%4x-wzc&G_ZL2_PtFjb(7<{FOR1iR7=bPNL=zCsavlkh`Q?4tou0*+DC z3I`<?o@Vnvk@ZL0&N96ah<P)y!n(`4GyqecBN83s&{@^A!=0@U&T?6}9>aO>COQil z1VG$L^u9KS@@Qw{X4(P^Mo2CqY;q&EaJ-+o6pQXXUo$w_n)Le<U$9dy;aruK5_W^5 zqg)*BQCIM>#W(7X$Z^9Dr8e>9Mf>6yB>~zB=x8tJI4nzWPa%kjUw*F*b*2(~Aj4|h z>O-C+@=pme%AI2;m#<Z!JLKkL^Cvf9!g;R+smgx|^f7o>V5YqiaiSf{$jNKfA@6Q4 zKLQK>bs?4Mu15`h0k=p&CN}v+n9(WTy5oE|{42xQv+PD#yh2<iZ{0RN$AiDrS`qi( z!!3_M2VQeKRoH@|ZAB3tetS%0B2spmKUYzK4!7VFR9&E$X0`6l%|r!T?R6bXIETtK zuHc;Bx$TUlRuA!}hFT({UB-nZ#5L3To+9(;EjpZ8Xh%}&I+kBXhOZ*|XdT)1p<L9^ zvHbi<Cyuf8&Zl30Ym4AWbsciody<8$5RABvg9&f_7|?E4QQQjS6)F1o0L(rad?t~Z z7V+n-gr<g5^}B?bBAfvx9wo>NITKjFJFDxvhW60ZHJM8uCr&4q5aR3yU5tMMjL93P z+P`lp^{a3a2hcb13*4BhpR-aNGXaUm{paKU9&Rct6{!sEra$TW-PeFZd75zt#51ah zT;ArV;zQ5#jU{0NH@&7aw{sH<=K+pNvW;-nXJe~wwWCrUBCDjj%#6{LQuNEn(Q7hO zb|J~-@@`$|fGSRM&TZ^-_&Pd5_U}qr!2$}py!uRiGwd}N1DyW4#$JEo!>{Mr>oZP! zo%U7Fe7?v957$U8kE`;Z_L^UZm$eE(3N!|CpXWCMLMk(N80x=jxXQ;>elGWG{ZBq{ z-x~Y}iht|ML`7%Zn?8&e-kEXls$m)5)d^;ZI)_D&(tiYNuPuTzj1~cK*wkeZcKFKG zlqW~$aum26iiSxQLW6R|Fy-fRM3tjq5nqK3eI3_yGMfAP3Hv&WuR@BxP9S=8?koQI zl>IVag&Tb>B^r9}D@T;L|MHLdD*Wi{q}(SK?Ya)S>NWo}kR`c_;aI$kC2iIgF2hXt z&qYr9%i0?1@CJVt55`S+#o9GqQ1I^R2nV5NK092F#~W8%>vTqE?B=Q7c}162M_xvR zyJj$6@s94sw8{7=uD(ph-GtkW3^E;iDxQ@D(D0|htd*)-SA1-UpiaqUxro-b8fAlD z#0zFu7s2wY3+8Opq^~YWZ>TO<*2)-jOiGiDX#Fkc!=UgvMP9N=p(VDBF&)*?p75?| z*9FHt*`)tyGO|1FeV=>Gi7@bk_ITlTujR9t<>?ZBqVln&0TB?l4!~AQqhs^ZD4i<p zNa_HbPL?2nB9U^XvmN^=(vj_vvS=AS31v}DZBBqYp)+@ATTCM-hC1;IakLMW0a?5F zrj<w)Tg2vSUH~2UNto$OZlp7#%J%{VXYXe3#vL3r=`x12I>?N&$Ne!Le7{f2_`sL* z{=Z^%iAjY{X8~VzQBEz-mDtlyP%eTLA*T3`spl1)%fA7pf|)H&pW;l7DN;P0puBjG z69c&ckvryzLmTBw&*FRRw4|IJ!@39lH+l=Q!kvf>tyJ<b-C7{|d)Zo+7dlzH9UipB zzemGN6~kWB7g-X?$vGi+#3R|vNtn3<{6FBeH1m<wa}v2F(rLKJ8<qMc?jMZ;J;pB1 zWz=-t{wkmLgd;^xXuf7o!)&gl3~K;P;-dgVl<NwoMoeL->0SP%6q4LFHd4$-K9_^S zy~{t%>`~jWNajwAI2zpHs&oB1Jy^V~4SjbUpAlCy66z*mtlgPN+JsV$hm$njz!Zx) z&q;$z`&rIvY9Y=kUbZ0PqTN6J-(5u_h$JYSh!ZKnTD;W}Lj^&9ku-=G>|4ux%S@nY z_HI5LWdwKRhcxq9EyNzs&;=@C-~n0$L(zw7c>4D&)Mx+Q)@ecYeK12rC!;T*Yh25p z&x!y~>7C}oF0~WlDl8OEPt!Vg=45|X<Ugo&?%t&K>ynb)?c{%`Ybx^RYsh2RYj5hJ z>SDCbn+07C&qP8FT(5$#S2jLQXS43$>u#}E2q1vsX5twG6<8<x|E&q3vi>~Nqn+&~ zr;rH{(P^@kKg&SAMIg3uL&s~;%wjA!j<f>iqI?29BR!t1DAz6vgyBS>Fe0BTvP)}> z^A?`PB3(PHH7G>YbJvpHB?-&#B53mTo~EPRjNNCs?-4;Y4QsvOL}V@N(2#3*S|J|d zyb+fm0Lxg^6Y@-p!Pri{Jsjp8$Dz9X+m?62w-bINAan04IvQ@}3Z9+*uH1RNh9nfA z_BGv*PzS?%0T|FT#3u2psTj`j$J?{K?%<MF@yB>Y7hviC(FX2ta_Xe<cBW1UGYk)$ z)qF)%#XEa~r{}yi58E5!<LLa5|9+_RicW>+>=}fmGI=spZ+bBbawZk=(@eRHS-qyL zg8Spn&E4q9HaIET;=3k_w>zo%@(m_5-}x9eNbc;`;@(V?XkWgo5XQvv;df-u#s>q> z2dDSMoC?Goga4Gil>Hg@#lQ-H_yy2`Gl8KH(mc%$Wb$97oEC2t^!cyZTS06K_ltd( zrp42;EBNfJDRes2@Et&Le@8Ypc=DuarP=GqcN%80hY8*U42HsN8=rrJ3^^)$u~N{* zsO$u#;2Wc|=aI_k0U=_uTPf~$TYS6Rr|kE5my`E%@r*6le0BYs1mC(kGyV|O>3q%n zz)Nr=s=xIPIuw^lw5O`RJ*gF4k>@jiUw|6%2|O^qY{9-+GFXGfu3@HTz>Gd4`{p&7 zvEP(!lOsn@RR#Cz#1ZN<w?WTgT<37T7gr%gUP?tyaH57&FX^@_iMEZcaW-(=rMzL3 zFEg_eF`htQC|Ww;gEv+48GVA5QK98RtW_jedg~IrjN@AZ@{GIjyogt1>_rIp1QO0U z6NpF0jTfoT%5nCkvl2s&D7JVWJ1p%JIM>j)k7Exl|H-V<Y@WxYf=jmH%uaR2IV4a} z*ZHxOKg_zw>q?c4!7?g2^{FY*)tH4fYydK9PL(eIs=%U}wPgNtYnZb}q-}kmnp~BW ztiIy;6R2+zMHiw4cQ+o22di~_Jstc`VJp+Y4>s~h2KTn|kg2W<Vn`CCsJWjPRrRYC zS|N^?RWdjO<#{72tjxNbKpxsVx^gGMA~Y?*Rwa`4lQ_=UIUc81b9^GL1>j89;)z@Y zar-itxNJ#-PGAs!!sDW$!hz2_zXG}ehS3uzPL19E4IS9fpzt$3Zpkz$@%vg%F8@o$ zpnP{;Z;UeMCXQNENEe}tr7?b07A_vc&&oo6a}?IjzfY)mZbf%GGL(+I9&Z}pn5$dz zFbM=VZ3Mw910z#bhLbb!N4tuXIXZij!f}glOD9wldcWml!$Ng4UH>@*LYdH{;W~O~ zIA?-_=(~O}Sj)c(nAN_66BvLmHWi+j12yHRP6L(SfGVmPYy{3@)sa0-Z$%onGSXUg zYz8xS+OB{oR+Mtk@e4l?x1z1M{{#1)aAMxNS<aH@go|LoTFmjC$&E}wsE(j7*?kns zpATfEdoAhz?giHmXL>~JW_gQok-*EcRt&LUrcp~y@V@&l`B)xP!6G)lhDE|FsUYsJ zKCJ=@PXlj_2pFmXE(zsxCEfk1>68s1mM#S!9ZPNzx<w^P$(D8L2`rXYfQ~BMoV!$B zi+!4jF_*P;VtR{>aC!^d42b@Ug0g)AXB;ObD>|3m0eG>LX5M&pnu^n<13%KaCqSQ; zNn9BLsnY$5lciW)b=9HvXf~kDI1`F1;$p%Womn|z_2-IB_}F6EmtmodkwzsRv7u^O zwvjdDQ5XQnQiEj>8ceI6Y4aRoUEqJGNK6QB$PQ7IyE8~j35v}q<&VMulwu#Vo9vUD zL^^I~I*iQnwF!*pb>p}n&i`6W6$f8KXlVFMP|(ueI5lVy*Zq*iCpe1$ddusnyfQ|M z&uCQWJC`AEt19@xQoy8@spD?{CiTn<?okbl9}y>>+V1M|M+Pp6`=Y4pCL|+zevP|- zHtzzIY=asOWNnBkroqM2N*KsWP2-Nm*Nc~Rs$CH-#7bUGDe|wa3JioCZ%$>Z3nnp% z9ABKO*)fTUv=oBiP&UV-HtM40SF&eQg(QsZ#UyCc7;CnRHCa~Hgg*z%$gFlh*<KZ_ z+eEwcC>>k{#v0q=C$GPZw_A8i<Kah4cl`&}X#+zxc4{b?)1J*z9b~R)cB%($G<Y(* zfl&|VlUom~Gj_tB-9oz?meA_DU9rkPY=^5|Ty_7hD=2&FKG;s~*UaA&&V8^a@^|01 zw6ExE8Xnu=eP}G3tdWxq{lPh0EO_ds=+2gz)C`=XI?X2FQgz`wBfewa=11KU-0<ZB zu6uDe4YE@NOXnsRXA;aEN9^c>JTMizBdX!X;sqG~q$1?E6~k+-{U#AnDr2^als|1k zCUN%Y+|g>R1XzCE6ibabRec9)cA7ni79BWBxhoj?-T;Yi6_!#iEdEKvhH31Dn^;f# zlk_Rmq!V-elIqeLv`BVhKf|}zgpokV3GUK%R4{E)#Wru<H+ezTf2?a-Q^9w*BJQ`a zntmZE%=eI#9sjyXC<6X>xQuw11u=i6aSD?i-J;mfC>EADD_At1z22r1oI=-Sq!|3{ zT5qrUe_AH#SYX`S%!RO6>$v*W@<p*s*=6gT%5?^sgn$2K<W2kUarH~6j`^nl1$Lpj zZ`aZX)5hiGFQ2R34ps-#Vu`Ys%XTLGKD#CJ4sOZJq&Hp&84-@~%`)J538ho`@{=1G zoJvwDj$NO;&Rv%2HDAZ51<8%UIS6OmISqW=^Y_dsuCV0=__P;Oo?Wpn5g3SpK^1>+ zEO@KVSX?6CR#X|(;j_B;en+03Sp-hq<!tl}_Pyp46h5sA-8H+Cm;dMT!($tZLrUPh z%1N(fv`MeFYJ5ED1ixKLA8nvH^uJ|9TIy8peGKwv3VWOB|aGSU5Mxm*%KUHbH+ znXS6oHxM~w-(WZ8X3p&zwmJ=4ApK-^J8+)zmv+N$X5e?lMK({1VksykV|9IBRmUp@ z1I2FrF?@34Dw)FjcR!5N7qb7M8XW%O4^9G$)tSbP|Gn|34lEV}7P3Ox)*a2w8ixPl zI8@iy3t(}At25D8tw_f!T=%}?zt?Vfe!tTK3@{9%IxSv<>gjAU&kRd-=>`8%^@wzt zl1eZWy*ktU`99tSsnQDWN6IWLY`BhVa@{@+n{XR*8L$|N@)c2xY2ZtsOK+0&#dC{E zU6`GCPT)7ff2x!xw(QiT{;zWB2c8rDOYsLK;rIU$x}u-_zKbjYa#x}$1O}#`Yz_=^ zKe^TgFz}OiI<qP}UH>=uwD=0S;qW&9|2H0tX>MM6&8v_97j$$BA457y1e3Xv$T!<A zdtP=aGz{)xun|rGv2keLa(K-<d5;u8)DZY!5qu{jTE_oLx8Zu5A7{s5f{n$y)%6`! zs1Ss19yt5dd`LyMSCw_<`NlC!O{cAcY+zgY!1!x+CyTP1t;XWBmHcM7`k!G1%>IJ2 z!1ghFH68l6=nw#vmF?)`zJ1&~;scr|kS<Ko<!X4oa+lMpH`dbY;LB*b#7ky3s+UXH zw9;j+_^VXMflm<U<1z(KLA;DE&2PJN89hrWVYj&77ZvJ8MS4Ij#kx>cuv+|u8`5G4 z|Mj8W{*0)%_UkM{kgoO+k;q#HF;WG;R5nCXh;>dIhYN$mSApO)E=^1OLqM2_^kamk z{-^QJ2|kG@PZC?X|H-Og_5_6=KAFPEVEz}uCkw8QN<)1>OzyR%;m(wPsfOTJYH378 z-rAq>sbFdpUjD;)FndbN?#7==+ZpobJP@yVnAHn;t}X4q=Fhsb%0KQWf9S1`z?^YQ zcpw#dAMJcoXHq;ET_zXh$SJc4u7MLuz(m`?*ro*!M5@a$&LtnHAPnXDrGiLXpasdc zppZNpiHp*IK_t1Q<&kgWg@eZCcD}e-xBhxz13A&;1?^$aV66SjLjE!o593qgRJYt6 zONo+#Do&oj$XfV>n3!BiECU+J#bRjO7%Y2$_ysEis{{k9R(3YLHx(?Gu`_I_)HO6b z)xW|js;d8LS=UtG?d$@5E8>9xp&QP04jq<6td8o;+)3OWT+ZA>S-3PAOpUT>xvT-- zA`r5xI+DG)HHaWHuf3i{3YDj-;sv(J&RR5`z?<QG1qci;D3OXU;MGj+ru&kWW0n2- z*{h$VVpDl%_CZ|`R4hxw_9ffds;Q0~rOi7wRH3h?F*tsA5gkN=??ikM$cWj;v9zk& zcBSezEI1f23J7{q!G^@#;YG{IJqSS5FTIaV35z>Ugc+KhQHWhbDh6RYW@7lSWy@0$ zDr*VER*Zh2^jsoU);!+G?tvmj7pEv<TEw+P^_YtZapGfq-(lZ(2zFTrtiS5R-5MP= zi`>46=p~b?E7GlAlP0sl5f2){?XoDx`!e@v{ByX)<X~~G!0*y;r|RR}Yd99;QD`Kp zAbdje8AZ_RqB{E5P5<)!x>^9LPmeABBYGluW!@~d_bf8`(clsvul8yX<1VbrkHD~c zfo*2{lK*fc0B|kBJL)Wh@Pzl>tMnr<u8?wjSP<o=>`SNkbpN6^+?;Kx=H-VJ1?Y)Q z<2_~D@o~9uPiA~1JC#f!D>=3mR=EXxrR)E-xPx>QvQO<_J6yJnzsE&~+5Jc}_`YsP zH7#o&)i71JNWxD35_SSTx1;5wO+2AVgAReV@HVPjA$poKW-WypC(vzO)>mBFYDyd4 z60n5*lt{~is<91z(PipXQeH;OHsO&maK4U=dx;O^no%8jOl4NoA><~4k_+M;$1gzk zE!&CI-AMSt&ZPf3w!bc>N=LHnSXKRQ1!Lk@51^e%cols}MV#`XNJ{|D<_r#YTzVO_ ziNOur4LfG7!gr%hxzqU4*o~F!3Zt^KgP^yGvaFxJGamdvfskZ$jC3Z-UT4AM<8y8? zO5Ta~ug}@r5y@z%OFhCLY5-Q<xGDQf-a7hWJsA#{6kWij#iS4&i10u&U=o*sb(YW? z4XJ-uuRXT5+t}@Ddab~JAMa4h(iv1n{SLoH{=2L*>{a?Ly4=K!bWXibWu{(6CG)J3 z7P%ht=K8$LXrkl>OZzPwT#kMo!I{|nTc(i8MAvonok7)@CPNL-@)HEuym?wKbEUTM z@Vi`enpCi+9UMRfKhXlo^G7RrVi6ukdiFwJ{-W2Ue#bj~oL;Hpe-x5+k_!^~Q5md} zRg%<Y!Sq{sObVvY=TRC=zmdm;VEQ~B<AUjRJYvE08Xkqg^qE?Rq9tvtH%>^=l1ZAC z<12c&L7EoDjJoQWq9=N5uKSX{8p4AMg4y#{y+4Wt*IWM;zOqQJ{Tk1vV`nz}Y16SW z4Hq^YJIian!(M%=;g2%cooG6Cfp_;d@0Ys=ikjXZ-FT>cHwM&uw^6d?eRy@Q=4)<b zja|D(2SAUW={0{|H5?t|HGkR?)cILUe9CJ+NvV<bs;2)KS=0QX4v6SvLtHh!n5*%3 zmY~M1mN=``YmTA_G##bNf8y1LtDJkP%A_5x4(=BA6T$C=_s;23B1ZYoCB~p&?XkS~ zh$gH3pUHMy?f+sU4@uRXO@>r{bv6}hS?3=w$A!txrpr#fOyytB4^#aY5!No4Ht(!y zH=Z?ZzPGjkG-!uWv>iNT1lifr%`aDNOCQPB^NeaLQ+O9Z*ljX9bXHDLj-0`eNzkh* z{D-<BOYxpmDyW=*dgwJb{V^ijjA(#5!O8mPD|(jS2s10|At-a#xKr|IJeY&exP<@e z%zc7j;8VsYx!X^2>iMBAh8xU5#7+Ybk!U}vyI@SSf7EgdfH_Y79x?F3US-<4U^rHw zrQL6l`@GkDGb9&g2vU=<!2L<nQj8Qn0dqUg)TgDTj>{**l;un|F{{lC&~$**B> z5C^~2IOWoM=F;MdxwJ;y(wGGSw`Ff5ic&a6ZS8zaVI4m=sF~4pAm%k!0&w}>flvGv zBDMACG{d3pK-fJ|gtlZRUYN4fYKRCc{C=tTqixyk{9qz^EyMQKCR0{vT|3ZnfW$zS z<jt*K%W{5X@8pk-3ks~LX5gH>9YN#dHGhZ6^6_K!V)h2U#r+p>2;>|YeoO>a-258u zOw%$`rl9adp7b+!us&w4n51}7cp*BBwBR4hW#;zHYhFQbs_LH(XL?!=@-G+2Zjy<{ zaHm4BU$Y4u5q}T++L|pSxt<uPFaJ@SrGN584X`mF&hu6WKM}gUbw_yZ_u_I~PH1-Q z2}tASCah~e3-Gu$Pzc&yRli2{q%$Qu;=!5ZN@t?o@!)Pv<BF&5=pqiG8!NL2z23R9 zmk;_UbKKCkLE(h}lPA8JaFyomWlWLE86CrgnlO*yM%Xkw&dtMdl<aJI8cd5rblNog zYfHVryO%7b3D5#vb+){cf7hQ+$voon4dzpa^Qqx{>UcgiieYjkqWM%|K2?-Y#qz1K z`P8_4YJ5JWjZar!Nj_DYPhFBvO$t*>#-ug`&Bli0T?1TA{o~4y{C-xae@@(AX~	 zSL%e``Sd^Dxl(87;JHfbRE%)e>URyjWsw{^jun+{yJcJ57f+tNWp}!pxT_tvJo5D) za{8jjzF+h++<_x_H_0y;N4(}qI$g}ZI_@kd<~9B*x1`+NuGgJwDtYK1$yAv1yN7zm zbQ6bhsQV(mMEo^6QJ4J}>B#t!G2X#LTHEo@!-S&_#U+5P_%)=A1sBn`{<*5my&^Go zC`T6%j$Jh3?~}sn4@skC>u*LpxPBfg(;>1!O)XvI=|4Atz?xZ(cJn;kcO$b$dJe1b z8}lT|-rKIcEqfcruDl%oteeopsybKerT!7CRL8HvWNVmI3?qC=4Nf|*X5yW;(_$Gr zUMu2f&SFHeTd(;?@@bb+vQNoaj;U!1n^cW8_X{-a<{vW7Bvc4a0)znwxJOD#4q+NA zx)=R1>qxjmYf}5RB^<c0d7G-A&7PsjPvu8C*GT>o%$;jA*OVfkxLjvtslBhfgm<i2 zV}<n2%JKRI+Mltf6WSc7af3x^TL}r1=yJ#`&m{u4o_Sd~Z=2ezC9nA{>JL(NL2H+) z#JIdgzyxcgz+gcU5Pr)Qj7p@vssb;^i@O(VOXx>yEqgD?B`I_joUCHERq{vV6Z+{o z{ZgX6?lhQ*23Ct6cLT0?ikfIa3sReSfwERyxrH~|m1wJ~cz6jZhftojMMHV?xi5At zzJQ<ym!KWF*NTA9&M|@RGsvJ&jwrEnScnXPBGW{$rjVYzLm9tiqdL=7*3FH%!R#BG zj(rM;5ACHl-%<j@lA!i*u@VSHKl?K!&h%O?B#|35<nK>t>4Ym!vd3`n`%NU`ewW`S zsl|UkUN)TSTxo*_5M_@g{B~|p|Fs}uc7+vP*qeQdhP1Nvlxk(WZKeYHw@l?oS$<vn zl10=A7tL@r&sGeFi``ty>J~etZS=Fh=d)`4JFE3u)XGN5l_P7tlpjYbXB0Gi^7n$t zij5R?HPgn0VB#oU{)qX2lppE;qTTF-$7XP!Xrel}OXy8kylVQp8?40_%5KOY&Jfiz z@WnIMYDhQg&jyX_fq3v6(HFwby1RK+)n5vO)C9%xw`nI9f`iejg8!5((MsJZpKXc0 zB^M0bX#0A_sd0X4p(>NAELCw5l`ftRHPC7eRs*{jXDWN;W+{NmYNTW53<KI!T!I7X z#L97tf2V53ji_eHuQ{Yp9oboNw6O&N*Lrqf@q#?15l;2HniROLORd67s8@LK4;TXG zcIkx35%r%i3i7kk_H=QS!z?JaG&v18bPp7;L+KqPqQxn1dT$6pp|JCCRnu?U!3yjB ztD>*Km|N=ie_mt%5Tfs@q)p1+mEsw<V67>iIsK4WpA9Da1AYgi<1)r9qt`5<t*U-% zH1(Tlv!=#rVG?Ef!@Am--BjJq!_PeK7%<u(jxyV->N!i%Hz7r6+u*LX<WKo$#)I#6 zQG-9dkd(NnKfQ>Qn5aKJMoK)?pFWP1hT5M#ft0w7KfQ!hpQR@Gy9`_)Rl7mhZc9Hu z()CubDlj_mcj3!pBm#`x24gROtNm@*gG2g#Xda+3AiTdiGxN%d)EDkjMd;*ZcwYRy z!weEOt*Hja<Sum@zZI>B^)1qjtH;0yrV3BNKehuS+1q%)W*?F;AF7_kcWt6z%1hwI z20Su`I2c^65S|gLqpLfxoN8CaoBB>9E*xf4l6vDurp`c4-A7B3ZJYn>Fz<qY?BaJk zxVjFz+WN%jO?@e#_}3uq(A@!l)v1-x*bP%tj-k3aC>mdU8T=0a+y4~)VcG4OrMOYz zZa5v=oDDlB=ScVE)5m%l-EHJgAKN+IR+wPX!fO9HCjPHkXikQXeZ_ap2fg%mA&>rx zvLgN#5fA9pD|Jgbnpmu|uhT#4Q>S$g0HEeSp|Y?{GWZAe&Cr>26oLk{#j2qpN~<9r zLF$rVMkxd%!omP8eVt!MaJs14P%Q|^OH5|0k#=PPpztCYd^0M?q;-l}pYXSKsoucs zA#5wO>X(22T6;W&N9#&bY5#*N|8e*XfNEwZGs`$^^_saPziHqmbTeG>U44QT_uZoY zHc3zDYfiN0Ko5w}S2Vsv#do4BwpRJiV*yn=i6Df*+G1f93=D=kPKRswrMl<w{0I%H zT796i%9oWaUF9DQR$SsgG{_6gyYb8a{?@qv?Mu9Me~AbhzkF(qcc+9=S`eGgUc$nl z`2@VYYE=(tZJa9g@0!5F8dXE~u6~%d^xEu(AVihmlb30eblL{Vum+w8^(Mc^KTpDD zNA`2&J-77S<ezzKWE+m1U->)oHtwgdDjjb-V5Rmo9VBKGN3@1W6?o0lsI2J(Ghq6k zAa(?jiG%N{mALsF#(%w^Vyv&bR=rGOB^L;|04EBEMEIWGF~@@6N_xJ?0<|<X7ZN4o z_4022QNKyG_`_j<mcGasc8FdY>g{<wwW@PO2}LC$f0J5H1UEzjFPVvB@$60b&$~v{ zrkz@(wMTnix0cGgC$F(^qM2_*DxUSvOl77M3gSB#0zG^&3^0ZpICY)iKtxB=%Mo|Z zcIf%U7`)%@JbbqN(aCo!+DL*b5C}7~3D!1Fb<8f39JP|tA7Ha6@_R;<AJY{U?-vjX z_~lPO&T?c}_TT=k@Qje15h{qB^9m6lj31S~i}z%Nm{k!)z^z)<@qIG#@k>15a(6}) z5Eo-XJMaEn?|6PzPkiDmhR<kTL}4ViVF2IDS=GH*<o6OodjQGoHg32)#{1jwoxi=C zOnW&V9L6J6Ag&I@BgOHmJ=S#W%Zu+{^?n}}6XnYV?`hRWo!4B-5X3XB7x1I$7_lT2 zi6mIBSUJJn%9sd#q=-2_PPLEb$sz8>CPxp6F}stQ*3VIeqlh&M-Qy@C!R?^dAcN}$ zgOMHcs7NBrt5`kd-GJ~}%KK~7GBB!5gXah^2kY<TXE?&NG+sHofXC=DPb!Hq&kywi zuj1&8AQ{E!fvy<Mq37Kw`d0nqyDb=x-)l!Z$8hW08Y>Bf_;*`_nbyxZv@BkP;f-49 z1kHb19R;kFevj+Y7>+E4xY-}+>CXk2DDRrQMxl6u^$MrsTkU?=$74Z(c$g7u)Cz#8 zK#+<CvD_SVGiuB+AH#B_=k=kNR=p;2E<ZN8)kWAn7V%>ZbMb+6Nb#QwOC0r|Q;BT8 z#L>xXU9g>Fqy1F0;R`{k$iYt4`@@Mov}eq*RTi6rQG9fAt3}L3z;v9g<%k6kt<K!7 zXgXf=m5_|FlYO64XBG1%uuoWt<G+Qzpq@PG4E2WNZk%G*NX8<zqDVP8UZUDh<0ZdW z(1=r{W9&n0L@nZIq_T-%9$2f+%!p=gfT8Sn?S{kjC@<(E=nF%DsBa2^;>Y5d>o`cb zXh|ZdWE1!0c+>XLt|(O%W^TaStK(E99UrMgnm3ndu@$^%3J8s_>JxoXwkUJM2O?BR zW(5?O7}GKId{5Sqp<0)z&Yw{jH;jf%zlyMT@v?WtM~EBG{5Dns|K=`>!mBe67K%(0 znUbxvk!L1XXYMQ%(f$EuLM=sS5_{(Vl9%9C`c`z5V$v8Nsd(r1UnI&7u*H+q-e&Z> z7#o^jVNf#HIqtE0JY&BUvn|Kb7&<pUUnU4mpAZnn--H`?2+s}+ZUlOmb>JApYFB+5 z17zIa5#i*u!ta>pdfp;1ePQ|0%<>N)-OSfdaGK9s-2)barG(<yMy0WkmXGE}%RlN` z{m76B^RC4lHB4T+(v1dHx#q__M}x7Rx76hOeyS+*_2V?T_-}&LSj(e9W`<fgGR@7f z!ylfZiZK%`9p}%8`Nv#lNMX#;Q<N~dRdRm$qnWQC^JfrMW(HAZrbdI&34iBBYQsgu z88gUlVt&G5!Vuu)gOk52`XvgGKbqP9_t0*;mGDpG%J?TfQbgFq&(xn9ZMZnNy2v4D zBxgFxB+I%rw`=lujYg;DW`A(EW^Q27U^>?*e5C&UArqIwh{NXToL>v+N|sB1jpE8= ze-09n75Y_KmA@l{o4voUDl@Yr!eu75v6Z_RoO@K*4D(wgQQ_XG$Do8e{q$d|io9TT zgmX!PralB)+6ASg{coUEr!sd{A|RPEXW22Kwp8%pNJ}m6BVO|*%H@PGT#VR&q<AO* zqwaC6!)yM{IBE>;(a_<;w1J0@Tg3CO`HJ4gzX<u|2nDcydNkDXxPXq&DwI?9D%f&* zgDTCEmhfM5^*BW-HKx~&^hn;oTrg5UN(HTg&FM|1Be{ZqKsgFwVr%ZK={KG=eg3zL zf?r8_JbAb5lGN=re}S%N%h|BTo*iyqWWF=O)f!BjkdnFiDLln71j>j^;ZfNc`W>2G zFGIxKgpt*Mj>~U4PF_&{oLoRUz0D78q`TaXW2Tv<XZypUkw#y8BvMPtct32jY&c%_ zm=29%!%38NBrfd5<Wubjvh$R6`oA^X&rwD^WVZhLEBF#0)2=BXZo{=mcrbIgg+{%# zgIE=tR?Lrdw)~jig4t`X#;}>|VX$>0vUe(Ddo376XXqCPsUgYd*!?;(O&a4KEJz^& zJ6jHuL-nNnw-Ujxr1k|r5>WV2?c)%N|9-Hd&VT4ZS}SYOU(loB4i=7&S8&(HE`&&~ zTQSQHkvur*RyDMz+J6k^q^kNea{4#YTS2<OxfbAkUL9#qSG-1$Kn!&3>bIgju<{js zT5i{5#XsdmnLrXnGx$>3TUBA##wUtumOO)XwHFw*99R1-n}7s^Z@jaz5Rga3PyRr7 zt*ZYEOhfKlU(Pm!eFmFQ-k$>ho1)Utf}-Qd#fb~&(b!ZP>vTWoFX;^o%OaE&2sX~7 z<m^<jsd+mRrBd`jM#(zNM#ZUCs#t<6$7-Q5Vn_?@Z~XGrT|i0P8fxR5W7^-Da7_@t zUvBCx-%>2ojOYt@Q>O19!&68VG=44BWLs$r_j%_~IJm!`Or7R_%yJ2AFU32rDim69 zJ{f=Vdo>zDQX2V(9#ws3M4D`{Bf+#8V!#CwcACFVi>dmvsBjAv5<dV#+I|KI_k^w8 zyh(H4>uQr`{au|cQ^JYD*~TjWgY1*)%>|XL-lZHNovZ6~-W9mIj*J&|gM`=RPT>4~ zXj~(vH&|P1!Bov-F8KAPD0|a@%Z?aFGq5(8T7jEO!n?sNxX{Afw@-omM;hX$olA8N zgHN%m+WE`%CQyteV^^tiPOEbMN$+%iGj>%s?{?bnZW=01>ezJgvOfK7?6+PjzzP=m zL&|=Ajs9LW189ihP<pKKZ2evq!z2>Olt*uME8}bAw=4brc0PUL*TgrKZ|*$4eb9K` zsWO_>me<NnJV<UfZFit&t44k0`HQe-+>~k`$!_Lj&fh8*r5MQPDqd3UFvzLx$nLT{ zqtuShtX%vrR#PGmWbxK<j98P68}@1fJe0mo=DCjqcWEfiHqpim9z}J<Eiqonmy!o` z{Lln@&OJ<_gCX0rZ|wU)^Wo>1wUCNDs&S{5nAL*oXQ4V=y3?9S`Ome{Mc2xp=*+*X zFl=R*pR~4h6u+$%qE0}e7!56lYE%iesH_(4$1*d4KM56Q-=<&=Pokhg(a{3k7wt}r zH;y&JiUHik|9q=34HCCAR3?w=t~|SXudm_TO20t1xi2ZD3;MWu6l6c9KXw(~Q<P<* zLvBwfCDN|z7q#yrRfFl-`dGUIfwS~Im3oh%9OD0Rm9gotOW*A0yV=nOdZq9Zf<~gr z#t;~L)x_Sc9OA<M*^Dg#vm@>9OjPj#7(~0;=Mdfa%#w)zP#Z7f{$h?6e1=ZLwoQV_ zTZH2eYD7M20*?C+vzeh!_0vWeeVuE4e$|IdjI`}m`DZwH<+y)Uq4QNHRpgwNNyUOD zt<I#zIlpC669VI2q)Obyd8FL+Zq@a_&^nZI-r{)XvW#r)qB}@b_*aLtXqH=SwqLFw zhpe?_FIQ*&#?g?Dc{CT{9FVur_IWJ}Aau}Rj5BXxWF1Qc)|{5J^_ODENEB?<qF8;o z?W1Ab^HzV8s^Yio?1$Ath$v|GG*gGd?Dw!L+I|;&oLSgAEfYP$Y<~qJZU<~$btU{k z1jo?ykDOJ*dpxOV2jahHm?yKvLV-Xj7sCPOa?e@uJ(ZRrcQ(`x``?qYch~mndnxJc z6cKd@7R~CQVu!cpOnY0KQ5A#^9Arb5689I{&&;s-FyA%G>MFi3#uETK47YH~7S~8F zo>j~;&>fdQ=4uICEkRiK+!jGY<Axt^&1#1wW8ooKT}v964E7z6baqN0^%*RgZU<7Y zdwX9$&k!632F>dmIJBIYMJ=Z`?qZgkr`1IhHWgXyn>AEyXm4MtMSbj_D#Q|-ksNRX z2=Y(6Ojl+pLe`(KUQDaB<b{0rTFP6e<Aii)zkpx#TT+>DoSs>7e|*&mQG>T0$3S+t z-9YBXsdkT!bZ4!J;`^5xnAZ+~U)+4R&Ql-!%zS%WeBVm@dDlYs^ZrS0Kr(CH?|WK# z8Wt3%lp3tFRtEdE<%wAXU_~`TS*qV_R@@)DVdZIbgJmslX;&UUv(X-RZQ?<l+C05~ zi_39eo4pH9QVMyhMNk2N_7U!~DgrADqCac+MP{+$F)J=L!u<?ut?gYtiK5o2Hi;`a ze$560?H?sj3DUw-Ttf!k4^!()E0{;Rbx)Vk-tbiRa*%wQKqc{U&A+lEi5SJCLy|fr z5obTc<pk!ZLz{DBY5!H8Hy2vaj*|lyW2c7&PfSkoR__87LL0D|gHM!gS0Ym^O;^0- zt=^%YYgwJAzq2L)COdDnPxGrTDX~D|{o1`XE6E3#CIrl?;T>T?CO)e&|E^EGF#2yi zmkQqH^~FC37kNZc-6B|udt&W7*2a8FKG!%-%ZbYwF6MLJ(UL*9np$Gh)adz)w!X=| z&0DRTTDjPCzNAO#3+h1AqmloQvNM6VsrnxH9?rS%k$INsndf<y%wvX#M9BEeQ#>@0 znU^7oQmIrbqC!cN3=NbLBAPV#DX&s!qVfM-=iGCLH}SvgbMM)EpS{+e*Is+=wfB`W zENqTHPRwkbdPKy`c@J=_0Gv?dJ7m?o3sUh@NB;a3%s_c>;xEa9@grNN??@YV_==xS zo5=(_=~0<?v&g*1(^?7PVOPjsrgl#Kp!4oioS$i4Ef6l7{+V~~gT&y@w>l&(_d@aD zA`nkV=$v|#)rS1Ru)oD4b<&Na)!%u0CF0{cCvI`~+5c*GO1d`vVLG-@VJcku>X8-U zVb~R(xR_Q$3MO>&!Gq_@<c}!gRd%A6Cf#kH*CCmK^UqHtHw=Ys`Mk`nO7gusipkSU z-cOqS4T-QCoP1%Nd_In*PV#y2(-eKM)8cz~(Fd4}{AF#-cA&ov=+nz$iOYpAhzH(= z-&g*IUwHCj%1Z0RJQene-0x52U-IVk!8e!@inA5S3U4#{^wLP%?`7u&$qwPmgK&<2 zrG3H%PyDK?3WGPRRh7J3yh;|IF$*i~M&}JAh|cD(UKo#yJ!4FNR7&<3rT$tdtt{u8 zg5H)k1bP%iGy+(G&Hc*Cy-4#197B&Je`?nCs%H;MTEvjY&YZm`rVJT3r5SR|JFOBi zm%Jr$+DJC!R>Pp^W)in6f90L}9ijqA-t0@$UEfI#Z_}5syJj!W?{AD0vf*H};O*Ms z&Q;9o3``e^vAxWrK7F$+nV}!<1fKNhSMGBk`)m|GTStnMy0nS+Sk;P$@YYT|VG`cF zhyTeQe)z+Ed3q$|ihp<k>y~`pOQt#>H=l<qTQo$4uL}K{HHhZndP22l-%#x!=zpPR zXx9|}c@w*h{a66?<=irH!{d6up|p*l!!3e(p7$DjFIJYMDnvXAcL!;<ZmC~+m)*Xa z7Z066y4b+|jA6eM@GrqBJ-iW?7)eNmN|n|-U_N(}4WCcVJqO!g>}gJ-T_W|u++8i1 zDLe1oeIcYTaH1#g-A{Wt@^T^lTy6&Wy`v~C+IrGkwAQ6dNT=!KohYh))T<s(s@jJs z2zRLc)UxS;ydBTYy%@^7@HJAW`Q$a(^xDC@(k4Iu0s1?#op+N>{*LUSo$!22boo2x z%e&wm&*zA*Sl$KCc|Pv3$=@*v&Wlf+RbG_^RMUNV=RI`<CCTo%3vB9=O-Ys3@lxfK z0NelJyK6Ws)Zr|A^DLLvaA8f}dC3q6BalshYL!cC@|QfA)|q#6TVkv_PE>ksK2dYU z7!x(YpZ45m9=@kuL*+%fUQb`VNM@47%RQkw^~<pSPc#E$Jg)uIPC>l$?28hfciz)@ z<{yr>SKdXd2&ubk_Qm5BdH)C|#li^E?j&?^s{t~z+)iC^1(Y16ICNp^1tjyJzW)eP z^R|`i?((ifrD)#2^@QaCE;mm-Uv>9K-=wZwDEqAFXSo0L?HS+6(4(=@Hp+CptR%(3 z`l|J-l21-ED{_JHK_~YhNSx5vJKrHhx^L&y-6$&BFP`zY=%o1LM-j}*@rG+9TE9*g zMNnvkisdaYyWNKUO0Bd@UG+KaguBH|*VLt731<l}I_UKBhWpMWw0+ZW?&!hQLL}8b z^<=xMUvYotTu10(Jk@ToommMrDm#ZH6)xX;oszJ)-bdfIu6ve$wV%7k!5Dn%_Z?E5 z`mh|QQ`5huzRiH*HZ`w2`%(&o@jgnTCcMbMg}eP+zl5Bk5j9AKPQz4FFC_1he3Xef z(W@^0lt^mGJ6yVV?#mt@pyp=pEr!!?{JnFdHl1@tcPgK>Q<#d%9j|-$kP}=#Q728L zPWHYd0e;PS1h@o;T9J2Y=Md67%jv&A#P`4_GS<Xgujg)N${MHP64gFvy|g`yt~R$r zc08T-BUtIQt8@RWocHdv--ExBpFsYQ+lfTy{V0j2o*l6~tqu<OUepjRtr4`kF5TEk zI(n~Bv?BJVzM(0(Km9{-sT5B)+BNli>G|(AB8_cmhl8$_iiMsW6^tEJ$ML82J1&uY zX5(2nV(OSygb4~pI-qrRPo>v-@k=teunxp7knrJiFK`wj7hGrV1#AQ5pAF_-z&7w{ z&w++q?jld!%h3=~Ebra@eHs1d+&?SxFX4HgKRSPxSFT&~ryleiqITYM=uh_2Q@IxP z4bgC>9;<q=>W8S5%X-JB?rTC==f!Un<KZcdxv52lJi24;DUQPfeU+$#VdCMcIQ>>b zv3Kb{JUYa=2YhCcy1QD>enar%hPliejJ35?eK1Y;Vmb*6cdZvM6AX{vgikGrnbXf+ z%E2>ss!1yXa=3r{*Ge7w0J|Y*sI(MZofdCjjT@0Lz+U{qa(Vf{p&*(inzzl6w#M6b z+1tte3jEj>6pd)w{mjqEeQ5>0j6H;#_MEKsQ~yot1VL%jUrtaPb<yjelw_*oi}tVR z7E5MforZNx3iqQ_&mxyAC_K9}PF2u#7Ext#b8gf5lVD<b=YQ?(GI(1poS$9XAu-jv z5r1)qT&WAiNQqlRQWuKt(&7%qQWuKiWO0WIsh)vvr(qrHq%Qo5plA|%{nm|`8K>0o z45GQG;XD6L)i=|okfdB!wI^*f|1Q!s^<ewDpZR}Mu!2q9%*xbx=>i!Jw55y!ESSY^ z6?27S^eyRb(g882mfk2IuP>(ELit+HZDCWcO4qs5%KLB3)NdgylNW?#&I%L$;YrV8 zENz=u8!cTR%}4}ky&%Fog2jTC;PpJh!D(Y)N3X$n{!9CZ-VjVSOhIY)(7gVYV}l{; zUr5$RTo6@hUBxANPiuqATP?<%$GM?1<?JJ8<yxoyeSPY0-ibN(g8WNEx-NdP!pr!& zF5XmO7tgDQO&vNU@4N)Yw3p1%N&m=&V3Vru;hv1L=TqOQ`f*jx$}Oodi}c#1V)C7T zUWLuL`Pb<n$4j03RS&dF9WMV2KVVPlxC$v<`9JJiWY;KlUWG+O25U(LSxA&Ui*sd# zuW+{0@YnonDxAelv|T(r;?nMm=T&G$=J2npaKV2si&}y^5lrlTzORSx^E%$V3VnT_ z*ZbyG80`DJE;z5kDBpM7$D8E)KKFgM_&!CIb|Q&Icsr3sB7VHH{I}9s@GbX!PB`vr zi97f83bNVeA+47u@z%-<h)B=NJFiPPx<s4XglT-a7eLG<6^={H#Vacu^f12cL<8*$ zBQJ;8>A&6)hVpua%>=eiZ7-Rq0d{Hv4(ZITQ$vzqgmkrVT7uk(fA8qQ({uC{2LXe_ z&mQzVWZ}V1JDVhDyqNiCUMK$^I!hw(f0Jj_YlU!i<!?87#N0cww^P+O!}kv`SiO6A z!iNXt-V*+-47umWJ9kQ^ygZP1$y_IL?8%W_8d9T^@7(JJNOEjxrW7G_t<)?${69yl zFvI0ao7rzAf*<o2C)rioUO!c#d3x8|m#(^CU-gI8+_*Z9(daQ0dfxB~P1>b)txy5y zfC_cmVThR||7OTqA%E`*Rru{%p%}j$tCSuq1(5$y;U92`$jBg^U*fbQ6e9UNq<oOV z4eh-1&VyC=_gC4(qHb96L{jw9!cSZ;MQ=dj&n#Jli(N?VUOoOl)2}2F$sTXkL#oI| zvi94`V-G=Lq;kRqm0U`};T#^*@QdoR4!;JfifV!SNPCefJlf=PLeDE&+8V+GdFlGj zseg5ri%3qjj&d^LVHY^g=;s6xaW$33%`q~Z!yIgL3<u-7omSZE#__P$i><8n*hyO2 zgLmBP+KC6XI)4^Vt_|Y1^<tAczn$k$sq_2d;AFBiBLlR(H1_;Ogkf4EXN#9QMXUZR zQ^#4ok4<~5A^iABi@{y#yQ_$MwePMY?lr!<iMZGL?pESn=es+Jd%f@OLAqYEO4uep ztS@0$fwUhCqZMQNrJD(te7)>Fy?l-m|E{QilKA)G7di)dGON$>`rQ2Ep0E8a^5%m7 zW)W}1d&Kv80~lRDzLbWX)|gqR^RT0{?kM<Q5@)0NZ<e$<RJ%6=&AP)%U=L)3JB0(K z9&A1LjGlU0PB`pX3sr)aDiMt5-S2Uz`4Z?c!=F4qb-eVTM8ja2hbQW-5<ZWi$zaky zeSWv(eaFjQoTWaa-L@GYjAj1c#NfXn<|mSZFvR(5dErsN#ZOI0U@nowgEw-7s!G_2 z$#%pguYI;S3AR|L)6!0`#ouQRWKzbSI+3@YwRAhB+Ac2nW9ywhf7~W$k#n!y>lAnH z_4i=0D(7BV@u25;Rw&*1I@$EHg>pf%6vH4HQeN9fM~g7XEBDUN2cpj+w}~^#B;&7H z;=U|du5fd&Tt&Q^C0NvUr>p#_($}1~^v@!2MP-|JoF*!*H_R{6242nk;`T1Tx+JH# z)afz1BJB{=Jk28QAzo<!ynefI!YypI5}!R-Z5~N2b%#`h$8lM%o<1$(a{gH!^py+V zW1AwvX-Ss~;1G($$4Xm5$*aV{TtYBd*b08$c^?xu%2wmah8aVcI!53^r)#Q5)k`Fn zonBUIPr|ywOqALR?DI1_P4Bg*$3(+f4QD)33_mk|5d&r#NMLDKXJDP-vZR&g4I*Ef zobROQj7Je<vi+d_@#16`kHf599HA%iGyBN)fY6YySG-IjVet{66U0p)t#~+&yw57V ziZOH~4rVCcmq+At6|Ptsl0S(X`;nuYK|UnUQqB^w5pav9E}$cE#4S3+*iU0T0UfCy zNypQA#YCzajuVtg;)N9%kyvfRaRORWE~FhL<qbYVaL9Y1BVWmr)N5J3!KXitfQH18 zvP;=w+irYJ90`{=QujhH_>9C6q$S}24S5EiDL8_(g1ADfau9*%+;AMpi^P%o!*)xx z<STLIvzu=~N79n7_@zC{@|902UkMXB!B_Guv?L$$S;04;BXJ}xX$yHu8_4Hwz5yM1 zO8F(O)b+J|<#Ud25J%oiTa@7|v?M+GJj^#pOY$pak-8CDLHoagJD?*^p(Amn?WgmV z&(nMZI)W>1$&1kI!dE`0_y%+&j-(@XBYEn~S3Vp026QCP@|C_Jbu^l<e2(%B=tw?- zyhy$zzI=A_4d}>I>Q3U-<$D!h`TWB-HcsF!OL%LEz-K>S377l|zR;1nlRO1||0CQ1 zuB0#Jl5$J^37&j@<{QwFI6^CkdoynN{J}S%Bku)Q(v!5V<}064L<r~vai!c+kNx-x z&6~q<f_M@pbu6@M@|AX}9*!ev$X95{SL%5z-^zS1=QDoDxN#GQCDp1uW%97v!$(h> zIAKC^?dztFORhDnN~1beRd(;|)oD~UNF%#=^&4GYyoPm}W>2rzknxkeoYkvWKO8eI z-C+~QkDoZ9c8?*GDOK_~icqgEWsuJlK^;9|WKzZ9Ns}gyo{%ynDS61SQAragNXW2> zlar_T@kWgwk`k_tjN}?M3^I6$bR!Yt;sy2Fi>#zb?wVXKy?RZ;1)h>^{_59le0lW} ziI}tf<jE5!CsF*AiIb&%rlbr>NlqFudE)q_ic@NccXEn^dm&SXO&*dmY!r7~wDY@4 z(&!13rlurKqQ=K3rzB6F(ky3E(uCooK^`tHs&G=+IW2jZ?@FFDWpeVkq>3YnfP2W$ zDZYEexFI8P3f`3D<l(++{OAeE(}oaRg2xZJCF&WQd~01l7+1ZBt9~Tvq#;wn<c3b1 zJUn@_p9(aFjT$}W=CE({gyG54Mh{6DEgeB}G-2fEY01(l#GQOg%H$!w+pCumqsJvD zm8&?VT;}7#?=UoMgP?n69<TF+l;n}rqztmUb-W&$X+MdJSJxXHIXhF!;p`4isuC_^ z)n-ZLl2#l^Ii}>S*myV%<E1fSc#>4vR1alJ(v*owBZf?_5sr~GaZ<|Y@uP2(_6_4k zUX7q;Bz)M^6d4&gyH89>N}e!r>c~+^-dIYWk~A)PL`u>Kde8VFqbCFjN=?!~a&}7> z79MHgWRj+jP8lUx4rooHef)PI^YMndpD&><u4n-x*x`|!9$E6+zvA$Lv}jWGn*3I& zII=43NhQSuc<IE)OG?TSbdIDdq&Iv-Rh9EPZ)_x!*Vv&^ONEEdlp)h3cmB(iiHsUv z^%^oQf)IpV=d})WM^sI!={;0VSXIhssWKrkY1EJ@$<5Mb9a_RIl$U)<5Qm<jNHGOa za>%?-`|H|V+pE1wo-i#b#-DUGwds{VH?v(%W{@1%f&1XQ5+Z&H4TXIfV;5yM%>|7- zKtSPA&s<>S@-XtK0zBO?Zb4?s;y?ipGN)2Jk{2Jd05f$_C>SV)Ji56kPfo53F?{7W z7IH>>fvd18!kk-}@IpWkw@Ae0hlHRlapFNjOOfXiDhXF&%-h5mUk>V4ARadeDGh!x z@>wK|QG~Ljj~kB}?<=QDQUfK)LkUuF!l_8f9j`<c_^kj<feH~<0=@*msPd#=mb442 z(q0aPf)k+=n^u00_7$|x6|{K(6~Qb|EtG&x!Eov>l8RvF1tipmD6Jr#gw#|u$bWI@ z)g}kV`$l8>E+1b~O#epmUxc+u4xYLA`fX58)$?K|(Jo0yPPqy9TcikY{MIM}UJ?39 zDQdqu^-|ZvNTlS&aTgE!q$lMJ*IpG|WmOfxP}-ct5vWIBO+wlVdWY1V)U%9-=$P<p z%kPizZ_3biHEE*)<f6LQl71P>kZ&J+zr0Ofda19<)Nxf>vY7X_w3j;*&YNF~084tS zyfKtV!u+>2NV^nNWDE$%o0{IQp&kMVXk>gg0lx_OE<o*<_fqhCkRP+CHwGO>s8Quq z1MfH5OXY1XYA-+7(u1Pqb;3O;V|o%&)N9uyuYa{r)u@^Lgyjb0t^XUv3`V-4<pX!Y za4*QAT9L1Ov_U>qpC0IAg~(53AW9=Mm+&y7u2EOggQXu7Q;ooBMt%%m`HhFN^d1SR z%=nRKGcR@rYOfyOeB>y;z2dR6@?Arl<p;Ao)TMMeX^%pxsRx47)JrRhoxXN@Qr4X0 zsJ5!4Ix>=s_YLA-N$IXkM<ICUKN~Y*ucx&6=<_vITQ6?AbQtX-^&XEazE<SE7-`g{ zHgjIG&SUYf3a8bSwy(tcs*=|OV!3c^Y~S6^>sK{su^Qn#-bC9sqxa=zROE$Av<Zhx z`{xb&{E=hu`4FYsM%_f|b1(v{Qg5YzfJep8pHYlhm++*1^yMz98z3!HI#d2<s8_#c z<FN~Z+kskdh8CkOwbu#g;Ellw(CQF&$KqskC)01bl6FmK$lFkui~GD&ep?gT61c*H zfSc#=!dj9>KkBj~ST#L-Lz!~&Z3Og)fKe&Dm9HVJ3S(_JAZ^u=c)jpfQ$xMCQYU$+ zg@KF-nLngPN_*|)x0uhjrxN1lXFO@wS2t7d{@4~y+ZalXW56$UQ&k6$aPbGfUFbLM zD8m&VcQUG{*9R+kaeTbk-`JVU5AUgZGxo|c<_3b}OEyLg#yvRv8;c+7ZlVN6QNvB( zg5Ai0aL{7-f>gSDx#$wfi|>!6A^9EYjsB9<m5ltT4CDL8q78`0i28(MPN(-(qu*Y` zC~CwQ_PL(SV$#ylxW21Vx{yZbygJiTBcO5@JfJhYOk^&9{xxcTy7;m5gddhA{W^@Q z`m}kGxZE4nJOgfgi1=EoTN!~p$bWs+o^tr}Zfq)9yZw<mTiwpsy_Pwo9Chz=W|_f! z=t5}(x_IEbg-Z|f-pkurl%YI5NaVK`<i*Epf!l<8v=e?N(N_Mb8cIk2$!ffMkhW{e z$SXnq1-~K?<iLLhZJ4n&$1s|TdHiph8Uw`RUD~%wO@x13tL~&PRHZB>D3iz)SM%+Z zB{iuJpY~`qfVx{lA8be&reukcRZfPH{}ynsHnia|4>IfJSz%vG?Nwu(4FbO^BcV5? z82SIo!$eA%kMUnz^-)vFLsVvyG~;_*X1N#xeqGvq2^?t%+E~9{9D3F5UOwa*xHH3_ zLfNmOUsPwz6sG+b^1c55QG)y7pbt|AGXM0T^$KKzJB8jFKoaq0fiYe6r}vbm6>E@- zuJmJ()H2Iy5H{O;>;D?Y-%RAT2I>~lZwe3I7{L{8R^Iasp=P4shx>k`9-`js!Ub=j z4qGvYTupuig48bcTt^OSsHc!$$|A$&rTqotw#&w!Mb76lXLO_t#o?9JB2uu>5k4rq z++VHbAdm4dSiPXGqyD>+@A9O5qk5az?JqNRkueqlE165%P<I>X$Ai=pv_?t5(57?3 zl!Dbo`r4?#zD5-_34D>m8ZwRrjQ0)Vir<Gk9)I!We4k=}^(0(r06aK{n!xNOtDAD+ z*uras@5nbZkab5@^4vx}L+h4j-fB!+3Wp0~i$*|JOFlQN=usEHfbckhh2(uE{G$Us zw=TOPAx5ELRF4nG3utBa+|6!4efY0PcF%ZlH&jG27w~18tZ*fKg-Rypt(pD0QUiXA zJL(<}48PgoO04B-Hqz@*YPJ@Auz?5H#b5>UU`9HAA77!m(|b3PheF}p`tzc!6}m$) zfGB=<!lOKLC%tVmGk0w`&(q;_UsnRYEGd$s)aX<Xgo;1M1oU2|f0tss)aLmNJ=uqG z>QQ383HU33*j2zhB@p1>ucoPQ7_W_JJ;}2VGHx8&;cm}=HzP~Hcp(xRh2`L$VGQ*o z|98>%1thN`?bYx`hm4Sbu8eFS{E$Uz2X(O(&M^(%x5JAkC7uul6CO!Xe1ohK>w8kY zhy2-9&7cp+noU*)vRW<b{l>=3+<i#B&-m#A&%OsPX5c{uJh@h4zweFbLAV5DY)2so z+d$9l#|*TaIw-3`I;5Y69|-s{F7>-nJx&c&hyUb<4+#H#iMoik#I!g%_s98!_DAr~ z>5SYPaSbLXU(-%o=_3O2eq08OAV)8IZysd)^djwi>M-2kTE_7sg!|g4AZGmYfjEjA z;GlEBTd7{8oka^Yo%hp$4S?~!@%Zt+bCh@`GtegZRvYH)HO$0*jHrwfV7!4%weJ=Q z$A?q&n(fF<)98KIsZ}b6_9fsPI*1|9IpNqHnJ4^k|Jf1#`7p9mVR~R*X45$y#A0UW zz6M%ffUzIBr58|&wvcs`QA@p4{JF*-OHr+f#280?=VLBvpuUBB6jE!!9HAZ{Bp<y$ zHqBt3HQo&D|3>HHA!-|SpGs{nMvCl4{nv|()mSQ7yMI>a)h;-DRiwB(=*7Efi`{WK zh{es=tAD1qb!JTe3>P27Jk(wFjp1&wxCUOk+@mZ{amnxZ@QQb6`@3m_YnVO$28Kq` ze;e5*N<;KJ@%*$ly>9|>L<dlrx+?__m;pzSRp@Mwhxyp)*WZcMvR}`?Gwbf4)(S8W zy#ORoo2g!!BauV}WKIocJwsUqO!(bM$~_<1X8?7UOC3-@c~B-M&(Yjx?%Jt-rPuE! z{Um-zQ3o@CHkne8H^zG}Pan2`aU(o<llqMLr+0Yvek<}mh?mv#A8KCoUblhS1zF*H zFav!_RyeWYSL%L@slLosMVSLe1M*g$bK@irnTzC&=vYL8ndQw+Zz`*&zyYc-?mN;V z#Q>jrF|YL;e3GN|a1EvQ!xHrwX0HA0-H#*x0nbRHFC_96SjU=RofkVAnnXYGb$p3> z3|zB5x%!3@l-8y7{VIUiRHM4h*wB)Ck2(h5DT+-*QF3snm#=rJ%dMnXD#C-Ju2^hw zzoo9wf3b%9&eNJSU<?`7lMTK6rjMJMKc{Ys%%2SRco?if9;d6ue3)6>%)*N64``>Y z>PK&0Zmzpho?~FgubfV1pjRRsl9%>xO<T@m9vgxD-$Xs<&7+y6m08$6W{79teh)E^ z&P4+1jxOkCk9MmJX-4s%jl4_Jcf<1&bw{)v-$6@et{`vG_)%B=2&Ny_STAMXe3mgZ zT`i#H%fo+U2FYB19ONyace84&zlDq6#k_l?eq0>~`oqm%;x~ws{j;Ecnz8UJw|%{g z<Z>8UYH=7c!xPRE51Sb|y^z9dv2qy)2k@m&UvqPmUMVo&)8owdFnxEFMhQKG*=iSK zU>mdOLFRxvh&Ks{#>viAR_|o|uEyTyS@=k9Mz*gP%ZT%NrWCvDx?1GXVXPt=p<!I- zaS)%2WTX*<l!=V2v&^40;G7SrZaObie&;K(L>Cdn7TzP=$Nx>x31ItS3Ho=nhyHUd z?bjOK(}H^37RGB9NyDcjqaq`mQr&eaT}u~6(k{jv-6}Fyd`Ev2Xbo1zc{8B&m#VBA ztBbVYvy{ENa<v;tcXCX6N-tB(V*Eb-D;!;X0O_x}CkKp0dMg!Pvo~W#ls$?dovS^K zkpC;%p{wcfhVSpxc}-;B@wk(i)#ft}0-Vcv{?2H<hg>|4?E5~mb4}GHlK;!WAEobO z)+(rTQ-70mT}HyM^x~G6orj;Pzvq~NOY^-RnRlco_ZErE!xPz18?I~UE~=5fUDee4 z;Dp;*(|*eLa`G;5M(7XKdUYRAn2}hIepOHlMDhO$)A~!L2Z_^$8RUEV-H+;CWQpba zKlLASsLXqp2OV@Fy#QVO-L%6Lq|w}}7Ze3955Fg)uLP}@huM1qE%B53ij{=S)0c<8 z3;uF5JpW!jRrS$*bYmT8jbibWGohButd*=1b$;DkH)PaYqnU+~20o)EeB5heYEd}8 z&-I_>89*=fud1l;*VEt~RrFd$n@HOOV^VAG^?QSs=uQv%BCEv0^}4(20Y@mV*TFHm z>neJ(r@Qc1vgvz{NMIGT58|GohUpvB5$eAmynDXtt8bw$Yce1B5L*YCy9?;0@SM+B zb(PeWkmWn8R~W$|S|f<>%K|;UkRY@nbG;7(b#1*}7i8u?ODpUI>v6!xy&NfEl<u$I zRUaUGZ9@X?24;=0Y#XGX-E)R2p&x{2^#}7_brRm4!i=bZV7DkcY|%88(MftDwRcfX zh7aab7d*+_*F!I0M$Q`F-$^Q|^XMzJ?A>i+-mOayDy66CKf#;E)5jLMzC0oF41PsA z6Bx<-(*U0F3w<X6Io^1>sQS7Etti-&D33r^`AE{!;TNfD9IaPE-QmUi2w5<?f;Y@9 z0zx6`3g{Kq55YYf>dAV%9sno$*aPXsevHHPt0)9m(Pss?Zhuy9cd#}d3peq5rTmJ< zriDjE^jw0`!h7DMCi4vDmMis}%>EDPcJ%&#BKr^DF{d;JqpfaBt27SRRlF1{wbxcx z*SC42|7LnXOL(83v%6FweUf$ANobt$(vIfXcMaA8MqQ~-s9d@a+;hAdqE|=id7-x# zcN`n)^iZ1~Ut2F^##{*HY5FF5kJhQoWUnGkN7H$SoW<&zL?;{7{s!-o^Z@E*6LB9< zU+Xqu{6E#7YD*Z3>R1r^MRo9Qi%O#9mNIrfq!#z+wqgA3>JtyPGoL)oden!fBO1PS z%=JC+J<W=vqTY+N`H1SO&olD;{IAwI^;KS7jMx9Dt8n`uZ~bsTo>BMfUg`z?8vHXK za;V4}h8eUntsy!XKh|`QGY1$3pSVRrn68#-S+6%$j^58IsyZ^b!23WOdX}$kYp;EX zQi!@1F#C2udVhj(`!(ZFb|1=lD=3LGk+1yv&nQ;Zm8xf}RK0-_vx|9DR`^CWK_(FW z%zd8E-^&VqqnN&HwO&MAkr*CTCm6fifIH}S@%upOv7-J;q<t+qkhSdcY*pp-tMsBK z>Ta)wqOr1eJ*xkQ2Dcp&=xy}jF}f_Pu`xPowNVT1{+0)_))SCtl-{Fy4n6!8%KSWB zU@twixE38p5aWQVufK@+3^GCh2hcYhP><=K;Ji<=`X~tZTBmaA@<8=4M!#@5`su(W zbYtE7^e(jiFTo$5qhE{&^P1GlD8F#|N66iOq+3a~*H_bfe@B<yQukm)8cG$EA-m^h zy`Hvv5GlTv`ckhzBb3C9Adnqa^xgI3;$|ej*HxN&j9Fj;V@md){<*Bwu_Mr<bQ8+a znej759a6`29prc!3qcy+BcF*5LVkl#KTLkN>9<ICI4hXn)ndkBbk|H~oJ+$?jGyZ$ z_d{^Zr<k!E^`ZVy4?_y;a2eP}J)^%yUYkSxm(WA>VEAcK&KCIT`f_w3B*d)q@tjVk z#w)3P@Spa2x3|~XHzs9S!2~PP%${3We>c$cnZ3qRl9sIGXTVD&JxBY`3~2|s@t$uZ zdB4jF^pyIN+Wd(gC?GigZwBm`ycyQ&FVTNmBSqHH*T6seGOx{3uMtP2y(q3oPff!9 z`a$}H_2k-sZKOV%`FbN#WqD?;smKF0b<IeuD3#1yyO{r<M}k?1?0+69Y$ZHUpj}Mr zKA!N#jBqXTW@E;CSyC^<D18TQ=ps*xm@#f<AxHGB`WNQdu3DKA^!*~}KrWZ}3B7%2 zEncVYSL;K}kL&0=^d7iiW@%*>wnHyOX8#5q%0B%wvP%u~2y@w$+0<VA`f!w93J2W8 zJocrotaHOj_5wG?;jhRhH_9xc^+xL#k@E}aS?Vc`6^4E?4r459lj#1Llwxdz{t3NB zpJe^Mk2xbhxEp~f^ulOaqZT<q*uDDR2>vN}$2-U`M_7XoWEMW;?cI$5|GO9(0cOVM z0=<jgvw|K_-AvS1GtW0r&*~TSvq1XTr#y=OuVKW<`|ouZxXv=xKvVTO{h4}NKdo;A zjCvvietLT1zfIq#C(-9hm`cVmSFwsX%Us+X+}k|*>2acSxo9el`jm7puy(7$DsVJ4 zIFgn$%tz_*vhx2-`t|5Jn~*hsWDHeAnlY@$gVCB5UJ!m>?<D`{R24Iw7Tm$^Q2;@V z?4K7||87u^vvMuT%vDowQU%P_v_tILlhtFEb-7fhq5;dT51=<rWF=l-3xAQ-W7g?D z8uRXy{sF$birQYG{>MDhSc~4Xg|`Qh8WT^bEy^Sp<4AdwzEi&h*Sj4_WVR>cuVE+5 zc;DDu_>yxpWEIlFU;0gEj}>t5jq0Q>ge-87RQh={_?0o~Z_pbuN!_sG`5ev5ZScPC z>O)4(AXPUK?`8e6-l0bTU4Rj|Gs0g;H-Avtm(V|zghG4$QUu>nrqghE$#FY+MtXRR z@PBj;X0Vye%ze;8u4PSeeK^-8;Y^b}+|}Wb_A!)$T4-)Y@_&V2vHmGa@4vu2R@jUE zI~s-G!+1g5%$|?xt;mfj`cb`HcV;JG0CTtOKDXC3GGJ$x{&VPxeuRHjqX$pIwbWe0 zeD)slkKdDG(`+4<?_<NZ>cz<M+u)(E=-1i9Y)L;7s1Ye^)D_^Z&`~ID?xGhMQ^mZ8 z{PwnLVd{`?-}cdeev+Xa0Ug5{r=0moV}YeBna|J!9bzo4)a~g*eX_xd;-i5yhpGSf zsI_0wd~H{6=tqn}25%e5e{Af)Egas5r}V?Ru9-mpYoT7$Cv*W;4L6y-YA#eRM)I&P z3u^mxPO}v0^B=};Lv%y~nL`?&0ol(y7NnK^v#+_Rrt9kFN!<pn(ObF3HM!VR8j?wh zx#GfVdA{m!-A45Ja=Nx@fF}9^D~VG26;C&jeaimZ>ZXQ1t>);D(PIwNTUg26ulKNG zy&PPLlVrBA{;7u)eGfZ9XZ12>^C_$YFBiXvDS*E5bJf!HWHpjxu4nwEGK2ZhHzps! z8djcS>D<XnV>#=$Nn$ym3zL2uBkS^Sf$Y-vYtE0+ikhFo%J(1Sw)|>^sm^HJ%7{3n zqu|GUlog@?vwuw6wlX#KGSwN$xvHwA^O>3CM%Goa>HB{Fcc=GuCz>{a1FC|#()^9S zse~E98ln`^;1;;aSK)F;U9t3H-4je6Q;FH`yxxoyH%J#p5B@1Sm)JPjx!=%FsH6I8 zeO47ge>#=fBsVf(W^?~$)@B(g?a*H$X^*4tKLwBdSbc3SP#1$K*{v~cml4n3A<Jjp z*0-uO`u$dY5lw1Kb3~`;BS0^8<P!Kk%?<S0S+v(4c;`#VX*reX56aUDV>8KZ#(Zo> zZtSFALrZd-$xE-hPnR+BEfdqm8L^@vTXZE>z#lMobU*{vjyZM%>+l6YG)`u&z2V&L zWA6P9{a{no);wksbqDhrJ9)9EeSXsdnbDB2ZE&wydaN0%*Xa>vDjf9>wTd2@ajz$H z3R|h~pVi-RzANEF|9P61yUZl^8ZwWcK6IO&uN?C<TF@I=!xU#O_)dqseem=#1OLDJ z-<Z;TsIS-0AU|w{i`3Oa(LF!KKGGuOCxHMb>*rAO1$lQ&3;i-X;ZN%~SOfk9UJu>l zGO*d_GasoR^jFBwjnMn#(s_X|vn>0_3^co&5A_GEfgV>A%+u^9V8g?Ts!Ns>(wF3f zo~MVKm5jT(=0$XRA>9lej>IY$lh*w)^qQb=XcB%`P){{qtF~&QsiwP{q3nNEMHhq) z#e?)|1^z^2WU<qHfpx;8rl4M=tC5FJx~D$INNPqsNX+jE_c3OuclEn5xe4eP!guMJ z$c*cmxqBnS4@RC6h{m{->ml<yy0dohjr~wbF}2vu9udaB6>UH)ejO9<7whBO%@MSx z!&$>zOG!pEmt3t+$E80+g`g5*T*T7y-61vHEY_ot{StL+ox`-(f3q*L6**cUpSnQ@ zkP+8^^R3>b%jo0m=`2P1!<NYm&1UslQVVn^#{s?JrlUTh8k#+NwtiQoGLn8^_7C1( z`guUNH9xAIx;Z^?BP;LD>Ra<IyvzT+H2%-X*!|RY-5S|>KdZpSXm2Nh@9#uh8viIO z0MXUAVfJzK99F;&nlk^7{4X%6?BM-`&MY@`@SW`8HuoUV-CimOlg(RbhYykR^Jroo zfd?+s19b~DO4u+&YB_5v4;hW@bQ`+|SC~P}omVo3rXffFc*!#OTCSyL1N&En&1rU# zj`B}!J(;`zK$BI3It(D{&ggo?R5xo`y9_V`Og&oQ7G2gfM;nnR20x&a+4D~G4_c!; z^f<K(zV)w~p-a=(=NakqmjiQ1{S9*?)<6Fu0pu`unZjtos+suJyKA09zx!M!6rVEx zsyC4PXPCOI1B+94$-qNe<mc?6xEDj2{`9?aW-I%k1z3TuHEU@9kb3PhOR&PEA$?Rr zhush<a6NjcFMy&tmo6LE`td%=Sy?Z}dHT&K>?3z)2Yezrh;6E=eNQjBMBbw%TWKbl zTNwXOsy67Y8t5PO6}B$3p;4_aSpz~P2lD?s_V7N^zp-1{7|B++`^3w_75vqDfIg1a zt(IOxO}0c2vXs@-di7M8f{IXb!e#mi4S~Qc_?t2hBmaJj>~chPvu9L)y%O86#`bu) z?&gJYg7V&pw&PCk-JQrS0^3Xhvl!VcmtD(FY7u>n{vWU}f|nYe%>oMY{9jDVtTp$c zHJrdG?t=V09jm%#x*4f7_n=x#%vcIh_ij^*-nQGkKtHZ(t1zn#v(12LjO<;T%qjNT zYq9FNTVKZ*xI&Aip6uNoij*Nc3U8XW`T@9J8Ai~LXx^vUHQ3|*rRpGwWQP~L+i!B1 zJ4_u`Py3mTuQJ1o?BI(07tDfUBND`xr|3ic5P2&56}$f%^hf$$WVgBS4zW-2A&Qj` zz8>`ju6(Rnt0U=dWk$NrKBo#ZdpgW}$5?^4SL@?a4RF#wx0(a0xfyT!n%V3FG{B1P zUiQ&W@EcfRq{oQ&7q>;RzH4OuRzK@e_DB7V9;+(BL2m-$W6FMU{xC$}>@*wo*Qyn( zz}n~^%A22&fIA~kv{SMN8I6~ftEer=+?lEd>yEaq`W#6@Z1C!v`jK&y6{a7)(==i9 zcQyZGEX`pIexXO3`OH2t_f(0LKx74pA3R4JAB=k2{G(qnE7*zHL!a5jF6Klt(KzT~ zefoPNE~!-sllMLtLb|Ymn#x*dt?7g9Lle`)RANP<O?NNuI!2~X$FQmkT(Qqn=ud9b z3z5I(vbH^{uOik}fb4-}R)3|vkyY9TPy+44hiGl9nwn~e>7d^RuLXQGANlvK2Vzsp z=>Ey<G%ulj8KAD!`Sf9Z9reD$G&P^<*`6lWsJ|k$m=T-%AIxFV9P3WVhON<_4)sb| z#dsf>--mp|ZtqQc8r2#9opgWlTic%0XIOt4@-l#NAhsMHAXNb>{2PSHlkj%5-3Yx^ zPcxmF!zbtoUT&A62O(u-s_#7icb-rD0%5wI`(2%A2CDbb;^jsY^RgPsIQBtKmiZ9G z&+IwMP9qzist=i=-^Oyb5Bt9YrOX^t9NPxD%|U)MUrqH^|G@uet7>|f9j{N&|5vbf zypg_AguSqD(1%ExUwCEkQ~!og<9)^djcRRgqwgo0o6&(3WewWi!<daUI{|wJa6LbF zNtn90<QorNOjR>VmoO()l5N6XV6kwFR^A-t#}&JqGhQCV%JpSdD1P`EeMX<A|IXLN z^eJY~vFNV?nXj11uZtNU)>8*Q#HTI3&h`ZJ_EFaV?E30+>fdnszKz#*Eszl_8gf7{ zH7Bs!$c@dxr+TmXTs_R3>caxG$?d^DrOKLkK>9F)bwl1C(a-6gb_?3mjk=~P#~w&P zTWolu;D@I78#UCFg<GCB309eb<{jo<Kj!O<r4?#ArI~KhgT(N|ZnVYh2DEow?C;24 z6{*FOVf-h(JqX!{csU#r<SYJJpEc75=3nzNb8tEKV*eM;e-iEITMdaNmwzfz?1+LB zigLD2d?oBF>L&dWJ-xUYqt+XrXB1~0Bp_+|+7HoyWTpkV)oftjuYx&;9%}|G@qS+V zEp10L%T~gDbGSW&UF`IG+5e$A=#Aa&K{c23-ohTjs3kgpSx8BKc{`yc3Ti*u3+sfu zkWZDfg-x=ZY1+cME7~uaizWU}Pm3tGIs~=#JaVS*4qU!JH@FWXd-TwUbYJ@nyGZ^S z#ON7{-Dqf1^llG?g6|6amF=yZV0aBJLTPpq2eNvUmA&kp2fOGajeubKq4Mj8$!{(@ zQvYkln5wEbGsqpLjDFL+X$G?cJyj>0so^{arARgcflr==>^a?C4`lCa13K7}W)btl zLfaG$-qhrSqX%)XGMU2!(@?LlmCQHxMy#;98ctxN(adAc>a#jlf_{k|o|j0Ex@E^M zfR|J)yTt6%Av?*8uqD(<bC49rsWzq!{HAgw^&l4+pY?1p_6|ndC$WUMo|Vs+x{p3) zHUakmvGL=5!JD4uA^nQo&wf`^mER6!?YSP1I(*Yy9V3N4Vgv+B-utrEBW6ANn>uE^ z`Auy!x0;`IWh0Vz8BT$u=}oK*H^t>3NHg|1-+qq_{-A!4{mY%Er+Jrs><&OEChgex zvF^w9<N9IKntiScW(V?XPj-<?+L5-9o?uFQbsde}&a^YJ8r7}Lc>+VxKHSR8wZV*F z?NXfe!(lj23Fb4yu0j+)E7xOolpdjG*v?3B)|BNeM|<`^%Bvigk$<7t-*z&e=`{1F zo`>|GZ0|;+^E|q<L!SL#R;fnA8`<`ztC~sP`|G!CJDp1XUCmD7L^J3za?goYbB%7t z-tALZaWrFvyo}wCA8Z?S#N-T@;1Bq7G`;k$VYY#-iPq_A?A}MCIj+ZCK3;b~u3vk} zwij9xN&h8!%MolaPMPn~!L89{?FO^Kl=adVJGdyIA&T*dyT9#f|JD8NG*<DI7=4ej z7MoyZBH8dw7dJEiaB~LPsUiA~XH1HI+WzFtx;GdB6Pe93!}P<t*iX$5*k0AKKkGhb z0otbl$O2-4Q1!CP|BzYA4niJ!@k-Ofeqxeo!CcJ4Ie@HF-4iZZ4ztnbwI%I3W6@ZQ zL?@7!)sNg;BbIVm;|FhUv5%NurkmD!v3;0PbiMA#x@EX|Jq$s-te;P@|Fzu|VHVy2 z$7t?+%pBU?cDJ9P+q^p50&+Gq9-{Qd+imFWuf^s?q5r9jBtJzj)<eOpuQ$^JYF=U- zO}3Be&)`Rm^#XGvQtCDEf$nCwmvXzy=mBq;SF!ea)%0Tx@VxnuS$M5p%Nowl;dDJ6 zUv|2vA@&JVz&2sW;ce_c2Qbr}LkoQ@QungscAxqRSQ-giiaUU=_E*+EX{_E7bRPQA zQ)sOd)uOnZ*S0>;OpLKW!t%qmnUC2ud79n(qvk8LK<}I3NaNKb_z&3AG5tvFVvIMp zZw)`^*xF`^{?^n-fAo<40$Jx*BjA^RhuIOqK1=x&yS#1KYYU(aYrm3k&V_oNZAcAv zX6I@Mc6dI=7=k@Ww52n5eQevB3g%&Id8F!y9xJbt$D6$*_VP&D@wm&4fV^LBwws&n zwdnAl)t_s}K4cEqq3l4`MW;VI)3lSoldlg+roSCcdo?xxF=oq{7qR9L8Fn<|Ss;j) z^>eo|b^$fI$!@mGOkec>rEDpCEh(%}qax`DzQ3jp^pfIRYUk@Y<~Q?)((s-}Xc70@ zyx5Umt^OqCyRm7@I^E#S=U_Zxo=~@=L9K)J<_IhMz6D6{6uY_k;&Kq+#6E}EtLzAD zE{>XK%@OkkCCR7T+QZ<L&$RwxamD?RU8)b8SFspqX^LUJ$_++nR0`T$=wZ^w&CGwm zjHKmj(dKoKLCdob+efcAIk0NU;g#P1jmLa0rd}SkXY}WG4-)WCNRn;LXtW4#ntXPs z%9ly&O~zW?aMB`5Z=T&tef2X#&>6K=Z`<Om2}Of9#Xgh?eiScoEwolYfaPpiz0wY} z>|SAWBNpT#cBX<j**&+|5qd2a(bsW;XbiSUx9IUUhv|VPJ1To;hrir9W*l0udb$9+ z=5MnT!&xMAkbJxnQ_8F<oHOUq+>C|)-Gt@sDfr*@%)l*8p3A~E^!snnUOi}X(|=2o z_IOoJpEtQoDy4rfT@OgKoJ_X@k{|y}z`gb`mXo(~qTvkuB?q$P^Nhwq-X31R%c#M% zW{D|g|3U6si3Qh<>OSlltHX1B>xvXgQ8HU9UzqK>xT%P(*j;9&eNBHy4j!<p&FUDe zXUr8INUnWX^!H=iSJ$wO%`ezsa2Al&_6Mr3IcYu(<6oVw4$`;8$94cV7u*A8Rv7N! zvX8OSKWb{Qa!wzUn;~`X46Tv|&nc+~I{WoRrw01VZng{S83FEJ@qRPXi49qAA7KBW zDRxhbv7-15dyZVJPWqVX;P1*L53#u7{?wjh)~cxvv5vk84NQ4e)$t*H%*_42n38t9 zJ<2HBqt-abXu*5Dm5Z!aDqKeTN9|<u89eMTHdJkp06s&C5a^@JIhm&z8+zPqvrp+~ z?GL(*Dqwq<XR$iF9V^xo?8%?VP}i}Tf%_}_k-6FYh4h@nO7O6L-OMxp)9vjd+v>9L z8#-roecM|fu(xq)<rSyCEucQoi_9W(R~&w9KZ?G&OMhn{X9xK)Q<Qzw1B|?WYN+jp z?rMUX9>c$6H5cSK_W7o{${DUFvg1|T9K~+z3*8YdbP+q!w}XzU|NF2kiNy@uXRO0a zw#)ve-!s#g|GVqI>@M>@d&wWDMz&E*9s&$_MoeD5F=vdnL*ZW?&``87ShHAxc3$th z^e*aoyTR_(pK=OsA9{cmtlM7KZ$m$)6{uvd0HP`Tu1evMGVFZ+VskNnZ?W6ixjAKu zqsLx{HH_%0We*@dW=8)_&PMdrE7`C6L_KJ&DX0oNh3R>%ZFy`9GRA*C9nB8TEVCTF zOIzk{(TacWv{vWrE6yuU4LdiCuVd;fmf|bU_v$bs6}ww)&3T>bEYvBsviZqNqp7VJ z#;cqKzR)UW|D>%CWBK-sVFtjG?Ia*?PSTpOsb%i|7ydC&jnv2Jb;W>D%m|yj`kkrs zMn+)E3~dllv(Ce;Jg#Nk(Ttqjh7QlQ4NNJs4qfaz^df)7<$a!&o{dgD66!dgn#y)M zyIuESHFsXGV-4CcTyNW`*;rX2NHg|%%H}rf%`L3@kDDaMO*1FSH20|Ak3O)RN9lYd zHEty}0r*tPIE!@&Ti2Xm-mJvjb1ND=Uxz1W3mSUm_J3njjk-@EeVtV^%`c{<8Dm@P zzN{u62&ea;dQkmm{=+BV%%PmErq`l}8O2I^HS^x*`hsZ_jw|bs@3lY_*Y`(%M>&P; z9cU)&nm_Clx}dG2#u;SVFonMCX&a~nE1KXbVSb#-c8fk_wxZoTkM83dTbP+^P6XfA z1&ZF$sJ>QUD&V_(-!Eo3CC;I5);HKkkbq9;kO_JCt<X*;iZ0N5CaV0-Z#uu%qx?5= zzeyhbqy5n2ciu<y<d}tMKj*NPdo`T?-6nvbJQ<%CS-U-M`#CjCL3gsc*=|J}Gdqkg zykjIekC&nYsd|}RM(ftHpP;!sYd&Y+e4TEJ?aDgp+)t;tt>FP@ig`+yXa;N8z&1jB z_0XQ=*Q=44_uD&dcY3VI783U@Jqvp_v`}Ff5*|Ym7KH}(qN<=T+KcvXB*==aefGf% z<b8WJD_o9f?7-E;3W%?flh<@JztVPhFpJ(~mO8H8;nByUGA13P{y;Ly2t({RXA@R` z|FV-`%-o`z+7#B1=N*A)KMK;#_^jmQV*aS<_A!O@?@k@|Vz*-pAZxTCCb~|`h!=!Z zbzIg@)0{ul<7PIe&wF6cJCuCCZpV2#ydYjy&)dx(?Ah&Ste$YbKy!YlvsJYLKez2- z`oxt#a|-hr|8Kze#yH!}8Z0m;s>$|?uzor{MpSF<YqZ76q6O=xbvA*1aI>1IU&3;` zs3~e5VZSx~OyN^|L=X1bZLsyBxcyLf)}NXMjDUT1fcg(h==Hk3S$ml~z*jnFOjY|O z)+@ik|2C=X&0%(LA4jvgAckvXZ4cVqxrZ^=&?&?WT*JA-{->|Ey`c4*k==^`(ys*k z@Zad4ZJhs9Uij{#>Ie3*e#Bkd7IN334_ND^A3RwP>!P+OWtXoH;xFeshQ;G1)r1oq zFSBn^5*zwIutE64RF0$`#Lw(m)|ssn&^XPv1@tk~8%a7r*R&(-jrQ4?@@IzWhjn+* zb=j+(zs()$Z?q_5>~Qwe%G%459*r98JYX85L2IdVIRELY`bHCSLe6{431_p(|0|I? zsAVhazsxFTkLj$s?m!Rq0vf$*omH2Wd!w#%khHP&DDQsE$)5x)&lVw%S9Du||L<kc zc*!}6wyC6Zx0%f8qob-dr!ZQn&yd5Veq;|K^L>Y)Mh80!oe{df?qEMu$@*#LuLkJD zDj_=tG30qP%erXb^kxUPthrVlLlbl>JHZ>&on{g>Dt7#_G%|OOakg;l$7ALu&t`fM z`(>{pGo;uQ()WKe#|uK=an`T{`X=@}-(!I=h_)O=8+@Xc$K^kWo$=Yge!$+tOwTT4 z1Z(&L?B!2KpDTM0>&&`z96V~56u3G$%bY`4|BQ5&vxaD+H|e|Vbo9_0BW0JhZ0u?_ zJ`Zi3t#%uh^Lb4<d%d~SbTRYIzxo<;O}dohvDRa$=EEIMXEWRy_d)ZR{=$6dSkqPS zaC%}#7>|*a?^-y=bIcuS%s{W%arD8Vx-;$nWVY!C)IQgDJ16uCr<7CQOhE(YAWNRp z&D<~T$}I6qL~2H;^mexCMNT_C+&*VU>$`OUo9d)GZ<^15yR)Pbq>rtI(*^GTl)m1% zUN=Jv(3ACWBXhMHd>ObxWsc1QuXx#cOC7U=O>ykVraDWpyxDK|UlxTf&J(Qr&$4Im zu<qmDX81c->tYL$*M6n)UPd2W;B2uqbbsdq?3Z3(=6#Kww~*}uh^22(&ZYKA55&LJ zE{)J#$~t$Yv2HES@7{st{8P>myk|dg>UyWQ>T5^OjKmFS#Xm<nRoSy`#?I$3Wzd`a zYpSVs=A7zd`k3`rV5;#U9xw1sb0)Kjd)U_32c6m6f9|+RPFZqO%-cT+xk0@2&ugs@ zDNZe$&pc^*tM%l1hPhV1i9WKu?xx-)=Zi1d2Kn8-<_Y}?J054)M;OnV@n^Jff0{qB zi|&YYnm*n1{)e5B<{NA<enQG?s{hnORXO)lv_}Hz<7Vc6z$Tj%lju%lmtiNGm|IOR zECFsr4;s}H_;~();2<p!gbdQ_o$8Er2MS-9R-C>Y2Pb+Gjd&LzHoaG@4~a^wCXITG zr-UqWMw^Rzn==i*Q<QPMN9<65&gS?f%P#a^aJo6?up{}Gb=yI7FM~`ICx^b(5s2-9 zv3ZGgzv{3P;N-F8?5n!6d%|4FPWY2(0|)Zu&Wuau;Z3{195SiSXX+u-$~mQ9G%uR_ zk-(~6V%{?9IrAJX^bRun5>-|2P+je<CYQR_iskyR>?D_qtH0Ph$GV@j+<fRX)Xypd z@2X>NU_2dS{yxO-p)7mAa}nA*=(WquF+1Je<h*D;wK=%|>bz+{3(5D=@V-^{dgltP zt;(5AZYh<|&CQ;h?7AIKH+H060|@9QnR@P{>@u{p_qboO`@KPr!v=P&J`DavbCNxo zAZAw2b<QWMgFVCk#e3KvY(o;=z%JS-@JCtsje_H?{i1%~^^{XuYi9lh^x3&cqGwDs z)5l3LYdMv%HU>LAUf}=I8KOU6x3Z8^$?fm7<QA9(`g7-N5A*L!=APR~Z5=aDEpZQ- zomelH!FslcYJ)~3SosF&WcB<EZu=BE?-iWj=xT<jl5R*fx1+;lt$E23yk?KsbJ)AI zU<bIiTf_9x3*B5!E@nj^qSlB08Ju8GR`SyeNpZ5x<9vip<vH6^7kA%vR+;VCA<c-C zynn>ym!Pi^`=2Ph?0m~w<tQBVMQ5Q}tk&3P)D2EFmG{&hY{SNSAQbkPJ=kFc`>T7* z56(rqkMldPApxeU)26cNt}CeR;g)~R9Pq|KJTEzJqyE>O$DP?|z#Ag_-f6E>TiFd2 z8#_O@OZ9@dKIDhS{{GDTF^^L?Gq`o8xOstDpr$r%*)V?oP;A_&J9;*Gud@Z~hvsNt zu2Wx7u9--K`_bSUb*~+RMTX$`zdrU`HUQbDJEi}yJ&_k@x%IJq+zW*#?0LHukk}LK zgh=j19x*ET^<5J3mh+(A;0$J_-Kvl3s;sAW+uioKS8La#YrAOvqpmr&AX>v5jQke% zWu*5>&h=`%)69|8Wi*!WDr^fA=KluIz0OwM%dW=O^_csHTFOjZQ8jUVt((~2{^8{$ zJ*BAs3(|j?Q|_(MUX;WRM(&?Di9YlWeTTj!9S4eHMO_<hEho|aSAAgTqdgnX7<`xA zv(L%rRvWsE^8fAJVVbf6YOkMQ>|Br4Xj{|T`j8mOd!mWDqiKulWBWHN){i+adZXE; zpEYmj<|cP2Q5AIr;^U6hzk50A2#1t6V_CB%y3<^0)!fgn(RHC`oW<@d`g<&wpLSl- z%_&7c+b=^q#8Um<_R)o%-^^M25z_xz^_s(N!sd3UXSD+!i_Hl%_a2?wRMbP*GkHr_ zu~&0~{XhGkod*1uZOT5KG&_$~<2uf+Y{Z6b5SBdu*<Q%RU35<JaB29(ex|$GLZ-3V zZtpjh+5P;>Imu4Q7_%`_``J;s)jfp;dMR5QyN}b(H#*IoYritN(CQzKq@EWWnXG6O zbtc)HIlVBOmb(*4s4%vZ=t0qAH3;L#oz_`lGs`(UnEmp&HA1QCarG#gmn*Qm79Chh z9G2?{T+rOG!1~$;32E#u=REitG#E4JyUJ;%`k7_Ole0|g%PRk~?hE!?_{iJ(QN6_3 z#OdXM<|+NHJ!X!D@h7G0h4E!6>pbV&qw>Q+L+)Bmz;;2dS!7nY4Q=)-z<^3g=T*Jl zwo>!dP`A4K7;@ob=;7yPW4-pR^}(mG%<W*m=e*WeteyJmJf=6&dr|i_P8CJ((FoGY z?D?Ow0bARe?DXWO7S~a8r}Rbhn@we3F|+vT!=6F^eub%N=Foe$!neynVTzstKTW=@ z`fu#Eu}hGEib3TZCo!JI^6w|kA2{AOG291gn^=%M_<nTD&bPK5^1^iNP;0rb>D6k3 z)64Y0f=g_;E)7N80Zs}1lfB(`K$4q^J@!8Pp!1;f8!+xNYQQ?9oXOnWm8>7rJ!}!I zRMMOirUTS!Vv#5}<Yu3TI?fUE0q18%Gl~+NSIsIrIwa6gRW!l=Q+5<Sv!6NZ;ad&W zOsAHqpnEwjOf9>|-Q(6^X3q|@zgN0^&N_A<C({F0fqjoUXgBID<^onA7uZ$F3V$HB z8Uw)}X!AKa&4Y}%?&=_WPxaUf9A@SG!Z&beM`gG2^l5))mHUNL$bAHzO%qj)ovW>^ zC9A2^cBDJ<GUl%uF6W-z9_C5cb^b8<+>_=BJ67-FRL(9VkW~qS@N&*Ox^QSG+`cM0 zuL<s-?1emp?TT2hII4U$HR!*q?KU@8>VNHG`?vD|HiTC?w{n7CfOBr_>j&w`vsEVZ z=@j=3r1xa{^X*8&wN)<jgLzwZV^3j~o$f&_g^cbgZhrFt{C5vFZ?~!3b|PFf7cx=L zOP1WHHPkJI-DD5jAM5iG$WYt4g?O=^qlSd*UhMB44VS|4dQ5yCDmh266l%%7?`T`Z z?d=SAd#gdNfFEx<chVVkB#e0kX*+QH??<^6&2u`p-D)QyfvmBo(1YetZ|Vw>nv-4T zGP=C=!N&@G<?VcTimB_i!|LsA?4}>nGn}JHh(Fk8FH!yv7<EFcxpSY>I<$?ws9p9~ z&JW~ti>d<1G)E%o`zdDiyTmPMCYx{Axhc-LJD^V3A6UcIu<vp!oxsPJ$j1_Qk{Ju` z8n*~%$ZtiL-oW01?d?ozZP{gL(Aql1ZD;qO`cvOvy4ye4kN-oJ#Rl$5N9^EYtsXKj z!9VU{G*xTVJ@#?+tXb>)P3!HzPH`6bmhYwDFZV@uTMBdDsK5KP`wV=1yxOdfJI5J0 z|7Ox(($gE|EMs5d9;Yk(XSKHaSMxL0tW}Nt@9y8OKzfXLe?Dgyrx*IzY5EPf0GgF& z*$eV@G*LZGJVw0lUiWi*USD*FabmW*y9&+MGoB{<T7A;ZtiQ)&V<Y4YWPdoPUe3<{ z4Q3nmPk)<*W|T7!8@zTNq{oQ&--P|jeA5H1?Re*Dy9qn=LY#-=HY<0fCxuqZglEK3 z=<XD7u0rnr$y!c=wNqWp6Ha9<uo{SsnYsHW=AUZrD!o^YFfE;_wyb-#*62`HngveL zaQmk}1rkeXu;bY8%xQfiHl+Em#ed#%pS+fT33%5I<U~?zT;_{(e(o7?OLB8fcWSJ^ z+lHE-<diezT{&x>!{%UCj>m6ne29iV<`%VSo;7fDEC;G^o7vCK?`Q<Y{=5zL*wL7= zuG~gILgu^oVRKa8EOY);A<n{%!VdofELdJ(M?&6DyTl0i0QvJ1cRlup>(M$@L+*OR zoZ&{XD*8t-<sN~}R_w4%27RKRpOH?otz`<Eoz5QhO(-9nJBOX^H1@!caSiJeR*Rlh zj2{yHEofhGKXX3f{(+pjx0~SHW^Z%9)yqQ5LIaiPkOU6f7XW!i@uIFNPF2gTIp#In z$r<dt;ij<mFBK{ks)<Y&jdiuHmBl!m<{Y<$obK%WonyBune&gui8(_}=LDyZAJ6Zj zG{uGV?|$k0<BT$g)VJJwQH5K;KEVQCP7ZDH=HBeiP6&lNoYLkU_pE-&9)$P(z&h$h zLf7iw&D*3O)wIW^`<MMIQWwYE2c0qYQQg&<q{}+*JN3*l=8-bArohV?=KpBO%Z|7| zahEyWLbtnPReAfhEdd|TLHW;O$90=2WNuG~Kb5@2!c^5WRF<8~4Qdz?b7{{G@Gjez z8^mg`hx{1(0TR1=B)74+zI#CEkXf#OR>w^f_qg4lTVnxy(2+Y}XPJR|l!>>Y7M%E# z*#knQ;oSwyHKBLWg)|A};}#9WeF_P>UTD4};HMMo3UVP~f4Sq$Vf70m?mBdDSL==3 zJz&sBq;Q@jYWp5wq<`)(f4eQs7tSbsQB5=R)l7G_wIR8^rmJ`MH5@;i@^^Rg+i7Z` z`UpN=kaH+?+$%|6T3{i2z!!}``cz~6@3@CKyZWztEHp*!3LSQG*emtlz*?uJTI<|k zZwROT4Rd@OAQo5L``lt?sk;vQ`QGf@q=w`qqJ$SPYmlU7so%WZNQi$PFFpQ0ZV@-+ zUTMZ+%Q8Q-LgjR35I2vL$C<~OzPb973@OG_c+cH!+hcumIF!Ok_$}-`{){cS+;sSX zbK03~Pr4_w7`Z;3U2bnqFmBOnY*W?{xzL6^VP1Cx`eGUTy7PncMHu4K4SerA8+6Ed z&D^i~4@2{??cogZN*tn8Ay@P@Z#n`w$%XHFGu)%D^5R_)S^>w~ZoYNCQcv26oMW0D z<{Qi0Gn|W?YTxl{;2k4SQ~6H`>!Ia$S?I8?$QkTGx{l57bk}l%Uh*~oo1QsH@DBXI z2NkYK@3oixS=dMA2{koeV;8kNbfa_5S<9KVJ>dw2&11G8x`2YFi|a!{bDX;Yf|C2s zqM-x&I$Ktk3w2b=+-R%WwvpcIINN}7><pAM;_`tzyCUvw&U)t-y91l2xhk1;#2J;F zGvq-E?}obBZuTegUCGG^+>Gy>fd@Uqy1kB5KwnUap(!SZdM|=6bn<9{`_z7@%fF1I zhfz+dKJN}j*WaF#D7RquzB#Uh_qu45o$ijDf9-*sk{-4?SE6%#z-i-bHKjw}n_um( zk@7c1uCHR7>SSl2^SB+zZ!GwwEE78Cr05}`WUPLFQNOr_IlJe-33TM*J8aYRtu_|? zIQ(OJ=wnXz%vZOwbMTPU(k?c+!uS)JizWiXO|rKCJMS)YFJi&>3;ULznZAy+v`@Q_ z?PGgr`Q{IY>{bB;sdJ~QQ{P=>*M?T;^4yuz!wj;6yz=klUIT%jwSdI;UGf`Pq30G? zsFt<Plh~eoqkcuxe_oC7>VG*_oH>xEjY@WW;I0_vmK<)puSIC7-s$di?{bFPAJvPt zaOi8VpYv}7W|sSp`Ns?n_xp|Psr!J{OeC~LXsaGeFIlN7x^3<4*d8A7#%Ei0LM{4p z`372a%yZ-VhWG}APPhe}Mz#m~=f>_P&fh-6$&E+RA^SJ5ZP2qKSWVq11e9(H?Kgeh zi_X{B;mp=$%`eU@c2odt+G=|Bz8igf0D>iM|0(XSp^wZ1Xdg@3mdxJM+=(Wn|7ZSZ zMqq=q)T{Ryc7_-K2DcM_`Nl%`P*+YsjHcgrwI{G1EMz9wx=vlEg<9xtGxxhbU}GBt zvG^TBU%GXiW1RddOkX*I_0w7E`z3R0=qVeVU_7tSlWI9~Q7bNOp|jHY%q~%z5<0<c zd)pnMefoLl0J}CtvFVRmY9UF+ND}^@j{F{g?^`?0Jc{hH4UJn)XJ)89>CA9mb!RvN zuZH_>Y@TD?KRa#hKWNZ@aGpb!sfqRdesWb-55Oi>z_2gd)vG^lFL4B7v5mUmq}X|S zNW$y(QOeQ_`E5S=n(FOQ{pSRG;2&iucR<BWSY$VG;%1=UqF!VNV5)Nh-R&?{*QvyF z7PRE|ZYv-zKP<rJ26yzQXKg3<7xlQ>%UzsR%=dN;mV~pg#Gi!)Xf&p1bdNFDM1c`y zTZP7;@$cu<<jmGoR__(LiR@i_6SqK3V`o7iN+C1XbFAOq!`5=1S?G+$mh@F+LyNFs zU_Um&D7lBm2f>w@NvtBGzwg>*p$hK%to?ql_o*XJ1vl0GRGkc+4Ec8leB?3!!yltE z8-MqNcI)c!@I|VRt-uXLGfXLLIfIt^LkVP-?;tGEeK7Qfxq!WRH|&n4Csee9xXq%i zN(v=;dv^oOvP<B%Nm#9B+8eQ;K4tf-i|Qx)uXD&f<W{Hc1nN2UoRH^^{SDG@9eM>h zc{S%CQ=FtwZS|R(%iim>z>ZEV=zNHE2Vud}x{aKoXix7pYp{cDYb)qC>=({crc3B& zujO8e%e}}l0j4~^a8`w`2|ew$cfNBr*q!Xn<}{;_BtPdwl<a{GPZ&-sW(TDcx^V*j z15Pbg<`(f{&Nd_n|33&Os-CVucG%o9<#fSX;9)FhA2xrv+mYJ8F#odxr9<0oz`L`i z(ZZD*uzH!zP6N&eFEk0<#wGtcI#OxsT)qLsx`QyIZVG+wEMtBw=zfTu(2JobID2!e zGs(Hbnc)gVW6HSzAEIH@Q0Ray%8t(r+bQ&syG9*wrzo+#8D#%Kri_i5xx12k*um=2 zDHFO8TZon1V|9Qv^f5IQesGn#^a;+lLO+B$v3{<qlbnayhr0*u!)m9o?ryrX7nL#1 z5~f5<o$%gKW|MQ5{=q5h{)xuDv91!T5<0|f981)pOz_iF?BU*t=IM8R9=%6{&{%WA zS%MC}morHP_m}t>nOpF3N0d7}bfbOM`3JePa_B*|+}*3&CA6~jo%YOR=~K(-Ul8ix zZZY-X{;y+kJ;%&(w(GaB$`d#dQ~!PA`hAp6&xG6TYCDD#w~JvgC)juFsxH6}1lmUW z&L@r!Q9N-;*gc_Pwi`V@1^x9hZeciSH<{hGzA5Vp#K+Ifw<z?L^DO&MAw7Wm+rDz@ znCsn1?m2S~%Z4)<^1MZDiR8(rHqmVn>WluN6uPHt+}dildxd*lLLKgO{ZOC4wmY*l zW5aqSR0*xIPohI#pnh|Eg=(;Bt&SG&I5TkU{2PlCxFyCf&LaDSb5-acv(f!YR}8&` zb>9u@96QSW-7_)uAK;{a_Hf%e@3==<HMKE4LO<zc?w4waZRd<6=S>_srw5zOv+yDL zriYJ1bNB~=PWB`6yD?PRr3|WwdzC2$elZ=KK-!+6CIdPrLx0+~37fgY=OfO~<Z-Wb z5)+O(W9d<x0aHh_#0&5TyGy9MuepJ1J#y23&MMBr9>a=VW<PAGoCcSm@K8c367g0$ z$X%#=Bz7><IS0@qL3*FyZ*~vZ1NH?hbNyc=9$Z1%@;n{djt2g$9i*0q#^|2TCw7av zCv;EfSFffHJNZ5EF~l8<JAyp^8rmP~=B^CY3w_0@-*@aop<cR|p2f;tV#+gc1(>N` z$*%Ky)^&QU`+_?{&vx%jScPQqB{qnS6MnTUJ0mGAahJF&`Esw2_bYUkxWP&&hr8JR zj}uFehW3Wi^v75}o(r|scZJqPO4;3go4R;9;pqf9jf+(^cO(SQ6g|{kZw5LyxPNeS zQcHHvFY3uod#4|F!ua`>oqXT*i4pMK(U6=8<3n%j#?An==-u@VwiLG*SHy~=r-v1s zB`Oey=l?&uPvbAAYv^uOFZ8?q%vR_8|Lck6666Nv5ndkS?au3lGD0<1adLgL9?uDi z>IpZaa{t5GACh_I14ke>zv5oYxdwqC{6wg&Eu(L-3-wrAEx|FX-Fuy(*iqKf2Q7P< zURwomGkdOc@6z2uCGC7O(|wf_6!)M<ZH6V;O_aDb5@BXIv0+W!iEb))Zak@OU@j@d z&FRCiW@>KkWA%7nqzz*+;@#EVZfJfAhK7e$I(^vp%n@p;rkJ!)8q(J=dqbq0KGu;) zI~?J*0ST+_P7KY`HCf|VG}kz{IMtlSv|jE6vHsX%Z@FatYrFNG66T_P#NMR4J3n%J z_ODn3me#r5EA+`rVk6VKtBeVK$LaUS66>40I03ddbbvL)2zPfF;>(-fH{bmi*?*^7 zlbgD}FwLB2xZUkn=R?)h5lA09qrZK^hwc+t-;}Zch2GOH)@V~qQ}u{`L_4AEC10Ob zzl8VE7+~?6_`36*U9Ee$TlFe;l{+akDfIJYwBJ5=tkc?A9qO(3*o(SY!eTVH9o&2M zX!rdDY*H@?T@&syw>b}nUbNNKIjm;~go>aM9H$PTjS%~^Sa?MV#D?%MK?yH91*y5x z&KOobW3gNR6#k!(Slc8dCM3qk&CFNF?PvO#(O7+c#4RK_LXRW0R<@<s0r*9=f@d8? zqnO<}mV61nxucyWW~0+t&v9$9mvlF0@QazRISpGcUGM!r*3LY>hU@?Tv(Ma{2wF;u zimfO@h={E>_NCNb6eWl?ksylFT4JresGZnqSEW8En%K80EgGe@lv-M9Uu*fj&dfQv zZzH$;{_#8Wc-@(K-uHQ*GiS~$ckVf7So-<!4}U(gUH#2U`Vgh5_P#n4V~5t$8{y8o zhoUQnWmv2g=zmQG%%<u$(jmPA+ESOr`?z}G-^aFkTYa0x{z3fjHdLL>E%J{z17E}$ z@GRa1H4slbit0u6Mph$hm6?#q7QC3Fyk>SIw^B!6f#c?a^n<ZRZY%fGiz!32A*j9V zzleXI*62C#^tPHBE}zhUQ%7k(E6<D^O6KQ2=1C<vT7u;utFdwoEpW$5<@7NauV9d} zU;n|<OwIK7KKQpBe50RI_uvS)qeP+K*(YjWj0%&>DxqIhC%=^Q2Rfbblt3+@Rx)?% zxzXSJp81FLwh@9~P>1!Eh|Q*dOILh1-0Z5C!mr1(+H7T<*;0FKHj-8<_vBjoXZE?9 zjbtTkGn)@L-&776z0vQlgRWxSnx^>O_(;y77SyNkcm@CUE_AN>SdUg}E2XslQZuW# zG+Ucsu&EaQ(WL1OgqH#@lt>+nw^K(NgFG)s?b)hV)<&CclxOIBrfOxS8_N2OYfn6K z(%FtnYvk)HoBHTO)kR8}r@ihos+*&6{r?I55!Rp&F&hamvq}6T;e4kVxl{u^D0*lm zwGwg<y`w%#YNNJM>qv_bo8>SwAAVNZ+M`raXJhP<%~EY`m{Cs7Vtg&7n=K?g!2a8k zu|L?-7IUX|SBjUT(F*7hdSUcarl@_*Q)(U5t2E{6f1bfl>I2LmJ)ibWe#Mhpd#rzD zEmS^Lo1zTpZ$IZBZGW!)OE>jqXl?ryo*wTumME2tW9SP~13hZ1Sq)@1`7JYF>TPyb zW}^K|S>>jANqSum*P5xP6*jtUEZ!>Nj<ZGIqQCfW_%!`3?V<WES`YQma^mnjD&JDd zNSE|W`XY>d^#QKpzy0eTNYZ~%)*4OFV(zM3Rj*}@klr&}s4Z|Ms(@$i?(|<?|JKZ- z{irrjCgGTSBF{p*%UkkPrKmO(zkmMw*ALog=<loP<|b`}dfg~woYyC)sd|5-zwxH0 zv_9+qkbb;X$y$c}{xOcdhFSxq1X>W}FrHecF{(?+05yni#W?FPv;Z1|a&L&IKd)({ z&>H+ZZLmIAU#i~Y@v$QUmSK!l3Oz9Q;Cj<fJ782+yXkEW);`|Sa-vmA;CSMjPpnS* z9K1pHZKI>o-%M7wD3x%HZK1SK&TFkR&K&+F5l_rV>gA0Z#;=xzQQ*etZPaG?Jv<yg z+k*6Y=usxD0?(t3{N^I#u9l$GQO28}8D1s3QrndE`_gafeQY(;zfHM}a~Qe1fZka- zq94%@%irO@zrjWwlw5l}oBy|%&Udd^n~c3mi2lgLIHKsiKLY<kG&NZJwV%<B&FN?D zST@UKZ(dO*Te=o0*E1R`hT*|T)IXa|appOUJpW?;Vmklf|648!8t3#;dVlSRIo^Dr zK2Y)AEVQR;g!qjl)!e9W%-9Ex7e<`PS%1S=p{_Q+RBP!UV+8ehX*}v~Wj#C2y%O4U zZu{4=V;<I+8`T2ZtJ+bkka19LE7y`r>R+HA6C1;<yEOPe@1UNT4b9r>WWAm?2fgSo zNfq=Z@?SXq73nLy@vav+gNTu6dn;mzrN7ynrAMd_<)!isJV&pr4N{s)cXjrkA4Ymt zd;Dkq_nLFfKH5LVQ}ou2k_VVA<W`0zKQIdEh4j}{F*#+G+2;YXo>E8dt>05e8)uBU z`W|zK)<WBDm-;K(UFDU3Irf-8%X&+zWy~;_E8FGXXl?(Q5~rUtkJzz-bv7v&lTJ)8 z=isDy-AIuanFaMr%6#JydNCa{va4+LBsTqq|Hq(=Qpl$}lSA^s_s7OfRl&I3tK`xe z9$m<}v~E^)qdKqo`Sp1ii&>Gnn`~ms?&&A1z1hrsihu3eqV-Q3Jcm22Md3{zBF#p! zqGFQzYZdH$QbA$U9G<5+@+qsac~;$~Pu5nU4QMsAg5Hk4$6u2pZ!ucRej>k$ys{Rv zY;s!9IxT3=TbJ}g>Lsf_o?6H2m(XuJuhAR-YKZh}>uk(>v4$tQI-A(KvvkSQw8Bb1 z^gv&%cTt*prkRV>Qc6x<Z^O_xrfbHw_`Ud-s#um9YP>Hmvpz6aD8YI)qrP%L@1cBV zI#Wl>KOT#SH8mr57(dh+W+fS8(BHNlMm!y$oRpgx(ddoh*d8;SR>sa6`}dqp#|-~; zTu;OJ1EVENUnmd96KsrS;`v?v(=O{j@xMwZdlD(XJa22fr=HV4!y5yq$oJ6yb07Xq z)r=tIaG0s0EAGoNUL+slUaysb-_P0vw6^^S?~<4#J;fOnBS-76;+<eGT6eeiV0ZlA zAoxc{PtCA?S3kB2D+SaicnWY@x+15d{Eup-%{Tcy;QkDI5l_ssTQ~Jdx{fQ)6y0N5 zYE@4qX_T@F>0UxR|99*?Eo|xhQ|(iGFG!xbW)-=phIhZ=*;!U^oc>H5V!yrXe`u4y zCK~JI<zd!dWq{dTDXvCp`=qhzLi~ep0AmQ?zbn0_KAY6M=49FL=XJ}(v$JgaBF`;l zpByIjm*yLH%qZgr^yvA4*8;!wG*WXMn#T%7`>XO+B!2gl*N4k*D7lRvEVRKx``p7A z&wOvDsiNN~|7Mi&qpBIjm6qxb;|9jfNX1(Re#LYAnp#b4k2Cqxe|f2lm8|_}eIo5N z?@61rj@AupxiV6(hxf4z*N2nRXDu2>zO+5?XDC{{^|k)cc<w>VIkck8j{mZ@D8o(m z`Eq)0Qpswi%G#&+?<yOv7b(h9^(1<*6vl7vXY&80|G}q52W73tE0@(DVeDV8wOc)| zG*|X$dvH~LJG1<{ShP_|-;L{48@-RVU0op+P-bd9wYi?vhVwh!>1pN8wSWC{oPW<N z+vG^~vigdZM;@irG;d<$FxH3SpnT+CYTprqP0g*lN<HmMjAl4T9?IHeEAje3#XtE| z%6zG*=b93yoRLSP2TC;Bf3?xRld4EH&6;LG^l27xZfe!_>SS*Uu1F27i)uw}u#}`F zDI<)5<_sy-6NDD&n!H<?XtBv}JJ{ZuTNoihOo~+9_)#CC4w0iUZc+g&&3FTS{IX$W zrF?3beH8g)izPO`shF~vi>wcok!m3&SsGzhF&}6<@dkoX7(2#N@~G@Nl!z5*zRPH- zgkzuopoHLe&^}L9eYv_+_L{l%-1;#*(F_z%@b`>@S|hxF;JTurzuiu~pVV4kgh?~D zp)IVi3OwIqEK?qtNuJvBm+CZahQ34UBeV7s;acYH-I%8p<Sa12dZNp!*PBa^m1Q%= zIEdlt4@*0>H1o;-;poAeUagfzXSo*sLtd&bH<IOQdNsWu`eA*D5fr*8U6gVG&L3in z1{kHRj&h`2R?cqpkPczgpbFAK^vQUJcLCv7yWIId;(vr|4O-|bU+P=bJMu*7fqoqK z!Si&_OHa*8n9d|pcIMH>S@~<+?O!!}C=HA@)(Yu3?j=j>>1KMy^Me;-ytsDMNJam@ z80#9IA+OLv^=ay#Mu=Vz{rGE;obNIA*mZX&KE?7Lqo`6;xn#U%#GAeK)A$#tv^oJ# zF0xy#@C12{zJ}Mm3mHezizz#6jf^|mDeY%{k~~AHiSZYU7}?N9W1aR;Vr@76dzy$} z4t4aWc<0rR%3`Ui@i)%e&AesxPw=~j#Xj;cUY28P7FY+-*Xkehp&G6PVI-%zXxX$( zDJ@5<4UJTlO~dqI|8f+qusX=8^5^P0EgZF_vGG*CYki=7fPWq$q<k0`B_FA)?ybqA z=21PKW=ch4fjLro1OLmk^|aG|m!hm7^m+**<?oK^U$;C*w3@~r=mS?*3)7-8hUgb) z?NT3iWM@6>KZyUD_E@@6*vzVSRaT?lb!W4&x=UN=sU)*0P}~w3<xxUE<uNdN%T1j9 zD(mOabGEdns<ze4=c%kW!1Omc`@QJxcaO84?n%@-qxJUh>Kv`GR@FNk<0em6mgx1Z z!FWH;2X^U+@giUJ;H>@X>0&;Wa$BdgPWTt6sh(FlC-0Wi(2}SC`a}%;m(q9Qd%O+s z^k}xc5o4fS)P3qXYlytv=&CH!*tFgAUuVFko~GI!j6a%9U8rU?zV?)nJ6m33t2*7& zQSE5gz?0U=fTe&Zyw*7FkU3VlqAte>t`!VJeXi`o^qC%v&nfs9N^JEB^TZ2BbT7RZ z_CqDlN+SXzXJpgwXtkvW>P`6-{k}3A?U!$2^upQyx&Jp9$E{eol#*3lrQNg+n;o>t zXz}xv^i(?}v6fu_HQl$OJoWTz$^!j&j650aX{9~DNLHWX%CleTjM8Ug9Q>P)=hkDj z3P$j0Y)nvNq%K-k{Ty1!MoLf3pOvxpImd||l*u@v?3?#Jf5|)0+QjQQXpOKU<XDUw z!micTbx9X*Q24j>cN<xiT>4C<4n~ihCQnz(YTrneym6i_@-Fjdl71i`3k(x!&C^Ec z{fu|itLAofv+<tMAAQK!6eyOT|7vKSoo1}G9ix{_Gyhaa$tSe-(n7sGp1<t)*OGI5 z%=3)U^C}CpKctcvL7^UQCqI|#n03rDN|+v~&xJpAMOtMXR(hd-TpP12`X9B?Psv%0 z4eEzhJ9C42(!8c#`;Tp?>#d-Cq8-vk;Ma4q5^k(PyAvPU6>e3gV@&61FVt9nx*ao) zi0j4`JUMDEe{Ocg_`|J~eNtm}if4-FF@B3Z{y%JgvS+CInS4<9%CQFiIWlG$=e4Ss zCg40QTH^ZCeR-+4=L;nS{j7>;QCf=G1pj{cte)OdR*+TK+Nv(gIMclx(;>Hveex0g zOKqQQuwN3MjdFLKO<Jkr^|@$Q{R~@h+q@m16qtuD-gVYT+GM3NMqE0j9F%{ThG>5% zhW-HMzD_y+FEO3;dw3-^yK+W--7_3**%x`<!84#_`L6yPXYZH)0epEY_IT2?`_ePC z8BJ3zn62;*o()<J>8M`VPMNjCdpQmzD?N9uH_R+n_MjWeU~9GUtv1f+gAv#l+h>l& zd`@G$xSVbjH3q6xFmlKebH8#&9<P6a78I{}?%3&vDPbtVp8}l4)3tQ%lxMJpr$^E$ z^dQZzJlBt#=zA*1Wc+rSu1!bmAlH!`WK7qB3`R$L*P-2F4JAg6HL97-rBr#2w9V5- z-o{HlSz{A=0-0=jG4JtayqV3MYMheK<KFKBJca&6s-ssodZ9(lT4KxIM)DzA1kmg8 z4Aq$id(eIeZ7_c|Z%UK2Mfeq$)0l3JR9GumF?F%J*vCuRj4{cY;Gat8+hyJ?>MUao z?f_J;r5%?`O6Sz?v=fSGIg4?8<Zc+tL-=yf=bBZuX#H(#j^4sEF!%;~zTTDQC}Cy@ zKSI5x|6LaDxNLoxX9@29%c^J0Q|NCIkEhpd@Erb<F~yGmxA`~9!5NJtv)H)*^6Xdc z=_RdCgF0Z`fZNh=tB~h{+}o^S*Sl&M86op{g5L4WREJ~KlloE(yh$^w$5Qfop6fT1 z3T%(tPu_%O=JRQuyk66qg)Ml;J5Ro*?NN{6$@wn)qQnTy+6C<SD*<Ys<8P^Hdd}mG zM@3|BkPl;7EKpxHJ8JWT<_EFw-}{f;qy4kz68g_n#&dt4TFd+by)_n_x1^qCn%vdu zYV8QP-^A9`G;84Ap{OxjU5Wo4EUk#V)B8U>$v%XbUuj?cYu=fUx4peR9n5o{;ds(% z8dou%?pn`zX@$N*KPQbgM%%~D;(xgY#F%G2@8j2hGWJ2bu}FF>71Ii%73MLyAjZ-b zxePqt=2@iG)*Bn!y(`TE(r%2SUP|qyU&UD{SY9Lb;CG3E<L~wqHI|_VTDUS;HsriU zvUy4?Y@IPweW^7U{lPPjS;#EJkI%B^ezcpqtf<BmW0f*O|4fgPPkB#yH<_EvLIGk^ zpH|QUZI<;KdN2OZs(>~h!CG0hxE`wCR!X5=E}N+J%gb@*LC<EjkhU04>sKhpv<KP} zEtj>zSfGu;TixCE+pKLFS5D`<F5bm@F3$*zdHji1*tnvsk>iyMMk7yxc}Dxc+<)}; zj<WLTH;o^)!e(K!Ir`C^lpe?_=+9GInXfjnGM^N@A?2~!NNa@u+vCvI&tvWNwn0Cd zuG%wYp7BH~hTaFXm6dxt{OgfcZ#?@PYwS>B(Q;=UT8;lK-A8}m8)_Ex=kePGS{mW) z?%kp8)oaRY<ox;oInfv{6|!<+EQOYs0>$$4`j$^Cr;Id4E8hgokY;-xOObLNJiF{9 z?@^z7%j@Mcu74|CCGYr1G1r;Ltzkhap8Q&MZzZKLuAGI<gX%%`H}vTCrxR!?w>8JS zV?2|Lpln7<wXixk%Ry-q{=-2}80r51;rN+jE;g#_7=gxEZd!7(T1orNIIX^qr}#J3 zMVJDmEBHe5f!@<-q+Hhrd5&tY8h?9k$cvRro=cvB!Of(C!NM-ke6u&rSZd`~A1TR3 zl9?aZ&u=jvQ+N;?fssvt;*C|<q)3arpXyh&qUt2;Ku}rzx%z?9z<NV{1uc?(!@CjA z{paz&3hjqB;%%uh%2+wcb0=tnd_mh{jxl!1%gsgRa&i^UJSWw?OFXXyHB^JGQ)n+c z8NEa{nk~?a6#Ef--ucWtrbE|yQ}Gm1K`-dx7=8J!^t0C3D5+*sE2^)U&Xmi@<+}Tz z{zh0oTYZi1rGdfqtfk(EYCq*|v;qkYdP8~xeRA1EtzTYl<t?MX;vFf)=-s7_o;Fqu zIj1&7dZc`<MPb{+R5raF%TG21b&(%So%AkJDbF$e4eM>Z0p}m@ZmpPH?Ei4|;5^`c ztlh!;tF{>{@E_9aXnj_~d&HWqPRE$YPAWGt@srgna?r(UsKlv_jrO<?8->4KzLwkT z?<fOwHVGT_^VS1R!;EP2fE1<XMc<hnXvf`NpP~5-HoE!)UUyq7E6f$V9*DW)nXOIs zrdrpu@ltQ=H*Xp99VOh;QvN)+s#L|gZ#KdA#m%84AO0MPrBAFlJSU!Rd9$pO9vJ7) z_hyWC6H}R>x3T@jlw$v}|E76|7?-UmwWj)xQQm59tk-HAt@H}oB>bZt8pNiC7@@Nv zKNEbxy`9TA7ws}P>A5`}&Bgj#czWI_$g31L{?rE=rMztHgL&FKJ7&EMdy#K3|HO(l z`f6iUuh~&AhPUTjKySvW`j5C0{~%w~*(5CKJk3h8HlXG527SJDUr$o11{GBEc>mD; z)N*K3t+m0$q^3blgO(fbBfl{`Z84{Q6ls*zL%};N@b5uM<4x~$j2im3by;}}@APP= z9aXm4cTq3KcyaBjnZ^88->&^^CYVvm660MxMtxxXt^SR1>B4XiA*`EwntNDp*oLm7 zVXPIR{TZ}TKVv0W-{CjFRcV7K3*Kn65l@6R%8%^y6RpHd%a8Fw))urmT!|hWsqz4v zxy~CU^+nP)sYp<fpux&vq~?ATcyUWiEN?x7o?C~cC-O<Wb0#J@3*H^@Zg7HUiNPk? zPC;ykd;Y{~i?jBh-a6VP^@#bYx(lOG)|8uCeZ76XZ!1rEy%({XT5J+)Y+k{V)bEsF z;|Kj4>&>8c>MZ3K{Wa}1?R)Dp`7=4*WWRkfo6^u5jZHm+hT=$1wl-=1!-%1)q~Db+ zXg_&I8n5QG*uTgj#>=gsn7<a>Z}y-QW->;uE~^}utIFr352Z75ZR3=uw(+Csvu&Ku z%<{lkL+dNg2|V?mqD?Ul$>T8w$zrRau~u1X%`zt1SC9Ch_<yNIV}lCe|AL&spJ4>G z&Q>-3w0=^Wfl*i|dg>b;GS1tqAGnhPjF<I74H^<WLvNxe)_LzgXffPK`yRP?2fu&r z88KQk;zt|N2J4X@X!^-oZ!D1e$wSOi-i`Pj@TqxI-lr#+?@N`n1$OOyD_~sa^OxY8 zW<7bJ^{U5b=*n`Vf>{{<q8GzEl<34PS#HFqKR5kw)wyRS$~%+?L4V6#F>YLh{*{!+ zQ#ZJuwFbW{-_EEl&GcqC7ewNSrqdHEOdDuj^PEAy$;oODeVKJm()C1DvotHGo{FA4 z)cWP+UBOk%EV$S0r2MX}lUt};^$qB2u1L4cdTME}Gl^JD&8Dc&P4Qp1Ab7KfNB6#g z_KM#dRnYGB2l;?}Up<6+bHMv8t_Y8i*MoR7mEWF@p3Uf)p!S}X`V(!hmX34vC?&sE z+Orl<u%6%zN*@M$?c-;H#wOvzzsA^^pmfjAdQYi{x1gE}_mK;XG3GS0q*2mnA^mP; zwaa{nrwsZil(9>qeuf{%-?^Y1X!n_7?$aZJ+v$7F2FiWUQ`q!V61-*2nclkUm+&zX za()rBSR)N*VoNuJ@*5kJ)7k{(21Z@0uP!pr@$H@J`BLp1d@;*0%VNiY7ZclaZ0<~K zO_~(+$WvaASGRd$f_Gxe|2DOtg~6=v73&qwCT1n(2e8)ug>y>nEW6bYF;?9Q<0msx z9-&N@YG@biICDKW@ebw_o)ez3c8t{|-gvuQnCEvrr-Hte!sIGeq?Qs?6Fn$KN%`$> z|J2#k#%yE9WAhg$78|v}b6@)gm2D?}uilg&T9UB~z4x5&FgmDK#d>jCqSHx{hIlS0 zn>{`B4n}3`ZEqVZ-DoGjYu`Ee-+!Y?q5NLVxf^r7aYlt`nB_yOh0#ljw!*EV>P3vc z#{S0<>2LS2iM8DsAvMN!lp|%}*t7`#L0h9-)n_Ob^ayLAUeFws(dwjGP_v+pdL*_o z43oXJdQ-b>g@3%i*AuDM57~j|RfE)FQU&!N1FeOXIIo!4n*l>I&VRS?@2WEi4+}iq zyq=)V80n)Q{sCHz|0`R{>|Z_%rG;s|feR8+-il>szE$1Ik3P1vRh{ICFv?@xgpqnB z&uKk}*-9&oe0Vjl_O7{8GL*IYG4u>$&rwqBEpVQxh}0G7wcsweUwKzOtG6`|=;^R6 zs{anlB}$BEu~8OpL>Ph=1;XBWXO387^YX#R%|gn`psqpb@;B-+j6zcz|J<`Z|J0tC z4ePb*^xNI!6-&a$Yu=@voXU523VB|i?73lH)mE`_ppApl`7EECDatNsmz{56@1EE9 z3|780+Zva(>sE^OfpJ6`8uX4fSD&kIGJMt~rJ=VWzt?q^*rzk$+J&W>9y7SNr7DSX zBb4S<ZHif0?&1C1+-h9ZE^0mSMkd_FWt@ZEsbf1m!B&3QeWmv_n`pU>?bcLJsI^gg z+p|$BVzP<F`9o(Do4Y+c$uinN`*AZ2|8v%m4+rJaUiH4}of$MUsEgFW`yQq*v%2HZ z^^b##8CA44sxK(o*n$=Z>2fEviT0CT1W&|@*vG+MsdC2MK8@)tPs0Awvz)b#1rIh_ zS}Ddz)bQ%)!@;IgA&yOJb3I0N6w9qmXTsRLSQ;HN))Qt8GgcXe%s0{gtrL2a4M#to zFnh!kXXKNYQ}vUtgY)S}wUhEb<*8?%uHv`TRXIja3`z{znT1XJF}9O)9cFPNbT+a1 zyEvxU=X}pfQ<isIYt7!~_mUy!SA7`4A;mbP9#Z#&e6D}~Qi=Q1W=lP?R1WU1x5)BT ze_cKqd`f#;9W5R79Q6EPtVe6s9Jrs(kx~0|Xr)Xs2`@i;)@l9GVrRA)FHa7dhcQ;( z%6eOx?XBYZSpQgm<v)Kv7tHdjc^2pH7Wx-bnc#Fe(pVdu4J~@uv^?n5|BN4*C0VT* zTrwzGD`Of#o#bEed+agZI~alYaYkTtyZ173FLM0ie7QFg<L;H!`*<V0i`9cxU-fr= z3hu+IX?Ib3PGdCq7wz5ab+Tr~6O+Zt9-|K4p}r3N*~$bZt39pen$z~Sh&kA5mXQb6 zvs$b<^F7|rvLvJRWpjDIH=h=)l$YMN4ry;-w550Wd9H6p>=$$5tab5@QfuHpsCwFN z{U*k)xtQg+9F|4$HbRRIJYB`e>g<0oXYvJ$$?vID&=5TeZO1;dwrESF?B3pJK|Mvu z=gH?;YO%?0nfa0|NkdCZ62@MV(BECc$P1E$k%Z9tSwd?_3Gc#_q!_3x6c6==hCs>C zSZEwH9hw2ngBC+;pbgMQC>7cP?Sqa%XQ2zwAJA3k26PMh2a=H)6UqYRgz`W|pmI<J zs3KGqdKYQ}wSn3}F;G`10qO@0f`&jNp$X6wXcn{>S_*vyeGP4bwn96g1JGgU7<3l8 z4E+V&fgV6lAyj6(KUP8?GD#`~m4eDa6`{&dHRxTa3Dgp54Yh}2q3%#ms6R9eN`^*5 z6QHTkbZ8;86j}vsfVM+>pd(N^^c!>mx(wZb?m>?rS(PLmdKJnC6^BYd<)I2tWvD7t z2WkPehT1^wp?Ih_)EDXxje{mZGoXdg3TO?q0onrXgAPGILg~<1=nv=?bPxImdJ35u z$_vU0y$<Dpia<r7Qjia-0o8))L5-jmP&=p-)EycE4THu(Q=xg#VrT{QHMAYt0quhh zLr0(!(0S-D=qdCZQg!473WBmjIiXxo9;hf(94ZYpfm%ZCpjfCsGz^*qO@*dIv!Dgg zGH4aF2HF6nLI<Ej&=KfI=mc~cx(wZc{((#b^&83#<%04<g`g5pX{ahx4XOjxgBn83 zpcYUYC>9zB4S|xOk<dJ7A+#7;18sq}LVKXY&@t#2=qz*#dI0?cJ%v0b>J5}1DhgGA zYC-Qpji4q_3#cU&1I0sqp@GmiXaY13S^#Z?wnDq01JGgU2y_fO4V{Png04dkAl*X! zfO0|wph8els5n#(@<G+0CQvh|HPjAj4|RunL&?w_XaTeoS_5r|QlVYYA?P&p8+0DJ z3f+M2L60EagM9+!g9<@Kpb}7Ns612yss}ZM8bK|f)=+z>C)6A24~>MzLX)65&|+u> zv<BJ-{Q_Np{(^2m_n-&RQ|MJM${#8Kg+mpgs!%<sB@_d7g1SNpP(Nr8Gz1z3jfBQQ zQ=u8qENB6=0$K%agtkLFpd-*P&>zrc=sI)@x&x^}sFzSqC=XN!Dh`!`d{7;z3Dgp5 z2gO1O&>(0mGy$3l&4T7Yo1iVwF6a<+1o{m+4_$@sLH|HzFpf<qJ5&TJ4TVG1pf*r@ zC<cm$`a=DoWN0ij1)2`cgEl}Lp)Jr>XdiR|`UCn4x&=Le{(<By*j^|r^eU7eDgc#$ zN<md2AJhnH0d<E4Lc^eu&}e8JGyz%+t%5c|+o65X0q8Jv3_1<{0o{R~LeC*j2#$X! zA5;`74ONETg<3+bp>|MDs2}tRG#Z)?&4Ip#HbGmUUC@uv3FtI*9eM<rSy8S~7AO}~ z1PX_0Ky{#oP;00w)Ds#4O@|gji=k!E8fXKw75Wi62K@qEg>FFqKxl9*WrgxXMW7N; zMaTy=fx1I|p@GmKXe2ZmnhGt3zJj(wJD>y5W#|@k2YL$W*|8l^PN*nU3aSXzg6cr6 zp-xZ&Gz?0HCO~tbrO+y97qkcZ5lV+HL-(M6pe(OoKS24R5>N%G8q^GG5A}xnLZ3jB zpc&9t&<1EDv;#T}orRu4=Bw}ty$%(HN<kH%8c;2$5!4Rq4h@2aLF1r#&;sZyXe+b} zIsu)9u0zkEJULKLq0&$}s4`RwY7O;-5}<z21ZWnt5c(S04jqC{Ko_9P5C%Jxf}mVb z5vT%G6{-idhq^+aK*`V~Xb!Xy+6wJ~(xC^C`5Njolofg%Dgu>*YC(;l?oa~M51I<i zfL1^op<U21=sa{CdIV+7g>w&76siWbgE~R|p+V3DXgahM+5jDZPC)0OJCK<h$261= zDi76wT0mW)-q1*B60{830PTa)p+BH|P|nv;&QLg13u*$jfd)dupsCPeXd|=_It^Wi zo<iB*K;EJ9P(!E*)D!vynhGt0wm?Uq3(y@%&x1HnI8+B}4fTYQp()TZC>2VFZa@#9 zSM#E-LRFy_P+w>mGz;1Y9e~b5k04Jz_=kK@GpIK-7Fqypg3_UTkohL|9aI%+1oeg{ zL2IBx&;>}&kFtR(LS3Oj&^%}>bRK#R<qO4jK;5CS(AUrf=s8rr0DMDzp@mR7^bb^` zAoejd1=<d&g;4fTGPDQERT$|(d!VXCa1JUWMN0@1TDKhksA6N^=!bPXuT1>MS7yNa z^gkax^L@4B&ziT!o%8K|=Z}=02~u>$ny(a`)n%CP@PrjX%RMJkm;ToHgK5LlQ-8X0 zxm){L6MS(WbS&Dd!g$}}gDbAQb)<lANU?iw-N~}cw{+(ZC96vFeK{ZGie4L>o?7R- zzxtQ$_j_t&iTH0$jG5u<lH>AcP46E`&Gz{Cum23*o*MD&NwxV=>AnKbZa4oq$6{af zqaVY+kL>Mx7_p+{s#|+~pTy^?T{>u`Z}Eeq*R$3A#P{viody58I><Mo@Y*epb~g9T z)#_EqQaR2y&8jrz_~9>o8~ZG|Q*Z93)Oq>7%{{Q;8sDkVtB;0%S;9BsleM=?hxAL` zKK0uPUE^n@wtxOx+ahzO`1)>c@Yiedved;V2CdIiWr{E6+l$wS@A=r*^^27EryiK+ z%jN0v#oZ#`rh320yJGb1Ild^*oD)k{m-LOOQ}FxqEo-I9iJiadlG-&jq)+9K{@(T} z{**e<Z?&(2ugvVWQJ<eo_EpN3GXMHd15+c8?I^Kw>)g~GCziL*d495Q^o*I^-pMuD zcX42)`<~<lzLWnvdvnC?u|CDzw&=*2)xM6Ec7BuR@JipEENb5c<5&33?zwdF^{&Hw z>kA!PUApB*so9Dgt<(SX%+$6!;u9*(p5W`~J%0P0sPR5uLnZy|9PNBn-uYzBfIWSE zbJrH`v;6sV-`vFy3w*z|oA1hzmG60`b@j2jkXe{MpvctY4Tt%(pC%OQJLS0V!Qtg^ z7ysgfuUqccF%NtHnX1kx`SG!97k$e;_vVdnIn&oDWz77F3-+ciSoYC+Eo4vXb8FI{ z*%uu1-OgPh=luc)Q+uXsNw4Oa?_2pW|IwyL*89%gx}MTw>jvK&%jA_CKkwwr-sDuH z;cfS(X1iaoMcE32eEoCGpC6yHD7EDCNpH;gcya2n*MDsCQ<)v97jp*JA6tBhZ|L5( z?^KHG?MsP2P`~A_>AtQNpB%lu`wQRPeK#!6y#M*iuI@6s@sz<C+c&-P(GDMM*y(HX zuuqnocXnoQvF$|%4Sh>np6L6bT-Uf7e@yY!ZO}3Aq-{UFGiT9{g;!dQed^lUt7kMC z<oiaB-g+x?p>M%E$?qNebf@o^!42mPZ@kM_KjPV>lfS2>-Uu7G;C98;zH?=7<X`_h z#g}qd?|HUR0iSPQ@g8OHkSh3%9d)y}8|wQeJ#lNBv#Web&tn$9_1kz~!IoDVTwYks zS6|)Zsrh$x-^pP)TPp{8`fklQ)clVXGkj;Sc3l&yH1-XhGp)(srg?mFj|&O;8s+hI z`y%Dj1K)S_X}@-v^YyP2eGL+~TW5dy)K@d&RIgv}zMnc^=yh}2;g+c<4sE;i$4}!@ zAD8&8d{*_V)Z#IJ*Z;fIY+uPC*T+T<80za<AuZ_ZSBLo?RlU1o|J)_MX(guA+_`8e zFQ>`A^HJX2J;QdU*8Q<#o~);KrndRB$4{pY_wwaaLXW&&Wwxt4TSqtf+&3j#-ZWpn zuihDQwD-@xnXiXd`g7eGU;4@M-`+ocmfIioHEH}%mb-uB`(*sn)n9hl@9SNx&7RrW zPWTRgbUJqz&#%7F<MY?expmg}-m*<Y-)er=clE|s-+a9HxUWXt2j_=gKkYlYI_c9L z*Z2Ag+TkbPjjUyxe>C%3?!R!fvwv^$^&HVnH@`XZuO^%M`bppHSuFhGOJAH=)ti3S z_u7^{Sr*+p>wEfOV(9FfCw-lgkDg6?e%3eot!_oq>;2-}JMqngQDNWvzS-9-{p7?m zzQu2T{cyehy{~7<VmUti^Nepn){d<UynC4Y&&Ja~$JedstylLc+gf%?y<5M^k}?&y z`(}TBzIpBVi>YyGf13ZhbJ_R!QNH=t`?pNZx~$*f%W-RbL-S0pUbp<t)M7*4zBx7b zI^XAy4$O&q_o#2lg!gw=XmTgD=Z0Q~+pM_8{ohR8az1B)eXY_{XPzmc%~s=mi{EMO z9sR}n)OkCnmAq$c^$i;IMda;SF}{$q6<Q1%nUeZ@#6OR>?H}ojJC<_4NzRGB@K(W- z?zTPWOIf)>+8_6u&+)g<_gUAtn+Lx*;~V$0b$oozWvL71?i?|(`ypRq`}ZmYDRWax z+-uvQN`cirU*z!yag)CDtu5c7Si$2LeSKzsS8l=CoxXBQ`c_VVa=`at(Gsao#;)-N zrB$0T;ID;ZJ@xpA8QP38_fyqTl_IV${nhvC{>ABw#{ZD&?7uW${R1a=^gA-i*L(BP z%Rk?Y^UYe-WcKTeHu3z-;Q1IY=BZBl$5WmB&fw+Ij&FYxF&CVd?@=Ew=Tx;#p~@}p zp74Ehui>NGzfbjT`E}*Tn@|3ddM{4@bmgLpzE|J+e6}7s#`n1|eb~NS`%-hgbx&RO z?f-m5OTM)!Px@*eFFCbQ&4lC?n{V*%_xc|8>Ua6n;#8kUo-uQG_y)0_s%by(SheH4 zuZ+ig{mj_^`Bo$^4a$---8XxF&AIQsKO(i--=h<M?Y1uU{HcCTJLO#<{PTPa5c5<g zzkPXnKl^yTMEa@E?Qmnr*6r!PoE?0+s#Ct}syO_tGkbn^h{GGdQ>sSZzkZK=BUO>4 zhtHqiVD(IuByl`l;q@+CTCR3UKi10i8$X`5_`bKpwIR;&Rgc?A(T5!_;_>;p)INFl z_0GHR7GF=~epdK+`kde7`Mvp_lfRqqIP*~7pd4%Kod0+Pk9UCEH~!Aqpc~H}yTpq2 zJZe%Jn-9IVGn&mMsZ5P7UAo{rFt(ax-yUVFGUfVUU-=)(rhQ*|NSFC3mwfSasy9y0 za+~{gV&QYBSmFgYM68SYBjyel=K(R#h|m3qa=q!35rOLLI%^gc(i=hrbLN9elK6Jo z^Ex$ZR0=KDtVOe0p$)qC>NlWxXhc|4Sb4;;1Af-nLH@X@BoD|Y=Lt5g$;beHMoPF9 zwnHMHGggK#_av+)UyfuMN9YW-vX>;O3Vt6*)kCsPQmTjKo~Tw237w!-4=FZYuNG2f zlu<JzD%q?V(pdS*8xjRlEu<JMV2K#jL#%2+>U1r@H*gybr9muw#L`BriAt@I+!I(j z<F%S0#YVAol8xFS(aLSF?Y|oFUp+`_j%XUs_XReu&+=M7le|`AdBq5SyWnOo^7%a+ z9Y#)nKvs{0Shd;Lqm1$T1Z^TlH!cQOZMokM*t}Xuwoyv8kle{?osdwawl^d<NVO0P z4~a_R>oMGxJv(%4YiBX)O;RUn6ZG+DWsMgcda-Nj;qebfyq2WR-2P`QOLarCB`eC| z5Imn_zK-+n?&A5W<Eus%qptAP5YA@k%voJHYXB4c;bI5&eAC%ibpvgGoscwD?UVUF zsm1bE7i!M^)nfUu_dWIr-}kj%-1oIZCd<l&Om}hpAm%HD`x=PnZH}*c%vY@!>yf>0 z>W7?@)yA3nlF&LwlCE)IQ*kECDC3%}T<WkwW(Ct%MY$Bl*SVPu!hN<4_P#?I))=oQ zYwB8=72dnfev9UIqnK}Dmr>R=;nHL8IQA@%ZBHV%|2kuP?6UE1PtA<uqCrTCqI`kv zsg=or!S?eu?(03~OQc<Wl3Ht`R%?P@+paciEtc78K@l*y#_g|U*w-iZg5`CY=2)xi z`GQ@a3TudraE@*x(y8ZEPCKH#k+q#NY0m9SWYj;@<rm5%O}Lk8!tV%f9}$cdyS~)P zs4xC=g>(GP4RQ`+dYY(-vSoh0=YD?3@Z&n?_{&zU6a2Ctc090h&B5}GkQ>ixoN}#~ z#lZG9$v7C(c&SSG&lPENd-mTz#(uEtRmN_ZYaejcg3vy}-W^gDOb7FLXJ|a9T<cEI zYmGNhvdX)Bk9@AO1)Q;*JZ|Q3>$784?0b=BLwncHwhI}B!?x)Pw=YmZ*khkG7Uu-) z`m-6k#6BnFW_}SivoduZ!}dP0%d!SL>EWCZrlu*G9(dJQe%ZEm<Nm6$eAxMQmuWG3 z15rftc@e=daA1d}Cf(xK_ZRI{`wIFZV{0nAg~=qa;eXwM<r}SXGO)M?vg;+|V!bD~ zz@r|UpX2M|TFA<t*{AU<u6-T@W4nRz=x8h;*ykk7Ye0-Q=8o-Sh#4T@)tk-&`D}t^ zW*^GWZT9sRtPLbfrWAeBF~%R;cIe1?hf~ga8P2<7mHFv_=W8t3*Hg^<LX4loGc*?L zYb53qA;yp5IT#D}H4gJd5KDLHAx3eIV#gxF8i;Wb#P^#4n4dEFop0>x9~QTBKKU(& z+t)cP?&mzQsKf1R92VJTGCzr>9ByCBuy|E)cAz5I*CfpUg6!>L1&&~!=P|zx*}N8` z62|s%<_fBUOzMfKF<HUwblJ%r!9K5J{s!k|n%P*g&(T<Xi}RuF9B!YBu~=I8>E`fr zJl*obo>w^g90`-^oTm+T?Co<N7T@E1@>qx4=P)d?{loIPZob3qa}^f52|r66Zl8;= z$l3-l`xLh05bX1evxs`g4`#m3X8pPS%?%E;&ofvY1}>B1E`?NKmDC3(mh-9NJx`eh zRq|wp;XNn-=ar9q`x){h!T(KOzTzv^=7I5tE<TfU%XR8l!1+m+J!>z){D}R>)>v4@ z`Alau<CC?kVD_Yl?C+fWJ4?Fa@}J7>#r=tJw3qX2u6(jK8q9w&7kBOvEh*H+Pjmaa zF8({`WnBC!=TR<xlk;d7XKh1RenMT_#oCK7-q>aD+?!fbD;H<&O7NtfeY_B|+uV{m zxa@Ote$GzEALUKXySeO(aK6rOYA==GT-?Wrugh{i+2x0|bz$2zz{R6EpXuUtI3Mcb z?{PlH#anQm;^J*NKWfiKE+wg>z3!1h{m5SGCj7W~FK(aB#gn+b`$!$gd0kgI58=F+ zi;v{In~RU*e7TEH;hg<OrC|o=ja_^m=Ve@cG3TvZd<ExGF8&qg9b9}P=g}^{mGeXw z-@$pBi|^xnfQujIe5i{b<9v*Z|HAo97eCASIv4+g^As2Vi}TGcev9+{F8+Y?qb~lG z^OG*F+VvIZHy8JC{?Ns<a(>grb8?=|PRCy(@^CKhd&D;dILF29g;11p=RD#6subtN zT=wNS7xzyhMn%q}T=qWBo#S3u<9>wmx-R>7IdAOZO*rr1;w?FE<>Ku)caCp=x}7*5 z;Ii+|d7_Iaa6Z(<`*A+T#RqXd*~N!(KGVfVbDrYj6F5(Eap!*7lJ>j!EN;Kt#TRhC z&c&B<zS+fB2|xZKvzNZ+yo`(gPxx_h=Qp|~rMdV{Zol8f_j7*K#ed+O-_B=zdz|xg z8N^vQ#rYK%Kgan^7r(^$Ll<|R8Q?7MI__?B`)n@$kaNq$pK+es#Wnjz+LA(D+{?N9 zy2IK>vg>JXS3YwHKQ7MNQZoBuF8(IxQ7&GH^Jo_@#(7;A597SCi$`$Y%Ec>j-p$3M zIq%@&wK-38@dlg^aPg*`4|VZYoR4ww4>_Og;+;8PZtpk$mpwUO=i+@h-|XT8IZt!( zp`1JQ-S2<2%{>{<nZ-8~x&29(pXr<*b@92JJM~?7K|2)Auej`2a(>grS-V+Qf1G;l z_hUa70Vh8R?JrZgy=Bk+_Io*Z>XDzbcDQzZcG(~2yo`&V<~+*9f9Kq(M}GfTIS+N& z-{d@-i$Ac}JyNvag}wBQ+t+p3>-O(C+_$@Uu+2S^`?z?O+dK8qpU4~BzJnjxO9eQ0 z*Z*Ri4|UnIcFF8_fxA9O+T4;lxbkT~kHUT&;Ns3RJxfY-@prkOZZ6)G^Pw)@n)Asn z-huNmF5Z>%nJ(Uo^As2F$N6R#cb+Zcy5r)>+<u*lf5y41IPJFFtbQJK*?+<9PrCR# z&d<5{63&;q_$to#yZCyWd!!V1hOn+m>;d+RVGHcDy@>3!v;cfx0RDXdek=e#6@Z@) zz%K>he+S^K9eifn^(X*mk7hEnXYJ@S<E(9cW;{m#o;Lt55P%m8z**b<%+ierz^i~~ zmu^1~<@>l8pVtat&-wvm=D&FW-ZlX56oB^(z<USa{R8k%18~+)A+!8X2*5uNz-I*D zDFOJ>0DMIN{y*?naB~>S9;hOS^U!wz?Dq%YKL+3@18~+igQa`!hLf&y9>;Rc?jI%e z>J=N-NotnRF(Ix_Y?8CktY`N`saZ^XVq9$B1_=p0`-!!t{o-Qz7j_K3{BA-Y#Q#WQ zUssEZOXwu^4~r}t6=}~R%ScUQdd2k{z}z>D?Um3cJ|?dF$FViKCBS{pfnnYI_K69@ z8(y9C?D!6gk`nuLkB<$DEFT#zbxMfs(uFOSm8#dS(~SGHb6RUaVq8L>*v2t^V&dXr z<D{Aij<1&hwk|%lM!zJ-eRvtESL}eK&fVj~A}dBzl<=2-Y_r&yKApNr4H7!V#PQ|Y z-FtOLoW4@C#JKKBQp4CjePdB*cFJOfZ5p#{*u7Wx_<r#c&r!43KHX#Dq?QSNddBvV z>LtbYiAjo;>h(&B?P@Q<IxI50Y#Ax6L5=V-;m)kAGmBueic$7wMfNGo$~oWjNRiH3 zd1q#uhnJ~fuZ43@cI<F$ElVZbPNjn5B%IIew8}c>;kK(t$6>hbzO0i-xZ}30lh1G` zEfLE}gy*rW?YE-sqoU)&j^uEAF~Y_XcADkwtd+MNmbW8C*hxj$ZX#?RVdoKh2^$e% z+myHcpk{!Scl_A)<!#IIw*T_BeR<m(>LDyqeb}dM8EIQa+Ln=aDv`Ej1>0u@$KLi( z!H!kIwy$8PUcru4!LhgFR<JFj?6^^O+$cL%lpQO|PBF@kivt6Bh_d5G*>R)nxD{=i zine`4+e1a$TSePXStnf<wX7YrtR1zi9krZoUd}czXPcL^ot3klm9wLkvy&}n$0}!g zC}+owaN;t@wzX~SWRWr3M${e#c)hZ1c@46oIF*Ih5<8V}CvI8Clvg7s^Wjb|!<}q~ zJNXQEvKa2<H{8i&xRc{>C$r&BZo?z&O$~P{P`Fc@!ktPI?$n-er{aV=wJY4IG~rI2 z3U?|}xKoG1%iCoY?$n}irvimLH7MMvJmF6540kG2xKo$HooW>B)TwZ%Duz3?D%`17 z;ru{yDpt5t%fg)s5bo4~aHmq(J0aXT;KM801y{C=1D#qH?o@+t)D@hZ*hw}qwojjg zK2q!eoR<26b?hbK)XKi;8ygqfDM{)R+vy{G2-d5!)VEuFXBc;j@01kBW?gaO!Yn39 zijR%&lsHi8i&Ji|q%Kk-JLC0D>YUIoN$S!iu3z77QkOolu~J+@udY4f6Qxf5I>vPA z*Q-5?7oYG^ESvX*v-bF4-}mbk*S%LyDZXdlq*$!>@6#P;zD{uoePfZKUNP~paNZ{_ zwwKht{eZqnNIxMFE68hS$2CrwQm2l6lBC!^U0@SCAhCTHoG#&nU$ktqk7E0DY;Q01 zk3k_|YhrtS#5^Y@#7Ui<s~h^6@#iJ%pD*_4O8me4A?NH4nepgod?2v?zAOkX{$F;U zt2(yn`2GoR&{mrN4rV^W2(L_dX~Js|UWV{SgohLEJg;=pElW7-W6J_dw;Uw$<2)a9 zIQuJC@JYm;{lzYL3gMB2uP2=S2QTcM=WC9C_Do3dpNTzdL@4+L!YdKZ`t!2D@?RMe z_7?wr!*~_Ka}v%PISTuNgj4&{gtJDF!oE7;tg)it9}pf*ct^sk5#EdN>V$tpcn!jx z=Q7Ur)+Brbv9CqA^Sr~cuT41Xhs**ipE{7p{{_P963+T7v%u`@LBjqK;q?j6hTlsp zF#C5QVedRga5&wr_QbvcvEN2`L&6*2ev}2~|2;_f??pJZXMK@bVD^n5VZVxSTK`%9 zWER}^?EYBr##j)3&J)hshzP!!H^E?j=<$A$@TSE6CgH3pgYfg1@aBXocqGOG^H1~d zCA<Z`6MkMH{C&dTCcGu#k%Y5ntHMuh!dnym9^oGl{vqM4t&H%~h48k7_a~e+-4ON@ z2>+1q>4di@d?Dc-2wzWl4B>kT??^c7qs;;<=T4Bw&vn8(6VCc>v%u_QAz`1D|Ao$Y z7s5jc?@D+$;oS(YNH{%?Y7yR@*t0(2EU<Lx`KLSKJ@B2#XJ5j55<Z0RIKoF09#1&y zZ_WZsw-+S*rx2b%IO~tj0<)**+r5M*;ydBzcfxxUewXk*gv;!LjKKW&g@m6F!l`{8 z!jp)78N&M!UWM?F2xooeSzzh*heWz92&en8JK^j<2Vp;f@PUMHA^c;)FA+Y7@JEER zCQZV>huz>HuzY?33H}=4pAydc;IqK&Y5vO*PWL04tlELu4}paLHiQo)yc6NW2=7by zaKeWYo=iCF`_F<q-PweX!1p3Q%Lu3270R19F+cSBvXF3kJvu}<wLeQZy&joaST3D> z((`#P!l``(;q-dM#s?67==F&8@fVz4kJJ!9FOJ13C!O`2gpULg<r7Lcv#-hROSpIg z&LdsCIp@_}ye;PqT)Z>qu`V9Rd7_IaaX!e!2Xj8k#Yb>H#l^>SzSPC1alX#Q=W@Q) z#g}lt*Tq+J{uAM&NICyPI4kFGxczy;YY}@rD^?I#{bcsrxIG(Vfd$4#Lt;PXCY;&t z=JthL{Cm#BT>Loa6<z#S&Re+nMb108_%+ViI1em{{NLsLBNu<d`7jsPesSWnaUxg{ zeu6nqaq%3SuX6FcoU^edgr6~35aq_kn-F{~;d=>Z<yn~fVPjITAo5d^^QSHz!MUEz zZ~qw<MY`DtXa1{j`#dgQlk>M+yaDIoF5aB;hA!Tg^Hwh2ne$FA9>;kv7f<4Rn2QhQ zd_3Xf$o9@7oNez2ZlC7j<2m0?_;}*y7~#y%G;V*!#piN<)y0=^&c^s)LF~uXoQJyj zH=LJn@ok((y7+F+tGW31oVRfC<D7SJ@n1RbM)(BeSJa<G!Y2|wh;UXu7rCGLE`E*k zFA1MS{CrI~^K+Nm|K{RPIKSfJ+9^arxZ~o%oIi8%9GrVzapH;nl9%&P7ca~?8%Ko& zVPBH-NEeUbygK2N5l@t7J;K@cR^j$d2%kdiyA%F7;qwTeO88R3rxAXT@WzDyL^!>F zI8AsHVt<8j`nw?IRTv?#@}c($>j-Dt+m>(dPQs^yi}E>4IJ57}?N7RR9OoBYJc;wa zU3@U-k6e5N=da{IVhCdYj^{j|i%;Xcn2XQloQ+{a{Vd`99T#8Cc~ckvhVynVzK!#4 zF20-dzApYf=R*kp0vQwKJc@8u&d0eu8)JtBRt_^DVZV}aX8$X<|CaEX#C{Lq%>E*` zKkDMwI6v*;cR9c0;!ikNa>6Ns*k9UdXFZFH2Xij^SqS?aoELK0=jA-i#S3#@-Nj3C z-q6J(IB(_RRXFcJIK6-CNjNLFn%sU6;j_TSei=nLvv0udSGss}&esz@oA}vIIP=q% z+wXVr&YT}}@i@-UxOfuhk6nB)=lW|%3_<Ld5u9gp@$sDJaq(%Khq?G%&MOi=2kD4% zt4}!F-X+|=BjIz2eLUgJel@or;NstKp6ue=IG^a^yE$L);@@+=-Nlb{zTd@v<(!Q@ z#eyi$i=3Zv@oSvlcJaHMKXvgZoLjkG^soKutY;&99*`*K+=S03oQ;RYg2-nu_fwhh z1^8b0sYf^~{~X-DE8!``z7OHdJ}<Zb#KjA9KE}mMaz53?BRHS$;#D|b@8UH%-|pfK zIN$H$%{f2j;%zy<<l>z<|C{iIq#W)OzKHPP+*m;n<sZlW<RyGDz8B?Rl<*~lmnEE) za}xJcm+*4Lz8T@nelWNH(8Wh^K9KN6#Lqgy>HW+$!s&g>9>VE;i}41WBCy9>{1J}5 zju#HuftAlmNR&fP!r3jU;BUD6B-*ht1|PAfeu@)L{e-#vgmORSh&}aFm2m2(y30>p z?xzm1r+(PDZY;3vrG6^sv9ZlhVNq=FcL8|WyncJS-(v}1O8mqVPOpQ%<#YV7eZul2 z{tuPjbU0(|lqB+Vlyhd!>XqofdM*I>=7$l2uy@ulE*s~fKFs7_<mKF5AKoIImfOlu zCnB@|5)%2`MmQ~>(gpqYw0`;sr}jMx`|T<3M>st$b`ide<Y!GWzaMtUiF^)Wg^0lN z{~ILu<p8|R+sxXrKZCij-$Xd|Q=x=y{*wRNCH?#?@iQs_|6c%pKLD>&%I}|UZxhbN zeou4Er1yzEJzhExPWSuvFu(tESQO=Oknr<_-zWTc!e1?o6$DoP7a-xM72y{Ne?~Yh zw;#*E2!Z*b+uJhS#xIrs--J{Db;|nfss9ax)BT%^RZ0YwF17zC08b;F9@l?zF80e6 z+bhOXCH8-SiSl_y_$9*i2qz-T&t<~Bgfrj5Pd>u05?+*Zksr~&rX;ba^#m<*?7-5c z^`rsee-i&6xco=SPW<-7p8D@jIQ9P};eWveKg~+5%RBy9erUSMgfn|l4r5(Bw-a4j z>EasaGa{V@=AWL&mJvP`-wFR0D*Nr}`Kn%ZKd1Gu5BqZkf%&IAvZjq~&Z>a$zld;p zeJR5pf+H|L%OPPOMfeKB_Y+R-j}lJpTh>No1m=GwB>e9toR-7206eJ<^WylS<+GV^ z4c`m@N?qIBPM7lhgwu4d5Pp&PsawzQho;+&@KwbAQ^HphzKL*JAC3{ehS&$y_ous- z@HYwnitv{2`t7OzC4|%bG;83ur{&N#0Dnq2^<TDO=6;e0Uq|x!^?RAy*Jg!_!0HLj z&uYSHy5ACB4spbO|B3Lg2|rEvdcw=In_~o)F7^K&;WR(dO>J}Ap56y06Hfh@&HVP% z&qTtP!bIeMF5w*rKTCKy!XFX7fpAZAtRS%MqV@T8!l|DEgtMX&`6*8LH-wibd?Vov z2yaCATEeOSbA;1!xK21NPpt)<BCzfHA0+a*hj3aB()-N%<#NbQI4y^Kgnxs0!vEWZ z)BHyg{z5qrPRn6E;ndGv!Z(q0m$YQLck)k<-y4L}a+6#6?P<9UC!Chg0>U>Vs@UF1 zt^Izs5Wbo4ZwbFjI8C?12Yx>^|04+BO8iV9oaS?I8^0f#?pnfWy1{Mz_H_S75Khba zW5Vh2vW0M(?q7t{bYE@fPnVWk8Nz8fL=jH+V=cmI{#y`E_g5FfseLcPX}a49?|>|e z{l1@Y>gUxD{oA#T*e@V_D&e!+`|T<BbntWPKR4m@xTs1vEuR#^x5K5#|EDonL15>H z4v^p{3BN}86T)eJf;z$of%&2QaR5HGlWlI>)9sx@IK5sU4#2Z@_WPmrst(~aKP6)Q z_Ou+bb@B5KSQO=OpK$6&@9MXwJU`*|y6GdF+J8X!cO>0TgnvnR9O2Z@k^p>icYi+5 z5I^?`r^oNM9)5eutM+ub7qcL!gY2wV=bY{LlaMI42891Ycvzeh&s|Tt#{2mwVvi0= zc5vGV_wsX^&)bQ9o{B}0AGx=mrx6}P_zuDw5WbV}te;>7f#qixB>cZYI88U2@HArI zg>ahgO2TQn<32-V1eWe~NTfTDa9SUp5l+t!*~c+2j-TC_3qL&wr}ljar~YRUPVE;E zPVMuLx0AK=zlWq-mGHfUPn_Vl-$!^l;WXW|gwu2{6TX`GF(>-{)B2N4IL+sJ!f8I! z2&eX!T>Ky2|DwSpf4WOae%cVepYUvx{r1-hFG@Jw-WG&kBlaT*Z%p`8!m0ncQ~c>t zKlwh-oJR-X;|ZtRdx3Cz-nORt{ZpQOrk~UOxQXy(FcI~+;H=E;ZxY^w*#AQ~Ezf+j z{eBJ*`!0mj`m>pET2E%q@%y3n8wjVz<0Zmre*Pw$-dBXo^ZTdvuMtk|ThI5~Q~t#Q zKd1X^KH&#pBFgzX;WXXwl+689C7k-nv&e5h6^p`uL&B;3aKdSM?h3$95l-vX<p4Zr zu|Gfbc*#xpA(GEz!fAfK4Zv%&!bMOZT5egtw6V>9!=fmMON5^$++dX+f%*9h685jV zxW<eS1`>V_>%x8>;TH%$yBsSB%>P+P*ymrtsKaSKs}auf6Kq>y>}VIy!Ffl*uYw8x zy#nx$1MpD+cnaa?i2v1uUnRWUN~|Ebw>N=sy1mN+@XG;s%~gK?G~EY;({irBPId_H z{0s`f*APzYNv<`1KQ#Xlgwy;q3BcQM?uEM`Xr1i%?Lh45eP9p5>3v{-m!C1*&tPIt z{fr`<`Wff)BgUhfOzf$j*@RO+_t*N%haQj52&d<Pne4|20^2XwAyIETZD7>l*Dx1+ zM*x18Jv2cO<r&2sA~a<WM-bTRACU0#0pXVjk0Jar;av#7LU?}mV;+I+LzYGwKOfcO zoUucYNcTI!Y5lxG_}|37z-Fu<FhA!Y;inYg=LwG{oYunz0eGtbymJ7a7=RBBz{dpO z(*p360KCT*Y$O6J2U>1l5>AiPaQ4syf!WjRNL6-`MiBc;jOSd}#l^VF-M2gT%n$WH znQ&Uqv#}qa2+W?==NW|4`hPwEze@P`@Fn)U{Q_j}pQigpDj?^FF&Fj=I2YS1`a!Se zoE<MLuY%toerWv(NrMprv%LWc|Iuk!L12E~g4(hbgj#9#%(kb;R|CT7@zsQIdVEbJ z{2*M4bbIW;3IfXyEr(Zj+Sukdu_)|!5PpkreV5;!@{)w#Cia~;7uy@*M3)j={B_R9 z5<m3(Go5f+K644D<+G4*T0V~nr}gTU-Tv+Rf#m-?&RPChomi(jcG4ba&dQVKGoEv? zy}h~l_yG355Kg!29N~1k{ve!g*L!>Y`MHBdu^&tB_j9&O1+Paqs~Up0Bb-%j!D9(e zBfLL5*brDbQ2$>LPW`VWocdo+cp7|(bVH9|1tH^j9PF%@aPgsu4)4f0%g<d%`1z7> zdVV`W_&s7TA9egOKlceQLihv1;|Ztre-h`S{@4YDcykDU3+p0$N&Nf)DDuCaa9U5c z5KimKcZ6Rdex4BiknlP`IyqqZWZN7a?W{L(anY`+?{VjQW=qc}DTFV>cOw6*2tP#l z#uJ(Q@%-#?QEp;fxN@AcbZPm-5qnmi{B}#46~O)~;j9XXe46P_y39Z2tq7;vyPI%Y z{s#!B<)8DU-~UaL?i|ADc{Mcv|BY~3-=f*gB?8O;W=L#TUBYSp*Aw1>*ryXt{p2|X zBLwFE5hVPVAe{Oa?}cFYjfj0OV$Z6i@H3QfR`mp5N%&*J*Aq_Dy+HU>V*dfVDM4WQ zp?n?T)PLb$ZFAec8Wu%<iWB}1;i8=^^Zyg!z1WW*1jgxck^78|ZBFw)g>!Kosq2_Y z3tfCP=id=O^tjN^ItIee9ByBcbCw@!-^XPi!R<eF@z*&Y8^F(W!s+>HF5&ceSx7iN zUak{P{pjbM46yv)fy90pMffqo<?~oU5a$!|>XX8pyUXDn!fCp-2&eh4PdLs00K%&w zeUZ-zgwy(SlW<xevi)vn->xS#-JFEebXyb7PQ4=Ct%OrQX@pZhc4I!oS0GxRA6@Y0 zhn>QO|7C<z`@c9B<=;wk;>+w}jKKWUdgvjXmVY+FY5sE(PV--Y^Njn4@^*4kBC($e zB=X;%aCQn2`~c@H|Lhh}gII`QnMPpwXC}hlV3|f>oc^xK&bi2sZG?}!E}qE0s6+fv z{|7i1$MsNd{{yjSiy}V@Sz#eCdzPo@XnY{7ba8Qgzs)(brN3+1u);+U`*9{Oh&axf zJ>8E<gwy;CBAo8Wp@g$Vk^l9C({gyixyVm3o*$WI8iD19rdynIVLyiLOoT9E&n~SZ z-6+D@B~kFIE<aJ+PjzBX{WKt)`Z-ECy95dUe-i$H@a%tL1wrJ$15fug&e`_TbVCWJ z={DkA)I;%m_BUcrkBiEG*~!}F`4o#HpOXkLNB9g@=@D3d*eP7te@8frnipc>fQtt^ zSUTe3xjDb);yE~P&K?FKuymh6BHfOhd%@m<wm>XQBlgd+F6@JD*k9XzFf3>W&qX*b zhbEj0|9hP1QX67VkBd%()B4$iaC%%M5KfPaeuUHf>~wLwbkzwiF1Gh?b~B2=%8l;F z|FN4(1owVCOE}$+f4aEXk2hUh?8oeP{Qj9Au^$@}PLKEXgwy?doO4nBV*lPF_H_S# zaMzzM-M?K3r{(zt=fc0(zbV9??%(Bv)BXDu;dK9gLpa^P-x5yq^VG$~{tb0D%idpX zpNSB`7Z_s_*O$63evYrVb@5Q{Y`2Sx=Yit=48p&7znf^UA-H(I+jtyPEC?>%*S5{Y z#dAgRd|lX!_qACJ5I^F5ZLQp#7r+u17w5g3E*>3iyOr|t^DFzB>0Awm*L3q*4o`CN zL|(vYE-v2VCf*Mq{EPRviR+l)iQOFk;=W06alIbHuX}=v=OJR8b-~5^-E!-WKf%TO z-Rioyc)#0F7Z=a%>G*Zbmw3P1HJ813j~g5Bn+1`s80R_8#l<+xQdr-C@kucqF~^9N z_Pm=|>Ju9m6PASGiKVd4F-b8}SjWD7rLaB;Y=xPJhhc<Ox{C2oomDXp>(n>NZ-W&! zK5M6h`1sgfaM~*&DK@Omdo4;~@Xby=5r?H0+pT?<K5T5x|34uVZdjG)o1ft{nlI&J z52Z-RMwZ!P9*FJwXov>O!%7(MH*Dn45X@LQmb04izLU2&=hc&cD@h%Ax+#1=iZ4RN z0-u+}ocVOem)MUQ1YRwj6@0q$9}dRyRW`$dFYx#UUFnPb^V5XA-I>KNXnU0;{um&` zyND;|ta#Y6Q(75jfR4pv{ySfM6Dk(?yd~z$@)Z}K{F@X1imL!b{>8j=fcQgycjB*e z`4#0S=6!hlGA_F^{KcBDySU@k$us+E5F{8ittVd0Nns|olR0yjUt=CW#Z|Gzb_=)T zu#j2(J<3nuN4aBGf7!i+h%fFRSl-=f14%cX7YRybxM5Z>_DIeh-vjni-31F(9IuyM z`FEF9_5kry+BorN<9iz1@%c!-?ZXmEhq8cimdjyK=knzuLPN`khnHiYWx~PBl!=T0 z3ol>3LKNnqp&h(KYBi{>$bOG9Milg~`BSayyu8l_(fl(zj>K`JH|Lb33615kGuT4- zPs`<`;H>$jA0H;~l$Xo>9*i?brhQtcZl|A;ugG;LjGw{wNrMU6NVdbm(<YD0UT&J1 z8!_u9?-+19>)SiWI;*#{wjSLWrnj?Z*J{^IPSYAxOzZd4om~wkOv(%E<iF+QXU~&9 znEc=AXB~Oq)1xf?t4M#eoz#SBb~YML(8iAQhFi>i-Q=AESQ0lJ&;6F&*_AbaO(gU< zOV$yakk{nLK}k)MAA7QnV85!8ADdZ6reOgthoZddj;)=0-00<4syTMY*nMMbhZf&a zvpD93#~vKJzwW-;_OZ6(asDERGqk{C&(U379REJm@jo_wLiOi6p63rw-*F|s{4ncR zJ4XIw-+&ItK6a<Qu;b7C@==s)np|`2&bnjY%l7}6dl&GiuJhhogT`1SO7<w0ZJN*o zH<MO!l7a$hJhfA6!;HPhnTc=6NR1%wkxiV|ZX7Iu+nQTO0(Q4I=A1YwIgMS;Y21)B z4xE$F5XX)sZW6vBfsMiVB5Z>-7T7X32@L4`{%h|U3G6g&&i8%K$MZ1SdtKl4u6Mn+ z^{%zuj_Qrc>JD1H<O#a1?oL*3qi1#6W%{9)+?8WmegKd$a2WupUHbe@DDtNNbGpq9 z{n4Uj{ok7N$JQrWfz*soVG==ADNy;3QT43+-eSHKsr<WVM(5iz?VId6dq$n(p1#q^ z9UPzZzIJoc`^GIvZ~kpg)5W%*J!1RG_z?zd`(M@{|C%%7x~$e3mW9)402d$>Jf?!j zf`a<vUvpXobuFUP*(NZ8f^~x`IB2ciX!|$mPg}dy`Z5GZsY1+$ojZ8Gojb(;x6V&l zYxnd2K&tKa=8sZF6RLksZu9uB%(5HpS@vxEtDBPEttIwj%6nW3I@@$K>F&G6pKxq3 zZ}!gpj{9;SPbH4J(_IpWZR^s_j$b*xvqZHHTd~h8f4W~D=NT$CX}_<(eselP+84vL z4~2g}8~kk;m}6D-vLtr%f9SAPzl;CddG6+a7tdi^^<lln7g#pe#YQ@*aLP!jA5V(u zj%u$_?O8QJ(_0Q(jUD8L)eFs4)K-ybgeL_$)#gO^1N^y$)(V9yu2DZ>&5CQ(Me$|g z=ohtB$oc!l49tlDW{_lBokpvTuPkQY$W*i$IWUxP*pKQ+giDX{*xnj1;4xB)0C zuA%peX;r3|in-(AIUiLwVP&R<Q3o|`e@1+`m{Wk#wkqz_IK$4u`BJLDGpW|vCz#`k z`YQe2siB)>+bxT{W0EGO{LF_&Afwbe1F9aD12eckmX7R(@D5wE2U2bo30s*Iu+YF9 z2OnxuOHLU>-L9wWVmv)>p2q99cB09zvQ`Yx;FtW$e{=luZpVGX>3H=Dr{m2llZjW| zT}k&<+q(LwojWzwTBduY3b5u*MpWN`Wi8!KPVVFwlOp)6rTa}vsY#KXww7))DN&QM z%A`DOQqD6et4+#(CB?k1;nl1bJMnDu4R-ajw!1Uw9_V??b`Pf_JDM-O#^+W#geL<x zgjTZyxq&QTl-2e?;_%#oWaRl&;??F03lKX^!)p5HLyKv<kO=E`T(fX9Zkyt<nA`O$ z`I~foapgieC9gW?eKqgaG7B#Tm_43$M^-{Iq=h+2rX}Fl8TXlA!sXQ9Rk1m?Rkd%9 zHEC<}hj^bep89Vvk-bXqcKp8?cHE8DCj=+uFa0QGk|!alhRv+K<P&9(W;((8n?a8a zn@H=vYqwS-!-pAE%(=|TZKe3^jl5h{@8nLL*Rnhv*^^ClS-EDo@O${vf)aZJgDH7j z8cEVUVejlsH*I(P2~RIJ3CVc5<Ce!qF)Bvuc;)e=N0!xkCmJZYy|go6SkwK=D}nh! z>XxMZnP+%53)qD;3w$K@S>^IBfinut1=eI(R__RlY8c=-WCMjV1%C6}(hW-!Z!7Rl z!`9TwS*)$loH7c}^{@}P*GN^9`5ZiC6kn+q^SQ3d@uOPGX4p(jm&<w=s~inpq1}M7 ziq(#Ws|Zq|*n7HvKekq}VX;A>IC>#p;6!#8pfQk)MqbF93zJdkuD~v=`mjKSQ$-tL z&7yRuSRQm($Ph0PDou~Hq3*&whyrX@I3p>%2uop`6^?LQd>PeS&<RbBwC4C%sA>_m zQSCIs{R$j6sA>CGi#MC5t+fLHaW!kA@hKjD5rALu3$dy~J@*TK^LHcD{L05jB(>sN zG0g2~0gv2NS68QmVt<jXNoy_Rs_&wR1j*F^UUBV2C-Mq^=a;$XCtb2bu8y8H_@>f@ z1jFc))jRaA_RPCpgoomb@KAUOp&fY_)TXB($-OvoIOSK;I6YIZFt;I6#RX<RF{-^0 zF#gjp6fjot3$b)yNVS1u5Sw(*=Wl>9B}@$QB9ws~Yek>RyIo25jMLFOHWTTB!;J`< zlgOCo?c6XjW+q@4fX$r|J2T_AmOe;E?#vh^2m#j8^(LWI34wt5?<OItgh0M5G70A? zVYR7p3kiB#!`m;VizO3hny<5~2i?O!CgC!WinKRhS`aFZe}DI4^uL;RlxH-3372UD zi2(_hj#Of(xv~JN)3l9-f4+S&jTX|<i4z&u547ON#9t|~zMa2G_dC*v3+0sDb<TS? z@7A*Wjs>zM<91OP;Hh-BY#GtF-L3yY`I7PN;f(vlX!$Y?0kaX>86{wx#Peqf7~cL} z0ke#i>Lfa?++7Hm{H~)&8GpiaLdWBRdz9#~T0e_1?RXcGj2Sd_M9Vc=tm9r+R>*X( zi;X;vA9<WO@>mr<g2Z1hroqm!npelYX{3>xMjE+kq>-CO8o8;^h!c7FcdO6re3ott zqvAEx$SZ!jSjmNU3s8=NuUOUn9pI$Bpo9On$2&5jaG-7xf1}1U3XcWII>*X$qBp~~ zM&SG%$9;CYqwvV%Z=dHP93k~ZUM_&qIkrp_H5$GEwS_ABYq;J>KLw;v>pwtOYM(|7 zmFjN+A9^+ohcJz_{~vF66x=)(@K6}r`@pHuEFLv6dJjieSQmxbG&pKrJIBhYC74H7 zSO3K(e#ddBT_-W{{zD;kG>VI`1$`9;_})<!skN#Io@*?A$6eoNcy7gG1N`l5lMiB% z8Cp>_Ev(^(hr*Kb_F2mwrxfz-ER8>0|0CSlsyd?=BaE$2)Rtu3u7E$=R;+fE0brpw z$8H{v=0CI7m;hGQ^F<2)Khkf||DD9Hv)J>9{*Q@s^JVE=JM)3)m!TI}086m|GKpub z+*}wmE(x3|ci>EExh-G%_9$j8U*}oOx*mR7V7LFzGi!wF=tajg7l`+q883iv4l({N z^$XN;j^uzz7jinsp409Ky$6i_cY?Ff2$g?l;dBmM?+-^|803yD=E8z44q()xE<hHH zTW<yCRK!uS+J9z#&TjWVJMJPJqnWi?lmE{A1fY+?z<&nbk?}8vE{pyDe=uK0dl&`v zsChewPmgdk2sWIaKzIRfp{$udnhTVY{|orf5sL3mZ=>jpN5g4_zjJ7(08SCDfIkA+ z2=F1LB?bx=Ms-@KTNrSWDn|>4u-_1rhbO|c@$tx!J<{U(@#eMSu`2#{w#m0`2UGs= zWS*^MkMJfYkJ|e-)uh9g$i-7ozl+SB0%zE_`2QDwcbe)-&f@XM`-X>Wj@N8!+hMhq z9~mBYcjdo(c(lL0?YPzU7-Ov2Q8S#s_u%mG<H)>{`~p2mh~@9nlh{xG>w40@RsO4b z0$nBfI-Y)MYW#?1^#Sve{6Fc*)cB5`Obt&@rp6MUBuPv9^kaGpp8hY=+{5|Cer-_H zme@C?-Q(IoNV})%ZmikM7D7y0O4f?k>0r)E+iQ($pNQQhYxyfA*=~@Ks@azE?vHD` zDdl}XKEwQNjo-{)wVQ6*Was)LHoHP;|1+)Wrj2&)%}A=Wwe=QCB;7qpcSpyGPhj)s z_KnZII^K>vX-9S>-S$tnsetXa+Z{unNV!|=CHv_$Vn?>vxf8=l_hDtXtd<*XOUexa za6<rqO#nR3EDjqi*-K6jv#kj6bxFpLU3hJ7QzVVs&rVE;TlalD@bbk9yAYdJro4OO z+KRI~gJDYBQpZ-?hbarC?@&7z(IA##5?XI+H8^;@n{1X{CSE4cf?*mESQSdN>N^Ys z`M*;;MSB!_S}_-buxDzed;n8E+|Ri&)AUDF{XKeOE1{v6zxZSto}`g_+0Y-bS|?Kv zhz{W)&0EX<fHx`_cSue9m;KM|F9Y_B|IM<%X_@qIIz!2KvhI;D`{kFW{RKlAcYkqx zQq{<eq`S#lCJGPyvE<LDyV?8Dye6HX^M(#<Str?vm#r0R`RhdbaENcjk&}tEXZ<U- zX58JZbDFDQ-;Z&}oFU-eiBAddN`-l0Aob&T8RtY!WD-Ly!fEVdskR*qviESxijmpy z+Swxp>*Jd3bZ%2wHj>Xo_KTcQ-y$0P{Avx%Y1$;<m!{1`RrLtiZd}Wgp0JjFo-{LG zg_*X$stw3mhOzMA`wyX&!5NH>3&(Mt#_^<l)p(^Eo&_^FH<NfYNe5zj15x!FWMNzz z^Pe>RmW<4I-HndBlSNkMEcx4*I%rOLH%#;<d1LX*TWjCMUlw`OzhW9*c&FoyQbR#( zcsVZHm}8k?r|A&>(>}+Y&bI32vaiev_c^_5CT=){d)eM_`9pvA2llT%3mfq($5nUz zGM{Dnv?u)=hFMTc-hAOxB_)@1+tuvdP3uWk_gHJY+%8t4J=oWA^260n*#6&-$5l^C zu47Dp)sj~k!Ideu8=tvd-EHq2O1T~O;GWdD4x2Jp`^mD1?N^q#-6?nX;BLB5<L&;+ zoiw5)Y+u5*X*(O(Y!Q2v-_elm#EwNj%rv!Mb$Ml*-WUFN@BDN}?|DIA?v3%DlOQA4 zH^#kjqO&R;X`gOA9?XV2y(-_${^$EK#DHGw((Xye-Cx)iz0o}avK^=Ce6Y6V<8<ca zdIy~9%^ClexRuVmKA;7-ngyR`OEZ=`^TD+HeA>S*R%`u3XFAbdyL`c;w)O3;>BO_v zw>R43b~*m_F(=VseY-tK8rPj{9k5!z6D=vJZ5_5+@8zNAt(x|l9sU)60$r3x7>dZd zk_B~9CQ`;ax@blT+f9v6@K{~W&Ukx_eVCnzcbhAnCcLDvN^y$D%65J$DmUBiOLotp zq}vx^+w(&}ntQj@S{mhnwZ9iRw9PbM!33GME7V0pWu^RZ$wYpRRsX`=mvG3<YESHT zadO78U6ARM&BP37cP&<_`VEy&`PW1ePl|vSeikoXZliXo$V}`EvQ5qfOrl9Pi>p#j zd+6Ob)FsM*XcFw<`hXLel#IJC<DSg8&$};Y-0W&NNk_&_t#MQ9GHzXa-|3UX!x=BN zCgat$J53~d+0~g5muKPyx5s_Ky86l7yXRTUj)7bC&K8<b+7PjpmeGll(q+N6T7x!X z>pQHa=NB?!xs%#mYmjSQ8Bc_bq{rt@YLl%&ZgypC3p1RFovC)guFUjAWhPz_s+;Gz zueiIapLZ9m>3Q2d5!vQu*EN4xBEji6P+GGi>ra?mvn>;0mm^kwk*0$QzsSr+`30Jd z#C9g5XMQh??Fnzex;fT`J0c6(FJG{RK0srAhX|lf(;h4DR`2C(p44}M)J=2$!0~V0 z{guLA`7C%>s}L?4*jBS6Kbb{Aw?_S1yx>tKk8HD9*SCXrcJj}_6jH6nt=3~a07Z|e zXO2~A<}?}$DJU6(IvX~MI-><Dn)^~>cXPRcN$^#aZ?-){Aklc%J#GI=qNZktJF7k8 zE?8x|Tiw*7as{u-xVNsulU?e#snt%duZ+KI(*D%*YuXEbRT_&{KtpmJU!GFqvr|Zq z`rTIR9PvAE*1ER#!+2h!AG1~{%HDAg7d+yLjgZGi>*}uDP}Ev>f=qDmVW=aJcmfwm z(%8{lOZt~ZBKA5#-H?V#NUl~g1QNB^85&7LBaIy`A5rpndz~SVH006Pk?3w-XcKqx zyj}f#$~|fKyqR*JO+{XB{!%diZ!rHja{o;8PvAhT{Nix_FBUF?=}#tlSoJ+~&HSe# z{JC&PDshUjYMM7T|33SHlNs--Y!hn%851ktd3ZXtnaM_0%?p{*J61cTEo+jcEsshN z<{xL)Lp-)^v)WSdgqj_xn)dwlMg&Sfsc8@8IIS7BQXbA9Y$uY~wCIie_ql$GzRYU% z>K^6MP*KLabsha~a+(H`e*G}af@$?;wWs}ijt)5;`$`=mdD4g=B0LC~nMFS{Ix-%! z{|KEAC;h*Suor#U3O=fAEtg7xUXXMTGXb&6cWi6zbC4jssN!P&zL21&9cjPvc>uT+ za)o6{@tM6F+ISWG^ztkP=xHi^VBrl^-{h=vA_G+EMEP+1<k$!SN5q3%T^8scV@B&A zFg_G8=}&liB(T{bQA|d~7$@?C0+XIex&uz`ZKUd30KV0RZEIvevDtF3(uhD#5(H%Z zYeS8yraj#REgmS<xDpU-Ju=U~JCb;JVG8&*rra0p>Qii$#gJltIkKAp&WH`C{pj{g zWFJY}G+?8b2qMAjL=GDWokUklzw{e-sQ;hawzb>^ox$v3P2jNvs5a&Qnu+6`rCgH# z^Wd2UQ<DF3@C-XE$xjQOA&ipzpYS|--NmBqAVfq_0onp`=*!0$gZo7OXXekGm3a>i zy>di<aR(mx*B}4*(i;cgbO(^`9Vf?BZ?x9_gH-0o;kF$~{~CngGP+B8CI&3&{gX_C zq_<3p`J9!b>;l%yvd}K@?q3#~1=2hAjZa24e)`+S4!|sMyQN298hnaoBaw}+$&vkl z@gU1#hZOXdhmx-8Bk2Y`x~BgS-qGOt(Hr1M)dRWq@ve!1`^u(~@exN=R30#i+`${2 zCFZ-3wwH-V-Sy+41gEKk{g^F412fu)Vo?i2I^U^243q!3lY15Y;#u3Pj5~f~+;Sih z_koF2v%SXnRBLUINR`#|kkSSsJD>`hm=<u!wki_SL<>wzdQLQ1TGmF4LtBhQ6L?@- z=?)0(zMnGbj=%mo(tjx}vIYfl@YE6KUsLdb6{nec$9q7vWTx7Wh%7=r;U#y*eCNux zb}TF_-6hNdb;R!I`)J3Bv6-el(;(E`zAK4)%evj^oxSdfFOO?|Nj+6}R1Yydmvlt7 z+lih<>uV4^xy}guh9Hm$6bO`6?>p)^>HTdi=?;lR`aWv=<>%98b%z;*v$L1|PzN>A zzxql>)LFB)V`wakx$WL9>Zhgt*8(`{nMV7kne{<?;{lW%)N|W(Shwf4cy@bb*nG*v zlP$lpbGOH*M(kh9sLS{dPo}f}4+s1)9odqu-r79=mkK4zxQ8?DTS+$@QCs_>Uazf| z(i!hzO%U>}O#^0GTWhy4L1nz8v6S1{taBpf)$txvs&{oX?VgDYxNTA1`peRht?BA5 z#eUw*xW~`w=L*UteP@`d1h0CtRvZD~bkqIuNBQe`>(#K^{b>UOxUF!nipoy!B^T9n z#Q-bqJVkM*y+;j5ve}ghj;*zZ#2j~P!L&$|DY&iHUg{Nk0sHDY4Sjp2Mz$$W<?f8N zwlC{X{m2O3{{8U?E<s(|rsll$!a^DwTRr;M4Oed!Y%0Jk5<`m4V6FX*!Ev%8nr&ju zWxVxTDcAVXrzuvF?$~#J)_ocz_J0t*``hqovzDSn$W8;JY5Wy;GreF?Eh-F%m1kN- zps|2EYT$^m<QPQ$SCeD;t>78Xc(=Imey>dgV@F!!UBKbBO%30kGH;iKZ{6lC$y;t{ zxaGt7EFA);``84MJi|XcGjSLm%VoiXUo9A?X>X?K4CsAKqqiTcq@7H##J$GdG2wAH zNu6z4B0QA1>+5;SmIhPowl(rrq_2xZIu?DouN0<w(Y|!k)n)c$lc^rCt=?$X|9MpT z{U0*xEX3z;svj<Ztb67^RzBNwdpw%;es1v26dn@f>5l#9pEG~IsXx2(eATdXNfvH^ zxA!Q*i&Y}a+={01+0(<rup}`j<1DM$o2m)casD&{@O>@EQSuGL(LItTv@3|J757)T zo8x_TqT}8ZFLRsYm5!T<U*@<o;#J=Ca__IAN$-=WhROJNKRJ2W@GgJmu=`H+331Dw z?+x}0p73X!hlw28$B%q%&YU^bTil_f`wIMn$l}gq^&S;I;dZ&(2j3)28NupyR}WP` zpRDe6PkMh>mW;d#GnH|@Iaz(c_LK49jx(RQWUJfty}@0BXZ*_Zi|x~#+iR`uwB0kX zTw%vfJY`+mk&1jzlnbO2Y|p+f*ISw!!mZGZ>gUafkCy`EF~rVf+)<_KZiZN!tUhe| zO~S*H1hOp?74nqvuAZDo#w)EAGDO<in?IRbGy#5r`2PwGI^LoxLw2^eXaZ8`xOvH_ zeGe4Y3_r3M8J2N}+&d@R-uZUv)lqBhR+LTYQ$a<1f4S4cDfb%_tX3UiRx3&OZIkJ+ zxY8~WGp!Liv%RY)^q2BODxh80{3(Y{%2@i9g4yvFR#|JuDy_<C>PA?HeieUuZ15#J zw>4rX4!XC;C#T&`hYAzjK5K;yGxTncSGFCpT0hUT?QQ`v61M2Dx5TF=MG5FLxy~{K z;N`c+CkThO_thc$*TLGoC0=XY-(C$6DH=)70GK{-+5<YP^Otm0Zxnh*_~>TIpTaso z{u~&+ZXL!_mb-fb*!^Sh##?QKX<}K#P*b-=5Gfx_CXjB{eSZlbNP0lXh)|8=69h6s zPSZp<k4E75kH#hEYTBhUWN2+76EnHyxNUsX#(#@0YJ0V~2%q$?LtU`a-N^cmlc)$g zzSr^QNB#1cBs%6-_2KHR&d%3R#;zIn{b$weC5P?ADSzsiMUVIk;jlk9eT8c>m_0P1 zi6DAB2%g*@Q-6$sNw8M@Z-Iwxll1<M<#Dd8e}Da<AniA+^XByh{NEnGS^V&~$n|9W zW~jz$onclv<S8<?T8{z;c!@zX6Yzb@?cX7a$UqU>TD}SJF_ek%5vy$)_-5*3Y#FpY zh(SiJ3E->k9*R2*v@G{`6Na0sNltn<Mzz8&LylT&OQrZhicV9P<4q?ja%xwAoF$vZ zaYh`K#!pGLN_wds8C)%Er>D9bE(2RAP}6T6?<hiA91PJAlBhKQX^muN0mO}X=m7e* zFNdlw1`YPS|C!Ey%g9~f)oR_%h<}65^kV*3WP+twL}bXA#AXbh=E0=%JIQt2PWq_L zkiil~u<ueIQKMUD-7Q6VR?y4dqc0hbr6#<K^++Q+i$VnC^J3Rk`A;yWVkftlPSiu7 zz4wn>nU4IHb;ksn<}c7(7Mq{2({Xvt&p#!l5UR1gi|x{xQOv%XlLG*rW4ytp4gTAJ zS1l(c$+EmIzXVaFRk+xs?87SlHBT(afCR#vaIt(*S>`!E18dAoq2t{h@YnnrlHO0M z8O;3p0gZo2r#`uAS`gtH8To!ym{)ry4p0fdwEJ{;s>HZZ>mBdvi43IqBVMfZx@g;u zh2wH(###4Cb@O1s5&>50GyIJ_(51J%%(?WXVJ|h_TJZo$j^7eRqmlfO_jR%Z2OZ!4 z=|KNBIIb&U`l{s!U?bsquMUyW-L}`f-u_(4!mqd+-92~<W7RKIceuOZI2oEK%ee9Q zB~N7h40Pn?tGhD<PeM=Q8EUQLzCB!5_Ql_0np(c^_>Tz>1}6p?j2Gu*Ul|9pai-Ug zT5?5x=>&u8G(!{#o6{$<0vX@LlEoTUb9|!XnMoS%&Yy;=&(bHHrmeE=w9&TJoYY|l z;9b;;H8kdZDJn9Z=w0bFy<@H2?lck9GIgHgPs3yOisSvGRGP>(C!!{zxMkUD`6f2U zGg3h&JCR0yAWNQhJN}ozsD|9c)_~DajA2SO|K9U^>CEx$iCzQY41ZIW@%|!~@h)?` z+sYv0dcoin;t<uyb?L<0)-rM1w7+aQb+i83#cG0r_{f6TZO4tq<$mP-v*eZZUu^io zOHO1$Jng3zJBcmUx0-3g_EL+XoYzIT6VrY+Ch%@cdSx~tmh^TrKBX;4Q9IG0lWaun zb7BT3QR8zZFvzG=Is<hJ&Ktu#kV^_z&Pyoo`0yHZrlo<v|9TQD>>*lE+p$HzG=}g$ z0hJm`A^&D>#E)t=0aI*Sf0p@lylA}t4+?%r+{*I5sGxDcsI;~0Je6aIsuveSWZ?~_ zF(A!&m2qQL<0PF#d*8a!v<J5|0<`~<BK?3I_QN*@O;4&Fu)d|OUbn};9+UKmmR^Q+ zvuyUwVuno}HOKJ~ZGkHLM!|)G!Zs=`eN@djxi=YfMLkZeifLtucNV>vj+}+_+`Y7w zL2yBpGvW>&c%JJs?qJ_1SO&It750#|;t3S%OjEbG#AF0q1~RIZO>m80Za7z3n1|@- z_G?vHzqxdB+Q0fT`n*N-!lVW37DCDTx5vvImcyN*0zKRvJha9a>w$j`yQv~0{nPWx z;88(hNJ+Z5C4MI>QJazX#P2qpOxDZK<BKV&r=OVmdisH>UC?K|KW#%=Uttuq6EyUf zWp+=VzyBqcGQq%qK0XzZQFp^cey%}Z{43(La>M6aOaBWGP}(v6pVFqDoPoE;FT)*v z+yGF^lXi3)<IbFvRoR|#dnvlL=C}&K!s8MCpCoH0+m@9Ifap^Va;sSvDSZ5Fx-bcP zg!ZagIZ#X0Vf~!ck2W~bgXm%grK~DsBhOGT&*gC@9f*POqG(wr(w$5^qkebu)9@0t z>yH#)U)1Zn#n-)bSidQF#l5ErFYr^}t@J17{!m@BUAvXn3wO9fj<xn3Ht6V!!GmAQ zQJ_P)__7b!3FwUJsZ~~&vf7o^&MvLaY{bA0zYIY6?Lgj%TYFf!IBMDWW=QozBy+sy z!sANj07Cr$>!=>w);Gr|2O2zO$2yT`azhaTKA@jIT5LF`pMz>!2p-VG+dKdhj!UcI zUH%_d;a;^kq@Q=x$*We|UKkI>E9e4%t4^!bpnl#mb}pwLSWNOZbf5xoQpia>XXSp1 zUIHixCsi$w;+=Xal43=X6e|K!l>U6Pq`=)K#)B0ht~mdT`pvk|%}JV^&6<r}G-oBh zc!)S-(;$yDo3|K-B5|vsRwq$_0^dW|UAs}XA%+j*0cOE(Ez1p`*YYpaO|tmt?m8at zjV}%=vhWyqMXAYV@x<yyLAc&^_HYs#OR@XS;<3J^XcUt7ki66S*8d9LYR8jAyX+`T zRy)&oXA?)P)*q9bbr0r02G4-6v#Br(MWbz-?LGsaTA0oHN%1MRIt@PQ<>N`eK}W}8 z5c4GQ<3Ch$<85pDlPQ<QGHI+ety?%(_(k=mG}}RV&F|SFcPauh6X~Oo@v1ww9GTCC z>~laHGpF!i@fCt$&xvp!pNxQD#%NBv^rN*=)y-T5oAm8^dPzUpst4WB4jXXL4g^97 zW5WqOJg4NX09t>l<&!+K+zq{GVOPDQpFTDFM*c}i13VP_Ej9Eg3Z-ta7}d>-YE<hj zfMlm$d-U2xj|z)wctS}AU_n^l*%D`LA(g(X4iD=mub<w0o#{2HX$!|24axsB<U>3M zYr<+cdNvGuN5K$wx?>a^>b`~866kxfAUmV3j_Bu2{p`#4nkf(L#bUqbsi?u}76Wz& zhPJN?U>q3*M%eEQqd*ZR=ocKL8LBn$%Bth)vtK{2=D%h-7FmyscdQC^32{%Kg*eV& z2zwzIFoGf&Vhq}3s^4hf0l##Kx}-ja)LOs>^wgU_iXtxilQJ>UE6j$U*Y)$FendO4 zGP>WV3Pw_x*?u!@RX`1?(4c<a(ob*xL0S#uqdI*SV_tusc8Bz5tGKAx43nNOE%YDI z09_2L%z%Cj4ZNDaK4`2kA7AA}q2T~ug@ZKIPRxH1tT{_IOP?I2!G`)nT?X|t*wVlc zE&cP$ete5CtkdF-cctxp8O5>#%~SfPKeZMwdnt-Q5G)bdB@GM>R8bSCpVjQIm47pX z#J6x&?n~$P4`fUKMOtdwpHP`@nh`Hcqllx4qN2`P$KmW7)Ii$5_o80<Bw`!glr4UA zP{&K72rgK|d%Jh-#5T6mpR!h5k0e(pMs3aBjC%)L$uBwBA8u+x#vRDI2eR%doHRyn zKag>U?csl@mFV}rpfHYY>Y-^Xdup4V#7^QhjM5z0ola~fUZZTI)%sI}Lhj53*3yS~ za0eBp(erlFFTawhjwP>}9L8$QxT=;px+r<oW%@JYDhDd-LVzL0D}$H`R$*g@$&8{h zvRSTudfU1n8s+!mWE7@NRL9A=KTL9%EAb3Few&*=m2KLF_c}^|xw=!tP|QXwXdAKt zg4h0Jg>GKR`nMcqTXjn$dHEerS#1?E;k?x9ta}u{Ytmcrl;dR)D}x#Dj#Z9#U0Evf z>t`7{N3;6ANVK5s&Blgrp~TynrXy+mY3yh8Q2>oM)t-qAaDr@%wL<Y?w)=7lUuO?{ z9mgZbaaVQb-evdmi1po#>5kV*$35@gIGph-pDUyCBOtn@e|AV$ME@CQc@#hugmqD} zOpy-t$q$wAr<y-HWSrs**b9l5zs!kGr|FsIk3btwYiTQdqn?L~2&xT8M-{eO|10gc z?OixP98L4;w2KS3fBQ<%;kdgq?yK$~@le<T3pNzwjlr?@glJG(x(1Kacrb{ZHYB}$ zcYZC(upL<;1aVP>LEK4~Ahp51ig(V!mD99S?ihopk^MkWwnh_`!FA}>t>c(MZM>$v zZLb0<7XIO!l}_h0A&1d!l=O@t6s1=%qngcW-E6VH_#Th-=y)(K&KbreROIEAe)LLq zX;^;7PglL!n~wc9BW^|7&Bo&BtdS5Vc8FwWp>XUllVZ#<X!ce99}f5sIEtcriD%5x z!TcyBE14Ag%AH{DNu+Mie2b^)ck_s{R@F5Ryqbu%eHu`rbJ3&ZyehrPZ{ApDEgeIT z)DP8{>t9!-K^2?VI%&-jZFZ>nd$9k5#r~($Q><M5?xCaIw6=5p1th7<V$#d=6bz!x ze}Dr@0mno6))0taV9xwnl!$#y`mKF^*KjPu%e_bvZGA{{!Cx2>^G)s8t$ik}Y!Lwr zr8g>~BNio$048c8nZ8<%5<5#sL0gwv*?5A#y81yeie0$YjG4y_4zNf26{f%4Zk$DS zM;Lb}a6p8>>1%(h0ExRX=v3XQhp&ck%`$)c*No8D+562;g@oWZZp$j~3yxd2(rF^* z?26|!9zq+~UJk?8nialwz=W^;3wfEypp!UJYkj-Zn9PwU(urL#z1p%)t5t_2b7wBJ zmUi;s4l=;sS93jYi~l8|IDuK244GdhDLdt&8A+|@i!w<xGTASc1g~63EK)ts4V$#a zqhk$|dwxEK`#^J?s1>wbvD{3g7sS^>KU(AAB@5G;O_tqpA?kdz8gB~Ims%sfJwBi$ zL$z6VKl?SEsUHYJr!!@?FDQA(x{!{hgV8fVI|5s=LKWF|;$$kKXZn7MC{(juqY9LT zdH>Di)u%-Cx31wQs8!Cf`-T(?yHPZ|xuB3kov96Ti5{v*ZAiKce&9{9{YAvPY>DCV zk0b`Id*{NIS#g9^&{oR^Dh$rM-pl>~HnGYztHMu?i)5Pe?ikE@;YEgqms%;X@#fQX z382NIZ;^mXRCW%V2*w-umE584vBh(B#I5^5|Mw05gD=vpK^Z$HQH)cVeA;iG8lzo< ztb)G4L};D@Mp<7w5DvFO40535mHcfm$Ps$9XJ*|_`Kq3gu8?(~f<T`miZbJF#b+hv z$fYuLf!_^u9d+DC<Eu%`xU889-MdnMl!xz|EmE;lUhwnt%k~`Qc=$nJ$y?Y_as!aU zwoJfv32|Xi<#?4QJvnazkL+zygjZa-^WY?tf`;#!NZ+rKpNWr0^HF8Z-6-vcS0X8a zV~yz|h>8v_m!aDI20W&Et8_Z4Vg`}?4S-WBaY!NMS``x*SHqiR-(!aIXk1iD^FN7q zn}_<%<lzJ%Nmjl!Gi<Kn(fGQcBwl1`hA@~yqqK)w`e=L=1z1h=M?7)2X>_-eP>Q9O zk~Qgxxu2qaLsBX!4aAr;;S~z#rbbJ}+QV)KbVB+VnKh|*p2hDTB|T;3Ud7)*AF*g4 zzffB{7JkYQBkQthMw^jaiA`!;%c(y4yjeKUBEJYDSPe|5vA}n4d@;{vsCV;wJJzQ> z7`JISGvYVv&pq*a(r%HNYTPICgBXh%y-xX=_{6?aEIEVGy9E>}fGRzjrBTa3RKbb` z-UT&8hFay1`q1xf{F=@~OW69>24m1-y_cbsH}(j1(zF`)0mcsuB?x`{n4eEE0u6zp z)-s*KP%#)>)j<-2=~dBQq0Sg{+v&MN?#>wpr0^rWFeNB~kZ%YZs~@2q<FL>V*r^iC zfujJOe$s1J?(fwfiEJOy{-n3()u|g<Rg6TG#p{f%yf&)WhG5@cbvx#MT7{xAXc`IH zC=^vIo2_M6)2_z6!&-KQ9%=OHLd(S7Lw>S>8$Lue^&b)<$>=sRH)KE0cv&4iY324u zX@SJ;N|ftq(o@z_3j}K~v-K)r8c^bKb<n3r&N!&lYijvkv%Yw0d|UZ@n?InYUJ~YB z($hZ8PhLMN&Ma%f>JRbL@S+;&pEr&_GmVsjEba{!34qAF0;dz%v_@vAsn;mToRA#& zsKR?vXz2}gEgQdKf1ylls^Fb;%xYbr>IPR!Kgd|<q{mv?9nepJAnZ-E{%FL+{J*1` zK_45pMd*5l@eaHtAe2`pv;8Ldt8f*WMNQ3PK{;}_Dfby`>AfNHMetyH&%A}gKrlj{ z8p8A^=gkp$J*iC5kTqKww789w#-~*^Kfgi=n%G9QJ}E!%BN~!uljS~*36#Hr25yPR zQZ<L5Z1#S5XDx^;<^KnE<w`Xn9MVq8+SsdsVdOHpr%0?j&C^XM`X3pQ52Qk1x$l5K zHEjrB(tcu3=}rk|F$AESIe>UbZn(wxIoYA1{)_{_r6OH<?Ux2}PLS`hmMOknAnaDY zPFFDcnEEs{28*?FKL&QC^jodQzfYN;m;sq$cU`4QKM7X5N;Q8zXvI)xkly?UL79Lz z!*C2%=qP_3Izp&t&`OwbZzx2BK7rMquclaN2hph{5o}IFt3rP9I5B@;(QgC3gI?*g zf<=-)D0BXg3;t_Cf|pcv%@6}YVOBm|!$>bJBa!iw`Z=hdJ^I<tPq2uL&*@NpBT%gr z^8TGQq3*6Qi{LbmnilnZf*)q3^=oE2<hW+ZTa)(Ph1<<6Y{}y$=<4Y(=P7tr$X%XL z16lwxKhMOJ0Mu;Fcp!0sX3{&>vL#{0J8;Va`w3Nb*8MXQIotBm&uG-N_jLb{3i}^4 zCGlI)8n8z2pQriy7xJ%wV*IHvZq7JVJ)8d$?#Vf#XI+f~dB+eiyi?(c{GZTvvG0_1 zy*cu*EwB9$!TMf~3N`jx%U%-PB672<0}%MR?Z?pjq+}xLp<~&C3qLz*KBe&!$1);M zWlCV}mYX}p%AZ~I65Bnk>w}h)S{CebtTeCnXrGe?tlX19Cdv(&t)Y(52$e7d6=7eh zBPjB7qf3!=lqDG?MdQTCq#|1G(2~)sXeE$M92E(;t@YL3yy6y2!p{RqB5p_}Sfo{T z!1{JazC2KH18n|0^i!R!3$URc_A?b@n#O|!EgaKPUK^!68m-8z6ErB=-=0q$FJu^0 z28okN{OtrBQtgZb`4m%bwBZr_2lkZFVYAX<)9!Pa*Wng+)5SQPx^OscpwrZ9>8EV9 zj@VR5!gY&BgL((j;qjnl<Fqr+FfIheCH)^a{=%ZpI7???Dn1iNP%oUGZfZuCa^E2} zR*utRA5IH(SoHNYj?)~@e~hGH$yl?x)x^|75H>jtrYoSV!>H<HN4qeQcgQnRsL5*l ztU%&DSXNg3F`mP;hPSAH$EuK@g)1-cUChe16B4EK0fI8R8OL2w|C8qedPV&MrfBz~ zmmF^a_7u*8itHNB?yT!`u(+ATZnomr(Oq^8##7yDfH6QbxVlyI&*x9Jy=6J&hIm}C z+FJI9>^N?K9){cYa&%DgA_Ti;$MH=?YlaFaVlz3U@=mB^m{yDY5)0hj<91f}488)U zzf+PsF$Syr73<ng;BDBrC`tpn^*G^KCZULah8Z8wh)BlJ<y2ERA*k++mmpu|tuTVH z3yvUfz|1Y;Y^=AL`*9D*bw3O9w~Es}vtB)HZF~}^7m&g@x9Nwhx@Y;XEwY=WdfwD! z-FIz3{U~D^tZpr1KhA8)RHT-h$z_wBQDPMe!#Jf#TwsvwG{uVEC_p7KK(?7%dZuLI zO1O#z%<+tnl<+_o$%?%RtD<FP=r0TO)NuZ9{rBd7GkB_x8k&smD$Kt&MQ;t~|B#vg zt`H;{(~VhR(8P_<z{>d_6yWU)_*BbcJyK-S5c_@T4%X6Zq@v>Y;XkgHSc~zg)$1`N z{n;;qX|Ua}%UYq!HQM%?=r8NqO>Rd|-rXKy-}hA-Q4HhKJ*KspuX75A5F#d6Mlt7Y z;QrC6I4ppozIXm>bhbI69m?0WDObO_nP>^^62#)0{b`V3!|ND8q%W*;R)r_v;+sV) z><B2iBJdi;;`nreB;XA(e|<Ye<T=Agn%%2K!*gfWea9Sud((XxN;=f{{Q-kJkwI#; z)mq9j&~o@9@Y9r;T{+UsfqJ$AgEP7PoB|Hx_rM9@%sOb?VVf4tHY-;nDBs0-5{y>E zT_jRDqt(2}ID<;-#C|TJOVAnn^D+v7+r~ctPCRk5_s#!t&>G#o!T(oiUtY2PMgNoH z9}@ApFZ8_0Xm&H|C)`~TXrXb|YKoXltMv|M)SODZg$G)|Cqj6?8rAws=qOoLyqsxx zooP5_reQDvJ}w+~2SD1O)%IB`=5OO?aJO02a<qj!G)_op$U|Ax(PuTZ=*S{&C=5r7 z7yxlSvTUU|n??N6=taEe+(q0KVN~y3#7~Z1#EPd36^H_7t++$0_l|a)<<^QTQ6fUx z#6X5T)g#jh);em2d-9yZrIWFEjoA2<0y&fUt-fj?v3>3viH*%46G??=W}5)SYtvt+ z_izv4--4=QraQwi?r6_%M-qeICaq5hk(0HCZlQ|$qtLB_=*`Kz__LyAL#0O-astT| zhuZ}yhpp>zd=+Td?45~jnSasc(yN&Y!z$2@%viu&C}TJf-pQNUj+@o7@Q(xeQl!Hx zj1;4@h9Tojh#^RHxvgex*P`8lFcC8mPpG(cIZajI6XQ3#iiBA(lZq^2rQ!~V7V+2j zLZ8tTIP!1B>OkEjNG7Jtn2N=y0BF?Zmv->&F*mW6#T@8l3PiM`zAky}MYC`=1p&>H z1~_~7!rAT~c*!#n#LdqbvL<xtk9jE0A&#~1%G7ooJ5{v<g$b-3NIWt30NYI*j2y51 z9eNEpmzltgK(FpO<Tmq=Mhz#Rh_-PEs^w5D9HDOo*FjK*<3wj2?gWg0*RALwG%erB z4^_V?nxgwjL-YQXS1rIsNxIp)`~Q*0A<{%B0TdD`wEPs>15^GS{!rjaiAleLXn|JX zwBoS!&jwz)Svpsz{S7%&H4R4LXxkfT8%m2QSLkLCtE?3rBJd*ebOyp8Z<AmwEP!*6 zce6oWFVuhYK%!^<Imk1-kH#m0FeGjTf2)S_W2M!zWH{q`J&)vv?6#t%J--iqk)VKu zf!VTqB(tzk4VMaSQf+iI9TYNLEB_JM560(T5TrrVd7FM{^;XvXoR!!)y1@#uGU`~E z-1J8ZA$(r|*0!6Cq_3z0{~LF)W3`}*e$2x0qkqC<=*pPEz2e`wo3aiwQMYr{KF=KM zrtS<eB%xEEHtW_{D=tDjr2U)9GHy3sabv_6hF0O<MmznV4DBR&r>XP-d8b2nZwxQB zzn=M^f1L5Snk!E+U?6KGNw+aHY+*Td&E1r3dYUcP#kQY{e951>P1FjUcLrm+W3>)z z`=2>7-EY29eblXl=qj>h)Hj&4-4?k9X<AInc-8Bpr;PLPRNsXCX7f_$2<oNAJDzEp zd$rc7P~|CaGPxXWB}|ZqY<qqZJ-0!yF*C;C_!I7JPRa;(V4^=>kcYo%-14K*0F)k% zeZncmtj#C3lSYmG@&D-9r(Vh6X1)K=g<D1(94HO86{4s5E_uB;^q}5*hCboFL;s9H zdN6R~YP0Z&FbG5S>834^Ogpb3r<uK8gqQK}*(7G!vY7oy_XYM#gS}Zpbp7K33(2Z_ zF_@voY2#7Tz=ZJ>^&-VzbFArH&!WhjjZP}Tfws;?+qE&X6i&!ppLS1Q%H5QT?6q2N z6_Y%3p0%`5OfuX^Vr#y@BeiI6>*eR>fh2Mtw<c2lAiGEC(e*qx?4G-e)J=ARfS?Qa zCS4Y7!zQcs@0l)ckqFhR#$9EQSp9@u2)BgUQe1GmIVeeLY*gl$F!S2?%Pb8uKNmqF z65_Cfo03LXSH}x3WM9=t#zt;}R+pGL4HBD%6b%Bw_SeAJOn6Vdpq;gx2kl_K#>=g1 zz~d=v+5N!Jb@y5x*>)IQ-MZ!m0>2!8zLU<q?KssZxq^b0xLa3(aI4|2A&;(GXBGf- ze<h5p;P(jG2aM=-QmJaVN&YXGZ?ir<-|!Lt#xh+)xBfMf5h6xxjJhTOc-k(bif|5H z)JWB+A20nl*UqgNcZzIuw7OA_^4Sw4B<go36K~%0d`N2?R^7D0;c&LwR!=+DvQ5AN zHeMg0E6_!oobGpMhnI@lyTMF5l|WSQyq8FMNMs6oVH_2l`ZMEsKyZni`LE^!b_05W zlNJqYF&#}Yepo`3kXQo@gehw5axM=mR5+J4Urzbj$r=(J!-VR4J%shl<GEMQgcOww zC@Q*(0<{q7q^&Iv3n%?QQ#lxmdM8;5ay{&*@x^AWm)U#59L8cTTOF{Jf}AodvVVHP z4`@}rO9iugOgmlk|B|6Pwe%rXzjxk;==f7Kz*?@jxi&ynef?w_p8q8ykYQ7RV&dn@ zwM6!*KI}_T4KYU`6TDW~xM<kYvVt<&w(pwvU77|b6}7ef_jk5s7zidM2L&Y`Sf%tB zs1E4V>y>8kTd}^DM_4I9qX<?kSRLqb0V%Ey4)G%t*4QQzvBAMoI^!PB9pJW?sdIZE zXGrN%#oCzYCMbR-cz1~CF=~S1^=7q;*2@XTmozl<BI+2^SN4i%IJG7SsEFz6fGRe+ z&Gc2&cBc|=Q|zPGy_yrP5l?3eRvck0ZfDQiwmU>fuhsgjSkVxy=*fT;8G=Dd)Ep;t z7ET7rs{TtaKYu=u(4IFO=t2y@N;dB0Xlv-2ue*9Xk_o!MkfXLJY}{?s>VYxNw>nM7 zfj*WwZrDQkaer<^H?1{vEW9If{JoiD!p!U5FS9hvoDw;n+XyE*o-n$5v2D}rMSk=n z0V~P`tf*Y9NR!{P7%J4_<2fXuh5-l%azLrAKR_|*y!8)hVa=}zhB|X^Ki44CmS~6~ zpu+m(<*fC&TkA9SnARu6^sbfr9^>zLNOUqL_ppeGBTkQ?DmekesUg@|ej~5c{w0~i zhLvoBl?-v9yl032vJ-Z$mzzJX_M<i}kEOrq?Qj&Zd8r7ZA$o@2dg;p*WAE7@rp4Vh zXR)k+)uHh<kLG-bgBL$!XWAeu=t8U!8kTcfVh#7GalDXk&}H}@d9PAq_Cq3jRSkGM z4}mD<!7OM%zOBF?dA@rH1e&e6TH{obkgwGhRT2^vxAm%}FM=`Qne{otc(0*$Oe7%E z8%a_!ZA-gG0ubd`8?=hBuG=neCtb`i9(YBC-=r|In{?6E#!kgT&wx7XI+fP0ncFRJ zz@}Ovtfbev_e;Te*meh~WBO5m`lKV)vTF>&Djo>twu+F~iuFQX{<|o+e1=8o0zKcv zdqJNH<5Aqf-~ep4>5VWX<udPlZ$8Aki}PyS6K^8>avi0}PydPvLYA=6p?$IQrsJHi zTF7G%!{okljX(96Ix^9N_*jV?JV1cUI@n8>le@KxW2Y^cM+Y*cKQobp?lBH2=&~7Z zVab>;eZ;P+V&FZl3G?xCT{Kpm>*hDzbXAOkja=aAN3TOwo=kjVN8eStSG(!kI-F#? z8*T5yDb{aLFJkI>xnA<P{%V>(^>c}>oWFpHoL3T)FYZ?Y!p%PFnljF+Bo`GCC!PY{ zP;To!uAEA7FqL{?Ph1ev?qwe(*li;5&NN^TqTtlE+uohgl*^qKXWW(zc&Dtjb?cJV zXR`j?lWq4-LO0H2{CLc1x`1OaL{1VeX|w~HQj0d{DWY`3jda9_@Rt#7;{q-M3(dhl z)HW_ov)yRiYTcn+K650Fn<4_!PqvQ(FC1!3tqJ8+x+#USeg^1>W#RS;EZ5H5VO`Dz zwU=eNjs!r2dV*H!x_GGgfFOc)%-uW+nz1U%yqr**^l#?omw(n{w&`_d_11Nn(ti$u zK^aML6ljoys{k#xJarYvLw_kVIy0zCx;Tx`STdL2u||VY&tt5%EHoN)=Cy3_uZvV~ zb;DV0juRMnmep+dlH-|)$<KrM-|vW9ohW#;EqCfh9eiR4#6KLYhsYO2AsL9=P5p%H zxVZ1DltX<dIh4pPAHAjNh|Uj3xza&W0Ls3K`8<;LzHd&SL)Gn0gj<lfCnghlA?yFu zWCY^sbQ4-yF%<Ux%3k&6|1BY~f6o6KV%~hN`?!|xhAdb`@eNKy=Y`C+gxk`^VtP_5 z2f>P>F9Y$70j>$;1P`r%rb|0?{f#Scj^Sw><_T^k*&@Ueg}YJ!a}m>W?q*t?^&2m! zH3#F9?#{G(lxSMG6>KH+FS48U7b%^_<S3ncGV2b6bR&^SKxaDFUY4wW#@zi<vz6KC zmKLDPZoWtV*CQcg=^=aY1Z<L9b<mO}!Ne;~Fg7>uwESB(at4*+@&#Qj-{!KTmE1G5 zoNI#?d#RsD%Fjo4L9o59QTUZ+2qv)bDc1i%?Po)pGg7EZRf;pJ<Q^3cNCfh<Q74BQ zcajBb+;})b$Fe|Brs{OT5_*`~*~CSAQ&-C`5EM^aOLe9fn9*tV_xf!k;geq7Pw0z- z5qE+garAuu2g3eMN3kdZm>_@C<D_TjRRYcg2HNnPK;#S*IdUzd>;q#Yv2oGn&eTt| zkYRSEEkBW==4A<MeuIkH<$bxWsAC+|Qs^#sqYbB<w!+G`2rzwY$jz=a>j`~m9racw z(Te~)yWEL%*|{O&dH)9`;X6c4ciBDtN%!R-px4%wlI~#>(fcY9y?n9@gRy*6NbgP3 z6BN(Oo?%S!yju`dg?Qemh3u)0T0t~#|NIw|iR0WY3A-}kyyb*_1<|}F5RY))E;Is6 zzvhZm+wp}*6wCXAw7Z2^-W`N1cY)P5u2y|bu*$;xS030#Kn=Jq#<zNO^B!A|OeoRY zWj%ZX0faFEj%$6AClC(bJ5JE{Tjt)fy}Dx$Y**^)G6665>P0hjf7wOm7Bdc7;TWSD zK7WE16}+e*Z56wi0%(b`#540BO(q7L<7lHBbnBvD$<{#ZBUFNn8lyu24MV>$B%33H zTqg2IXHlo&J7&^TWfY1QXtJfB$s$0z4$p=*0ErwX0sa|ts%qL9z6fjKlt7;Xl*wu% z%5toyOntONWJ7qdqQRg|EhOTJ?Znna_>InDe9)E3<p0^IY1s|N%2T{%Fal`QDBl`E zw1<v3X}@dHi@{i|`zA{zxPc#*-L^tg^)zM1WzT$M=fn@~C|-x*zH6-|F7=*xZ|N^$ z<;cl_!8iTr=iI}b#_bpySKa;f?mJmi+_u6w%%`e%wY9sZoYmU+K~eH<q}Yr4urPo7 zL<Y`zx?XmU^)@axmg_e@uc72#wfMBw7+#IF<qUEUATLIp%k3+z&cyrt>xbQE+^4H= zkH5%03cH!M^{p_xj6dPxjDP>d-R%Bz@b%)S_{$MTd>`L1+_B^BG2y3cZ1;I89#lm^ zK=eGz;)0CddcjI~5c@}C_^inV_v(4crWfH5I<GvSW8dBI0YyQr`T&rgF16Zr@Zi;R z56DFKWnI^}<aNfdShms<++V|smS~`h2VYK&JGkV)E9=U>H)Y*acC_rCgUOl$N$=(| zcQPOCO1b+-stmrI9M@kcd>Ms%`fFa!-4ox<j&*$*Y6JJ2nqJGp-oR%U#YzkWL5Cx) zrN-^2LGR`mH%SJKCTrfBvhE5h&}#@K9VWfoD&0G|Wa&Upzo~5oGWc=<kXkC#yqt9V z-8;*Z?psUnIt(wOU~=4R!9BeUvZvpE^d$fZ>eReEWnGe5Uj2CY&Y1ghvC2rJ4%zlN zU2@6L#sippXJyh{t8zJgq};dcC2th*c|bj;#+?C~2*Y8HE)>RdJPG&gn({M)SxmrW z;+Q+d@$Ujt%c!38?kWpmgoUKsK{LKLg67^9c5aWuINvTbcV^1Zgm(3E29`J`nK<O$ zh01YP*}Thv4zwQ-P|80Im>~{nG&Szn;LB&>`DenjdlxFeUFEut=5^@jh;4nN{G(9i zNjtY0e)|o?(_Vz!Uc}Q$IMz4dSl_sUeZReU&Gx=K$LhztnA=0iw>wPTkLhWSwJ7>~ zT$d5EbEm#A?_ZbP6YuK<D#w3Nx2vT5A5LU^R_i?IJLRwa1TS2v!WPG`Sb$0I-&!e@ z^!`O<lkSledUr^<uN5da9Od9%NH^*IbU7uLyk;o)!JiWqVJP^ulzWs}a!sGm26cqh z+-soXXv+V^@AEdem!gH58>pGAc}<cD5I;_~`=CGpY;|BQ)m;&Qr?pp{GQc|;LPN^{ zsy=`U9oze<R&22Ynx69Dqx2EL6@nAM@-fqydJ&*K2We_>Zvn3Mv*4OwikkKBKd26@ zrLBgJ{_Xz%FkGwN1J~vNF4weZkYzZ8K^9{v4r0oKT>&&;=%WS_^$Ld6B(w~(VRb;q z%-P85Fl~v?oDRrX7ss;D!!>a#;!bJ4gPT=Y2!?p!c`5g_SqR0N$Ih;)H2`sqf%cm} zm-L#Td(#~(BAf$5@~1@dA#;PLO(~Fk+o23s(RBYx9N%iqLWhQ7{sMNI^i~V2-YTIu zV1MVbt&ki?^TNsEgWf73!(FGEhTok%gaVVjGYU*VW7wv<&aicVovK<(k46my!e-EG zfqw>&j5G*mqJQ_b;))K63#~9pZ_W2<A>|%)O}mB>7|Nu9vza2p{ee0Q`2U^d8pUc7 z+;xHh#%LCeJ?@xzq&SN}=s8qilXlIqvrwL#a$BsBHwAt<?ltLr1{(V@`R!|7cGszW z$6u#@lioZ?=FiMBXB`D3Gin{3(mJ|F957s_W)(HFx1I6lMCAlbCQiE_xBXee*3ve! z4i=7((Yq=4)aX@tRIR~{&u;DRpfxnit+3N$?(8VdotgKiNpH>wSs_RQ1d4qC)!9wl z6Esoo&gSxnS*L4`qqQ161&!_-<&y(`D*g4n{PYO?^mFgaPpSKMwB`uB^mE#xPbS`; zzYgeOcqk5;(p%yK)kpXOn$>y@^y}X>EbD7&IY>=WAe!<%L&zNq=}gG04DAH78Q@t9 z@|bk{vT$up`FUKJ4OS;B5NTw)Q)%TmGb6r66RhE+|97WHi4vP?LLsEb3BE|u|En`L zDhY=xY1vv@%A^aRf@BI7cVViFx`+`^0_H4TKy3@RAus_H0SND^6I6oZfD2p&qEn5< zXF+pH1<M6ZY~J6b5T}(zHiMAXu<UVM;3ZL6r0=(i%`ug<*lJ*)1wlC8AS4hb=gL)e zzdYz3M4VLDmFk-BA1{o0ABP@;RTNSa>w_da_j&~NWbj2&CB%v}E~)5#T)c4}L>)3X zNt_X)mI$OxRWn=#8KcRd<`@WByir6PvemPQn8om3B8Gr<b4xF5L86LVlAelq|0qQ? zWO}1iC4iS&6%daUs>v{AnA%gr?mAVr+Wwjk;Eg){f_{Oo%6?pYB>(q=sP@HpW3f3p z;X})R5545~o3PHLQOASyNB61HJ?yMI?k1JywZwkZG&M)5OiXt%{V_52{6EnOdM}&6 z`33l0h`KHISGb5h>HSe1pW(gHTPv%<S}~PhKAWup)7Z0WhCOv22h<aPH>+P=G_pI_ zi!snQMy^)G28n~XD?&S=w^Wt`H|S;J&+>l&;E0IPr7~SEp3}g5=y+?4U%p;dQTVwj zxUx-_0*<k^!1M_03hb4mcrnMwg3u*0eU5*h)c%4sfpu^`*1`FK7`fkA77p(cLiA*; z3)SoG|C;dM^t2A}dOx{OeQ;0PX7(hw*38X!<Ug3K$=h77#5IVlg~d00<^j9rY31y* zmVo`OZx`|peT1jO4lW){Lr&%3N*_ulZi#QU{G%xUOHO}-win)S7`HCS*&WOix2syM zx^5RXfprqc@bcCMxA6W@(75z|C?vDozJjV3tV-SNe{jh@qvG8sG#O&wm-K$9FMYUX zG<=p@wo0)k&d70x3U!uKr{_>j9{TLYR#_WVQ}5Q&nX*{cn$K$liYD{?6trAo|KcSB zRLB{MEz54%L*HgFm@Wn`a5Ck-d+BDh>2fIPt<{CW?tSVI2w_%g=5<<MJh-O--Aby} z<dg0p_dbCE(gO>PvdM8Wgo5IQuGG{0RPol{X4)1UqpFOwyNW{gxI?f=hODvx>E37V zH1=8$ymv?$4VzE8?*Nx!^ZQ`)h#40D;2!aaaD4lw__AVB{@36yP!SjVb-7t6Hd{1i z?kEUfbPq-`y1}Coz3*u-FlN4nEhFKJY<9C)GubkU-&^5aX5`>)bV~=%g~}L={?|^s zS&W%%dCeijZ{WW$Hp!)|1MHdim%rp)L4n_7&wRRI&s^$o$P%_1*fRsY%!uRvD6nUK z5)TZTg<v@4|2+N)uqZRaTG|c+NqWBwEE-cfDY;sd$@`&&vt;s12*RZIzl=q*-;n!{ z0*eNX`A{GR-LM_0*k-!+ODd=QN8`q%k;S?stQwd!ha{I%{!ik@ruk7|)BGr~X+9AE zC~i>{699O+AfN@HQNkslUjj1mnPLyXH04KuO=Gl$qJS1O#;7sfBryjd{QZ%^mkN*t zMokg22@J&jk)Qyn>Y|{{{W7p>LIL*gLMDavY{&wu=Co^C6cC{aD1<SZV&N%23apw# zLXt6SeiWEBKT?}~Wsjw@fK~a9SuKH*YF4q(FV=J_SRw&a3Ra1c-PsZe?*)ZL!MC}k zk)Boc=-E{R!v^7<HNsm<Ae8%OErC<-w*(-6xNVoi!tJ#mmF&`)j$0wh+zA-&KO!|? zTD|=7)=Go~4D(#(R%A}2xTn~&xTm-Fb?UiB02$6Wn%j=z(Bi8BG7P_U?^CA;F4eY{ z4jUuqhkd*RofrA-<1!J><>N3g?JMoqbQw+*G6iu#!&SYt2Wd*yj_KemzH>JFWcWwb zYbZ#>Yc;3=(%kz54_tJgCe<GIv>2+`u7-%g6Y^>!5=Tu%a>`n9-$M43fVqy_uTP^G zu*7iHKBHIHN$=|rQw_itmz!i>aUF+T652c%ER|%<{wY6_S{|@nIgrF9s~!LAaNXrV znDqFTQUELTX~=w}y^xKc)1FjB+6z5MV&h+j>wX;{lK1t3x@fxxS+OB(gYcyT0YKC{ zjepCoc`G^Pe@Qu~B3`#|mKk4tA?`$W5B~1o%y(t?P~d&|uCaT@$?m}u-htio7IqI> zkmSd+DfbPh^!9k4UA;Y-c*kn}oG8t|c9?tctfhHgg4KF!uv&|rBP}_@#zL$ceF85< zNC|#m_h6NyQrudGP%}h$z>v4$&#G`N<<CD|sA05h`7!c=!{{4qUK+_|Ej?@|r3FM9 zF>m;Wcu#?v3JldK5w{wHr>H^rfw^-mB}azoIq3IY7PrKp(I1M`<_D%u0fbX-wj2Q% zn|BwY9Wy8B-fO{PDbn>*JR6cmiUwn`Yo1C@c}OM>kd7X4VW`HSac|}7x`Qd784cRS za}_LcH(N=kSU7(JWnY4P3kw9pWC0dToI|5coRF#wo2+jB>wt(uR>$a%o=tnF0@^bj zQnP5{d_CGcCF%V|fo8=eFs8z(9(*x5P81+9s+ppqu<L%k%v&pt1~(|zUV+pU%}r1Z z3;;8R!Qh?(!x5)hj4JgQ+zCdZN;TW^|Hf{9VSmy!_QP4W&SJ{SVt9(4O6<q?@ta?Y zrDFU7Bk9K8Ie?`iO}SU;s%JlLESP6Z`t5OTPlV~OshvNg9fY*w=JRdFvZ=El`5YN$ z3z^HVgMAU*5<VV~J&Ul}5?Bmh%{9?&?gA<8ZBkm;!_yU?J?ylzA3OTo8HUI)^JOYu zpNk0Y_i%Er5n{n^uQ`uKSa2bB!f_wdh7Gr9@C6AyaZ2p~yAo~VmFh>=2j94QNUsBh z#uQgP(!lx{c{RtWuLsrbV`yBClY2-H1KQ1X%{L5eZ&??EjhL4{p15hrYTLH3%KxUe z+rFq2_AzxD;W!&6`VI<vR*d*h`HTry<`cRZdsu@f&P-o3Sg<PNDvrP6VO<-X@g5VB zxKchq*(}aD8Q829lh6hV9Rzo|%hRLNi^j|%!1A#HS|HAWt#$)`;T~D`C9#z%GUt`B z1z@|C%gxcvAmFhqaj~`HK48{HTlv-c<@P<c$?&7|pbV=%{A>2CNuRWFzV?A*nX9$u zOoHwYc)!BBK4j9f*3u)$T$_0DA{_RTCun&w;1r=q72vY&`z9C=YO-DK`f{F|CzwIG zZ}q+U3q^bd#G}7LS<=gP>1NZ`#UC*UGP`3nd$}2k5_c>I|F&2Deb8hM0vKFzMW0#> zq%HS&KF!wFK64LF(o$?&>>{&KO;|TulpCeG&%nH{W7k1fUfo29VG!264&0di?6G~0 zfvnMxHGO5-kT#!2;8~5#)=p(~H|B06G0TLITx8vM3u9x?dKF<lDfao>{u_8^3)|eT z!~3<}?yjD<+yMplbujsSw98t$fd_3$@+}ildd)V+-HxE*P|+JvuEXSL*X3;MwzI9< zHJ_73ReYsMp?m<^(VPt{>6{Fcy_49H1o14vjYgbWVHt8xCSf+w`OH!w{h~s(RjQ@! zeA67E0dzCT(1x{a7gL<^%n~Dlp*`#Nv87LWgOH4Sf*{1KyH6M0{Ph+SwP)4<NJ(t~ zN`<MJSViCr|AvR6%}M4-TdZZv6o=Gw0sa*3@DjH$YtPepy3~fwlwyt`)qpghhWmP? z9C%tkEvq}*L`EX!r1y{>J5yT2v`4U&=WEHc2>H<39qnnC592<dHBY3$l8k@F7E_Sp zv3P2@+I!R@q{<pTcjPLFY{7CqZnKn_qLqTqYcs3YGjVwUXozl!z8biQw_y9$pJ0M! z@JW%BtYDWsc0qyaU<VrwUVkIyF%@R_y|i!p&xOtr!eetiwUR-J+0kYlZ3V<<_Rj5u zVhk^^?o$vE*=A=sLxhCavWC|SHCPI)?*#$O%QLzSiNJZUJZEln;(H8!`Ip(Y=f1tL zhlVH&U{W{tEGX{wd@6Mj^%&d`1>>W`MI8!nco0bhVgy!JSM0JSf1GIWq?=l0=MF~9 z*UY-PV0TQoaQGf4lMVROSU8v2UW8BOt@)Ht=tfv1Fys{9Zb|cT&5#MBHnEnH?yE#p zG3bC3^X<Gfz8y*GgG|hI(~fKW<_ie?*$xGb$)&mo%4EG)gpGIshrhf{)M4G*FY%>t zywrxMzG=XkY&}j80F9eD1aC>#&=cre2Lpas3^;#`YDUgxn|f@P=5)96yZIHw6S8jG ziCv!uWs21J8ji5R7Y4kPWQ6&8m$=W=PCnbo&DbI*#a9soz?`(KR>)d7SU%C~|5b#~ zma@uR<mXB7@pSI3G5S7c^~)JPkKEM3t#$|xb-^h}&PxwCrTWlZ^KpV;7Y7p^!vROE zP=wed;*fOrQNJjGz$jXUgK`(1R&#&38IQJ|<$B>F=C#}v)?MAD37GmkH_<T<o$1`> z;B3A3!Jr7A#|WZ#lbvNu0w8YX_Pz}P%A=hvYv~It7(xnegiWo+7f$q3m+qoF=4u6} zR;Jv(<fqLkmvF7hO9{In&`}`{4`?XF*b*CcPvn%r54F~i^ODI47$q09l`_!XoZ~P> zya&oajD7ioW~%*K{DDlX;a2BFk|;jK^HsXQPA*@rO7|$t$E=^if(h5X1X9|41@tj_ zSKy|-5_O^-$|&e-nUHt4*Bplh|FVq6^sPrteJNj&f=tZf7hy)HS}RVGZ}6`Il^--; zge58@C}geJNVe_$sbq!i9wRJ|iw>;TcA78(L)(fXJmU6P$lOTTY2vxcOLe$~n4nCl z?lfx%zPXu9u+`q!F`sj&EaL>{^e${?E+sw0o0=QA8SOGYNW#5lI^R=nB6`b@`gfWm zDUBTqFQdSpq4`LTY&@qFEp#lrIMPXAY*P@^uiu7pI8tMW!u6g(kd=XvVBlcFx^En4 zH=m-o9mXqCbcq3&IqZEb=}(Wivlc^BLr&9nVWym5fJrB~<b{$+yx*Ofrmn#~bak!& znWwm?laCM*><3*;cp8i;8YkmEbT{p*a*6=Zw}=Z|?KI6=ERLCk#BKKl+ug&L%Bn;v zgF6^cwrR(;piq%!d;{V+HAE?E?M{2}1@aIHtN7Au)}PClSU3-GLYi%aPkpwm)K~3j zRENlFY0kfH47GIoW#q)Q{?zSga)q+%?+k#dNO8`s@_Aw%144Gc<Cu!2R1C^0oA$0V z$$S{#?BsfreBQaqH=E?KXC-G{wR0Oe3c({Zl8?uw-Dj=VH{oR~g&<ut26A8E9R<Ph zXAeRBR}H0ILgi=keXaja2H#tQ|3L9?UztpF+Sb)WMB$xpTUQOq`L02*LNqu$g4F&n zti7Qe&M-y<z+uy%fUrX@pQaohQz%gyl+bOMG$AyoL=0Dcp+r<An(rc4*ii2H+;Fsz zd!EUyBUeaK?nG{nF60uAPu(w&E8Hlzirdf&xg1gA`<K5*uJEJW$%QP0c4G%awOaoX z$WnZY;iO%SNUK}N$1s!b^O0e9!G`8WqQQ3&!MKK~So0Y#D0oLE!a=ARyM}6rc;ge- zI-SuOn={S2sQh!8$g8Mu*ACc;!}>O+S&UB*>dRu>!F8LF0hVJ=VwW_4=0Ei67OQD} z;$u|=b4nr0<@C1RP&W8Qy<l~9aan$*bk=Gu`b=qdRi<>oO6HhjQd(@>*57t942qaj z^d++>Bw{x(rzLIeN$c8nec-q!pK_l_MRwTM{d~uq8wS4HZkKJc+I}CmJVPQ*R57-6 zAOhm61F)5<Xk}3wWl&WeDII{*$r3bBG*Uk4Y>s`D>&W(KU9_5!gu1AfHYdOXrL%Bo zTTG*%h6d^t>S!+}1G;v_t&7nr)``v4zX&=Wk}}hoTFqceYW4yJXYXe2ARHVs=`yA? z<M}1#&%-hPkpGaxc>foQ@xNkq$;oAb%>up}qnuivEw!hQOS!nD2sOohQX@}vF1!Iu zc{ADqdx|qP#*pG~peWDV6R3fF0g-Raa}RBloSu0PnA4I9b`0C@|DV_`=nD6uHmszP zEez`p>E8>MBVHI}!zOspI`;uhGffOxxj#lEQj&8*!4Z#CD<@%Q_w)ZXtF4txq~~Nx zOQq9vQ8p^`OWZ#i1$vxaoXe>1n!BH@J>g7I5}L2y(>#;UQid%6CikNNLzK@IPKy|W zp?>$m&pT*x8`(%PG4h2HRNlStqpTkF4U1&$#JER;Z@B7QzfKQUEZBg(JDzOR70rZ( zi5hFZnaHzIN;w|Rqp=N)VKM7@S#Vi5&sj|g;)3C21TrDoeOLc9Xh;N+0)>+ZBIU9c zYiY!wf=hqVG`KI=H9eE(Po!)1ZqB`BgmC1?wDOS_Vh>p80+nmv0a^q@)yL}j>ppO& zvfU#qr+b-)V1}qphQ5HVWjQ~;F9IB~J53C`%ua}_tV}pP%j(=((EX9fztQU4u}1wj zrlh-@lmDTushdCFKp(?jduta>S72?<5p)GSa}%-`jLHi~W#%Wa+01Z=bvJjfaDf1Z zn^Di0D9;SC@5ecm%BG8q9Ub^y3I>?~5uK)1^0NTsn;VGDykX<DX=O1N97kFNb5S{g z?#qs+D8_YA1i}bZpzub%pvrd1m>^oX4k6u8x6&)a)C)dK_8n<hZWos(U)_^C!I!an zP3Z?jP`M$=8%{(vAcqEnj;EIqAx?_81Q)PWVxCZDdJM)kl6o{OJDx*z#niULVd}(3 z1Y{vS(b0T6pWxZ*ZZDk2YfeD{>R-zZ4Rs*=E&vlcR&0{En#53nKhDjQ+`&g)#UJfN z7hviCiDtgx6qu8Sx3hFYm|=L}tp1ClD$>kf@btX3Y>P?ZejJ@2a^DSYUeT%WoFB`z zR7Rh4nv7kHf$TdGH_MXqjn`}H61YF%+<Y57wE<3wwRps+;_ZRfeEBM)G~fFqK1jaV zE#clumsnqJ&>)Nn@!@vlKSB%!kq?306AMfr))@S!>XrPz;$QSk1rUD+bP%|}FbL_M zZu|XWu8h-)^@6^bo4*~zw()(jZ_%}QT7D7Pfj5OghZcSSknL{H#|DOnja8bzk#c8Y zCV!O6n}ETfFu#H9N6;Zl@|Wrfx+uv{)DwK8B!3Z41v?-_Y<@k}-EMQgT_G#~ZPE(* ze&If2bJ={R=`Akby2hVyh~{*@<~Gkt@<mj4{XGoGmP@oJ-PE3vMAyyp{@<2jMw~|k z#uv<G--rxku-G-s)HpDs&&j`etzY@)@@;bDXlL4cP$!NspZOZ}Ear6<pZDTZNRd~Z z$Qe%5aOx$yAuZLmWu?sqPViCQ@Rl#*X643sF8adI(g7c$sanVO3R-4`p3Cr7@wnJp zktES3wgluE?#ACwkwn4WC;{i8;ao70`{?-Mh0|F(-sE)F;>Z!jR@}@EOZ!C5HMG3U zv4^(*&8pIBzL`Y@m)t-wJIxu+A%%jrE{-|w5OR^^TGfrgGHN;XsU^|Xl7}^{0y0{5 zsuup4z@nMu6#lH~n6pMa8~H#pg(fGP_9||hNPCm1dM8$JcgrE$TdL#hS?|}nwleE| zcQt=f-h(UoBUfD)#E{~WqSihV(oIWswSrBQRmvNS@w^%nR&L!jAP?&uTe*|VBD5^Q zRxO(KGX&0<b3B1v&GCt>1i<;o;z@i6V(x<A;j;P7I)TCc6BZvDD(nAb5Ldu3z%X{= zq-n9aH|W5ICWTjf{QT)M;$LnXUihcXLCub$-56!fO)9yoj3Gi7cgJ|EEt@xv*V;1P zISOmezfVj&zo<JK8O%oBv~&F&a}7iuE&=b>)gXAWXUG)EFnk^HXjgGEM`v#w0=LM! zdt!#G_uGb>@6<4}O&>=glnYH3Za@#s7fjS8`oTDutc8CDm>D;K6BvLmHVvLw0M&7w zvq0q?P(?KZEx>s)6WNn{JJPbAnU>TsE10>{b_GPSsEUJ*pZ>166@A(6cY}1U6SG#- z1)jV>x$y2-jyt|HwVEXe)p6-d{$(l^&j%vu-blH>elZwF;Ce*uM!d!Nkie_*Rt&OV zrddl(w7zwOa)?LAyNk`QA(8O^VeLHNqbjz?e`hvAKy(vC1VITJG@(c$7Gh080via3 zVgW@2Lsgm(iUk3a0Qaq{_?`$p8}B^}J{uMk3zC46s80bE!H$)zSg=tQ{@*im@9ri9 z<oEgfcRqLT%-lI=+L<$F&a_z|$aCk^K>%<M%54e)hG2k8Lit=t_k>`I>i|;vW>6kg z)5b_~3zZa#Y&p1Z8l9y9Afs~JoV`?DI{Usfj3M-;UHdLIHQaY8(+r6Iatg}oH1;@V z73NgWxQXPYgrw!Ql}v-UZ^qUKWZx4>?-40DUs0$s_De0yK<g@39m*WdB1SV-g<?VM znJ|XV3>;_m`(SAef<?cCg;GaSD|yOPRoRTi^dWD;0N9oqo&ll3v`T0;8>#Dndt)<U zLU2Q7h?2NF1G@}@Qu=4`C&vI}pdT|g*%vMm(y=qs-pMR|(x}e?t+*e~?UN#i!+j7M zO52136_r!+!xh4H>uG$#hjW15%_ShuO(Dh&QY+-0%aB(U1@4+oGKnR>)uhY8Gc<gk zV4(guapJwz7MHszVefXHD-<;#tx(Ck4|o4OwU(qrOC{p4Xd6=GOoNU+(y7Q?X~tDk zFBM)^E%6HBLac<9CPnypMPZW!pErjh#epmuk>!i|(mJweNYfz*Hf6ItYO!3@{B^WB zC`7`DcEm!QhOtI#=#xduTHs!ZX5^Aex3ID(eA^P@B}aY3Jt?s%%k%bK+8y7e_!7DI z5!GGoSGUOohUnPA5V*238U-C>F3l{SgXKiHFS>|Y_u7-~4~rvahdr}}=5APyR+rlq zi`?JL=4yMcy1U>UVB`0}R&&2*?4EG$gWVgu`&RBFFWcFoG+3`L%S<HuN^8SMaj{_h zrs(R5i@{7foob^Ku(rXTpCP{8!KdD|U2y4{0j_(oHw`jV1WV^87poHVw<A_<hCEOe z+bycz#9})Xe=<afO)GlWTDxUJM4^b$RfOCgX_12F+TU7@mH^GKZDOH>UDY=+%<jt^ zM1^cP3fU_d`CbZ%E|XFU`PVImB0ZQ3H)1{UXUV5Xne3RuB}13_;R=zRn9p#HH^)dI z<b)T<bX2%UR?e#6ZI|N#>eg~iYbbmpSH!&xtErVj^1`i<!Hzp1i-CZ9BbO2Hq(h8d zX)HGplP$m=1I&XsJUqEAbG>DI*@Z5bk)rT3*Lnxb|7ilr7>g1QKE;KwXzRH8)r3nz zGi5GYXIHLO&=j~&bSG?I_jj&-@rGlr8UKaNh3c-kmOk90l`ns}T<!L4akxiHLFSj4 zYYN=W=9bKxxFs{vcX4~jh~o%<%p^UZGw77^atjwzIl0(EY`fk!z+RRaEFVCvg$oyl zk3u-(&S}!eJ%1Y<uCT>}@-!Z&eK7O3g0M+q*rY1&l@^p+am1WU<eDB;6zcF<x%d9H z7(LSo#P4!8^i1go%l86Y2Zh`<I}6XhhTqv@N~%W*>{r<rtk6b!HN8f|q!WI57I`!k z&8GjQ33eGy`Ti-8hb4v{S&+$5aWawn)BI2(f?9jst(o)XYTvMsL-c!QQ%16H*OXSZ zDJ=?pUvxF;jIWor)o#?lzX}(5sz(x<f(!x{muxPo`Z};R)%HK8Jh^d|K;Hek^~>~= z=+lD1mS5g0S(IXNWXj@0tB>NaIg0@eSu%0U9nIxZ4S!h=#U&+@VBrM4BT3&FkgBh_ z?)|kxi`Uz~Uu_N;pc<TNb6$hssV*}sGmNc9Jotr55a}Z6xs*&&?@0NHoAC>WGIF>d zDKas+bO6`n+Ibo#;THP=&=?Bk%ZXw%16KsPzDq><;=R;JU8tRSr{PBU4`uL1mmSKg zJ&#L2SUKT-p7)AK__aqeR&)#Rv?ohYxU(23giSKt!t$_5xm!5T9$?@W-fGpV%yj)< z%F~>$;8#cRssDfVL7n>TGFU$6kAu+B7(RM*R1ogQl|-)5?K0<OE`^4{y-sO(4M5m9 zG;cx#%h%wK6u_w=@WE#Aorusf>!0K{+~8CHW5yxP)WxsGB~?WXAvn5uYx8(}2&vUY znbk4Au^UxWoqmuBYy%%Q{586UPT96r!{Vd4xT&t%4fKG~XW0vEK1O?!p@vR}AW>1# z9X0f=AwSLsG%JDR!W6k&jg_z5<uv>IdE`2LCL>+WOJ+7|6PK__PZv4oicr;8hjGqF zcR4r(@iJ+8Y}%d6=;=y1c8mLc8A1)0lO7nBqFpEo%n|;=4QVL_?sq%hb^9j;=k=o# zf^=mL5sAEF8%nD1^AZe^6k@${IhzZ^1?Q21EnJ$`*WE!13sfyiXz;(!`kZi6R`L|0 zD|ed~g)d8!<A?W!P%@bH7vZLX-bpe-eNLF%mg(Nil(+;#_yvh60a0+?V|)taC&A0_ z%?n?4TE)9l9+lC~4)@CE@^W6M_d=dq-q+pYUUF-Z`-fY2Z}4^nb7on>b0M{d(fN|< zLgB%TW&Bf)>|nNlYv80vD2e4;Ta=A^P8DaOoGW}Thhr#jpDrnqDbPUS@^CU?7IQ92 zZ97%CwBn8HS%t%h&CYyrvu??yQX0sKMqZFP?EciX8=1&IRq;A&YV6R>zhkK&Jy68X z6Bt<qpAZuZXK|JRk@#mZOj#VB@f_zD%nBPMC|IRuXTp0);AT;FdJ$#Vh<4_?=NLpq zCFf<<<hyoem(<TkJTQrn8_r}OIxLB^I*KDhvbZ}qo3_Vb;nc!#eiD<GGfG)oM1ia= zR?(63!wQ*s-lcR>40(!jK4F^d@X5V6c++dIBm%_?gGf1FAUH689oZLIIVHDNoSVdn zEhQg6qaTzDf>K4(uzK2RrfQ1SF5<jtQ4!<Sz9<}TnM?+e;HwcIB*}=`f1qiVY?~`p zSE0c{ff3-)lN=@_hU}btGoiPUAn?n$k4Xu0?l>pR5N-ct^cph6;Mk6fQTz{L%2Q6L z9K=Cvsf-WAK7^Ah2mWsgvj=igbZQ6?Gm5y7Q$2>DLhSk$-(NG|Uz4<phQQ=k@~}{9 zN1{b;U&84nS;aYh=LgHAF`IPcg{M%qGm_Ze7r9UB-!EHK4(6OI%6Izpp^`lAHEe<M z$Ws#KaC|~}qh`?S<iX@`9r=sptG6Uj^7Pi!Bgu)RSJa!S#-C0mRvTR66CBi=g0UCY z#cE)u<O1Ey>S<5g8X$2MQtk|Asf4$KxAYW8*l>lAox_4Cmqb60^Xb~j-`h4@QH*E3 zfdcfzr16KDt6AgH{=-OH70oA*$4YiDgH<j?UupAyA<IFkl9{J=FWi~AivK@^4x?Wn z&9L@$QK)Q2rBj+Ow@AWH&Vrpl&y|ew8BM$`jfOD<qlKRtx+ODCv&yXLP-7a|mdpB5 zbLX2u8>=N?310xwS5{C>Sq{IbF~g}sS!Fb12`e(T9wS@Eg9U%e(u`vDmcYy$jF4Lp zPH&f2^+!8o-^?{g-BUQeu)5Iw4&7f3O{J<Zb9Yh6yK)#4uJt6XF~_UOhmf*^4>@Ux zgfltA0y{3f3@;Z3w{;=xn7)d&8_OkhU)Iu?8!MR=X2{MAg7_9>M%})*=7sN)gOEh& zsHzJxzoWzB<3`&V72e9|Up_}CA(9bMjpT^+P+MWuQ<g-Z$Jf#i{mD+ROOXq>q%%oo z48-w3{b3T_DRsKgfl{UJf=%YNtkTro+OjPHcMq#WO_1tvZjxK&R>=BY`Wfab-3qzf z#3<?P@IDmD?+%io21$i1J;vwK*pktL^s9{BtypA3)ba{9M(1B~8n#H%ZB?5afg07M zHv%-_IRx0O=Bemzp_cM;YwYPXq43;F$^a^OL^?>`56t3?Mz|IB%O<+AUi5;{tN6*s zUb(XU4<OM_hR7Q?LxtyxRuWtHaIdkvvckPa^U4VK8qO;%+-oSWR^eWQd8LGV4dj&^ z?sc*BLrLk&>2Iu%B3&kSdX97DWh<#i5^B`hyXEx6;M@VH%U4t2;dbH6hR)vO(BTGe zKbNm`lJolTF5BI>^rW)gO-kFB?LItMev|P!qV&kffW2kA+XWY{3O@ht)@EgU^pqd6 z-$j9X|0*CW_Q0!s%ohx&kDd3SYyjQWI9Pt7VA$0pSbnUrfb%$GIU-oT52!@Eg6Zi* zOrv*HK}7pX^919kKE_v#1&qs#<?#8z@+1ZVWxGImH(vEo4vC{IG@Gl#3#If6!YifR zt9!{H!f`hiG+}`Cp$U7R&}6aunCOm+-Del`5~;en%oHlF>at|%*7@Pt%ClCNb&q?7 zVxFTtTWtr9wF~zcdU%iFhxZsAoL5RQ$PA;<c6fy$$m)u9xGdU=%~<ERG*putVs!z8 zy<F4|)w!oh2w!1HBiJM;+!gB}OW{4CP&hY@;bE}6tTiHA|D-U(33k?hl(YWk;V`qz z^&HAv(<&~H=7q0h&A15v#gT_31zV3We3HBUL{2@%8;h|F=3B&0lRQMCFBrN@8v8PT zR56BxSx){tXW)6ciY%{z;TV95O1DCm&j-s#LULY!a3~86+zDmVQBt@Zm|NXgK26WC zq<drAxIQ9mYJ?H(|7mnfc&P@P;_%B-PrhB=zFoMYZ<iW3cGQ9-x8ma|43xY&T3*S= z5Zdvh!vp)5eU%a{&n3axA8$SEWr)=DM|Bj3atFe@U4_u5UCb&>(bP&6ajfv3jNk*S zqN{Pxkb)IEjjw4;QL)Rl0~KFk*&4+<a(=MlW*pI5`7`yx09L4G>rpX1g49#6{6-o} z!*%s(^eVpPxu38gkbPvVW8zT7r?#-1sYm3r(-`omcihNL^pBBqvgEudRw3FFsbGC9 zmzkSy!Sb2prl{n7uch~u1@d18L~jyFN?|z_g8kejlo99ep<kQ36f4&glj^e{SZ?f( zoFWx$7!dn;i^GpdaR+bPj<>ssCCAwu&5k|+Y1}LmmTNx)thhEw;n4P?lDUGXZzTP- zyl`Ve^^GL0%L^}*W}NfhO*NcDXzR*ogubhuwTTb%6Ls8<>nXzaBqm0D7sFM`S7*{h za{E{9OqK@o7Rw0BcDAzZuoaNi74K8h!Xc_nGaF`XpWyeou}K4{fUc@5zK;3T#%!V< zvEjDGY`?{9J7cy#Vm60rvJgozTXM|SEM`lI*;>SGtzx#eF`G<$T72m-TSm;*IcCf9 zY}1;A7KO_V8<N#Eq^qp9RrdCkmsGn)<+-!WHs|VDvP16}@}E~dOZL#gbHysVVx-LG zyEQw0GAB7!?QWL2YRsy^r|jD|=H0&QICr&b%p3jgW%tE;^S#4kEC*JsZjyDuEW|6% zlHJA3tFxSC@6ahP_+84vO7X6qo6AdnSVNxGUAJRXlXaZKxMN)hz9@ID?5K<WN5;sk zC8NH>E2M8{eI6<t$xxmMU^8EYl+oZK`j%`girg<G#tfwna2&hPi2IogSlt~mqGjr@ ze_r^~p$wURAQ;qCQA3#8qYDsNBR4a;`3Ua2nARiX9D3pJhl(V7f2D-2__(yitg~64 zHG+{?QS}`0lpkl6%JwVII^VO(8AhxnHR&Yt5=~yUnQ1WrtF|=5>1&Lzt`l#5Sl_oc zv2GS?iqF)f2^*;zZEhzbw(SoYCyOBjI{~}{2)IW|200wln6qwjYx)syhSo^!tEREx z!nE5^$z{wL8u=-Ed-YtA|0K=TbEU0`jc~%{s&g}pe{N^|=(Ac#p;za&6&J<6!Mv@| zW;u<mETBzK$T5jFgsA1YL||;=?q0hsTW(?smj49)aA<INevP0+xx7>o6P_yr7&Iu7 z2)E)KYDHBR<*>@J<GQIbCG@~N6MPfaX(7fcEV4?OkjtNtkGD?OjxR;DmpctEW&}2f zaoklb#gkJL&7lRMC3rAcOU+%1&uXzOFUom+8a7*?yv-C1@Qmk9shQf2Lk~JLI<nq! z0zxI*1lBbofE?w>AofZ+B2$1urUl`-$>ii0VBCtul9`&!b=;U6zHE5e?ju<6A#>^F zW71(*BB;HdDi(yI$4(YY<6uR5EPkaSe;+1YCtNwpymp3HF2R!L*0{?>YH|1EW$p}B z&oY%pA~N49a4We*{Y6O;t;<8yepB>4B9fkMeTMXG6E2nm{VVd>QWopiPB$lNc%7!# zn@4kYdY#=66V!HgVmGxPUCC#`dY!>K3am_&oS%sGR2<uL`v*#!u9P$xutZT;T3RbF znJkpfe#5K*$=+Ujin-Z|6`SFQgeHo^3#54a=6qwu@3yk0wimr2mDpdXo{CTHKToQ3 zvHUHPdi^Rd{F2ZY!p?0Ac^8$O3WJme%EI5WHE0OFO)3gJBeKMNaEDx`B{olMw{^Ig z*GmnxazhgZnGBU>sF(%PslA{EVjYOqz+8-z&s@3D6hLJIWsL1B24qrk8Vg9f=C+#p zs-S6=fM(i@Y*HvzYjSo?sX)LrIs0nrxEQ5zoa!yoC|I^G!zxw@ZIW_uzcK|dq(*j# zY?u6VjDoDQlIiKxBsQ}!uqDbKq(kn3BJEIm6_%vbP_Wk~F9pd`I<FU%y;Mo5(BFR} z^c6PDEwr-BK=VV0UXV+iz%B^!&NGL#hFse83SoVwGMOK6tEe3tFvSE6mW$9<RFa<* zda1`H`FX^U1x&4nYdNhO)Rny4$p0(@W;Dn`nN>w4?4{V87UF2z@Pc`S54nx=!nf3b z!R?idO}MDrs~I+7qHeDgY{Em`Uahc6RlB{?unD(ud!=LBY;0NXT9aH-D)ENBcq?jg z^er)fMPWk+?poIJ7!o0k>r5Iq@n7t&LLcnW?~0)$jS9iPcjV&pb3&aK2qMPhnXJ6H z!IlgXHn9l?>STdrnsqDEBbHRi$hf!(j38giDg5_J(n#>-ykN5{M40!6o~a9#02m4u zu!@cJh%&^c!G`kElQ49&xWgu-#4F%soA(y9-^rvTc=NXB_eW0sjF?2WEkF4;{K9{) z!JQZGJs7>(?FA>A;Y$GUK9IJz+=2C~`MJ>8Rrw*yP;DC&8lT!7e#iRTXQcdL*_Dy$ zETd$(VJ~!ZrrJ?Ct957hY7vac-9~P&7S+8>4-=j|vDn>6!+(*EW}mmPFLl9aikI9@ z<W<`tD#TwQ#6xk4mt;#ql+js5zaxJpPt_)SBminY0c0LbVfb&7H&dL2mO>Z-Ej4I} z2xy6jS2)x;+&=??5yC<NE#q}uhT!C)YE#sb0>W}8GulXVWdTXSqcD7Vk}OQRP0p+@ zaF^8x-muY!Fs(3OT<#O|%<DZ?w9dlT*Zs4|{U3aWgi6aUjLcxO)fTfP`A3u70=XG3 zb-`vyE6aDA)h-w5iSe2ht=Z5+LC9A|d<8i-Ce2({<bH$(RN^TJducFn(XmPzs0_(C z86JpBa1Z6Z9}Njw`9NkRTvTM~B6nAKW@mTBHat-8=AC`R*gW_8&cWNxLIlk_JAYvC zRuM*tLD+P(GaZApC(?`8e8~Z^wGyQ6f;3(xQi;g;mFy%g@iuxx3Pg~wCNHvFq|@b) z41M5UZ`|arcUy|ESrt7#d;OU8BizPg)hZTto_if(r+h(P1v+o}R|e{{vTr%Fi7i?? zumytUJwR5rmln|L1jLT8$i(4)NGy3~&0*e)UjRn`x_0)LSY~m7fIZ+ujzi-3o=r`5 zhhG-yxq~^VrK~)eQ!>8GUgy5)mI)Sjr*}ZhX4QllqR)41TK`>Wc69=ToJvIaGKsk$ zd{t67SQyDe<GHE8{m4clahhF=#P;U;?@UbD>$=S~$B9NRQaK;EjYE-M90hS>dr}Wy z^bQzf892E1vLT|X>`P_$+3xtLpb4wr&3^c3_M6=n%4s77pg<suT*hH-tpvwq%|wox z1@xcjESkCN6X2WFc;K~?2s!Y}?ez!Uktt>O=a;3N5wasv6r7y%H77tAew6tut0xs_ zRw+3Fw`g|Nodo3L>Ac`_w<<Xh7iB>ueqF?m_i^%OO`JKyN8^zMBbk5#{A2d2evC%` zW6sdtiexr{8!mU_KY_LLlhzUFW3~r-=aI@mTvc)&DGRSEQ_6OqIrWLzdp3iZQ@-rs zJ@aLvE?AyH734+cx5H7ko3kY3B$Dv$a#l`wp#&@lKOiUOxGbuDGe!=1wr+fSC}{F- zVPyXCps*A%SB~zn6j8wKpe8~p*H#8K+vH6l2`{Xi)swxBBpe64J6B>RjS{Cx&vw!r zzWr95UJVmdTM1c1dJH|rNTs03M>{r=UO7i6fn?;I9_WhN-0_jEMc1J3w$L2L<8Crr zJDYIp+gt+)g}4h%gpv7eY_Uw8jN%QfWP<3Am5h?CS?+q9r6z1y^vdQ7wZ7IrU?RJw z+gv${Cw#jcr{fyzZcW3bAP4c#BIZggBt!thp`>t%-v(`qYO>o!v8>jAx8w8KTZEjm zcXyj_PuSh9+?3KGtbw$J;%@XHcDWk`A{v9()oq?VY-hK2LrJBb!l7n1?V$d`Yv?;Z zY_fZ{Ih%u8e6!npb7C$6rsZrE+sy%@#gT<_noh9%d`QNylh2Nq%*vTJVe<(sao)?& z7t|9YogJIJdN-V6Z6ae4wjw9x_`F20*Wo2A<<N*Y=@|AQY(!#Yp^?BAgojdU#gYC= zk*i=RU)XrPYI+k7@<{P{M}SD)<OmcuB`-37jf9h@6@+t{#Qid_Y_+zaph}Kh#cHpr zIFhRUkjTiJOSG5@o_rbwnm2p1&<C*1B3Jz>gbK;bgaQkiRPFd^ebkbn#4f5jw|{b; zDN&E<7jf)eUgodDM>sd0_H9@R{F}Qhl6yy9Nft6Kh@>wgju<oP9l14Gi1q-?1T4)O zbN0;tk(aQn^rs|8&ZIGXB<Gh&&lY5U#S~AW%xxy!g0i9fYbqr&z;cgw+fw(_QQNW| zjjFTl^Ggn)*(?R%oxce;u99-LrC@7dJ*|#1reI}OeH9gCxW6UBZu6vkn`~VF69>~L zXYY#K{3oOv>9?2Ne8D;EDTVNKj^bGb(iD%DclovD?y|A&S7lQ2Hb$Qsy3LzqYXej^ z`X(ERFlGHu66GE@)GX5P52BoUbvV?*gpo?7g_`5Yq-}Z`uHQoCjG6HCR&M_kcef1; zDKyy?r-W|vMb6KDGtzIj+n-Zq`g5vGeo|N$xNAB{9QH(<Cfjgx<|iD+I|4j=Ten+; zemMom)wKQ_pxsIX;qLWe+`apONNKXp)Xh&S?HKOe%ob20XWB(0i`qW7rrRxsM)UpF zA6_UeH*8LWsh%sxN6PO&DlS_hwlwQ<e(6YO(OtT8<y@KQ;}jyYLaiVxa$k$E%-;R1 zC~|SS;xZF6vE^S3&OItjhPf3YQL(&HUfV>t6Q}!mk^02o@Y<3Hn(`sMv{F(j(*8w^ zszZ?lxd=#RFlU0JLaoT*!}f|n_^V)fX9;D6FqRlG0SUM#05jZUTSu_`rB+}J-zQba z8m2|OT$V+AWTVg7H02DBUnUFyOL`@FqdYF4<Ff$ygS{N4oW2L8(WDi)TPz+sPzp8K zWVZB(yn(tPaeNdC&zH2>ag!M%S-=Afj=VH6HFtQg;fMDceSNd=3o>}zw@~zw;0~5| zBJ0s?CalqCd(#(@8`CV-aF4W*sGHwor8tT}Q6dBEMEi@|Q@eIY#9V@s)!oSDH&y%E zWp9)vAl1RARxBpF+>T>ZGt-;9J3S?hd|fXhwMZFzyf`y==4HMmn?}*$6l7KvwBLlv zr`QdPo+q=~ec9-Kc2VOVvvqGjhc9_eDy0bsx8YhORxq=<g-C<*wxLxln>kulS3HPY z(i|)=MzQJVFuZIrvUezA=2}pS_7@i$sUgXY%zka}AtS~Q(I9yRSY7cOAp}of_ossJ z3o`5rKOl)>9o1)SLUH$mXAX8(yh3c574lE<NOgxNw$01ou8p+_kzBW8G&`K+!A`fL z9Um6EZ?QP3sHBlU{ziHW^bOdh1*|?VR+W8ows1%w3OZ)>=QDbs=WBMXEW0Ks>r*}z z6-Ys|{(Q;ZRFq?`jW1|6aM}j6tD8upbjQVR#S&72!Z)uvH<=_mdHe2?axE%31J#iI zw%OMWp`Sq~6kAWh`kQ7Mo(4s>Bc~R$A4+8TL{@E`qo-{On^G1+nTcRyRZ3P*m69LR zBLNj62cnc5jM^wQG#?bxSjsU+icy(D3!DGEv**;1O3tkT8~Yslx@!t-6dd0#%hW4I z$yufmp)Z!3(tKOPQ?Lc5^a+)jsWhs)<xv2KpQt5JwOM{lcS+hl&#Ug4EXBg&leYW* zF;J=yo7DV@Hw9lKRc0z%g?scD1{@G!r@S9AhDr_x;ZhKCegKNJFQ_1vCoEfsPhakP zonxd~cWrgWX<kENZ)1`BXY?J(O}kur?+mt(4w370ewF0Pb!2!9-p28|+zA}J4~=WY z#0PEbAWCZBTlVnlB}vRplU!!R*qVX1!3--{=28&6%4l$*g&{x3lYFF9aoL*bvJZn# zDLpIs=Xw(;##mE&3UYR<vj0i^WdCML&vp2%G46Fllv*g;rc-BZmj5ZWCYN%+3L5zz zB>1HR<-cctQo|Vz8M~)67x#=5R3c$f<&j&tm2nH<&6R%RN0TR9U4N8tLx%G0&nYeA zFw&?^SOeGfTS7Bw`x@hH!6;vOKkH#;nbM#)qEGSBUvK4~QcTK+$azVFc2YQls-kO6 z7)RofJu4mmV=xuO5}CTJ6*X37>J5E02Rvl_OyD7JgcnFv8r{TlTCfAU)QS|mWGy8x z=y*k%c@Oywpl?04X}&S<2hDq*Q%npY^`_K2SW*lYmVPEnhBMZfC_?VW<z&&uvQ6mB zU6Aa>vJ)q<Epu?2SU7b83PovXLI_5IkQgPXIqk;;rU5sFilaXR=$DgFP_od`IJqy{ z?iioa!Vp#piR*aJSSe`=aWz$C<WadR&s@E?x%7Ime?qV!pNmZ{=;P*53i~bjGgslg z2P_R8a(i2BLfV6Ch1x&EHW1ab$>X5c5I8e_7pUK<${jp^2#jeCYvr49{u<RL>A6xa zUed6XnK~qmn<R>lqp~2*%b#hn>6C1u-kpXjyZ{DKDe<$3u5DzRa#t+JGtZsM)`B)< z8n$gDh?qt=?-i+${Z+tu?(0lu$fuGX2})nPv_97B!zB`RyG3pzyIeWX?U`)XDr0MA z7b{~+371LljIEVjw~Q?<Y`7P;bbE0gHhaBWamlmN4~6V%aaQKijV!AnJ4jTlul8us zXl~Kjo|!`k(bi^uSsc0A(vWQPC~wB%fS87MbFg9@gibLS#u?Kv(vKB{O?1+o-F_;H zjDo;2=@g64HuGpG_kwdS2UXsfHMOu>2$2Drc^g%S9J9ZkUeU~V!N+NZn|ef&w$s|b zhKMUkHeNLa?luHRPxX(SH4uMRQV|ctf8S2tv=(y|2$a$h4lsm!&QkBoH39s+p=PuH zeIes_;U@W>fjxSf5Ve;qqLqz`Rl&K9jqjj{py24hZA{1l@kFw5Ms}Jt%nKZYEA^oi z-Xx&Plr5aH!baksXO&_CkR2O7#bOCtEMX7#kP1l+k(=@f&YfdR$*^!QSvAv2X$<B& zNs_%&lBCThEs=FLNt>+iL$$oU<k(~oy?mn#O-R(DCZtT<rI^sX4KAWEO_9#NT&ju* z?bXwzQ*UvS9I?b?BpcjF1mSyhmn*a6gsc<jFM8w}YkNNQ2?cMH?Sy3K3rYOsm$5~> zdfG7UiM-i+g&KmlvoMeuZd;LlJq`L$wsc2L6sb>4H_5zkE9J{F-(^E34{l_%@lAbb zmT@kaXq``F*$Rowv+n!m^ERa*=ahoMWY)l-zcyh~OazpQV1%*+f3RH6{UI9$o=6v& zps5v=62^@zHm?Osc!5(UPoG$7Lp-$H_<1`irSJrcq>2Q{Ji-ElB5YtO=;KWJBC{Cq z6ay~92<!B)4%&2c7N90m%SBxA`85*^#J`J!N{|-b;~FyPekWKzpGiBCTleHL+N<7+ zo=qXw5vW9bock~{l88|>IwYyML>z6y<pgG(4si}i>Fa*Odt|aXv}51aj_B!O!Cecp zf^*iA6pl7vGKV!$X1WrYVtU`4pMrB<lblPpI#m8INh6ueybXFE*Wf}C3*>me%HZ5t zgd>?o2)JY*ejE$Z^#g%<Qa<5f=zq%5AovyUj(2&TJff)FBACJQ#6iE9I7S1xaY`%c zPHaf8GavGcbQv61Gl;Wk2FiPbOnno2Rd9~n)XK%CqeXg@@q%Qa>`f(kn0pTHI$~y? z`@V>o<#%(c0Gv?dJ7m@192YlbWcx3_2MP}1N;1Fw$du_Csl%R|`3o&25zM5=W!|MC z^KOdf3gVK(<;v6|_wAypZ`eO`PDfw3%-J0*`zIkd^DT?0<y<IU90X#7gd%qXqYb%W z*iP|Cne=6A^%gT%A})?|;uLqw{ueP*Qk=7O8f&3EEFAi3(2DR-a<~x}qn#yVf+qzY zTqd1AqKGN%WD_UkR$~Z~9yqlknbgn}mZg})El9J@6|LlLqPI~qzaaq@0h8jvq*xe5 znWUKTQ3o0fh5u0r4bU0cVQs>6pq&P^_zp0{<-ixj12f^b*-rR*oflnJG(<n;IYsWb zUHRvHsa^LfJwj`y0vX{gC7mXY=vyW^&q{LepYQv#{VVz*6FhZCRT(ti1C6TWTX=yC zJ`)C3tQ#%A5-*6&j$UYwVY3+1wn|AJt<;W%qV3t=<WpO882HGDXaraVR<=1H=OR@M z-iRJaE;TDY`-ycD7a`=evgySWN{5Y|d=_%cn%rcTOHNOoI*JLoMKCDHOu`m(mAAVE zQ2`*+`%-n6gk<wJw8Xk==He{9(Nai85^EOBtR41dtqd{HT_h(`nZZ77sSKIH?-7BK z9&O=1`GIAl@YyWMjvMK2UJG)032zPYhDn%y5BEd;t^a)kc^edR#6P@%aZ8H%NLOcJ zQw*$3(GV2AD)?{iOfUm$gle<Cq2oHh_n>Ad$bo+jVYYD)1E7KITPCd6t_QD=J_b14 z!Y}9Ym*IPfvLr<z;*m!VQf+<R&E~M%mx4GT3L&v8-=Ym$BH)(b(*CA}CC4I?rjn7j z0_HQ5WLQ2`_A_ihY&0ivl5lsHRh~~zSyWxMvys}#j-KG{kC+shR0y5R$spT%iPEBn zk>28^E+ipD6EZuBI&Cn;W2CAYmV$7G+K=bwyc6v8bJ?y&!MQIJJJlzjNv5d>bEHiw zcYtn3wlgQ$r1oMC?K9(|qf70T5}dQfxRS)xDmdp!<Ki5f)Lv<DUR+|$cu59OIW@uZ zhu=p@QdQ>wn{1LPu~IuGR(1(6{qLP!!)BqL+u)nqIJAZXYl7t?K;Qw8Oxv}}p*5*( z*F}r?R(3v%RmX}-@30h6b0sV$>W(}5<i`fysMk<=5wD^2@I2{B!t;$#?SAg*|3ouD z!t2z3^c#>D&E6&c!SY9NRJ<Fnui(4|_+(ek-nFR%-|uHhu`q(@Onk$+gQaJ=k+R?j zDA`J}e&>{(NalWd@9<+Y)5_VE<~UTcW^U{8<N*#hcYn#Odhbj3&bczrihhRkPhX$0 zMVcO!jkZy`>)YCr9adlEy(H;mH?u=3SbPvVY#l)C(5S9R!bixr$gM(AQ5c@_hv=lZ z_)!G26Zpch5_zvcq6iAPs90Vz$?aS68>Ld<F8Bm?!r5ZF*o|x!&f*O^AbR=2d1vBV znDgaL{W)5Qs0!V$3Nklyer8#c;A8PrK{#;pNvKhoIV37Ce@j$p<M65PeVdoPja%)@ zRwc0*e9Ct{-K1`?oTO0Bo++=>pg2v<<fo>zxd-=N8YN)@|L&1}nav@)XhaQ?9x8Ei zj8E{^6!Ju$Xo`zViKK+g=F;l2<%SPXa<i*jVYQWCT^3){Sthzu`9;5Bsi>UsTD^*t zVEd6W=`Lkby+%B2$r%J3f<vjux9HCZX=dg0A8T>l{h_oqS*~|s6+LC=TDU~VxAP)} zFuJas4%w?V`aMwfw5w(NP7dC__&eb5<j<Es<a8p@c|Snp?zWNhqghzsd+~*6(KEnR z9C<7xgg#(2wa9u?yU>)>*KTbsg<^E0#qM`P`EQ&-9LvxS`=sTvLQl2|CN`=~xTAwM zNg&H?%nC=AI!0U4LBU7|=XEkFy}a=A(zsY1$htuMhnMYSFGMrAPT5Y@2FlF_Wjk3L z_=vHfA(ykr-D<Xmh+?_A>brJociHZfxg|XK)P{;mldtKi?mA-;weza=yO~ROITrO* z(QvvOGuLIVMWx){Y@fQTJAOssS6lHiN@GrHktUDsSQ*8!*U%S;Iv6JI6-Di9r^|Ym ze#7HUoO8f$Zkb(~H~UqAuhYz>-=M86rs(}{dH~&tC*0+QZxaZ^Z@gVgvdrlx6SMzL z>}sMd0ru$I9xJu}ZPpEe!-<w+3x!`;gdLI4hYmkGUq0Tw-VYWan3-mX-fN~^szZlu z20pO{MI#zrNdJu77j6D|;wIealQPzK_eMh?lsf(OGfE>Hz5Z7cO($G&`if7nG~^d5 z>6PZuk!x1uas-80cgC&?NM{~JCMW0SR7`}41uMQVvkYdch5fVPp2@B`5kK6snLAe& zDRF9uJ6F~&g?qMg=ZfMa+%w%Z3w%Q*J+s`ooAHWAQEh8Cw#>LR%PffIoQ5s-OXlk6 zWTKSgs#ZnEaJxvcyRI<%V|z)#9Zc#rl&7M|9BB^JrL+Q8Fw44CmMd(8wuIb-09j5g z)F?kgi_z)iFR$#pK<U}_h&y_s{i3IQ3u5WKKrDThhj{BlX2n=^nXER7%#ms&fYhEJ zpd4>mL5ueiUY>XK8radxFrIzUKcNP{v!M%${+;TzM~)2zsXdVFQn7*5i581Z(jLvn zW=4w%`*AKSBA=JaUb#H?k4xO&&5k+dg6yFo#o_1Dm*Xl9Kb~I6``nT#R}Tx8H>ORS zXd)B;lmo#gX0GC#jP}2{YcfB`WUt(<>9dHhz-7sIYI*un?A$u-r#O<7n)yzFJ6vvt zAH2#Pn_gPXec01w*2pbSpGRPzZcUegMEh-6?@Zr}wLrmNQ}0dRhMi!QybN-w_i%Z7 zE{VhaVERt`T?VyyhwvtJjdk_6E<<?b=>x6HP+xiaQ0p=zSe`!Gx;9z3iPrUrbxpS} zhawFT#XOuL;z-7gbC&%o#DZ(SbtQRW7fIN%SJGv&%>XTtH{lk`2apKm1<U(*!6jH( zce?TU#)FWzrf-sv;XBjU8HmqAR8WlvJRfAWd)5d;c_n=*o_TJeB%(9WZeuJ$%z17j zi7<w`qZgL|hq%3?KW}3hC>A`1dhh;F9<uPzq=G=2?D3-Kzxg7$J#>}?;J(QpoR?c* zE9Tmb{t4%fREIKGd*=_(Sj{;+-sV9$w}i{ekbAzLxl$5k(m>iJaUoJ{<VX$;=^V1w zYU3f%F{N4BlEmdYvv6=fN3O?k_pJ-fek~dJgey)CR&3QaR>4_Y`TAcMoj<R-brC17 zj-@pkh63dcPw!sf7N@6U9h{z3z(UM4xy_KVLh8lo8T=Qgx8k2|l|r$S0l7zo8*m9o z%fO$1!W7^Ok`x1!0xIm_4wnA{RQC3ln8c!N81cknG;!f3tclSyNZbuYi*Qki)Nac0 z{}}&CB9W{zy&h7<K_qKiSB5?KnUTWrGAgN*jKet$)38~!tizT-rl=MukLYuB;qfY$ z9eO5f(R=at<)urC+&x8d5Xm=raZV;YY$w|pZAuUk7g1=O93#!y<6uh@I2gz6<g#A3 z4iC!<2V|_rOj4vj-#FJb#EVj`n8ll8gZR%2Yqz4nSRA)vAQpBeOEuC!3#GCv=HbWE z8rfSMNjfHTuXG*TR1K5%tcI}R)55^sY3&(eUu5lBV!zkgyNi9XwdaccL2D0*eTlXA zCtg#n;`g}q8;BpPKnjP#Xk{^dWGViVuI1)!(m7h(m2vk(ao6A$JnMMVtIsktSFy>s z3a87Lo%YK-zKHXE>og4*T|chU)7h<Yb5>EwhFLcqwJ(jm(cH}vy@g^oJ<zP10^->p z8DXYyAa`9}*$-+;t?Y1Eu^6m)MH~@~%NH6BRUw{+8UAS8lyPL81Y^N6FC*$L5I)aB zlcB_4`%9IieZ_JUCSn=wvZc6SEERtcg1aFql8HeWV#Q)U80^z+Y=VO25^22nB3r03 zJS$7KV>bD0+2TalVpb>;f-P>p`ARxv)>9|*)vT5-aGW0Dw%_NiwES_IfW`K`a;{UI zeXra7!K&<gWyFJ?;|aku^A(b5l7(_Xl9a$8X;P-{<E=#)<gwKiDF9j)xlF8aCRz8G zCC<x|;R+}B%2C9N7=p#u?i9<VN?)+w((Xmzh|2smN!^|3#W25E9hj20;&!DiE=egi zr}mo4SUvb9Pqj#Wh*K&6r>z%uxOuBq>Lw3Xd!)qXu8@K-9GBs0ZLPG+ifz20m7V6b z%ppLn#7hCN2}Q!QN?UwMtAt^>gg`K`75HHJ2ZW8Y)w*as#^7OR5xC$fb`4e&Ng_Kv zq}U#Ub$Lvb((>2mH?*7H)Td#hUQ)e;$FgA)W3%WpQ(pp$p1U9G^zsrtkuQjRQQ6-~ z)@hF-$Q<;C_Q!-dSU5JbnlOS-!Z-Aj=>fqZkI7yGfmrbo!{djoAFQ<(M!p{?z77d^ zBn-<?%)=}8I~!Xf4oRPcP5jB$O+OuyX31xp!~obuQ|IH6Fk%-SV&d;i96lZ?ABo3k zy%GXtdSU!LNjOiD5ewDB3*+OGd?D>Pl3)Kf42yghJn~4Iq+Hwc_`fT#_&6kt<X!TX zSa;(R!ic|wk+K(j{%;f(KQ8h2amd^MO~&HK<%bnqC;I_-mw90%EfPk`kF{IQ`8*O< zepNg^9*IjHaZ7!)=aHYwBYuL%e<aO<OVS~~J9vCN5=P>Zx{$Zjf&6ag@$tx8@-Jbf ztS{h^-_JaL82K)B(T+!ONqq9VkH?Qo(kpq9vJqT<{lAFa$0KjSBVncPr}4<|5gs3p zz=~bcBKZ37$nP5-ACH8Qc%*D3O+`HNdyL1&BWadLXhX_q43GRa@c4Kn9e!FQT@qe? zD|vi8@|LobaM?U(^T_W{p2RS|y*>VU5`f=ZJmN3u6?nlTWhZI!Y5zU!KCHwq`I3A~ z`3ao-e&X@*NEpH8hrJHF{C4p8c;vglN_-O6xjgbajsQL$Kdj_i%5e~n;JnTY<A)PJ zDPzIag-7b8lNUzfkVkOHBjtQ8&&fQ8@*6j7?AQq<X{U6ZJgKDX@G(;-j2}Ou>qS$> zjyR<x<BY6K=V0GY%{n8~kK<tBx}9-o;ZD!WIXJ!n!^TZCDLeJlZeGYb@s>;&H*UiC zuKkBiB3C2El7&;V$%FhR3+R~fqtZGIPn$Sl%=psDX(NV}j82;{UVKU>Od2uSh8sO@ zSgBVW`=dMKbU%TA5pOJDop65n4j?I|lDh7Pitp6!UWO+hG=1H&&pfnpi3Mz0IBC*^ zNoi!ibiyPlpUI`eN=KxPoHSuvT8GJ<#W|@|{Eg4#l1al#OGb0XMS&%iv@zo+PAN^B zNQsXdQ95GM<g=QlrHvmx2H@dhqX;K@)~O>(tZl@^$&*HmP3tg<0N96JJ=xkvjvY1% ztH4bjF=Dv2jT<w5#MEJg7VmMxrpF!Ej<`PCdSg2^X6qIUI&s)!58c%hCJi4k$;JYX zlF?%(U+1~Tj2}K?>X>1rV}uYSMdL?}nL0v<LhK`^mrfdH?WSBtju|^5?Su}KPiVMZ zSc0KqPxHyM;c!LcOGk{NB&CsMXBi4@kWT7^%QlUpX%VIDC3kpQhL^|8v(iW<wK$4= zOm5oY%;8jwiDUfmG%2zv24r&D<OyjbhfV72g-Dw)v2@J1F*iv4da$uiBPkj2FPTy* zEu(3_38iTx#!r|sYIK@uOCu(yjU6$vG;Ji*Gj7<J@qUC-lF&!fzV-aPmgYs1Hf>Dl zXi2h<Ya;byzX8n8G<BOU!7jFV24m1(ORf(r>Aj-E@GGg&v`$_4&*(5Jllr8P5<E;i zb;G5lHSvifEra-mkIZzMUS!(F2-2F^G){56rZaiiR7suvSUQ1L!>0kmrp5q#zl%)m zfOlkOS{L(jn!>6|$4HS0iix9#O&)Ppy`+OnxP@bqPY&vU@0X>73^=mM{L;dU@-G-r z=!_UYH7&uNb}pr9@_z)qT~m6HCaeRu#@ZUk+~V8FbL}7c7<$uY;5ZWFWB99gGa#B7 zh$EfmybtqWkD{k+jcIO7!&q9!(qbW-(^DS<1`WnW25&R+)087aG>`lznx-+AZ#&v) zNuPT({w*+m*p@My^=Sld2~*dI?{TELjgy8gIpJ$^f~yH-E2b{2?{hrxtw?7}527V` zsUNm3WL?(@PFqT#Eoo>&3`t%rlJg{!qjdh$!6_y^W^0VAF-AKl5`TN*KH53nq(Cqv z#qcD?m1=MwPW>ECo%^N(kS9_KZNPJs7yDsIDgqhAh_5wqTz)w5>Ed)I{jI^*l@w_6 z#6wz}g_juXf06XJWNgxecQYPa2d6rxnviMKOB#~X5%}90X~`E`8!drr37s5A>35=B zvJFHsId6@<wdWE_YU-6<2DbK221b+Hri2l5Dzuu0wB=KWl%15bw1;?`u%%_`vF?|4 z)Lj?qs5z<VWNOmpu^s8Q#=7Ne{oG4=olF^LQj@LB*W*p<w3jxU3m;0TRlaEQBYyU4 zXW~8%EYb$V$d@kWUsDdg@p0_`?hbrQ(%qcWKheZsDaeLA#<amCTBvqTa85J-aVnLs zr%-ySKnn%M^PA*R(Ejm>&oQQ6(+qu`=X9iGQt>+iBVX-*9MW&;nwt0RM|o7x#K|RH zDbzuV(+vu=P>o2>$(T5fhHS#awA0%;777+RXyu#%%vq#I^T>Z)(;n&(pOa}n@;=Li z?n&vL%9BEh>eg3X=mWWWQ)j6_o(OiyT~q3#g_C29z~q>?;?VU==R)$@loWM!PI7wD zlC*jJ@W+z7W9wn?zuEVhwAf3?Z3;Bs#pz+f7Sw|%h?RR?SaIc&`c}k|O=&j$%Q8=d zKii8dhq^zB@zqI&0us4!VrXkGFm%<K8td$(aR_yP7SwkHts)4Q$oKrE{)3*&wj7Pi znmFEkX9&4(LJQ2K+>XQeJgRR08HY%;2~QdXE%$NyVx(q{Z;=0K%GH)^UFf5L?MbPh zg%+a+r5D2VG;J^)Ts=K|BFz5w5ztLBad!cSd~M`$amzd9KM&vYF^3!DbMq#~?|kAI zL|JwKs*8cw<f$po8JPYtqn%Q|%A@hipsfwZNL}?J+yLAiovY1PDU%~9g)3<j(tk*a z9B=B&)|lnnQ}D6r8AsgRoa-oe+qQ+%o(ZNi6O7Guj+2EEe{uW&eW05H@^HA}PTIN9 z(BMfXjD<`5Pwcs@|Ao%Qw7nB(b5{amB^&Jw#Xi*gPlQjjcXz~$ri8o01^bc$;h?Q> z`LXmfspu0+i*+aBko1l+t-md0B`rTL!&uj~Xanj(#9hKMr$K!kq1)cHqBCg2mg`9` zCN&)oYi(!L^Em^ZR}nQe5-fj%2Nc1}MCP*nuXZZxg-^sM{IEUoXVI#<QRgk|q+UDc z><3%dM_hT%^|ZkLq`#X}NIq=8n;6T1?Y5=Pc5bBYUO*pm0%dPGv-Dur^dUE5`WR#F z!lg^hclkPtJe&vxiTrjRX|ZtUVb>l-CwcEQ>dLmNtMT#82xpx0PwFm*me+>#3w#HR zp91^#>u~?tyoT1)%J9Fb&NZ02aDVMu;7ovjT;R-v7Bb088}cM_#koA817ef%u(-!K zgDJavp~2J1!{h@(94I9vr2jm)S3Y%EVoXC+ejw-zD7}ufv#Ws5q$ONTE=K*I(lCKs zrqKRdJC{0BNJCs^lQ`>ATtlh22Ka31{Z=^AFto9@T#}%w8%;Xo?b{oIpG@9+Ll>QB zGe=YZb9pZLKjdH`9P~cQK>DBl)L!$0z)pr*eUnDGSwKv4u7G-urxrVtiel(kB(;W8 z>if+$U+ur9{oRb*cA7Jt_;cXFkHuhxo1JJ}!zh`!vHsSroqH(vY`EZMlwmG?$ho9P zj33)yy&oh6ot=k~U)m$X2C096xZ#lDXOZ#>`ix%Wp*6g+V@wJbJi-Tsm)p@=6Vh1M z40WD$E~5O4N%x7weYx{Gp$iW&c9AjWVeX_a&8O@hg^sUs{zGlF#c1mE77vp@x~N|o z>C9_nI1_;vIqY=Wu^4S0KdiW|InwYKE9YB`S2z#Bl?KCun>gd?y<~KAf)`qNjqn|L z8Zt8O$Ry4A&VQ-h6Y00kq%MWS`JqK4AfqMA%{mzD;ua%3PRv}=elz@|CzPAbtVknT zp{7-j^TPSK4)m^KHlQ2)S0uat8gn~XL^2m+Wts!QivJzX2vVL$?^jF-*cwlA{%(xs z|6s5ZYQ8fY>Gf(#_7rIFG-EDGfb!+R{qa~Dzr*PV^*%-#T6n3o{i2K&`hn3marl1t z$9d#RsBI}dcUL&iBVN3(IAW|UDUzd<=oDiFi|u24d@n)Y$I)K8^8PQBY|U8b0Ya|E z*bzYDD4^UC<HIj>raE8JUeBQRB+b@HyGf!RZa41RX<1^l@e$v+nGfs_w4n=0|KFf} zF_Ko1_Bxx^AuYtmD=pg^>od<;L0LQl=a>rbTVcXUj>mgOdo3vruaQ*}T@N{LB7YV; zGoS$(v&qOnMytn||HP0D+t)k)qy6-OXa5~8rr|-&ja)0C|7Y6sRoKKx+m0LG?@=gs z5Is;8WzgPfq#CKG;0I!Ch`;)O%=tGZ&<XyN3Lg;u`#fb4uZgL3@GPw365Q{>Kc~@h zFUK~Nlzc%wJp+x1k?&*ogYZ+d+<f^b?PmaSr#SDz4KAP^-;cl5M)@J@zVEJs@liPF zEx_IBJV!l?7HAsZr(qt&X!F#Cuj~4m9N$R~^f-JgpZ@w@dSV+QE~EGmud=4v+C{># z<{PNy1>~lwP~Sz)0;h?x5^xjchmiLzUg%!*6V~6pd%-{NLv}hE3JlVl-eOE5<iYH{ z!SyK+Zy~n~z#K<i$hb*65fh8;YiwJJYfU7?SjszvzUVaPTewFHXEBf?oxAZ#f%+5U z^!r(DdSLq>?~8{y%P4!7(heg<_NDw!jkVQ8EC;s#<ox1P!r3#C;%<V9tEh{rIw?qm z-Jhy|g4&8`(?7w*uc9C7=L}5XZi%oOUOV4lmbcjC|2ufa8tVRb>Yz8h#~+xhWAVR^ zY!k;J`klJ`v@6s%o-m>VIGM6L4jwQAjv%AZ*@lN%==$UDWJ=kV^LBdO6_i?Y`k`kr zjVVpn#5oE{RE+egey^v=s~GKl8%4e=kbMSIX3d;;oF9#8myqUo>KnGLbbf>CtB601 z|Iw7e3`~B5803pK-{o!1(?DDf4}RSFnEvNtulIf}_T3M6p!c7Yyy(4d0J0CV!goOW z`jP{|B>Eq#2GOPl(pw!vA20?ZU*%m^NAi%qNWO@UMI@M6rgvKH1k_|WKnCr;7d6rf zW3jg~wU>lTQdHmcCfC+4S^YrI^%isYV@bcyGt!`iWF9dOGA4M?gpT{BK_^znm#nUV zYjz`5Uy_64)$wYf<D0}-<GRg6-?nO%vk|^?3~M5eAq6u{y568HpCQKMVmv5rON18t zYtG?n4`aA3Mr(2!ZAdeoJl&+Xe%OZGO;rzM{t<AG`+&O2aJr84hYf{o$gj0}n|gZ2 z`QG%)=cr=xvk~aJBd4$S!`H_12~z)g)MYvS*hu96?#`2@A8jbEhWu*iA^r>ZyN7<X z3<;<ox}fU}?%e(2jKe<>`<A9|hvz4&UT8bEfJ=HVKW*{waa*?-r1d*fMd&x5pbbrP z=1}t|!hfU(X;^>kr_INAopYx87B2ob`rXUbznx8(E8ynO^Y4c_`1>gJ2yNjvPWxJp z<nk`ERM;~O!3pQ7YnIY-1|Wr>!pLPT9KcGSR&%ofsuWXU^f(m;(%R!V+Nc@yR+Y4Y zW%Q!!=mTyd+(b+~%)xB!)k@m$BG&sn0UtSnmTmQ7`@?+FAjW<wTZuec!YJYlG>i`# z4q~~;{y2P}cCnVVjsCMUobzs{uL^=?JCB4CU4$Q6c#m)&``=hK2HN^HR@<Fb(9Z?b zUmm>YJj!vI2X|I14vR-x#s20Sr=L1bouZCL(r!f`og3>bwm^?!@_^dE-}Eu<aZXle zI=iUBC&+t0=P-3xEZ#{8@j2=?=e7j5g@2K)i+3aaonz#HYmwfL^TzCF(Id(ng&)tk zMk8eZMLTpZ6t8)<Q|4WeeaB%>qgSh-9r!SZ^4?Bs{X41nH?r^l=$*SbePZc96!_8V zE_$t_)De{5M3qfT_zfyP|B%!06Xo|LJ@D~7mmu?wGIDRrI%)XNL9h*1omC&_40WT^ zMb*FwUtmo85znEdUBZl1Yn>&|U6`Y3iKjwWM=3FJ_&px3Jx+ZiVe;ugzJu<*cm9Da zF<<R-_92H#zjtV+r)r_*po_nqdYFtfdW16ojA9NA{z6(`8*1%HdhhYn#E;HqMiSCb z9~yim{N*}${y)?d=Tdd4I#c;tqeS=-4PYBVuQkF+R;lV7bvmu4x1twD8u*x!u&@^- zl%jBa%k`h&?VAD4UZ;avsHVa@GSp&Pn@HPNCd77*p?i&%Xr?g(kyR4SC90p(ACAyk zJqX9>r!v$eqr0#p+4__t5?H#jM(i`35_OsLKIK0M-d*7gRMRQTF7yZ1B$h$L_U0-A z&-s{9S6g)wvV4*AA}zQPwc&@ivcQGL$M-#*zTTQERaf<bI*Oiu8?~?!sDEQD?4d{j zqtzA88_wIvUdxbx`vTe7lWqO@5B8qnv{C<rXI%m0Kb)`N-KF%14#uA?IvBKQn%b!} zHG$IG<xGMPrZ_u|WN!7)bLf!|3~y(W+NvYfu}bFdmeKEKLqW%>scJWHQ+Zoxk?T*y zN8bLwNM~Y3(f^zV&-fMEX^b4NjV`L2I*(cu=!xV<%z@I8rl!F!TxTq`*T%WYgnJKJ zFg}9U^etipL)_-$J6hcX_dH!qQsdNMIMD~j2o>89??P8`<3q*Y>2TdE7`@%Z*!Wtw ziKR;U7mdw%28-yq1mZmN{<|}Yx8JuMt5(zd->nLu{y$^$4_oL{&IF=|>OrlX>6KMo zDOO6ahw7wmFs=VODByf}pH11{oEGXU#${iD;|CLWJjK>FREg2fvFbCYnYtA2InEiT z7RAbWu9=J5#2V`QrYjWRRn4WxoD1fuY6#S$luJ+c64G=$o;9Q_QP(6o*|_%C|CXi( zQ!bAa_HO43mG8mtc6K{Yd*&FGXaxT;%K!GXlSa)&XuE4E#Z{_@2mgZep)oJepFF~N z)S5?P8omeV>-*z+gb_yvRgJWHzf-J!q2<~1FH%j_*`_SUsXv{wv0Ecwt-lSYorP+E z^Q?Lq{+WUtDzb*A2R)hE5FLySHO+8lA4202yGRJroZFO)*K?dC^%kS3PRQV5{)fqj zvaGhPP+1el5Vy^t_w9-F{vX=y7qmZ_eK^64pd`!$9{IQLI8@x`s@aaK9;L-p(vQjr zUpw8A2}D10mvPy-EdM_aX>E(tJi>~^@PP9fZFd>wCg`s2JWze8xcemHz5pG_VrF@s zaZXS#K}Fr2+f50@Lmk-mfchE@ZUGYL4bbp4sy(BzYgByI#wl?3*Nl;|o)~$@@jak! zfx=%T&riVxs-e)<N^~54h<BWB>eHA@BP00c9rO+FIR8>V!g(KJ^l=p2>p`cfIuX;! zgBaxHW03M~f;Z7#qbkw*KM#L=61o`a@f!CK@-JNeep0uOcu#T))wxjbc68b2tNye| zO|JYr9PGVREurrIi4=c|^SQbMjZhjrf|!Fr#lKxbDy~EFd&P-5|DqQdPn(kYr#}xV zcGeN7(W*Q7D5Cvb<E(c!sVwApX$yWF-yxrg4nqEYU+X9T%hYScJDd^Bb|*|bjL(`$ zkMq~&dD_oK<og~t=EL+@NzPieR+S)y^*jV<?fh4LfxLDL<=;jPQ$yjW$FR4+#%ty1 z7D$K(PREmK1SNiwQv?4gR8?lKb6`TuGJ^3(qz%2FVf=lXs-X9}mYkf=NPY&qMB+<Q z_Pt-+ernA7btLaM7=eD{d`@Zp2nC7}82i5;bVAxRWA*2upFE_<EY%zSF_3<(+<BQW zBJIUtMSAM)xx4xC<98v)1}r1?+4R?sAyuA8uQdgEpo{7f3l+!Gkgbyb|0yJxxyb&% zAcfrt4-`|75W9sF-nhTH0D1FF+IxFqZ$~R#gEn-Y(IW02wjrPQ)%EIE`q*OS=r+)P zOLQQI%KHRg4O)v=DEmcfJ^kZ@&<@lC7i=i5hWu8jxybBaqC=@sKOwtx*7wtw9ea?{ zt2;g%ts-#1$LYsDS0}3@;3U<U%j>}3agfwFdLFemMm>j|-(1ad9#*WvP!H9CxR$X= zeEv*wacvC$XX<J77323B`ixXyAHz(B3gdZ=ugLNJ{-OR6gZ~EJu?G3&ea7Hd(hILQ zb9dJOza;^O54rz)j;e%u?tlV1=?Usw`uWqGC)Bg*2~7Ra-x!ScU(;gb`**4jT<12% zKvUGu>SN~-^@zFwqn-ck2VWnbxNlH*sfo~B8-0>a(q}V@*hXJ`4zM>E{PkhteYt2V zweu12?quwi!6<MHB{+(j)bvO7;SS{fiTF>2avn$4{GK+{0cl1v9`{@8f#7`qU(`y{ z|Fe^!r%{6|m_721AL8KeU5tMpb^guBwJkkY7xlQ)T%SulB#u29Jsz+uBg#bsc7%Ed zy>T)l@oq}^i;Nx*9Pa}O-@Z{>;kyec?K_;W=||2~qW3({%t5#b;RM^f22wGWm`AIb z>Up@{jYuN1jf{UUGhy01iK(!XbKGYE(!w6Kn%?6Mxc6huSE>cFz&c_XWP0#p6XJhV zJ=#F*ni0<@XkKoB_w{qu(sHhHvSZ<vtL18i8j0zH8Hs&=vj^#B2f2M7{Zm^o6sqTA z@R~f;!r>*w1yDwP^Dq4WR88o?Zl-6x6fNXp#uS%$scs8rnrL7bc|L^+nEg^XM~~vZ z!p)3-j)D4j(vKZ<^W-u-$|6!#4DOKs|%pSgIaS^HmWu0fXtgW%jvHb>0uUq4=Lf zSM)vnt0NRV5nDv}rayZV`NvXHVw`!Ne4ps|j0z*iFN24^s9s?X^L*$?Oy^i$<2E1e z4iz`Y>%Tz-T4(4tk>6f-&eK_>+pc}I?+^FOhmS`y#yLU%s91rePSPKv30hBEx>FTG zLzf-|Dh`hZQol?2ze%b6hUV)9=T&vT*2v&JV(Cu|?c0UJTl28GPi5=z(BFB^bLunI zoKeFNJ<urw%dS`&Y7T&{Mm5zDq|ZNTyQiZgx{^NRG&CS@(U19Y9sE5|?{cQ8PWmC0 z57)TZIZPj>n=z*}tbrJt)$u#UxH`dg&w%DnP+j$DXrgyAk~mJiXmk??kJ*0hq&urx z=N9z=ddw2_G$Xl%Y84~aLxGhrY5Hl#Kc^x^|DBnjZR$39^T~_@4;8+pZjQe36X$$= zA)}EreF^Q)r3bTSU_v_lF|530rE|!{F`x0<L|HkYjwb$mE#vZUF$as^mYfZdOUX}W z<ohRbTdH%1?nG;Rh8FRSiW?j90Y->o==~GwHdl91w>d>f&Y8|BDn;K+YGhoM7{7Jf z|CQ$JN;GX^-f`0PvHB16O>Oi@#t_FL4L%Jw+3e*zZcD_MXdkbS)F;u~{i2p4#a*RZ zqX+*8ol9bvgV|qI|8X{`FVr@tCHm7T^d?6j12)w6FJ)}DKc*Gxb0qDt(Eh{l*bkg9 z^iIlRC^@@6q3-sFvomBV`gL`^6NT=dQM=Hjp0D3mrRsgm0O$R`fVVgwg=%L}U#sAq z&m*Tbbwqz~BDHXB1F79V9ZQiLL+WL;Bsb_FRCkwZr{!svP{;d2#eJSuCouwko4%tb z8n6QT*hd+M&%wmQG-RvxQddLYy9NDVj?+W`ODC(I`ekPF5_kLjuEaEiL;RM(y=JLv z^|k6jHBwK3qwa7PK#}{;^)!s(8Or-7=MOmFvGAdNM)UGFJ(0PFhQrtQU8X9WB>f0l z(90Raw5BiEq8gcb@cJQr_g=L(AvbH)CF;M(56{3wvenh-o*!l&X&&;E7$4@q@2mBv zq&-QWr<OAl{)l>&G2oBD^;i850h)O}{hqT`ZAN}R1HDf(6~uggz`T#z4`)BUR=v#_ z=-<wG{Rp!Otl?oq)#rd1>gVJ$Rj!8XJ85^>`Z;uZjnrA_a3s`G32`k<z}FppLwE1n zQEH0*!s+2m&>dB=zMA>3Omso$P>iV`m+wwSMwWG&&oWMUKp&;%sg9%}q%Kq&X-Q{M z4ifS^{4K-`=MD8nLTY?G8vjalGcw~6dhUyn;fEqmiHV2!E89JKJG!$1_{LjcDb=Si zn?2HlzaDKsB7Byv>z38WH|qD%o(^XWa{)OSLtk>Ps;v|MFsBh%8qqEiaansKXSfcl z(a3(uDo-`hh3XIHMV>*97L(#!rhKzMto`z>dR(<ro0!vyApNnHNnd@C(Q8{JrXMNx z@eS9#)celqdX<{3-f&!6(pGwZ|Lb4B-%&mE_s&Xn4ixwpBkv;TTm3D(%l`j0{7=Z( zgPa#s9<uXWi~_@GZzlq8XCnR@egh)_(bebE`y{Db7y<uNxBEY&e~xyU!TS-N*%9=? zGnvCZ#~5FC`&TKLq+dfjyq=h!LKAa8JaDeMQk{oJi8TzdQa&)2d$dA!x`Ek)!}V44 zoyXFKrXojw|Cf2NTCRwGl=-WpbuF_<8@Q?MLi+9<XtG*ThQ5j0_qW}zJL$!YT?XsH z`c!IQx@xb_K^t*o0=$o>q4!MvCt9PM)L5qyzO~nxp^k^v%eBz_p_p5U{Z)NAtAF+) z0W{Hn(?_ET>!|CF-Vf7HqThY80gMmpz0Rx1{WEkn<G|LG-3ZJ*O62E*o7N_TqpyJW zPSDRV589j&=wf{@_20;O`4Dq(hmInBoP-Yhbfmx~=%GHv9HW}4_H}B%u1iwZ-h}uC zy7`cK<bKS6Pe2E;%*hG7sc!v?w8wLHr=F;%)BYcF^3hwJroLB)2eRo6wUhgoB_LRu zApe&$hxeZPo!QDWk!*##PdFr4fnTHst4(O#PEq$#lINobi7=X4;ymnOaAKH}ygdDg zhCs|L_?x5eL;n31+2wtwZ{P>#3Uw!Izs?M7^2)B<gYok_6K%&#^KB+_i<o7)xeg<H zH47|eCbgyNt-i+8#Nb@7H}f&b`|E_7S*-6uYdD@(+z0u28msEgQfCp%ImUEM2$_f> zZm-g(Ky6j}S?D-3kU_6j5;zMJ4{>nY<N6!s+D~EBbGy2THgLF-m3lIFyFQkOgJD>$ zd#JnNdhKXI-=le-8n~DBczc{IB$0!``QP5sP4rDVi_z0t^u}lF5-l^hBLDflpsW$` zL(5zAA=XFUPGB>$|BtHo)IX5j%HSQcKFOLmR0@1O?(%IZj9EJ&={`e`bWz|*=V*G* zB>KILjKB+>C3Rx;Vd}r1(eF6t=y8F8dN%U_r?HCeAIzhD#=pM`qdr7kck940tiC%# z|Ka?kMhCuEU#e@Jli;93Fm*%9d~vF0;$K$k$J7^2E~CJ%=pRnhKOq4ZAx{)IG6xwC zcOcs_fura<U1zB373kr7f+Qhp@Ve=4v37GHNbA2+cc=9i>#u1`x6lSZRbzAoy^r)g z8L=FQtRUh2_ZV%Bc3#(isu%Sg%tWk$W-6J*oS-M@B=oQre|5|zr7C{%-5QNgA4X79 z80#$7m$LSuyY8+}Vnm{JKNI#rTBgOL8P)l=#P>JoPi|0ik-y3q+ip;26Y6Y?%z-pi ze#e`Zb$q}#ZO}ffMQfX>yEwyiPxU%*=fOu)NWWb@kQm$k_8;|1{XE*2!OjILMZK#o zqTE;L9Q~1+Z8Wjk*%K?p{h>MkLBA`SV--R+%tL#6waI0MHb0o(S{~1CzSPIjiS{2- zSCHPWfv?mLj6XGL8B9BnwH(GERbd?O-}jR@{sq+CNcD`Gs*C8u$E)!swYQ-MA!cN% zEylgYxWp~S!)xqssAPSm^FOqBN1%yW?p#efwnlcAS>uOq=sh|xm1KP6tfhy3ot3kf zGXE>)IDLz5&DsVz%|ZSf9!*{B{0aY`?Q~QnfpO|H=>HDJj+a9#Etw1Z5`Boo`Kif+ zjr~h}wRyz-rIQ!90oqU2*P#PBhB0WNftZanJD&9nz#2DaN$6~B^3*kbbfzAy+UT#G zv_N;}0$X_@a!ns)!^*mwA50o#mFsdwDAxZ6^@FN~ek)Wf^$oq}wdk*WnXi>jRjsr& zODF?t>c%auqQGbL+Z!1FGwZ8<cJ_Ml+cjP<C^7p(#eLpU5&aqKHjZG;!AGiEf8yLn zpK8q<w8@1)f8(^*bq&&o9;!~~`}^uibz$IXw5N}$F3t(ef%v#(4Nu%y-}-LtT&>%~ zEo*h-fTOR}Yv_Az$X94fcR16?%`{!#NC@k9d7xF`QM7k`0^5<jI#7yVdGHUJIS84D zSnm1w>8ktg#+d1Cy;m=%4?cmp*ss0xr%``))sU>@vbz#x9g)97QTEn}t4-iVXNY<a zN^h;Nah7PyGg>na5+iY0?T2VU8q$JXuODUJFJ1qP9%}|8@j)j3^8>x~tiVawuk-5D zpT({}m%R_o!Nsh*UFVb$-)pRg(9W&OH?xqEY<@#%iTu(ZVf;eK3n|VCfur?^z|Fb` zoV!EdbNXTlztU(C<x~g1w4OrFw07TS-A4fXPh^k&YP}j5_%E|ab`N5F4@DIkno?C| zj9{=f-+gl6dUi0pj27W|W)iPt^e7{HnLGDq(MM@90%?8a-}=dav%n~|S6`zuor~!~ zZqn`4YQ0(yWd?eR8lk6nY4&q5LW}WT@@^6MS@ly_GWYc;I@q>)9{t1IKn@%{N2kEi z{jg{2hRt|=y1FB9lKwJqIjgXWH9N4;XdbDzsckAzf_|PEp67{=vSr53H_tn#1a8$e zs!?E~9vNuke5KbB<5(wO=fiJKj>Yb$V*mH4fmX~Nj0rr%N{CAs`FyS}RU7r=n7c5E z;p@8mFBj^2)Qf?)nD5GQQUg~r_FRIIGF+|CO^`zG*J1=pzFXPqe!T?!O_m;~e|H|! z*Xy6u$yy}ucI*O)s>c}_K3*pUew>N#iokcs;Qv(rWd3rczEHoxJa$h^qlCB<!zbGR zt^Td<(|OEurRx>QuNN|l)HX0G&_a#Z$D6W_hc3_sI#Hwg41J!MtI<AOPtWzJ9?96H zHRFeO;XG~V&or|Nargt-{uLOlMmjSBMM!V~-JZQ1h0K4P=rlQm^b5`_0wMjeit62} z9O-{V;C3`RPoX<oZ`S`EDAu_D8G%Aw?A%P+uTZZA3Y1Ivoy$z(1bx*Zq@EqEy0<D| z?)G6;ah$~n`8H-hwg&Q@_jOY*2Rq=;@%ZZ7N&=?^x}bGBmv!%B&>WviUp`LtM6O@_ zmvt|=CJ_JgP|N$Q!T3ghhYs#u)jsg3epI(N@yj~6xIsgd;1c^4f#Sekbwyw*qxh3( zeGf1e8?SFhvf-&0wjuX${R6Vo>F7KDt4q}*fgeq;dzluaW4(Dpkk+qH;3K`2wO3hz zpVXy#4%(-|$O5tgA@h*(e~*qZgK#8Ne5dXo_)w3a2Ak0jH^Ce@)>U54n&`&@!9d%< zgF1l5ViY=oAfq2Sw?<aV9T?vKGCgp=9-#XwrNV*xXhoN(UW{9Y>sLJEhdc25VdlSH z&@JhOSHLmON&0|3v|pfK;6rqq=Xy0DdqeA*IKFX#W$5iMV9kqz{^w*Q`N=A*t_HH3 zS_%bp`HOZmDey1#G5qLEHAi2Ll-e6U&`%FHF&7*H1-zzTVztjpdJtoPr}SES;l*k( zV>p|_X=)m-gXyA%1^%O(2f8!k@H*>12h-F2j23!htn6jR?Jj3CCKB_DVE0XN;5WuT zQATf#)sfKA!)UFOoq2Uq-Zfwi)kGWfB`oW=On<<v$s^3(Z_u030{u@9M;h-GgTFga zn?OghE=HTa{Tc6lOQ5U1Reh_wp+CAueTuB}n-*j9ze2BwL2n~}4zs-Z%(eL@pRr$C zIOkmTVBmC0u!xzfVXVWm9Ag;kLE<&tu<e6D51p>>qm)NEz0hL?la4gKmxP`li@PrD zd@V-4&(|;L>jD>`!+%13qLKpl=yw8FGXt58PJecTai;+%k2Pufioh7^D@X66&9>9e zv6@3<*fF$cF@CrMzpJzk%%Mad4=fGbrU#<`KQ3@w-~wW}!x<fmN8s(4+Sf~pD-x(s zx9H#X4oAUz&OnR!Rv^ea(sP~N#C$tz+72AA|K$@P{-gin+=vD>i`APW12XU1ocO+B zHaDeC3VfKv_prd(fsw4a*r1=#@9S5|Ns8(bco(=68!W#>Sh3#|h^Tk<ORN|;U$<iQ zDkm7BQ8_Bm3_VQ!unoE2(W9vOQ>gPSWY80thrLuS(M?#@(!}K6{?~<kGND`^2>hTv z39Lc_{t-zsUynhHuv(`Cu69xysJ%(7R@dybh~p~{R8wAq^e}WrJ)GAAtr-)F25)lU zo(ACKaK3GBAfWDM<!pO(XW+^JvsbLSkrm{Pn3?j!9PIscV5C~iis*~jL39mkk*2G0 zfhM{?n(VmjeK7d>fh0W^E!e55IkV=kGZVvJB)yJwyqJ*717rAE|AOY`TKL}(R^EOC z|GR`9_<VijAwg^C{!6r1|I|l7zsD2zIOhcQi*BY}a{p#M3P=vHGd&<i(qs1o{3Gx# zD<`jKN5c>BmnO)PPth7%m^r*bhfsox^{u*9;7{bfJ6XYXxpNom89Tvq?dpnBa?$pn zSU%M+sMfjzYsLPi?+m=Gwvd9m1B>*c1gQV&!;O(tTU-49gTO%5IdG=_l{Fab1!T1S zwlh$Fr9blE&#hMm^=smTz+l!~a1NNhLvsdK;9rdNH|Wlcoa=|=WJq<yezg*X=d@K< zCcUL5By~oA**DOK@r)SGUorpt<4N>c61bcBgB;d9g;_=MJL@@`F*><aPXoTPfixt- ziv6R&&-7Ydob`;OhoFHu(aB7*rhdqV-M{L#fpLKiw4zncy-6FX!M~f4i;Py%4<Y^y zfl2yfc-XtFp~^=B_!ucd%%$ptq=sWm^xdSF1s+yU1h%Str+J{ieu7nJH?oTLGv?$! z+pnw>A$|Miz<c^Sy$9(zjgjEH>J?qCzgC5Td4b$Rf<HZJo9Y(0SiKXtfn6&vCUpxm zcivX>^gR8yI`D~f6#w!!wI%RxW|04-k6|A59a`QX=jy;9bXVh@X$kyGMst3O6W^=# z*-69I1ZKRt>J6+L`&9Kp3*9m>%C3V>DF3@yS&|6p+kXfo(UVmMephemsr3K-)Sf`4 z{vUJ6Z#!oM&PYgu4*}0eNXwV{2dx5E!@qi>q4<A{odtXp#}~)PckeC<Uc9)wJBzzJ z1&TWqFHoEy#l5%&ic|DYu?D9=aS5&k3KVz$|K|2Kxr79o_xavRW@cw+ZT8K3Z%Z*) zvv4hCyl3CnM^T^h<$M>t057~hp$90A_qOeHAIf)gE$O)j60v1_F1>F}3XFU|;{kYn zuj89Ba&wC%h8}w{tYNgST8{xl&H4HA_hKdV)l)HEcb?4RoW&yvL;{?7C3zay7JQ!m zw<u+n6NA}A=v_+V*{!wWmqbbOgl`dBL{=W`%TN8<%fG}e;vPAPD;0LPl(VOFlo&~S z@(k>ucN>LxI$ypFG33`}CE{;!tWU!7Z3V*<0G4bwA^JZzaWwt67XAE3+&`L-wloZ9 zT_Q+3JP}rT+jk(16@CR;pB)3IG%n`i&7(TrI|`#FKS75ld0v*BEru?3G4vwuBGr8u z*Jn0#>fvjJxWF>--Wctg46C`PbTQsR^ZD9s6I#~4ui$Lce|n1tvSq9f-uln6l(=pR zi<GRWxAf`I2d4Ix^fY{Hh)T*Fu}euI#?YiZ7rTPzW_mn(`a*+e>+rO1K|b$(+rR!> zjhMfM-q&L?kUe7->%dFW26&sC>D%5cGK+j-pRlBfUQ+YSbOH1*?eHc&1JAun^ffEx zORL{Q?ollfdF|zh-*zHC?+?vnF7}Ft(0Dv2>BP{d^_9>7W7-U*IBzu0RIjtsWZ>)Q z3AP^Ey{FK9RN@Kn<Qf{D-_`|cy(1$HxRzcJd(K{Z##&*IU9=mm&*z~BbcHIWy!lH& zJ85cNpm%DLIN}A3<2|G7|LFK8LG)jKjKvXuLGvWoNN7KY;$3d5Z~GINBhLPOK7E6C zw?(|6$jai$?xY)E4{gj4Uw(b>Xp5Rh?nOJj>hXL$j&62-9-7O?>=MS!7t=zpU0IAa zx3`m+XY~qviZRvev}Q0XcWfi{Qf_EZ;?NoBGau%Icr~1{x^JP=?xlla&ju}&Pn!F# zA-yg_^71z%Eq%k^@CoQaro+3>pSTz3|Cc3$eftrS+L<fJwdke%A{ML4p5xf{$5Zrs zHcm*s!&^QqD*d*@$Sd@WK9}aalUN0-zmFKnPsIArLcAy5A)g8@5$BP!-Os1#MF5^3 z*<?KypS~11F&4WSwgCDatvQQ$Py0NdvnG>}cz^m)ydsO(5O|;0fIV*u)O$Pc<kjIh z>0+ApW3Mn~cNo{|6>%Aw^Fd-gDTVxjyfUj7Y5$`yVK}b;KXBjcAU3l(u)yp>y7S9E z{dCkE5n5|oqphthisSuhF*k4?bR%8p|6sYDkR@dEFy0#VNnw{Zk2dojw`Say#QYeo zNH4GvxB~v<jmaliLNB9v*n<B!0-QuVV43(;Sg*Xm{cjbi%T8kSb`dnIBmC|fG24R{ z6_atz<rDGo1kNfv{1dIqYon|eOpjhT67@~MUjG8;XDRWC#KL`dKDm!^tbZ||gU6Q( zpbuE!-M%x$`!G$&6Jp;rw&>;5Vj(OZSCNA7;P@Tm7Rg{k{|Yt;uULlgtvl(Xo2C*& zr~!@Ba2}V2u{!8U8#Ehl!@uLJ{q{e)oc6kE0=h0<OuT3P$$Mx~I`CE)PfNxBTknyP zW@08Q01cW&UE&kXM89K7C~*kSgvVc~|CaDJ$j;NzcWfG-9=-9_)gOAO4bbRS7t{Vz z?HQ>h(9?#kM;dt+o<9aG&wfUKJe@3#{2%{A8UGV!plwPfCa~`CJ~~56!V9AWxrlza zZXZ1c5&gJ>)1uA9NYREiqUHE8(wZ*C^D8g(Vd>F#bW-T)nHbw5uc(6&*i@`K34<o6 zFGhlwlR>O2T2$Nd`<D^@d<U@(Q9l;4@4YtDO)*}!6@7-DyeGDA|3;tBS-W4%!3gLc z*zeqf1wvCC%ceL6=gGuK^><Q#KF!OIVC-R_*Dj<D-r?h7EWbDOxq9qjF<Ttv4jy5b z<jhqN<HZSB|Fjho@eWanuA-xPZ|I>{hVQ$6m-T;}ja-M)Vm;pk%lTL=HLuGCvC3>X z`$#LXN>R2PIoC2+s@c+CRAj9<le5@DdYK&)oK>MaL`~QcM$Qq_Qgz%p*5KK37f+yV zyc5pB7PKOc|B^3m-zn`9ogl8zNg}z(!+JmiCeW9BLJP~Qd}@sOlZLm9E~SpxM1K}# zXe+*kwWkwkTs}&S5_{N1$b=ZnaJCOy3sD(&|6gfcQI{5m7N92Hhx4;yq}hMSt4kTm zgK)3-UF;=cyctUjJF;G494v1Rv%~+XgvufW@BNQ4W-yo5lRq(h&Xr5pLd4?NNUZ;G z4vrA(cvjj-9D)7P20VGUVdPEm$`Ebo>+I(^zQikfc^n@XUhX)&=T2o@W{3Z7e`wAx zz>nY%KQD55y|?mEK?jDXb;^o7Z7VWi%(gH_K3ft7y~#(GnUrBqNIh1ME#q2xF<T<% zbC!M--SHMTm*=6!#Sp|l7c!+th1w+Yj-M#$q>DPO&TZ)_vh&z%39Cbvq1FRfb-D-o z$g;F5If$B%`RXx<BO9;~dLAPl4=|3<8SjjbpoM$O-oh@rJbI^5w;OeNu4v0{zy{+X zdU=KDTiSx8mKUHs(h@aobjve&Yu1yQvI|BTLZON2%WA_C;5+C+BeVo|K6^Z{Db?bv zX-b!gEV$MMO1R8Q!27Nf?nFzV5w8sK-`*B(i%GQABqIwk)oXqh?b#c;N&JZWPC{JA zyR{t(q#`@_)qU6HZxB_*6WEb_#CzLu=w6z#g2F}n3N8L;pnqNb=eG)s1c)G>ns22U z<Q0|#BjHP+4Qv7sGvlju*uzJ#6Ks^YNM^GV;uhV=HnQpHfo1y2bBmERYz>ake)QSL zl1y|5slxlR08*W6%k}3NNlqQ9{rv0fKfjtI@}bB_R}+SNS58(R*V73+zfa)zM2u&^ zn((rB;H;g<!gz1FN^E2oxC`;Gp0d0+LYlA3U!3r|!UJoo)NGYZPGZYIjJfGiw{uah z9o?>uIOV2fx#fI}GFW`Fyo%B9<+KxQU^~*2$p41j#F&heGN$Qbah{ap4={dl2=)h? z&=XybQM7i*-;V3w2oc_Qzlddf?pN_GrFim>z&RU?p6COXnbi{pTL7<&1%A1s=5v;> zistkPMl0is^s<q#5Cvugy(F%CbH4v-?GcTX=VZgkSb2hl!g?_UtY^O=rJxaU-h7?y z#5BE#yX~*gc~61|M-|qbB$J91<?Vg@n(eE5u#KPQPhjs-93#LvWL8#>j+6l+08d3* zBCHQ>9~@^)R@bLCdWzk7kT?aM${JpiCYA@qG`1ObNCU$6yixd^y$21Lw*QHc-^Fdb ztDM0dbfXwa#*jID1*tD0wsMH<hHY3!ujmqXv)!=6aK=}6v-{!={}cW@+t33XMgCzK zST&lKZ1x@bZS1J`8i;%^ImaWGw~Iw$2sGgN(Dxn0YmxOB4b?Vwc5TPe5s}Uzd#(TP zBRoHb!3$>qqRu2{8}Jm!Mwv|I%O6Mir;V78@J&7-*1`IrC^Rs&$Yt!;K=cL=Lxao6 z6y5<A89I;sYv<m}9ns@-x9BTg6aB@(G7oGY51@n){**6(=+r;(AHr*|`y-4vzxJG7 zvscWb%SAIhY1h*;G!x#ZcJW>OoVV2~MLBj6^^cev%Hu(6=)#p>od1sAdsk7HbQXn$ ze!GlFWzQwx39!!ob*2ZzdRm*$fURqo{DX|clQ<nIC~U2pw!eMltx439B9<>>`@h4> zy#%xu$zTVg<4@d#KD0mWPy0l<14ZPDm|MxS3sZh1NBD4P&pP88Jc!Y=OQ`31uKvUR zzZd;kA-n;Vr6IU>>cVQYG%Lw%F~jR_vWWSJZR@$S{5{@S&%$5yJGPUqW`EG4EKr#w zq0kaJZAbdjTch&0L+bx@#5=1gf0SrdHXWlzwbTkRMsA_^V7a_h{ErsJUNqzlKRXWo zrQYN9XaezqJ?5v-`+rQf2}BcS{ZM*LBjEnI;ejS6(?FJvHpiIBUYd~?g9rO3{)ztx z`Sist+vVKl!|>L)7``hjVZ+uGmOP($ZS;vNQ#b1Hb$P}w(yBZ@E5J7M=_~_AKi`R) z7zydXR))9!mrCg?Z@~gRInM#RkAK7sdRGSXYb*d-{gdHaj|Cf<n94{fy7F%DUKoNS zHwZnU1hAci9u#`4yuLg-rgcoY@stxg@bn9kS=A`Ah|GuP#RJQ0tpn>BDVG#lUQ<L^ z!27i=dQAa25&qzFpure`bC-z1q#+xR{^Vd*@;~kWYPo^m#(iWTolnP#Rq$SJ!hWT< zc^C`x<?kBhER4J_sl*yFnZ&^zRLKSKfUS&v&ChI-%*Vg{2I!QMOl+mgcnLC$w2)ck zLi7t4LJuGO1?#oj+!nip@v<Dh2Y;<=cz0?*gIFE(-V@4g@G6Rkqv32Ty6Gpe9JaRE zFwzr<R$PphyG7ry7km`P6{AZZb=?Z+-#siF8;Y}cJ?`5nP(lyd1NYO`|Ec{8$WnYP zdO(R#$`g2EtcK;^L--#EFQ)Gt$ie(Y*TG(fZdu&sWzb*f4Lj8AavPmNmW$e~1}wO= z4cFJ@8`)SSr4M;OUJgCEUa-ghlg|>f#0yBL|Ih+lv=iMCxvMo@NNezKV5M?bTw&!< zS~gfD>Ik`Cu0u|7njL}vOnY2KhS<uc@%BnfK9Y_(<4<2I;Ud2%mf^mYj|>#qSz20K z6ldA_Zn;}##gqL@IU9NRF1A>V(Z}vM1E(SPWOAIZr0dvgSb@C8s7g%vo4{713Gz4L zv4xw>!WCDI9LLyGZj1%C<l2AX2JX;;eCf^8F8d-U^0J68=Rs#vkfg@Q)q1>3W+wme zwzBPicz$J-@Ozdu*b*tlD;8VcWFfpG-3hOpolHwid*G~3E%ws{DinA7Owf7#Am3sv zWHxM9wDpQ0X}-{c_WyFoqAUsh$j9*aVkT?|lZd|X;MW2_H;n5$+tJe!(L7Ik$Uo3~ zZ;kW0A9}($NC3Of_K~U>Q<%nkd&R$m&*yu{IP3`Szq?`c_7e%@U2qo-K%c1QSNGg5 ztA$JsyU7~75v<SKpbxbfQHaOTp`^L5?X~^geBWLO?->)h4(Y{dSPEGf_ifL=k#$5X zS%);0TI_Va5tELQ)4rUi(c5<B?f<uv>DU??$k+2O=z+}Px1a|NB711s@Rrk~%qeIZ zZi}7ESxUo)%N{J3ECZ{zeXyHeNC${B=po+ctG}}UM{w2YvWkjdL`k&?V^KT#bNCOq zWkM1ceVWtZ+qbtE)9+Xrk9B7^FmjU^*WFQah2O_JY*u~{QR%dt{YpK?%C4*<^3IXp zz=ymqbm@6{AK2awM5~Se4;r-6A~CNhkCV5wKC8xGVLbj7Nd+6YBtqN4`CC0izXu=W zNocC(kjZ=zS<M!R_c(exV5c}3_11h%-pP#^ZAk!sqegP6T!H&|XR?-_6X$T{e2nIN ziCSJeF&^U*lSLKWe`ZilpR-4>X3fO(cX!`QEm3nsUXCqx!h4|}|B?P7<3h8t8e>7W zjwV7+6FEoZr77|fe@frTmhhO(BBw#~wZf~(u1;^t=+5`ZxnUzDnqYj`O($aHzdqXp z`=|G8Bx@&{zy`03SEA;Ky!<`vSBA41(AstuOZh6;p~r_m9HLptsoq{_`e^PM{v}is zaYYgI`yX-+Pp~qiG7AwIsFoQJ|CG_se~;%+W;u->AZ?f>dht}U7^TpmOl2cPLf`R^ z>ILFoQZpg=9rh3X4mPB*VT=D8M?86|zY=heH-Sfze_A{*qAVlMfJ}zSHPz5!jbtgb zd{>d0rIFg#+{ImZDo4&=n%NSucA-qj?|Q9)i^6gsBcho-5-*_<)b{74V2>S<(tj?H zY0+zj%U@t~l!lELZ;660Y&+QDAAtqS28>AP|Nr=vE8qzFpXcQ=*dH!~)+sakU4O6# zh$xnk{)?PCj=);3?XcNr`b4`vZAELIoh4wQVmG;=V&l&3;zL9Muh=On;r#?}i(ac3 zdrib|Jib9*6sHh>z)kB&L;S>llDFx2HC{C#T8E_NB;Nqh(};W#b3H^Rj;J|o8?PXm zi9cjdy!$6t$yGM==^|1U<Jn`l4u2HqczjU}BY#gYTGbl<kBO0T0O<`6PCI|(`+Y>2 zdJesRc~yK6?br!&8*wi(A_~}fSm0~Vp>^J8@0WZhbP4^%w`{+BO#jD^<KA~4?@=4E zb^(3K_F?-Gns)!~zT@x0+agTP5*_$_T19lFsl;C*Hw(jaBn6J9mft^n{zt6&UFiAq za=fUj`pJ$Y4ZqHl;y&)e{y&Bt*H0`y>lY<|FVxLndXbtc6-F+Xla}Z)f9tga9L*ab zf>>6JAuq&ufKFX4yte*%?fJ&)1e-`7k#nq|Jja*QlCS_iE_4jo!K?{w$0FNM>pYP? zvm2{#aqo`HDyf6eg%nh=5k-R`o`OMhtKmY6y&eBKrxtqMJK33?B+qcg)q?J=7+s0j z0}T3zp71A$uzh!OM4j$n@1?~qi+1!4`H>AL1LX|Pm5yFh#q0a(OaF!auO{N~A4wB( z3it7N@I%QdlVJP$2#mxS@EfKj>Q?=i_sf&;UHvG-R1dOKofIyfguaI?5EfY=>ht=( zZQsB%z7)hiub%%?CSv2{V%X2u!N|=hr9Bb#`nYTkdQyYQ3vX@o8rvT)YW@%M8>wUx z))BTW!__3>76XtrNCb&t@aYSt=RezG<Pr|aUA!!;Z%(S7@PuE7vByWS1=o=dkBEOn zcYagejN!_)%h@UGz=Lreox=;^9U=hQun@LgXlVe;*zMxJxa^b2+jW-y63eL)+t_r9 zZy2(<yoPA*-D8ElQc~+{_6RL*)WV+I<2$2@c++{*B;4^fv)ketS;D)(k7<bSzA;`t zfL~lMzTevd`<a$(#GdMPHK_g_uTIi*@WF0MbMiQ%8r2^3x^9hO(=!x3c!B$YEyUN7 z-hX?mKN$8=L8=hD4!fv{>O1j7EP&72ZeM}~Y$1;aT|himS=thhokMH@XV2|vLUokZ z;;CqARh|&`9nZ{5ho7xNY=Wf5$UthQ=WIdDuJHLyVwvc}cfjT;n6$=w!~+rtA9804 z2US&Gl|Mwi(~Hjqk@3X?+=Eu&y*;OhOJ5UH^<XY?C_KL|Cx~kKg&aod`YR(*rJWc> zpUP&?^_PVwN*~z0uZ^^aQzSIXqMFeDuQkw5i7M+w66hRfic(@d`&Qj!&-wH4{V#-m zeMVl0wiZpqBHjeQ{$lTC3iU+vq|H@pSp7aD&twAl?%DrwbmV&JB)?1ha(}VY;EU<% zEWCS$lYSUEm@O<mh6VWYcfqr$3q;>dVz&Q#D#yz=u;6=!am$OWfzU_VF1sGD$7@hc z9N(H<#1Uufh^Z>_$Z33mnncqeW=;*(lsEP6e<<P_Xn91n==AoS{&lR-1NEHB&be3u z+mjpQIW+xGNgHqbPlOex3;k(ES_@kcD+bRNmyEnrT#cilGE|NhE%?7=BTt~Nd(U%x zjerf7AJ_-h%y-_e#F)A*u$l>9TU@QD9dVXSCFx{o-Ve5ir@hx_X^ez&=+8Bd79Hlf zk<Jah)L31SaYcS!1N!Fzauxh<SHN>)K6J=-1h(aLaCojlGD4h^zE_7?1NlZ=haJuk znu<LWgE684flXUBZ@ce;KHd?XOV8U=JzqtgVl$zAOvWudy?>Nln4*8PzgZjDAdU03 z`v5+`o4&rRfMt!pR8v*p0nr}keHDHM)`Ric4?LI1C5n@gaub^_ZGnxgpZMo5udd3R zA`G5i32?5QhV|29wD<p5U-c_@JQ$zSr`T$0)FOMNZR>KTii><KS!Gnf-L?+jq5h=5 ziK7^`NeG+%2um&WB>j34_Lz?TJ&OB2=bhMm^j$VV<K`9vRatCjfY>Sr2rXNE=dOR9 z{pTNv()<H7==a4M^kuTa`u;F#m5MfoO{x}#aoH-~_Cxd%p~XKpBd<kIK8!Xuw)6Se zm)hvR4M)9tdB><e31<xa)Mxwclp>9v`6_taG@<LrMvMUT5?7$RZAo&8^q3AtS^9SZ z*P`d_bxv+XaEJc%F|Qz>kwxSHVsU0<_xK!G5)OtX{$N;uMx@jl-7q|BA_P|yFQGa> z<KIwZgU?nkyuGJGB(j72dqjcy5hDv)B1(vEZVlew4#C!P7#k_t!<KX_;p%7DFkn2^ zU_{5Eu|?<APbO^@5%GJFk5_5sUwHSs&wnAOMOryZULZHsO=ZUpI3;lb`u-S+?)sao zcF`=jhyP6K@wA9QG=L?CEvIv&UJ)(P)!SKT%310U_8Ru$RbhA3+epWoBAP{Ml2WDg zj@>n8<G+%>lre)0<ln)9`W8P--jIj<qc|Z?$SgQ^T5^lrLV4%?f1T}@R9nzbo&i6| zo+72nK`zPwK1CFV9i6tIv&DbjS?5f-%r6o`dpd#5fgNmVo|gW>FN<GUW%bB=<hDer zz3$66Ira3in5HVJrLwHJBbM_}jLo`PJM<(k!6QnKfweMP;V6DdzBQ`C1O5oS7Be7< zcp|Y0JqY_71YJl?spU(#5oJnLhPA+4SkBI6@8o9m+Ap)ext4F$X71d(V=kk()Df_1 zv$Y~Ge1u0b1JStjS4Z0tiZ<6c;y>@KW8`~vNsPzyF`hgIJE4s#1im+YMOV>Z43JtP zQfj{dTO!t>h15}=5F<VVcm;Jz&LKx-529^vn(`0mQ~IZjem=cCDPZ*|QmF4>3o#XO ztd8OxI*hcy{h$c>x(DZ8bzfD$`*S9mQq09T++=7UW{3i`8moq}sL!{VlqL0R6Z~Hg zwn~hq_eCoC78>^gG^5I>P9Pe`SaKqo{83A+AqPS8^pZY>-XpK-$gYU7(81RhU5OLF z#Lf}D1utSm$yVw+zEylczcYiHMJCDvw2V=L=MiP`B#XMW&zDE2a&jHZjl2JLSX>Wf zL&avg7gl*%uK2ZogGlFnL^(B$pZE;k0UozwaD%ymamOm;HSPymN{632=Y=g1`ShG# zH(9mhRdL4mg#LOwqA=X#tJp4{hozEQBBzgT>1TCKtj740qKy&1?V8BR>dLP233~#| zh6kV3c^z37UMIV>F0#040R2O9=$<Oc9AuaD$XZ5D#B@DIufVoDx^4Qet8HXdbNCYI z&_|FLvbM^Kx7IAs;+?}2*#G(KpU0WkDV~X+d59>YKCqSYAx)?L2kXB2<OxQU8_5TL z?eFA?I;|l~i~aHp-kM6W8tNe(FRzm3yo_jznimu}IlZ!$t;T&w6IITtq4<J81%3+k zU8yoi>;w5m7Ga5yKM{32kT!qTl1@1{)mvWLSc@1wr{F&mB$Ei!I3qgZjDimsITK?( zCx0_J7HxMO5xAD2-}FgLgD-3ttl0I_4>nXH?^jBgZHz*Xcs*|_N75Q*Io2C~05uGK z_UZg<<xzf=Z-8a4{fizC=A3Qo=|5^SH1LmkQ!-9<pf$yLzK%>*lht!?OPv&Pykh6j z^Zt3;ppMVgVO3R5Rk_tQc>V6@vsG<cn-0dCyH2U6&YY8Tly}c+dC#m`w4>Z0+t49$ zkTDHCi>t6fEMPq6c<l_|(pWiGP6dc7<o(s<jFrxtkV}r?f5T&GzB-`p(zCF9e4<Ly z(Q0w{URIO)&=yOLrH1y#g;h0TBskNaw1r&8nuz-H6(T2D7(IVOyNj}-A!5SV_0=Q! z_S|`<#h#B?<2E|0eYAjR3@v&!TAwFJ6ytQT;;8A(<@gfCjg-&+KD%AUJ5fbVAi32` zdXZ;=|NnL~wV@+0xAE37vfX(u^|@r01fJ__X=iv)WHGuy<^D<>R{A+}L}>A^uby83 zzXmPN`YWn5PeJ?ek+dVvYzQ_(P7y6&N12@-=NQZM9xEqpbkoIhG_9(V@!@Qs+zJnh z$<U(~h9%ke*yEDu5k{BCe_bKjMUFzujU}W$o+a@SIlU#UnToPs@b>si_%Za)5qUm~ ztP0IfJk?4~74<Og=~9JA4|Z4GMenO6uOGgjcCORm$Kf=h4d``QWEVA<X2UyvI#x;a z5t&5+9KAq8TYs$MeZE@%95Rnc%HHsK{CiqW{EO(>&tVbxEe(_&dh@Hf(WjNu7*luP z{l3u5!$!jc?0`CocZfD}mro+^Z`7sX@+12Gp)wmHbzNqK#R^1sdoGTVLPAT_)SoYx zHIB&;Sl^`JpVT2LVU5;<6(aNKJSx<ed%kvA4UNB`F@VLdxn11hGiYtOo=%g~WLMQy zJ^ByF?@!rLloT^m9lD#pp^1z!(A<`jQ)qknmjRp9uSykTH2X=+QX6>|@&wkijny~M z2zDYzp^eb?Y5uZ>Xz^czuLKzzMLe|Jx1s~ydOE^x{Q~a)hM9vIreQ`-8{JY)*^o74 z?P2wK3Q<U0Y7u&^8F+Gx06ZflaL+mejpCR5SYjJ5WP34|trQjMP?;TLNfY3MpNL(D zH*D@GXRqFVa*XgN_uH@DMqxRK)e`miV8jlsD66CA-GND_Ol4{-(631<qZZ#t4$Ee+ zrOu7-adp7xV`JG^ZWnq4@#{8Jt&A=71n$6p;|_Qg--7B3ZAS)~K~^`bn=6ej(d<Fw z8YMI0s6?#1T#oDJCON8B)5f%y%*Y0bK{$K$Sj3lQwTut#ZAqSso{^XN2yvEuRPkB# z_dZ<`_p8xj%zMll>|a>mjv{&F&xlvhkNqi+n!*r9g!jRhYOqmW;QMd|JYxmncQ%0c zKvbB7W)^vuPyDRrucW^~OTbg{!p2^i2>#|Tj9VnL3c?%I5xD}nwR~y2&i{rQZDlsR zJzf>F*chX}cxzNAE7%KKR*v@GyLBWhCv9}op~koDu<8cCzh;snZcQz`H@>0qd1^Vy zmoN1fd!ciTx3UB)$Fhmuq_&xf%o5|2ma-Vp^xs}zl#(h^i<C#ao$};o)Oi`so^7&- z7-=+OAK`n(MQ-wltq*_pbVf~DdGq?8k%_sM?s70+#In1ZN=ub8M&kK@68;FQ;X|w= z0Y)dzh=lz=p%QWh4~h;VtH?q-$QE)0X~Y}x@?;Tm>l#K^M#Q=z<~~-G&qC~x-$^+! zMCGA@Y8?qP>Jk~l@!Jx9JoMZaW4CxtI@1!c0(t{4j9zRK?_pfv<#Ar^WOu)M2R|qK z7#^8ie57$*iNss^o4Jq;<h9TS{_lSFh;~G+Bjz5<+OW3$4cg<qYB4LKPQe$XG(2ic znpLQlh?LRKbu(JA8L)rJ%^n-KNn)8x)aDnNj&9o;UzLcOXN%k-BaenpmFdN6UK!Ry z9Yg|Lp2z7EmXq9;x8)+lzWNSN@ylO40zKt<wno*2#oS$5OqMl=k!nU=UKdZI0?@ff z-TvpxTaBdR1h2v-;F^0+XTt9C37x_+h{1UO`TE-rY&2v&9%gJ78~6j2MqQWVc&O~H zdaG|;Ipoa$u>H<vVRI>t`%k#`s){Ns3oHoYs}JTyM0Lp;!x`ki7h}x(umJiQ?Oqky zpKrtnScCr|`pf=u34h_sj{^~78#Xty!2@$2o;SV3K~;pelZ}<Ok2ggESf#|A&-u>) zv!$GkFUV$AEm&_Om~UZ)@r<p@>ay#iVfdXRV$R9uOoz*Ss<gUfnur4Tvuwm`<9&E2 zUfVo!E<DPdR54FWs1(K`^;~pe<=I$cv~sgJteipROLCdN#9nK@Bnj0uMD9){Td`yE zm^?!Nz}R1ZRUR$Z6uS8@<+T47*W9f3vmp7#Kpatc?+?Q$L@lN5*UrL@&GxglQ`U~= zX#T?{no{Ja6;%zUlnarl&l<IG=Q)BppEu4M_89(`YLQx9lOtqram*NNyyCAozMBPm zs_MvJop585+!THc>{9d^TkPc|YB^tJ{L0J9pAbR4GZ~9>w}^~`doO`K=k_nQoi1Uu zv5BV=@x*a6jXJ~|)3PM1`~`kYI)+($(*LVHsP{%yqa2?oD~j3hqQ6ZF$i?(Nu75^; z!x!&<@VkRJk!ZUyXHIYbcVni^%U{za^bz#vMMOVVi#(Tl%ny;?d55pof4?!u=q}!= z5AfD4Nc$LdX#*wbE0sp3k>7Af?6!*T_n=Xcm8ae03qDd^QFG)zW0$Ba_Ig`Au6WMk ze&O2F<(X!BQC3Yima!eQ8?5a|vrh7wam<@5Kx$!#N$1GtH8^KHPz&fHBelHE=BYRE zVmhVba2-8K%Vms@f$&yHE^V>bBuCjlsmGilZud%>LqK&w6N+|bDOJjM=BJQz5sR6T z_J$TcA5~78O^w>d2aMV^hV@S)=;1Dkg7}h$v(4(1aR})x3V4r60j6cPuTHb+1+#{6 zm2a05#Y)(KmV_1b4)`9g^SkmwU@1F*#zS4T#jF<Fde*j}y>8x?Y4~lk613Kx<!$(F zCsW-ps^M(EoYXPzoh4{=r53$x&)qhKNXvS`13g5xVYOUSjYT{gOW-?iv%@#0ZTP-K zloByl)HHcYRgW$;zcZGz09jI1Vh3dhHrlYIg&7f##mO}#ymp8mY7Q}bs-NL++XN9$ z`>=DgwkiQ{6g%xHWm_5BOM3KN%PAEhr{zw>9~enYxsVQp1{<+VTsP=FZ(HBPxJpZ} zI9vXF+E`WN*W_q?F>n%n0sqef7)=$*gBlJoI9zc*&k=de_vq_2P<Ve9<6v$3Bfcdu zfqcLn6_KN5JbV)@a_aWpBiJ6}4bJ)>RY#%B8~i6TElb7ULkn<`{6j<0{>McQ<6B=J z@Xzq{PCjQE$9ya&NQo!UB<V6tUd&aPj9{Cw-P^G9FYZ0kPFnxzKrzsJ6o_k%QIuv7 z`1TugXR+L!<VQZp`}MB>!6reAf3DBxhnV|WAEQ0X#Pf>-WE5YB5rl(?A%L+fSw_zC zJM-%J%}11z*fgL!i!B$qp0EQnJLyg4sb@w(brc>wM}22OMCz%2XO6u#shJY?SNY8R zc<;$4htec0kveL^1`qbRM-b0^f3#bL->C0DBh(2lR3=uR?^2HtHzO2Z9k>KNei=~) z`(sPQ_CKG?X$FfE<^ZzWctL&_EzC#eGB#XR#P?W+%AtO(uPqvff3`m;PchNiTqj?v zPcB%_!HO~t#<I4sp@#nbe0x#X6gC@hDh6WgDmI=M3)lyK4jwFN@y`8`{ulp)fvOo> z<8ss7@(p7Dy3M`(G^@k*iG6q~XO6DEQP!1Eh2>s6uNukjVh3MNQn4ALqnP7brR?`~ z+tVs)ts|Bv<NkY{ZKwJ99Uj+AN=L9V#$!Yd(>@f3=&>)HeaDoRI_7g$QT&Q%hO_Bl zZIjJ9%f2i^BDNI$TrJnXtP{IJN5TW81nj>Wi9bkDQpPA_q=rwkljpH0B}@4oO=mqL zRn5P7A<>`o6g}B6)z_F#LR}tMqzk&2jW@MKr0wtBn<t2n;0Pn7)CoC=526JTHz}35 zQze0qUu;BHO3t%;ucC<D&YX^K>PT#3k@-Cv&eO19GR!Dyyb`<d1%eTX9b>YjT<f8n zTro}esQN4yj`>j*g!iBWu3~Z-UqanRBAG~@f<`l@e9ro6Dz&JN?+-j+0{(WpWiQfD zE`kWP9k#Ges+gzy)Kd1w=;<m)f8|rfbh(Rkr`moZmx$ipO_#LX?=H~Cd@m_?yA#UR zlp4*|A%v$tLUxOt#{2(p_25gd<_gt{mc<zI6243Y(~`2JObtJ*?-4<v4Qs>l#Bl#` z_Nb4_X11XDX>J-vbs&ckHK+hN1fPtL_!bb}+G(q=<o^-R8d&JEU*#75jE*O-<Z1MS z=StUSTC*&MEzXwhX$f_eu0wDCuF-*2QH{*y<TUz{Ib@g-7Op>toFnqmaTN;xzvkw@ z&>=4uDdkjtPX)=;@Z&G-SMz;ppZDC|jbCSepUS{8u-obz)!FDKFJcrZ2OkH`MI5sM zG{~#vYTvncGyE!wyk&c-x_Txqh_iA6ozBW2{$e^68#Wqi#cQH%H@+_8@#auoe!w@c zPOuPCOg+S1yS6*G9Dw&4o%`4qN?C@znQtC~uhl!_HP6L7h~!iOmQ71p4qAd&RiRwV z5IN)vSJ85_84abA`C5?+XG;zBfj&3C6W?LvAumaexG2f}&ef=UlawdrE>~?<NX<8f zlO!0IY3ynuZjgee2VO58zxI!sGh*3v9TR2LE%?Ay5ZOfu#1Q=j)-ILMBfIL-V-R1H zeWp}tjaa-bTLr)CRz?lJM=W#|rdndkn<czGvd9ZAh3GAharY}CufcORhpU*_W+ZnN zkyRiM{qBB|OS|E+m&06LMJrfu-{7-FT2ahB6mgTMvBk2I*&pA>`Oe#VPQ1v-CD==s zTy2aGB$0VRw8SV*Et!m5qkHL2SQ4dzPek7@w7#9+<*owl(JZ<NF;M=N7Qbc=qB~Su zwp3`@;riMgu$HTq*oXL|vH3zCORaO|q^(T1+Qz53TJRR$Gw_^wF2+`XhSwY;4jZG` zKYSS?xE4@~e_{t9qh$boCt(!I+3PdLnMhak5Ap{bhr+HEDlZ~u#Fo!QIr54>rg7y< zHVgL4j}g6a)>n`J26ftOO|!9Be5H779x<AUiLm(jjeHP?iMHhWn!Gd%x+=<l*?f5e zktYLO4a6%%vKojd&!4OnT3^RF_);04%(uKKBKXu$<9Kt@M#PfWU?rQMd@#<kQQmuw zo!b*l98vwBdanC)7pzU(u0!T9GcRq8xFPykT}l$^d_mz$+uy5Vv4nC4E05@rQ|UCG zTWlnS-JM)p=pN&&-}YlFW4<!5t+`^D?4^qHyT%UwyQ-#o!-q^uOt~V~UsA%g+h|R8 zAbQDE;~pPD&xodEp==8M%dRiBoL$CT*D#rk%@?;wRzy&!i0<TMTHYvc<Yd`pOg<M8 zTW4gYI>LT{e_SIYH~fzp$qO`=+Q7dzn;0ATIpbgc?^pJrg1Z14AP$RRczX_JxzuXd zomj9d+{UIMrt{QDXKciFTZCT`57a-<9Mz$djkbtC+<+Y*HTWdgB-dNKi@p61`ycEY zY>cLdq?@)@7&%fi)pbz}G7k4)#}YSUyPwZxa{a=B;AfRi6ch`Lni&1C%#QACrpK&c zZsSYC?{uH%wAVaQ2k0^Rt2jWFev@!*qU~`vX~4(IIk2n#h&^~}JdL3hbO~+TYt0|U zL{<b5moBhF^adFuZZRcaq21TA>tD!eZ@+_^@Hp%WPwW~BTlPh+;?MyF)93ON?%tn| z0Dis~`&>K4OY#vmqdVD6qXE9bvq6+5$7NdYmbD$;=Xw0stZ+RylNf<!9M2=x-(01( ziZQA?BCv;e?;Ih%seg{h^I<B3>dT8Fa>!!iPxg$CmA}A(;v3g9@Ak8^>}bK0G2F$& zM3}hX>Mx)@A{XF6nu2|jrw#a?(&pjsF4M#`<n~0ll09mg@F=}@q<byw7E80{ytOK6 z)FGjCHreiKM7R4|K3HghCy=2fa@{){osHPW6m@}KN8j%|Xra%O^0Jir0TwlD{L<>L zk$ew}0RQLlbZ$$37wm^%gL%n#OeTm$c#BJ*rkTT;wt{t}joHR~z2pv$NmdghmG*y^ zx&!%4wHiGD?l#3~nw4DRe~2^8v7AL5AKDJFJe;zkPUjfKL<yPMoGt6R`UX6L=j(Ga zn`JkGd{?O3i1?O8)Vz9mh-)!=|GD`U;{yCGIzxNi2zvP2YLYkqL*pUZ!Hz}}U2gQh zTz|3`GOIbz(+qI~o|2(v8rMzQ%_!|X?@A&vLiG8Zwa;8L_)tVWsYFWSOPaA<CQIh} zBp<N?`iOfqZ%)eSr&C?Y+=e+5dr;gxm;NjE@l(*8@4*`-A~1`aIP(9*aQ4~dEinw& zb$szC9d&yw#Il&r;~6c)JkLCj{(rTv)E@TFuG{dRDFVH}#mgGMz*{54ctScFJ84_9 zt+^}4<L2y58KX4%4jI%?z5?S8rbtJ3yZ;AG_F?4wP5k!7y6ZABySurX8P{Axq3JZ# zUBuH}<GN0k%jNPK8L38kubYrBJOi2=S6%h+_8*L65T+K9w<M!T3oFc1G&N#rJGG2? zy4|%%l#?~o4)+Qp71@h8>e=`Y@-FT|0dzI#;OiyEoPVz?gIWp?v|Ow|RWz9jHZF*? z<`u=|5_1mx!K2Ta#z^D4K64v?!fxsg<7$#x$%e_%vLL<SzTn<$Y&O!wklVjZ(=%Vp zG{1rO;{VJ7u=xlOxp^j;Qa)wbV3(`KKlSJHos2`S-+3Al0&V?rc1pYwi$y|nxtcG2 z##h~=rr&OE4}Wsn|7+t8kqKSH5c7C|NUQ!~t7&I;Q&o3$F|LUJ(*Nk@9$_YxkJSm0 z)<|pAfgjyD@`^5iKTkO}kJmJ#7ltpSyyewJb&R)nf~}v+-0yA#Kbp4UBb%$<lZ@~_ z@VByxx*rkC`OR+7eU4JQSZi4BtcBJ1S@IJ8z>jz!{COhM#WXj}-QK;6@0VrhYMMg! zp<UHblEzGkSPJzaG3AO_U&*vY9yVN!WE(xx$t>4flAo4`?y@D_$3MCA$$a6@zZFqh z-Y#Q-vDP?k4)H8-r4Xgug;`oWInx@4_#u879^Db!iD@p8Ioo)qJ`&}Lt?Ki%yno;! zvKeDI@Pr{R|HJh&+Xzv`BqGqLWrj(Ed0{bHUF7wk#ed8fL1NmjvworRN_JG$*#p_n zbzH<#4_%LF2)pgN?MfX`o1_kK(#16W-Mv#SF%$7OELin4QsDWy74evId2|FuEivUA z#k4T8$URWr6&d&h^PnfU{KUUwRm>zjE-aER<J$<=zIy$yg#FMad@Z#(8%2A%o_RLV zn_`Rcv)WCU8H<c%eox`(Yf{R+*!7L4Di1I(z+QGDyhJt`b>T&d<A@_~|3;tFUc1H} z3N0jq7xYj>Uw%%`iW({_kIf75xP~nWRl+E}5C8IpnP<%&>MznaprX0N{hIe;nPCNz z(vyTFflsa$|J0w)H*n{aaoxj7bJ?D3ay2qb(*$A?dBfI;g4p-$T+8RVBGzp7w4rZF zOWB5GbDfe&%*^-#&O7&Bk&$Nn4_6QF1Maut8NOe&T`k8LQes%2WpN)fr}1fsiEMA> zQ8eYmayvC>V^(FIcn#GQ{jd=jdRa%C%Hph#)Z(OppSO%jhNu$8K~j(>gYV2P*l{<N z(}ksUboE!hbGIQ|ZY=km2hP+kSuag=hnoM2v80=M*`3oU&T_fx)5!tFNKx~pQ4{~q zWDNGJM?{UBxdCP;=!vJ9?!dL=mAVGso1evFNKQ{??0-g<@hit~s(X;SV;1CPcyX1_ ztfSV8a;kwWASPf$JEccURYd5l>bn#C;w$Z1_`PV4u~{Z^wJ<_tdT7t9d)zFOx+nXp zY;GO<V6K?!%~>%#y;E;zI>2nLdWccnZM2XX@%5aW@MfGMPvA*>l>RNXI4S+7JI$Tu z23Rg{kn_x!vL`F%NzIeGZ;5*%zL;XJ3CKuld1`r<sd}hybKka|sed_)j4(See8U2x z2U*p(?rDe`n%TU=(&L*RO~i4w&D)ELoFnqmT_e!gDtCypMi-+XTdXR}=KPg<$R8pu zU3T;#oYZw(bzIsTwrZ5CVU!sp?s+!JD`pq-54;21B^z9U_@d1wXoNP=H{R`cHM>UJ zetLZxa|>(^SHOcKl=i`$>$=J+7m@8GohO~AKRbf0Mg0<ZCesmJw~n4q=3(-lp2Ih1 zng;~p+X0mWy0{iAE&g^2&VEFlzBe1=u6@s4Ufkx#jDdU)qEVKiwagyw9`4NSgYUd| za@8`mI7@n3z$E++7NCyGjpnzWCVVD4FTWArh`-FybTsX3=y#v!WGB4Qv~=_g#+4py zZWjMT#L$)G1`CA!<P|cOCouIWa*+Dm3QCt(*H>;F&lw{ak*jmF)3g}9M!qLkXgPJk zRZg8SEN>e7H@Z6LbydyZTxX#5pCl%!!*ncSkc603)f%?MoT<ippB|k(oxgAvjq;?y zctL`I(TJed$}A}_%5!8oqOgv4RZ`8u@7vlB+^zxQWkouJ1_ex)H5oInyWhcLxVrcY zwJ47FpBJjRD1rPXR0*X$@?(;d=6W@s_M(G~Z0=2X4;W}XrUzsfqaG<D=6lcH^fBhu zWu6asY*eIu&3G<LNw!QCFw$ZaJtMxM<S#m<u8s2>QJY?P>bx+!(p~J8=OJy2xN&*q zZzQR!LO?HbHQp;Tho3FAWo_IG^5cs3m-l9N(bxRfbp?Kt6L|-@)VxNd?8=2H%mgwN zo;?1kKcC+dP}B%SU$-T@A=c8me4E?=UvoyD7!`RAw=GVtT1G9L&$Tet?X1C<JzUbA z1on!5siLrZJxUMKm;5l!n}hDHcp|((T@T^QR1xX@qi5^2S3FH!E985zUxeXaJ%XhW zIb3U?!FrD`D19H`_Fg~Zgchfah$X%5iYLr<R(2%m+^Km&^dsl1pN*+TR+UxNB{$4i z-ZmfP$_XEZoZgnG6kd*9-Zf8r*nKWA4#>O#P2_%~3VZ4LfHb{W7k6%BhPwj)6=e(u z_8YOzHC)-E=N@}fs159*7{?wV>RKhf$hhX)-zlzNd8>fG15cTzz7E_FedP4i7QI9! zc;2}3$<BPct9ig~?D<1Ocoqg|-z)7Eu0^MErU$XqG}1k#T;N{*Jz~`@S0|19bQqgR zN{gG`Jab%+@eSrPt~0LO-W;p^@{RSji!Qmc>w@Q3lARVc^NR(ZGVq`nK~i}CdrxX< zWHj>T)6>YJbK`7qy%Za9vhBwE>SOxaBx(=5_w4^6I;bdWMwZ3WUl<wWy2*Zbb&$<e z5i_&9kr}3%(8}JPL&W!Q1WD=Zi`l&~`#*M6h^m3#n|0L>q=cEv%)tLf^ff(><7|J2 zON+MM8AfVgKl1psft{vqz)`W9-Idc>0h!laC{r6F!mUnfdun@H$o$yL>=5tX%39vG zb;`&0dtLc?rJ!BVSM}pVNCEy%!CIJgayz2G3>XxC|9gVbRa=}A=DXUtU7p_&>7y4$ zfL39=vOd+Ld<dllS+DRw!j`vT-kxsb+k97_p4-MJxbmueh?_867Is~f@r?!|2kPM# zZc*9TO%z)rPr)-x>robX_rTVvI9q4rn}9axuT<t&Wn<%@3`5!s@&-~aX3bq8DmT7} zFbEa}PI~*BInI)v<_kD&q+u&OZ9QRhBR_>GH03aIuaEo(ujn+|YuEPM-RySeoHD*~ zFL5Pce?SX)T~2g8GVY3%Iu5itM6L%;HWsiwWRJJrPWq_RO0NFwSEI4IBOaIw%<t4O zHrP{K%#m~CW@VWZSXFmbUtiar)4#Uh*@d|>E+e3u$yrxg9j$p+Ofrhl4(`duHubmo zTXet|nb3<1zXwO%I`-2QV5UI2-(*LlrbwiAm{VLS%}pe;YZFOlXwi9YNiBLBwS@P9 zBNgn&jqDibEKQGi5{h{4c<vdV8J;$znY$X~*H}^W_%HtykWm#Cjkx70p|-%{AdI%; zHN{Dp4jQp^-s@mLDH7h>_s?n1Pr&h$fmh8_0sU2dbAcL;GrSahIJ8^{vePs))+4H; zGvCm#1+jTCH!^6HE4w*FtyF1@Z(;w|65eD(;m4ER8}Y=BeDe8LBi5`7NG^|ybMyfF z;5r~V-kt8!=CZ4&t7mthmOl~O$$k#&Jb9%SJ*|vuO8?GttuQFvYpyZ68GjK)Q*a9r z92Tg<{4n1aG+9pmti>a?t>-!f776Gr>jr+1iRrn33nDWgNe;OVxsIy!ux5>q{&f8C zvp>GbW;o)Ma@Mt0^oGUGETc1>=$VTcE9qlBC9~W`T|dd6WZbX5Kc^17WL(9)yRQ6& z<O~R-`PG_$*s$o)vdk0jtNHT>2J<ojSv|obr=dJ8>3O`5y~TG2^WuA)c@f>NT6pc9 z8b_WkbLU6gz1*_9JHI=GA2NIJ8*&o*VI{?LoIMv24L)-EsLSPJ#e&8pgzZ!1@eTF0 z@Mp{E3FaNmI>NTSO=t8sYlqiCdsaJ3_H>_nbYL*7FYC}h-N{7&%SSSsheZ-ZTPp6m z&-Dn;9l0j<QXBUOUK(Ri6~$ip7_n>q4m?e>2NHL6Sad+Uipc7E9LyFgz>$cOvUvu{ zg0LMMZEg{ZNgQ`KSWr)5$z91^OH3^hDWjjGgbdC>2x2c0_`4HCULXXKgkb$lU=2y| zEj&V+gSMbE=mrLXU@!`d0n@;AFc*Y?)nEhI1VX_sZ~&YFSHVqi3)}^dz!UHeP*lbM zfgk}$3etf*pa3WYih;_YCTIkjfaahr=mL6yeqaz74#t5=U?vCwOTcen9oP)EfnDGr zI08<AtKbf}51xTn-~+(PjPJ)1_>d8j24n+yKp{{BlmwMQO;8^+1WiF}&>nOIy}=L= z3`T-+U<#N97J?;UCD;IVfPLT?2m_bFO>hT10x!TDKsg~2!~@AeCXfZ>0|h`4Pz;m@ zbwNYW2s8zqK{wC?^af+V1TY;e1k1r{umNlV2f$%)0)&C9;1+lSUVwMt126>I3&aA6 zK~j(oWB}QK1xkampdzRa>VhVqC1?)@fgxZFm;&a45U?Dq13SPjZ~z<u$G{nI9oz>W zz$d^Z>H<6<4oCnJf}|h=$OLkLnxH;t0$PLKU<jB1rhsW+CYTSFf|X!3*Z@MoL2wux z11G>4a1q=A&%iriD4gFQ4oC=6fHWWr$N`FhlAt`O2&#hGpe|?xT7$k|5C{gt!CbHq zgn-px3)lwsfg|7)I1jFZC*T!$2R;Cof%68W02x35P!?1M)j>^A7t{yML1)kd^aW$U zI4~E?2b;h)um>CjN5C;~3S0!&!F})myaLk1`2iAuR3Ht=05X9*zyc*fO;8&&1WiCw z&>nOH!C*F+50-${U<U{Vd%$6E5nKk>!CmkOyZ~>2bm5qQ<RA@52eN=1ARj0VDuSw@ zI;aa8f~KG&=mvU&;b0V)0A_;_upF!g2f%r76Wj-nzzgsSd;sy>Xn&9j<N}32F;EfI z2hBlC&=zz7y+A)O2n+$k!5A<FOb0W;e6Sp>1e?GPunQam=fN#-2Rr~zz%#%-I4?m0 zkQAf=nLsvRf%2dxs1KTe)}RaM2S$N$U<#NCW`oUO3)lk=gJa+_xDM`u7vLQ*0&s1D zI3OL!0dj$opb=;anuE@u2j~rg!6+~ZOapVl2CxZi0o%X<a1-1D_rVkJ3cLd}5c>;a zfp{PVNCmQhY@ishKy^?Tv<H2`5HK8!1Y^KB5CT?$&0q&O01kp9;1swBZh>du1Na17 zLAd@wa*zS!07XD$P#-h|O+ZJ`3k(1w!89-%tOJ|D7O)4L0B68O@Bq94Ml7@|2m}d1 zI*<#L2IWCj&=9l*9l;<l4J-s9U@2G)Hh^v51ULoGgS+4ncn4r`Ok#l)ARWj83IPk$ z1nof&&=>Rr!@)=}1%!a#z&5Z890Yg36Yvat05T5t10(<$KsHbalm+EML(md*0YgAA z7zbv9C154k1NMOvAPn3AFTgtx7#GI@qySk!0Z<au22DXX&;twr6To!v8`uCgfnDGT zxC%Z1BOb~Gi9rUC4HN*SL0M28Gy&~FKQIK00dv88@Eh0$_JA|sDtG`sfu!+qo`M`8 z4=4i4f`*_Y=mL6yabPA`2-ble;4nA?Zh|`i!48QBBn0U|0Z<H71WiF(FaQLD31BwZ z1h#>FAPl?$#y2>hK`f9Mqyu?CSx_Cc2VFofFa=Bp%fTkF2b==e!2|FH#7c;J56A#Y zf+nCP=neXTabOx)0ycny;0(A9o&h5fu4#}Q<O8KaUC<VE1H-`tuoP?n2S6CO1zvyz ziP6p=7bpvAf<~Y(7y_n%5U>dx02jdn@Bze0g1Uozpem>dI)VXU3RnuZfMeh$cm`xr z<N>)rdC(Aa1i@euSPDWx7<dF;fq2Pqu7YBqF6aS<fSF(uI0&wTH^7w~<pT@U2Hn6Y zFdu9NVc-QYzQwTv#Xxn?4NL&5!C`O{&=hDJPzbaI{lHwX4O|DGK=PE>56~Wr0_(s{ z@CoEgg|a~pun>fScOXk@9AhvE>;OCs+8zXheIQ|4Y!B=M#nRy(l#Y}j_#4--{@6E# zYFHy*S7^1O>pLrFpY>t)-h8xv+jXzZlQGw<{l#xB=-7pnC{!kH>X~hZSVzV!_bhXr z3te)##&=VPhJ~K|=T5t(Gsjt-zH5=;hXP}*kVDJ=Nq;PrH7MhY^v?qKSW9*v&037i zvl6^YSYk~;SZMh_?)T2!>qcn)ES)!=`FXn4CjOn#wO$?zjs5oYrFZ>zgy#MDzT~`u zVOFY-PwSkGA7Yhwb0XJY`MX)K^DfW2^2vT{K<9+za(Gr)A+LHSj$L7ZwRPL>)c5c9 zvxcQzv*pe1I@TOfu|QyvPS#Yj@TAj6ezi7rU;M1%oXw$glW$Gbx9V!^Ldv^uhW?tx z8a80f(;Pv)LU&BrI<9T!>7h+OU2dFi_9Uyv?^W)9LzjkzoawhdY0*hm^R0hB7`pE# ztL-lf>P<N~*GlMW^UL#eTSMI&lPw?lbhcH{HT%rsRavcJ<x~H4y?)tH+O^ehZ9?0I z26Zp;<HPL(F(`Gg*D9-km2+0(f|Jh$TZLmUnD^jh-_X3Lc4b+yZBFQ}Gs~JLxIWPu zIekXE;t3~OfA=l?(iJ@4I`{75x5J)}vY4@b(XlJ5tQLiLZ%le*h4n0u_n1F+xpj5l z?Y|SZ9b&Cdb9hyb`ag!oPItU~?~5}+8}I7erSPnARtxv(r^O47wXCWvY+d{&R?*@E zR`=Q0!<w@uZTDrLrde}BUZ?tNTRZEYV=Jn;rna^8xe(pov_9#koUS^=5+}!{=`rcF z_3Fs7%$a^UW3@}vu=(q5_d@yftUsOl_it;N>&4u$^=DYs7yLZ0(ER<O^Oyd(UIgt6 z{bWwK7iaz{>uI6_30|f;6xuON^o*Bup0(n2isQA8t+%c{d9a|vwhdO2rF6xn$t|ro zH7`^j+IW9x?3bzQ<}T3B>K%XHyv_?2g=YOUA<68YLPAd^K2h^z&RwB@CkUuCD$`<X z@czcd3wP>fE$Do(QvE&CthR;TAAhj-7i-ReN2Y7;|E%1r+RUmksekzXO)GM|*>@Xu zTQy&I4}AP=cldf|-!t?ZoL(&JY8}nfwo~a_ldK9=S|ppW{bcdki%z6nVb-wtnsTeA zSMO(Sq$RdJ$-mH=Up%<lse!w#^Zl#N9a>|LRVnYs3FmI?41JWn@BF8QR$13_KT5Iw z(*kS3bJ_7~npBo`AXA5&P*MdX*;OG<lfl-;u&&!0U0rGQ{M0-o{pGP%>iYjwxwEjO zRf+F&m3dgoIyWRiLw2yE^<?_tI=7Zjx31o8yE-MSVGW)=wPycXNiEvpW|!pElUnV5 zSupV6Uo9+gsm<(lm&RLFy6!Nqo*!tH$$R04OV8_t_8I)Zn0lms=$XUYZ{IpOCiHEV z%lTsQ-$FAre^}{Z%UM>|K@Udd?=#qHTVSVWUA!UIn_|y*{W)i`H8snmGP@To@wL-L z>v}==-j3OKhgLYzB5AA(yF(k@>u~bIksqw&EakDpMQ256&xR#xPPQh+PPWrZ{#)@u z$Ge@iW+YBo_}<zpR@k|*TVGzh>Pvszs#)VTrR_Ib1IB(>^=q>~t!^0`?VA<*jCJJ4 zi;3E}E?Fs0&s#hD$yKY`(#?a@*STulee~PLpZ1@&N>_Mweei>e*11(Z2kv^X-%9QM zJ83<NmAlT5Gq(E5Pg}x1zK?y&@k`YD{oCR9YyR$AK4;CEssGMfVIf_Mxx=nn-)z|z zxah@I>%*(@DQ7)CXSEDIes$-ktJcW$?b3x+Ja6qE|818M+5fUO9;h95Zu}K1<lA+x z*UP`Gj#)Ft|Nh<;YksU24O3M<;wwM4Z~NDL%VvpfcMq`b^;?EMuT*q#&O$q^S(C5V zDcAY$&`vw=8UK5B$9nrF`Md|c>xaf#+Uv-jPOGiKNvD;nkZ*Tr#zC1MPf4`an*8SA z?1Gh#TZ_ll+g+gMv(SzkemK%-`M<vMABS$ao*>nM24SHyu4ECjcxNl5ctiKdU)G1t z-90ty3$@Ma*YB77PiHo_g02>*J7oBR&>MN*z1{xjaI4d)1uttR7;oij5HR6+<7?J} z70bz=oi1B;c?Yb~Z96?a^ve}%%vtmF*aS;M=g-+aY<&B}R@bK03V7I@&@3++S1Fom zm1X5WU8U26Kdd$Rnq^FV`fscItUvP1zq;GXv$#i*u=fY8?=xfxeLrfo<=I(sdY}6X zo#oKe!={VrIbVkI5ry+USaQjV_h(4hqOnIq?c=x8s&w$&u3pC`Slxa<e&_7tPS(to zHD@JWwAojm>Arf5b*7>A_D_e}^_}i(k0!qTujx#k^}hB!Zu#0dls8IKr0(-G*2WiA z-;}#C#oBUd#ZSMVJ0JR@lN`8W(cf0Q^pj`Fls{XOt*{{n5*`RmnEnM{x%GcmhOFr~ zCk<QW%NHD4y-b(j<-b4j{eQpp`iEY3E`)?yE;@b2-dr1;<xnBc?pnF)x|P%AesE>f z|E%S~OFV%KrdhM*m6=ny-muV;4@Y*r)NXC)^$WdfwM;hODc@I*KF&1Mu5S<D_Rd<q zdO6z<{p9_7G-%t7u=7{@Uo2*~@7kjF`m6Tj)73%t`WnTvl}>j5M*bwBjF8u#K0VUs z87IWKp8oNjcd>USY|`^Y*@TyU*V7j3FYn*KgY4_8qAwjOal~Hl<nv9hg?3MNpj)y7 zPkhT=edR2-eB1Y}f9$L8<3H^BJuYrfQ(FDvuPJ~1r(wQ)2Yu;l{9*6Vqfd6au7$kQ zf)jS?>EM5Nm(Wu}a+Yq>rVZ``qe>EQ_b7JJNe}v4`Htq^`B#xaZRRbwZFQbqszzAg zQ(w7uF8mI5=6nq|$XRyIA7^T>ckTnuG(5kr9H(6$TND}mxw_Vz=?}Iy$R8xvW%xsg zZ$G`$@})}`PMNWG-P&bSR%!o3uRfVl=FMI(dp_jx{^7O8`$vDOMQEScG--fgPDBOp z8cEO<_WpJCP4&8*zWI)R>&p1%^XrP^uN7$Eog<_u-VaErpx6^wsh~vTd8we3<3y>T zjALcVpqwLAnV^EfMwy@*>^FB%L98hmlo2VA5;;l*nI%1Znuy^)D7FOH3H0BOdfUh~ zo|O$sG)`}4tSA$dafIGZuqqc+f<1M6%P;9yekl*BgKWZA@0)sBN!PVfG<7Yh>xu|} zdr-`N)blSCbObd$imDz9GRx_Ik5FUfI58g4jWeRC#=dgD)6<ecu}83yL5YHS`Jj}n zoI5BH)|3n~p(M(RfB)=Dt96HV+H!%a;sickjFV$wWsMIUx^ZYKLj8k?*M$7;OMe#g zq(V^aV8)IFK|iO<I_>-4bLda)vPuW43Qk#7QP^~;3#)*_svrplT)cl;ziA(<3Nh_} z`JkPgcaQ#<l+|^s0P6V4E350_J@z;zzGGiD^06-$G?B8K(H`PT9$nS~Us-*jZ?ns) zsLLuF`8@I-n@T~~D6bK1Sp?QOg#7C(YYOgU;cZ+-w@Z25$hu*AaI{NW{5z3OgTI%0 zAH2s7ZCH9N4;Fk4)s0u#K5iv^=|<?Xopj-CT?R$Eya!I}0`>lM^`&1IzCYf!iP)bq z;nzi#paqQmg8eBQ&4r<l^LAfZ)pS|Two6UmWyg!M<77GSX|u-El`ZMXizNU0(*F~l zzLMX0q3gO-*s1w?-;DQsN-K~Vf7kr?5!<O~pPb%|-kmIGw@Dpe`Yhq+AI{}SZL-rT zo|Hkk!+h!U24KN^zLXC?Un1@m_VqW%V_(Mpw}~=nTV2jyzH*L+mlNfl6VbN3e8A`B z=<7kZYkXaA{3U{}#%|Y&feQOuGyG!Q>1$PjF;{HcmtKzzgdYd*c@=&b=6El-k{;M6 zcn=3Dh@|~}`L6iqv)i@8IQf6(-UU9Y>fHaHAyI<H?imG5mDXUVHn9pBZZbzbWMBsN z=tMz?BpMJ5LC|n%m;kK`v6BG1!yu<>rL7lwju(#AO0BkNy-dO-0lb8Z5JV)PV8)<C zKnRHB{XOfFdDxQnoc{ms`+4{0Gqd;p?q@&iS!+G(ve#OBCb;BWq-?jFRF3>QjSf&_ zNgG$IdvByNtMgumSs=3hcOsFII25NACEw>-Ess1IrRxM_{hrP&5p_Zq>BY91($rRl zMV^SX98Q%U>V&>&iEd{tcz&{%;yP97yMgQw_S(}lM??@w^rT862zI?uu}pV-rP}v1 z<<dk8dM2Z@H0r{fWuu?}wQpoMR^@bJ-3C&7NnD@bt0XYgBY3kq*KHxCJ;^6ji!16e zFv<qv`T01&Ch8>YhvP$hlu|6p5D8$zUvJ6-_B|TMB%iJ7HqqXK-GPtO(cO{XB!w}t zEw;N9pZK9X&r^IFPD#&1jIYrq+EeUj<3qd|V`#LAHWK@#_z-WzI2diBjl=#w@u6_5 zHW5V~MP(7&i}(=No4&ppfb`^DF0Y984~K6mzU)fLMLUPX2E}LnL~_x_;gF(9dS+cC zxoFF9nADsKDmKw3Vc&|6h!-U|Hc`)Ge;6OZgG3$pZ6CSs23K%0KhYjzfQxXca>pj> zb?h%yJa3G^4pB$r@Jhw2#!D{hVjT9<dZtR=tim0n<(0#UIuato6i?hQ<wc!`!<!Xf zW=SsUFdS0;ke#cZlw8zRIGn2WJR`ZNi*QJ514w=aWgIq9&&Wggp(@PkoOW}SeA{0n z6!i=a9|U)@a<_uHa2oRmd6)c7!~Z;;ZA)|XI2(rc^Sj{6`PkK8!5#<nx2g2imuSrc z@pc<uu6Ty6>Uc`=CYwC1mmobl|LBaiKPtXlo_2oIx(bqKNhGex{#}Nn#isvlC9nG@ zTG4vNT{b&ujRxt@v2oc)%y4Ae_%0=H+W0=j^K3k+_z)X!Q#{|sX>ADElWmI^trsCa z$|f)SrWuYR8>e+87^$bPGd8#28IFlI`7FhoML4NjeyI3VoBWRzUzHLSM?Y0u_v7^C z{)#WN>7lhQ6t8(Up0D_F8y~57m5tx5_+lF`RD6YvmnhyS_S#B^<1TUD!;zgr;%KVY zW8*WFyvxQTO5R>lf3CP`OXmfO=h%3S;!|xrrua%5{}09K8I^C3DL%@^pHMu{#{Wz4 zA{+m2#fRAVONvjl@mCekxADI#KFh{y6;IfBz2ft1{9VPXY<#QYi*0<T;>&G(kK(Ir ze81u=Y`j(R)i(Z>;te)_T=7O5|5ouP8&4Ddiu%pQdnn#+<A&mGHr`8dmk1~25tk{h z`#t(fAH~tQow5Byaam8KE?uK|j!k}m;=2E&@9-%;#3nyfaar!QH2Ncon>P8I6dz^d zqZOZM<Kq-BvhneX%krHHw^Z?YHu-6a&$98EidWfqrQ(Zi{658(+4zHsFSqeUim$No zxZ(*Lm;L1oM}v+3R>`ll@uw7DW#i8%zS_qBsP&|hOdS1L@jM&<tJY)V@)<qDk+AVP zCEsA<4T?9~_<M@0?tJIfZHhN{5_#~U;w?7btazJ^A5gsA#^sm+YI$3^JFMhgHr}py zhK-+AJj=$@MMpZrk!|DWDQ<6fXniELr&%^Tduly4PHQPiKF7v?sQ3^Y|B>SPHlCxn zY2$qrA7$eM6)&>!e^Y#_jpr*q(Z)w8KFh|#iqEt0TNSUe@gl_++xP^<m)ZDa#aD`a zOI^HI@l`fnq4;VW|GDA`8?RDa`g=<MBEfrfjx*~kOO<?+P0yo>H`@5)ic5djTCfg9 z@fMr>^NP3GIIWu{|B-&3(j&%2z}X|AxcIh`&k*~R{CdTuAEh|0!xjE)li#Lzo{jHP ze29(jQ(XE{N`F%EY@2+W;w~FMF3x*6@>43r(P<@b+T_m>&vWRv+jyqnJskFOagmaj z{+J5nQYAkzg~U-G#qIu|qj;4~p4KJPbAjET2MeCzm}s+8j7K3K=h?U%)5~zovhkag zo~br|tKwBQUaa^s8=t87VjI6(@#Qu?L-7?hUa9zM8<%5?Xm@Nps^nMM_^%YVC8t=+ zP5#+vlmCs9Z?f?x6mPcirxjmm<9}4V!Ny+}yoY0j-5{K&IcNa;%<VPEyUs-7EYSt8 z?}ES61>f2Q|F8?bw+nut3;tynoYujgEnX+O;50OIHhEe{e>P5Q>(9n}cENjh!TWT< zbGqQPcK>YQ4(x(o5AJpx?#NbooTK)^F68MwfV1fz+XXM_f|qu|@9l#BtP4K33qHRK zPVXt4&Hi{7{MTLZ$GYJ3{=?byKidU=z6<_0@C(s7%%%ZVY`PvwbRoa73%;!jzN-tq z51hhnJ|x4H^*D|L)8@>aF{7++sbkE{yJnV;EQ`p4G51cJ<rp(*`mFM@+2NTp@2%8l zw^o*ysSDx`b$rvz3fw=(L6`mI<ugkibNdeNKV-1j4bF4iI%!6E<vdb<YuSvM71Jk` zPy0pL@ToJQ{@$PWoi@8-QeXVTs|-)vFWC^stcq#V%lZx;G}!AXomn<z3LW-$3>z_W zjM6DA4bGcYKC_~1)TD|@<>h7Nj=)T*>pK9kn_f1&G9uM`^BgnE=0zq?o8EV@Z=lbC zDgUxDWs@pOr#iwjODC19;}O$lOvXL49b;ydPm4GT$|`1;A<;z0`h=oJas|_7Oq*Ug z-JvWRQ&ur;Qn_Q?%!+%<DjcCmS;eGCnIkkKQg*jEf^^@(-u`)xzTx5CJg?mKm%D+q z^9>Q-KKj;T1LSpe(_ncvNbZEVH}6_;=2e=+-Co3&Lh*`Fu9Zr>YA3?#FU7q=)nKX6 zE7bRwfq13b{?bmb3`^f715q~i7kYg{hfk^yH%TrI2MRn;ggHo<Hb^KOByJigf*L5) z3>18zuo1b0NDLG*gM=P<2FM_(N5~Hnl7oc)K|+3z&;~z*B;1F-h2&r%Iao*z7NHCl zlGh5I*GhSz;aYLmwL<<{5&E^_u4|>dxc6EiIYit$MBF<>+%-hpHAI9sMBIyl0UL&h zdxwa7hlqQ9LdGZLeL{mzX!8j@{bjgxYkzTTe{pMnaq9pfK0t^M5aI)bvH?Qb0CDR8 z5$phQ*8rhmfVg*{yq6RUX(234Bqn6E_YhEiC1jNciCd(zC@&GAc;&tQrKoZvX}nij z>6K=BrJY`BqF37Ml}37{#a?NwS6b^GD5C0>4&;^I<dsh1mEPl(j^mZy<&{q3l|JQ_ zj^vd-<Q*i^$}7FdD;>xyJ;*Da$1A<lD;>%!eaS1`$SZxyD_zkmy~-=y%Bu>JbS$s* zGOu(1uk-+~bPACPURmJ1K9O+!^CXmB=9O;Xg|DD;qDppFSw+Rn3P;&IR7<nL?wa91 z)k;@pmz9^5MjRDorE~D5*^J4K*;A)ahVazsrIB*l-HnP1yGaqp^s?!tvwrTFjVgCW zWQt=J)p)ZblV?^&98;#0SI(a5m{L(z<|v;z<L-N=&vKMj-Zg1T<%~P&zUedPl+k`R zl--Fhx?VY>eA<kA9n<ff9Vx@<+=^+a`AW-Y&Mt#NGbT+hgYt^<vKfv$@0>R~g79a~ z!U=4hELEe*ywg#7S4G58Rxt%aW%Fj;IR*74w5V1Kmtn)4vWmOp(cDSXB6m6vp|Tls zNO@#txnr_y;O>;|UalH9p&2k5!qW516BMVOGV%O;d|{*aereNO&oj&MRVljz*H5X1 zZT-~qFzM*a_;rl;V|+N{d5qt}xR-G`ZYjg<&p5qnOB;nd03U6S94C~VrgSxbh{@Ab zyXGqxAI$j6jMH4amY3sfQa_CiX}+Dw(_%u+KVkge7^nAoX(Riu!$-?!sOKEw*E8OW zaa!!C<*#6z%lBiP7DH<JVT=!D{C39k8NZ8hKjSkPAIA6`#)mU5$7f`G1C0NL$p;yi z;~r9e1mpBRGHsMTBk|Gk`h;<lae8l=Hj)qFqvcO9ek0>9JU7us@;Bk5<>h#S<UC$? zGWjr*e}nM?#>42B(nk7k#z*U)!8n(vcamu%`CIVO@_%HU`#-&>Oq*T4iSbdmuJ!C? zoYsnHzFIBCAU(Xif6Dl+OumhATGF8PoMe0~<J~YcMjPqp_MgXiA+BjX7czbu<5w|0 zj`6{a(-^DPGlKDA#&2f)cE%?#PHSego+*r%Fg}-YTEd~_<BU&W{87fK%GUCKV0<Fu zFEc)g@%4<~#W=mIO&g_iDLz{N7mQD4oZjK4jpWPl(ej3xN+&*r@odKLX57p8RK|Ub z^Kukqd>WIdcf)C;aC!YRjq!VMP1`w}@p~Cxz<4?1ix{8IIK6jH8-+UqAFY1{<1-nj z_tI%2d0yYHXM7f}X+8TG{~6;)8Lwd6NewbK(mxv?t>=4;bNR~{k1+W>#w!`Wp7A-1 z(>wFDQMhyQ(cu;{&hv2^<23i6<>QS1oblHf{{`a*7{8D46O7Z+Cau2*b#Sneoe$un z`NfRSXPn-}r;X&f{R0^1`G}>fVk7wl_-OriFkZ!YDdP_^KAZ7hGG4`alyUkE0NU)~ z{*Li#T-WwI$2gBywp!{$dU*Tt2gZ4Ow25&pzlU+&9(BKftdw^0`uq~cx%@!Jd3!{^ z6QK3*_K4o~*PORUY2QonTpV8CB+q*>UIV1lC!2AS4=DMc+IU#;!8Sftaleh1C?2-) z$%>cRc)8-UY&@d)eKvl-;tOrOTJis|@g<5sW8;q~zRJcQSN!ib{<PxjZTtnrw=lkt zrSne4DV<+Y@_QK%GWl~1oM0pWB>6X#JpI-JZNwMhqw_I~agtxF<bP!2?<n5a#<wZ% zv+<7<FSPMb6`yG12NkE^d!S9*e^l`~HhxO+2W>okr@WtjFM>9$CsXkiHr`Y5KiYV2 z#pyRDw4TK{(CJ3MJE6J7_<F`EJv~Yf{Wb+{+McTw|JKF_Dt?YDCI2fN>Tq3*lm6?K z{AD&CQ2a_84=e7q@v({**m#NJMK(TJ@lqQvSA2$zM-+e1#_v~r3F9#q-zONS_*N_V zgpDszyn*p0OwU%vNzWrn{$m?|T=ArhKdm_Z)(34mA74;B+s0o}{HHelhT?;5e68Ys z8-GXfLL1+v_(U83Nb#wR$6>GbpIMAAW&A$IDSbXwdY-iLgNi@P_(M$3pBX1TN0t0; z8$YFZi;bs$h?}q-vGGjBPuqA;#d};R@6-9xTk&ig_b5)kr$U>SzgqFZHa<}CVT>=s zeL6iuj8lBCSMsA7{|_cVjqzVI{siL>GyV+Yk1)QG@llL#VVw6Lb}>Gh$+s}hp9@x8 z1R-pcKD?i>igAi>iHdI><Bx*t^m&(YlAo;Pn{2#X@lR|#qWG6Ke!t=;Y`j|W3wt6k zY&w6JDE<Q*e?;*d8-HAJ`Yju-=V`_N-Ns)~{8k%(Me*@A{)XaHZG5fbvu*qx#TPLC z8yKe3c_HJJ&fAnc{nid`ln#&KqvfAxoa8@J@~<<#oXM|aoa8@M@{KlrQ1M+hepK-T zHhxO+ZoQxso6fKFUGn?_8_!f+zi*-Cdn*1Tn|yD@``Wli@nJT8wc-UfK2Y%@8^2!h ziH!69+r5lax&@T{eT@GWT<6O|#z{V`<e#_kv5LRU`0tpWHyI~AB}%@*#wRPj)yB&e z|JcSOil4Oc`xQUuVg!aw=S#KXE*oE>_+>W!h~j;1{Bgy7jQ<|t=ybc0af<KLO8zd! zA7}E@87KJ{l>9s!e?{@AjlZGzQX5~Z_{%o_j^c0H_%_8GZ2Tj|={Klo)9LxC;vd`i zLB$W-_)*2bweeGmXIyfo{`8OJxr^~9fOI-%G5#du^t)KJX*)BOp6eKY3fHxs5aX2o zJ(c|3jIUtw6^xU7ZzcbLje8VdY~xoe{;-V?RQyRBzh3c|Z9Jg(n>HR+yurrDD!$dm zOB6p~<C7KtlJP&VbU4QNe=?q#g%fN#{mYe}-i-ejuIu#w3FA*Q-k)(w=ZMl{GCqLG zk71nT?^p5@Y`j|WpEG_7)3b_k-k*7cao%rP$2jk|oO>yhVx!?LHH0J1@yA1Aqx5OQ zN2fzC#;HrH`K2~Jv&7x_Ej}jC_2e?n_4Kvr$yRy>FnO-$2FAIbVKzOc(le6Db3OF? zZnRN+xt{AT6Ik#Maj4__Ru{Z~@02{x_cF$xVS1)B&fCG=KahGTPsk=cAL{s_<iw~- z()KhePV(ee`aRa>F8FzuLkOFemuL8WHpR6+ELRtLD{l9PD;ekM_I$Ryk>sDnN89-Z z<2-%(U6GRK{yCI!E`N_FCC_;!<Gfs~Vf;B}&x<)JJyhhhoeL-tv620|@zMOVF8Cc+ zk+hWm7<(=MH^#Z1Ykw-lzoUP|)hWJ*=~>tX|7#cgSQmWcH7Wf(zM~b_`JRwsj@y_# zFE0}r=lT9--<1Al9O`t~$oO8yk1@WF@r(N51RJIQC-`VRMT~#S_-V#@x^2#b5H`}o z<2%kP@ORSxOUAkWk^NKhT>oDf=lOdHIVCm<m&?!Tf+rZ~<@$5Qb-uI+t@vG4Cchs{ zr_X7|4={etKzSqC^BLpkF;2R*o*yutWc(+JYkTy2Hdixw?k8BGBQ^?``$?Gb&zb() zZTg2e<^6Xud9HsN<6Qr<jJHCCs%9O<gQPyPhld+woaA*nST>#|Z+ARz<LQb&Hdr2z zeqN6~$N0mzruBbvT}qzUSD|4k&i$~0CRebLe$EF61QwiJK<occ#(DdaM}y$lNY6@q zwEPgp|C{j!#<_eW<6M5+2;7W~^goY}*1wi<o(>1Q;E|D}Me5<{vzqaAT-W-$nL=EI z%lYMu^Ke@j|CH%5Ln%Ex+^LNJk;%_z`~}AU#yIzft&G3O<j=n`74DxH{~_ZqF+T35 zlswn}G~?W!G2xUvPlu8&__vI6{rwBht|!9yDrV=OZ$7*H2ufUR<R{#o7Z~T^zRvgn z+@te-3*&!gd>7*{Gd_qq$Ji)buK#Anxjp%}3UMLN`+-r$xt{K0Qu18SQpTTwh_?T6 z#wRkqhw%Z7pJ4nijQ1Fe6KoVO?$6(6oa^bsI3<;~CztV87$3y=tBi*kzlHHXG0ycj zGtSfD3&weRrWZmfHj39@@zHj!W1Odh<2I81ZaTOb=jreR#$UmGTK`pybNdG~envVl z&eP###<`xOjQ@>=`}8=nUfR#g?;*x{x;cwd@;u#s$v97+rx;(2TXlRNDo*Knjq%lt zzs`7)aUSl(+f#bD{nd>Bo#}})&h5Paj+7oA?w=Uv;bxYk<az!MWSpn-FBs?L<u%56 zxUG!ya4#C43YVu_9^*V6hA__aF~~T#zmRdBUsD+8@-rCc;l9cEM3}7ey@7GA=b{Oz zc)h{opJM!B#(#HbN}lr`6H}b)&tjaHiyIi{>9d0IH=$D7KYtQVuu=Um5g*N)7(dAP zDaN@y=idb(Y@~<tlU?wKONF?Q=kfhL<Gj6ow+rr?oYKSnY9!;_o}ZSb<as){rlj~p z9O`s9#yHn=&fO__&M#-2x0^#5=km8R{uT?jl<{X7FK3+VdAbX}Y+B0BkC~ohjPvsQ z#yu%{&TqI^^7F7eAD@X%c|J^W%J(LGbh?EZ-^qC2a(SQKPwt+c;tQEPUQ`mBT|RS0 zigP;;&r0#Paj5Na{w&24jDL^uTE@eS*D-E9fD>$F&l-HR{!1C>;pQ`*VDeKK=ixrj zI1e}WE8L8Y!u<jt9qtp1bALF^IIkbvG14OSti@jIxrcEsU%@!n{}|(3{wc<}{N+nT zu)_XzEZiFyU(fi`cuKyW@g0owaQ86I!~Kl$7nq*zOH=x}|3n$*cD~Fww==;wmp@?R z->CO5!VjgweTLa{2jdNlyOyQozhL|)jPv*wGJcTBS2I3}@oyRD`XB#~RJdHv4}N`i zp5Fyu!Z?rbCyeuYJLBP$e$L&?Q=I4H-xz-mBHEv?`0d%{+ZZ3s<iBB@r{@oTm(sI= z$xmUN`_F2|xt}cmeM%3P{|n>1JRV@2+w&#kykGIXCsO*k{KbrO`Qj&2@|^$XsTAk= z^(5mPA)?dy3&wf4-W6xpa|7dC&t?Cal7AS7T7LoKT>h7g^YmQP1^<w7?pL36!O#D% zls&w>WHG*p*%@V=+w*!Cd;}#fwr=?FbTgh6Sn%CA)ah`5@m-9cOHPlC^t9rm<-c#^ z=_G{h=ZrVwT+2Vf_$Q3-S&0*Dq<;@STK@9?CMr3%)6Y2BlPRR|8`3u3Q}MePPl9Rv zGrHiv=z=fog0En_ndyIl@g(B|p2rC`dwgdy&g1)B7yPp>c;JsI{XE>`jPrE9mMS}J zc6;vYg1^W(_mfLrOzGkF4`iI%Gr9|YhvMf!-TC;ea!S1unLO_Y-orTW2hO$WS*-Nj z&*ZtDg^Y7OF`FL!yL8K#JlFF(#<`wje@dkfFOR1g=k>sHdN{#G`SJxm+HXt$LR9jD z*lS+f1wTrICfIa(4k3luZl%EyY;?LGAFbzh#t$$)iSf@EpTc+x<CoLJJT}Th3L~NF zqmbgnHsPbgeT#AKpNAO#lF9d3jT3C7rx_ou=NiWMGM>*k_rq`(yr>I4xeGq43x0nW zd~p~2kuLa(F8DpKA(GfA9eBDu%Q!EmUK%vPM)JHJxq%vKY&yU6?>d_{u76*7+M80I z^l<&l80UWOqK8jxB+vc%F~+(7@9lyo8Gi@5biRu}LRR{DxR<^SsQA0sYx$=X*YVZw zLBF6ll^3#A^FvGz_n+@2AcT!%58<Qr=O=K2jr3fJPYIo13ns))$n)|QW}KI=(Twx* zwUqIVP^rVcrxqvJ$R3^!7uE?ZcpDD2d@bW&F@DaPlsxBGGk%!KmnyE~J5b*4m}%qR zSKMNHc>VJz<2-#HXPl?c9~kH9bCPlHR~N2L#p^w0|67Wa{p1s?(xjYYo!nD;ayzFh zuH*YNCBCE!`JIgOcr`Q5<F%i09<Q6%r|da`L!FOTH>5aaspcWZ$u%?|&p5fZ=4Fg0 z7@tdp4I8Bc*Z&*Fx&G%F=lWk}JON!g-0b&pf~~VW-Y?I8YU5S2B)>~>vgas1TF<kL z^ZM-r#=mCr&PJ(^^c-XS$BZ9md^+RY{~uCZ`;SN{-1mFNuf)0Do@ILW18VzUW}N%U zYm9S0d5iHDrsovn?TnAyEG-~ADbD%%@_e+7>vc`Dx5?`y%j=UBj6a8K+WtQ>zKQWy zKRCOd9@{0?>85`lZh+zxE>E9wCQs?9x?7Ilb|If+oLoTL*?or$m-KU9#5j-dTE=<$ zZ(y9Kf3K#L{x%lw?-}Ry>f2rL-Hda8%cssIHnM*;K000|<J|t28K21HcQDTNT=pS^ zu#x@~_-Oq<Wt{8R{|`a(w=nq`OrBg)>#1U#Tu<}o89&MR%Z&4IKVke~CVxA1O0bbV zoUdY>>-T&l#D%;chuWT8#=l`)uahPHTNs}~4?oz5^Ky~(vA}|J`~O36-Hw=2%<%^s zU!?e3Ob;&?=j@RJTF>v5yiakmhs#&k<OeGG`8NK2#jP&%Jjyt)uO4TdmzO^<&dbXe zjB`EbG)n`>{v-J4d|Al&R>qxsae__PC;Bf?Jc`@X;olkO;RYG!_TR`jw|^eveuS^> zj5E&tr;Ty$53YT}eBmcN++K|HaElqIs#k~mcgDG%1mj$fSj>m}yWzvrbIvCzd#DQ6 z`k!N*%eN}7)4wQP-tVNw7#r#5e%OO?p8hVzx&6Hu=l1teytDr>NCfAY#pE9b()Q0~ zoT?DbHz-c_Qx`BDAKC_z(b&j-64CPKlF`_R^XD43;@Tb|gs<K<K1*E~$@Fmj8x+^& zx=P8v$K>fy+w%uXENmoCHs$Bz3)}NHuG{y+ijypVuDOE}7n{z<<tib{6(@O~j}gYX zJ@+xr^RbF?I@I>R%s5YnQ;KVQa+EzzG8!A%!^6#0T+1(}%*580$y3v+!yUpnHHn(v zVAC^1=^4i4xt=iNTu&q8)C6h$pEG`(arfsq!KUq>sKUKiaf&YwH=A)D?k$RIKh)2& zyO}&M7uU6lU`2X<i$iVaLyQk#{4sKRY-A5r;adJJ#_87H_|Ue&#xo^$yl>-KiXXJ` zo{Ep9!60lD?rD5<xOXXj9@v%myoL{Lk1+WToNM{>4~fe{4}KoBlV8F(PlwTpYyIow z?T$N`JTDiejC23IhjCsmW-`vpMJ40ho;n-HpRdZz#&vwZq|PWdN;jU5f2GbPHhVtq zVVvjV=QghMvCYPHKDv*j^phT)j|GhL^8Pa8Jb$+-uG3%V@7GM8=kM)DQ{nRbox(Uz z&)+Dn_3Qjy!Q^@Vu4J6&?@NsH{C$OSp1-d%&h7cu#&!N?%V>%GqCC^vKy^TjKDvD| zZM<2Xm)Ll=QnuE{^?0EEp9Za8|IeFVuc5jApSL9_Q?zNW|F`W88`tBCdVF2W>;G-b zAi(tK|7|O>bCm#3+qkax+H5>OU#NBTR`n}grcd*5$pdyClssbNvs3~nY+V1JoBp2w ztzZA2n{LN6pEXtL*Zn5Vb$h*7wR@WD@euuc>zeETdCNLS>eF2R&zouE`hVW4Y+R4q z^WU!{UHX6C4%+1P|GClce$%GI)xY;#ZsYp*m>qp*|9pC6(p}i&XDh{isy?bHE1%Ri zf}bgN^qo8@GRe{RuGzC4eJf_t35k3A;+IzWDSj7Kp6Y$y(%F%e3{L2GT1#h6pI$Zt zN@vWBl=U5XbKy1k5zf+kaSw%8HucUa74#dO|97@*s3DhE(eG56ua15|gHmjBv12;C z3?It+e0=!k>Om=t|2e!x((hqM;bh3u&i_5RQgP*;>Z-#rQH8rg<)glktq;`xYV1j; z{eA~M)L>I?DNpcix8Dm!cJ=R+PzUP%D{SFw`&Bg|;(fOJuMk=t4mAwWsa@Zv_mn(z zEK{pf3{XleQ_uPOO13^w`*GNl<b^iAY`46>#g+ite!ZXE#r;+L<o&B`dUg8geTBL| z&nB0r{$TU_HZHYFo9WVh_-MvOL;4RoIXsK(GR5raH%i^V!sggI-db%82WRu&CRKqq zD#hf#)R)lr>;41TZVwyC(I)>;(2=JE4KNy#v)|tX>^r^-mfcNiZME5NPb+s9_piJ| z-v2vX=bQch@^bw{^E3NpW5e$)55SK*4;nBiJA07VJAl6Pyx@6xg9i?z>qGMTW1pQp z@w^4W@Q7~Cltw3hQ80Cu3N@oFl|uOf=i@&RTn;m~Xksq@PC7oyX<Cobp?AwlXXHZT z@@gSvZf=j(IafL>kHxyzB<2^IrCXvcPBXq_#|kJ6$J5tQYI+l$@-eqL;F0dxIneoF zZ5yr~HjS(5OiQxEM)9KMxbd*zPCwU-CNjdlMCGO<Yo_S?!|{i5=-%j;PBVJCBQn#t zyowCz!p`%UeMZfO`SoO9680?;7Q`PBW){TLH+1Sb&-7+c$mWA}WF8stxel&!`H?lo z<@t^&eYHK&lNT7(<TTNf=SOahp6p>%_dxnaPj)wIn#r#Cq6VCs)`%>#bWs})!&a?n z)dOUkxwYZkdb56n3xW{YXx5$_YW6wVdN0#IG)?NacEpEu)OK9%-BH_exwG9|ZW=Gu z)@%`d*m)P5R-HI9Yd;@qIvWvdM8O%hkgzwqOoW(Q7tXDf`ZtmVxsBo64Z;X(M2@+d z48T@p_GvJCG_K*{cdM*MB&evVNL1l4IT%k0loH=HE86}O<DpVqPTr0$+}fUse>UCv z&FPMg&iusnoRsQObbS}U?jPsB&0pvrTWDI}jxnPLvjVZZ=LKRj?+?WORt1aA(o6jD zf+PNTz;gr%;*Z}<yZDW#do&o;UX(nuUf52tgW%UB__Y+IUHryxNwDaA609Lhq+sE3 z5<G6aROgT1M!TAXQBD7c1SyJ-kcuAc?vH+f&zIeU#!LJ0IS{P*G;%3qD9>p#qieJ7 z81FCfkM~dT-?=6bD|7hYq-$?eol#JFG+^z$G2Z*@DxCSZ?l-NETX5tsDY%mtqa65+ ztJa$Fo>}#x)E+imVr*)7Jkx{YUL=eC4`?5cgq%3OL9q+e{u;S2ZkuA{G^2Pm;nRND zDB6zC`#5gIrvb-GSCP7}<U<s}QLa=VZZiX<C`$*2+djc<+eigeuRCm%)Z&`DU8{5F z=KzZK83OgBGut{3yBncR3%hTmaMYdd8!3p+lWcxMy7ZM_RUu-g6J|;zv<`#TlJ`hG zvs@=h$!0B!y+}p~zca-cM`pcD>QdZ&E39zeh|t}`azrTZiY(M-mr^k5W@HUwE${Tl z$9g(CuV^d%hI<ypQw65-izt~VsPWQ9<gvRbhrVY~)CKli8P2Z+$_~cE7o;qM)GA>r z9V~{;Nc*ot&L%kCVPisD(8>W=k4!--6eEx2e?pNaGXqh5pN>YkaI`}lWzlzjwz!^S zETszXrg+c4n(@p=Q6KHQo@$hUZ=bb2VD0l8Baix{r_MDNeQ;4KwW24TbiXjmSojXE zL{D}TgzPgG?h_<UkY$3b7bIPf<$^pf$T@<n5M(KcI9-WTQCj@IZIN63x!e5K)_`?j z^Ot_>aL~CWa@CD-{O}#xXGB~$ns*CYBr{rzSmyfMe1|LA0?r*l-@ZsMow{ae2dRFg zy$ZTDL`82}qTq(DnnsjS<n62UNExu=RBvlJ!p*kx7MvT43=EVYWsildR7nUZUzid= zwiuVA_J8j+s%4;Uglmf5$k{u^=(j#{0nVpn;pWefi_OFv&G^qdP_3(W>9BFtrH~1n zgg+IpMZpVf%z$5pd?<Wl5nS;au*TU<R1^_+)CBG+L(J%Uh)<})$%rB|dg7eQ#Uba; z0$+m>jZoceubdum_*Ww)j<>1D6R=MBw>F1L-#6pE->niL;K?+tOb@H25LGjl=?TPe z$*7)%9xf90s(M*l4UhL63Y&Z3UPmxK?lg`?>9ydOvd+T(8oG-8kJVn46<sfh`l>lq zKNYv(Sk(bqMprifjEnk=DmGnliaL$7oKdf7b#y@=7oqMz)s?zcT>JnP2&+_zsOA}! zW5&~|9E)fpV;U?JcB&`2d0MZmRjHokc6FMh#l92#+3Ga+>MD_xRGsVVWR9~*TO%yt ziKi-Nof$efT~`=IO2BRAK!>`svuSWImI3MuRFP0piV&fLf>YPv6i7|CnIbr$R8l(K zCZ%oX2@6dI0+lIkX8d}(wbM4Hrvz1>u5RU>{`g3$n1yQNr8XEb5@n*~9US~kn(zJ_ z)l>RD>)LqaH_l=4o^Jwzx^JP{@_lpxUcardu#iA!c+T|!<0Ztar~x9>ij0Ke?pv}= z=N|0mW?0<=7A~tQz4qkg$3G`di6GoOkh_J>NuP3i_gqSc&J#)peWI*Qos-ofB#Ep` zoQH$)o=}dEai7jxm8et;OxVcurOfzW+n`g-{Wq%5VMDM6X^eyoSlzLgDMlb$r3)n) z631BDLh@Eaz&dT#HlG`IHlT(xYjrDg5)I4_f3yP)%<V8+8yh`M)tQLDvG7S;h@S37 zfD*u1_^JSD1Z3;-I|0%O$i`)X0Ot@`A#RxrKxZp)_8N7>0>0CcQU2WH)?rviElXR_ znTTAaTNE??NMjW`f8GQ-)n>GgT9#pLzBX!EYJ<M^NKb95S-Js=UwOX@N;M1lPK2$v z>;=C`52BEGmBu6k)}z!R)^dbhw(~5U8;gGZwQN|zRs)1#JZ?IpVM+DZO>6!Cuzd-~ z{T*RzBX3`Zp@FG`@302O^zAsKfx+27Y+x3lq?*2ZBRZR&0CpawCxG4`P;$IYcC)6# zsJ;dd>t?JMFdmZzrn<PI3u{`VGW11jlq+?Zl{(B$9p<P*B;s3DP*{I1<*RAkmQr$C zO37_0CAX!N+@_V7&X51K`;j}>AXptMoT~1)`%hJbwO(x{v#;}3>tC=F`eXqAZ^t(k zBNb7rGyPbcSUPIU>d&Q-89EcyR?5zQG2UnDW$B2+f1b~sb|~+2eyq)?KR1IiirXiX zR^LK<QR}6`(TRe){s(?V`k_R4DeZN7(6LagY)a|>pX+6I<4~uAj@w!6q}WukjG=QC zJ6$gH-B8H#wf<ZhG$Wh&?G%2eihnU4q}TMdojod`Jc&DPlVRxyem7Q~-kQ^Co+Tdl zP3zS>QRlkf9D;p)4Glpo5K-&wn(8wAV!o0zu{RdI4Jov5XLR><f3~xBHgZl=RV^B0 z8ZRlZ8f5+KH(dGb0l+}N*)=f>J^yjd;t{~e+0pp~5TKMkYyaQ$Z9k)WPWAusd^2%K z2;*4d0f3(J<P*R`JOPA#?-|hwRL~fYz+lRB45qwF*_cc_#OiArPCcW(E<}~8Yux|) z^)=d8Uha_7+J9}Cu1&D{<G*shb{JdZfqGhBsXy1IH|6rOZvU6;)JkykzuZ3A>^i$0 zIvTi|D$lyic1D1eYi*f~H=XJFsWXi_Z~Ncm&zXAvxAE?@gV)!hSpI|jk*2d0_}|!@ zia!;M&hY;~$S=`>U{<qyvsKlpN(~OHvPZUGuvg29{DV5#FZn;P-_|ak-QSp>;ZRhz zlzukf(dKj}E6h(>mNH&>ny*dYzyj6x>IipwC2t>8xXP3lr=s4*7!QqQr!>AgQPt|R zu&=MF!na>$`HS;#Y%Ka4&ZwS8&-V~+qi(E&hIn)x-&wyy;Pn5$>UXoW&|$CRkF|7k zc#nBE)NH|2#gUE<YkTtH!!(#*MG>nxX4Jfiy?2YZBl*z5j*ho!Kqy&7N7RTV=g<+= zJ;`!9qIt38U37%BawLmz^qRQizoC=<DBY2KijKq`kJ6F2BSuH!jt6l>Evci0zC>v9 z=>LFOhm&`<%J~WZZ6WIzO(2A<Q-x!^yD){|qM0gV>8A)_$})ef+Or&nVA9H1ya&i{ zNf7jI2*w`qtiZKk>~YWIVqfi9i9NOBq0%+}XsgqY$)r&H>grHwoj>}yGniIg{Q@Kc z*3N*nrS`<-c;=7p&5G{J@;f*Aom&D{;-@tv;I|U~+V;zX);j-#`w^<s?_B4Pp6Ccz zFVf}86*P>tE@&wOEM)*}BLm(>7IuhK@;~@(2c|9Ic?~q8dG7pMqHCNX4Ey<gy*<W5 zKa`_<E<FXYW?3+{#6#;_{Pi-L)Z3zfjhgR47H+<U^jr*ucrpyY(MzjE8ob?z%P4bU zPX?JLqbW>4ksxRk)d~xe_mQ5?`7!v@(h4|)e;gH)^YAFI=5xk`OMik}zmJeGk5Jr< zJ;r2;H$h1eJwu;oROjJ7So8%(NR!5*D{zJz#Bhi=adZ6Y{TZ-59RFE{9JCC?Z#xai zuL`UqH^(!t3dJ924_o^?3ny+B4MxCPV=N*M#}pLehwBp%+=RX8dG$Miz>8~*MfJGs z``B3e685IE1*7407|01b69w_>*N3epjN?L`n`Q~IH``(NR*WfObj2-B5RsxDIO$<J zPlSE#m6WEg%Yrpq5Xt7lLBoZM#h;uRW2AbIh(8ovlTqMIhMoJ#ozQ)AQsn36QpC*C zHDvt4kjSW<&17sN#+CbRG!_m56Y<eG?Y~pbRQf)ifAH*4s7B;OiuO?P7)9~eL<7|r zl`7tbl)>O;03({<uo$5sp^7MyI$m|jABk|;d}!eq)7pwchUwE^xF~=~(2U)hZI<>k zOEIB~fqCPl&+%zAou6YIZ<ty8S(<PoOnI3W<~rTTW{jY=nAUJi!>-M^W4xGgHDklF zU;hH*%daI1;7zNqd*;3?{C~d&l?kRc1M#trj(D}>$`8?fb#9?)&OVL)T+H1K+Z@Q< zY`oN9HJ~v1kGIsG{9f)xfBaWj7^(+})^=;XMx@(=`w)|%L8}pC=l<MA|JL@PRqH># zGuWfn55bY~K!(#F@9D4_gI3e=CX`(YArW7;6`H6h`};HoaE@v6(k-!`k5bhAzAX!$ z3zsHFT-URP&gcIw);(0)e2xq&+S1Kj9&#pz8*j_3u!iTErFEN6QX*NybD+nx#$+dJ zF&%og3R3!SVaPgZTKn}h=@{z>65ljSyCV(P{Sbkg(dITYcWpR6*<*yFpSDqfq)IJ> z`At{!^!XucM<_nZm2W&&AMz#g7eDZZ-*|X^$hXaSxX#~WyBQztGJUni!wHFcGzO~M zjOs_z9gh6!4x@Sr4mN-3O?bD&uOAFQ$#lYea`&DnU>Ap-87Nm5k9A<~sbnJ#b2HQ7 zZ7xj8Z1sH;>1mc?)YR3JYL1eg34FVIuJv2H{hPlCSS?P>fnEShqu-<%3)69cx?mUD zr42&88yO{ZyD5m`o;_(?F5pW}F^WE{*o^_Y@d;m(g+WhOK?B@&Q)HxBN>gpFo^*e4 z&v)WCI(?hSq32(NQM+gzO<CchZ>zj4u3Usn5Lgtpo-~LL{}%)7)U?5(eyA=+%bH1$ zu(daAoeWz$tdGN1!3xwYwP7o`(h9B$TZM_1FHUxJgk!;#;aFk9ECq}ete{zXH3aJW z(AsQ$XpGzx{pK8F(bq^@3LW!ll%&N@V_^mYAr#7xb8N*lD_c}+EbOi?xS}U%s;!uY z+UdeZr6iOUJxMce#Wd_r7dEI1W_EorLAKMyP&QrkeMm_inPcs-w&(7!9$2~gkafbj z!75l4xtW>>v-UumcS}LMcb<1c*oj#WSLVf(9mw#DMQ&tXM7iO6ADOXvZZj&njj;z- zO)+|HaXyf^?tzsE1IbuaOAb&-+3w10q|h@lnNn1XL|s#Hg&8kvx<gN#QyoxE2~Iw+ z!Mi1yheCm1MPIDyfj0=J=G=_Y38Xuw^-rUE2v#36s=vkotk_K6GsWmB@-*G0JSgCT zcNW)?ccyDEs@Uyoiew6#$Ub-GT7OJ9NV=!M`quw<YI?j|tnrDk^}uq!wcZN8K|{mK z!&ccUjBKZwR&a$GZOOoXWhg$dJ1u~zBKt{Mx*I-3L&?_#N%@2zT9cwCqk0NeeX;SY zY7&Pr5}SURvGh3ZFs;L#?okK#s53@3MBCGiMJGs|;rbrDL$-iqE?Sn7+DJb5&Ez8f zRb+K>2wno5OBfE4?q4N*Bm^HRsja+_aF&0SaE}n&qomf?7@6<4>a89A+#Nydq<{10 zL2Fyk`Dx@Png5?5|1q%p@09;oMc~T3MCJb_l$J941HR2D^_we1{s*1d_1Y5jokCnG zo9iM!!2Dny;=8<{6lDQzjw^HP;o-O&Iaz{I^I<q``U*3xa%CW`@(pSjlW!x}bw723 zQ4>U+;N24RCX%B?lSu8kH=){fXcN^+rpiBB593?2;Iri8__-^DB}!|o@C_UaFAB%X zRw3LqW@%d>Uetlg0@)fHp9sb8KiY2A?oFdLKp`|pSnlBrAm?e^B^*QUzmC8=0`YsC zn3z6n$Ukv57E>1k{e*yZ7#ZN|`IX;z=>xbR>LT|g*nj9lNLxbjo;zT`Rd82SS=14l z&;;MuhxBR2F?ERE#SQ1pzZJKy!I~du8*ZsbXT*#L&UIql5*CMy%#i(&ZoEH&iVqz! z>Q7<hhZ=Cqn9u?ZcQ@0yk=8W57qHsQ=pnSRU&8S9epK5OGgz_KutrdfkT?M(KtcQ# z)x+{8LZ$G<18Ed59~`y_ZC`wz)A!B%AndCPS|9myPhslJg@!GjiM2V1;8<5jD4za) z*tr*I14UT&yI>L7YdQ}L3r$}`Wh?b}toGLbs@YIE8-9k$9#s?4(E+R0BxfMwaE_wv zNZu}wQD7X&o8>X8Ge>fmJceUni4u-^xpSo_kRap~ZX}y@hnA!Vaj-Tf{~~r%mL+4T zp_irluO?FI^*=r@wyVaN$3G`f+ddS1jBe<87%x3Wy=mv+nk|9&jnp0@<Us5(YGDJh zr|7965L+Z48me%KKR2NKEK<)6u}2oE#|G+@?9B=|>wfyMcuv4$gVjj=3p_gf823A! zb(Xk7&lh;OpeKth)Pb*jCSZwx0+tNc5=NY1|98wsC*fAAu5#O=i7ZR3yt@NcE$`2< z&IKN!tm9+M2M<z*%^wSU(ydoB;3;NlE#`05QS@j!FP@%{3ah)Bdl-$t56$R4^gp)w zV?8})yu@Rea3Sjn7jE;%N<8_-OPk4+QM#TX)`s32`aSV<bPTB$t;qrmVRb=HAZDfq z(lTnWCZfgxC>ARCjZiHd@u9!MDa`n*qrhLIUZ)p*$>XPvn12k`Y%rGgLRmLsPtaZT zSnGeC+(y+SvA|YW+#Fhyz!RAfYM_*+UaG&g<<i;{=Y~sn4uc~{_YMu@))rWep{>o< ziJN;=@1~G)YjfL?U43eu@B4k57rg34!xXJ|qCUckkxU54er@bg3OEq^g)3mSLp?P6 z<C)!|Gq+Ym!ra=7`BN;?!&LQ9#Hil8tG4}I6!w}W>nNPcqPNK4KujoY9VW^T^ku<N z%(&WhQjXg-o~bVb&xirvrpmwjqvf7_r~j=Ss1L_q%tm0X-;?!c$hj_*yFQZj8m&7E zTZhBemjO$~s3x(XIaYH$q{FcnDTC1d)lh^{?2VV!A%ogcQHStkJ(ZS@I>o6Ody{Bv zWO~Rt?QFAZj^eB}Bjj8k%3aqP&gWt4m@S+kP#lPx9mq<gE1eljkHFwi=_BIBYcuvL zDYhDaDr`X7x~&oE^jz<P>FByH&472DL#xU|u{VTC^o&mz#Ue`KVwg6SxmA-0;Ud{> zRJWt_>QIpS6m$sw9TRsHlqTshCTzUaQV<__VJhAJaeT-wS}vYeL+WC$QYwV-Oim%j zM|I?`C)-E>xrn8z=u;RkJ(>kkE8tEqC`FkI$6lq9a$`LGU5GhCwR^i4SnnbcThB+y z{b%XvM_Ee8Lfv6V(GbQr5|j*5BP|<3$rD=9;GqE5dQoG#0^QIhxHE7rzTG%R%{h;1 z>-|Uw@|cjb+CyoF(;Ri$CQtL!X**71HTgJ;ws%xsl)MXJ>i(SdCOJ+_)FUyGfp|b! zoG+{r<vd(^+AQ7We={3O!m^0RN}60@>&=O{5y}51r4A)4y<UW+msDgR>#%C3;;0}^ zX1OhYE>V6>{$}mbS-)U!sB~n8|IHz|9g8kyjfQm!SS?!+e<eK&0sIg3sDe>ooo>BA zlvkB6U4>gvTJA|Nh`l2616lh8#UNC>zq>78ySm?B-<|I8M*}F(G9ACufvzHn0^~XQ zT5{009UZ8usL~RHZr)u%uPoom{b)GP_QXl!UjA_*>qN*pqDOJi8Y~x?H8aPw!XDGK z?)RYA8}VS(@mSB0SV3lNd^#<A4VPACn58G;qp=_$aBYXE(nvVVI$lt^HurrjZSJ$f z{4FX_tj;r!qfyyP%cOI6nAS;a50**eq29uX&YnJv=IeJ)kz4K>t3h^*Xi0N@ICrO6 zdjd<SPhgFSX}wSFU2TVKtI=i3Z4c)rsPPV2Xdj^KI5IZiY!38E_;c4<ZGqfov5pg! zbe~2ldZn0!Y%qUo9zTtCEsXXow?0(5mMp<4?NIJ^P*ix^&D_l>5UVM9P2-l@0_Sf< zd9VVWY=6u@G1{CKZO6#Q-$gSt){_-R*^W^%)dxHi#a+2rZ8_F6ih`iNMIVecA?Sdo zD7J{a8b?#j*vKKK56|qz(qB<PHHpZNq6@N7Bca!^T&P}<Cmh)yTab-*?wB|Ui-2Nd zJuWX+d$eO!#Snk2yFYDYx~Tl>Uaz92(^^m6I(avSB%|MU1g)9bM)hWNsz_D9IwUTd zD8M0WWS&v&Lx}#^$n4fMe1XEm^2pUDY8OmsQSQg)VKf7pBc38uVe1JF(Pc{LI=;({ z2VDj6`A)y@Bdf$SkRqIe!L_CIDnd9`?r{~=d|_0N!<kvyj{LyrEgZ%Lu|U9@?8y&X z*Lx_$9KZFk|Lts~3XO7%ie24A)I}>%u0tLek0gx0Cd}M)59mM>9T8kGOpy^S@Bq`= zOsO8uP15T3Tr8PKR;0@L+E8wNM3*}}*&onpfo5>8h;VdXHu7KuB_u)^Wjc|qCXK`9 zuEXkaXT%jqi@;=G1l^s7ZbGFLh{1ZRrzdP7l5het9erGSei7XlGyaBXpS%g`!-SzU z2iZ8#d(1D!*2VZU`p*7XKAd<{d=$DbMyL@*r}iYeEL(nC`}w8uOc(Vq@VJ<JICs6d z^%Ha!Z|w2-Hfr|z9QON8#Rqm<@H!ITjK3nnQgwmMX7tQ*kjz=ggn_Lt3NN}2*>uoY z`Z6p<+%f{O``W+T_c(ihM)y9}Qs9wS{cllx!|`&@ENcJ%aX*7nbQZatQGJi7XHag) z?Tza5a2i9NhCSIByhlH;=6&*%C_KbbIm=4-pmUSuG-`$+!I9^f?x=Z+Iv_}HBv;K6 z5=J~TqW5KYM6NPR&o@iQq*HK3R5(p)-0{Kk)|>LsolQdzw^k<3gKMeAOAWND@kxYh zqMVINMQ;=;8FDVTSndf~u+QRO|2+N~(!mx|(!)OGV7YMdB(;6QZ_Lth=`gnrpGQ1Z zB7Iel9Cw)E_|=UvA7y$Q)pbaUF8X#KC7;2?=+z!4xhA6OP{}tDO-Aw!Tnm??e4=(o z>kD%VtnC=pOe?U~wf0!{&-x#-;uEnby@XDNh=h(`k9r;_N$ODu^^>*wo8#B7gAI<> zOyT#=e^MT)UhP`_L_Fq+DzUQ?L<NqDRfQolnEHTJ$1Osr0Tj{l<S4X=CJN;;K`_F1 z_$@NYn~*oCE2`|=K$paE@&Y_ek~J`Co~)dc_X3@*aTN*k))R=n`C$Dlw9rC>mF`In zMY5mm4w3KF9`B&WIAp!6-;xny!0_UcIn+vA6mzAGO0U^6|2(`f)x&sbBdm*|_QqTv z23V=9X*!>vz|5Lm$Z+bk!RBC=v2-QDcx5`eUDOIu<(fwodRA*cR94lvitCtRq!{L# zxoapVF+;KgjC`>X3Jc=pA2{aUMUREnP7Hjy%-j#ruQaVDYDL3PmJzl*9<$HJa6C*k zdJ?52jMbrVuPka1@=fbdM`6Yd-$%w({@RScNl7D;Nu<v*47RpRJr0YbYl~QsOxY)+ zS}!6@zARp?IS+9Z^==i#FyhHJV<Oi&8k2|M-|YF{Kh7*g<Jg==6N&4^n@E`9_y*k` zN}bqE>EyQAv7u(^SH?^4o26K^GjNU>ABJbwJ!b6p)YWosFrB0#9mC9+O8OZ*?mg-& z<(bYBe4!4)QIi=*JtHDqiir<ghErw=$H%Scfi~csy6)nkCFX~@#W`l|=NaMHBv&{# z#EebFEhVVAV2r63T#~j?A>SdaR6@i<@kNVaaY6hg#2M`}sw?#E<>E_t8I7yr{2E+y zwEi$P{t<HSHl4jap?I*$^sO^~8G$N)ELa7{`jqlLI}|T)k-1X?u?#<!lp@fH7&BX! z;Z68`wevCRjyDwWdJqP|N<MI)CQUcfP<5E7w_Rw{X~+#jRlD)<ficQrdV!}HFFF(f zy8Z3YK)PKEUK0=UPr*1+6hvb=t`6hGV$w5+Ir?jmzh*4m(|Uy-XT`8NjW3a)7+@l4 zW6?PzhZ(tM44F9R-zt>B(lBZ`F)DyT;C|5e%b`Lax?Q5dZSB+PPe>z7{?|#>{qoz4 zU((dJwK+Z-kJKA0n-Q&vH0H1tZiI0W?=g&kt-}L!3$rV_-ic{rXu6ctn9<J>X?GC@ z>D<FId|xg2$d=~OB~<02|AcHGi@MxGuLHd*bYELeqh9jIM&N<YSh@jE0O8U`sz>tB zAco;r`7{=DV?6T%%GD4hJ-iU%-knnrkEG>=;v<J3(8=UC$Tj(#;yZ*giwX<HV;0>; z2lM1XwWo>>u$h=WCU2sRj;UUx4X%b}6(LOa%tFbe$=CZm^F$bVbn=R)3Q~0Rg1DcK zo)&lO`Xu&mHE7$fhZete0*da*@NZ6Hf0rvL7C+yf6?D==>8;uLx-rM7z88zqq8;6h zg?Hfqp7u39r)UzB20P0=LonQbOc;=lBbvc3@t9MBM$bgpYKG`~?=ceIgTo{EoW!MZ zn5OMXt36ui4qVMe@d#oL1CvU~1UiK8<)Q$=TXGK5*Gc-K3EdJ8>~fEVl#zozH;&=G zIL`DS(_t|zyf{50>}(A9-lK4v@KwAUcNZP$JpG7Hzv(>Pg#e4z$Wsho(hVQttEiFq zri$k%XiQJ9$7!!E=x`V>eT9iggoVf>eIW;dTDpp{`U8F+{0!NXPnR0#Qi3ieFe^>( zsJM_i_(lZidIFZ$W7xifu3{h>6a9!%Q9JN@;A4dG!bMRV%25&0wkYC3v*|?Hf$X`a z^Sx-hlMHX8uNG)5{+hlHl5R@iHaa+j1K5OtS)=$Hd=8UvGihw6udgVOeMZeLR6G!O zBM2Cr^DRjor>`%C-{LI~6eb!isSP>T;>{@2_kj`p6Piw#f_95;)vh>;PC8xD-RX*M z>5A0fo=C02Jh7$)H7He%b8n#Uum!(436&F2W?dIgS%z=4pLnOJm`2?3p7L14p5kAe zPjBA93XGjJ%x*&G9M15)kSOr$Gol^mR6dJ)MQ;<;G!B<|s^pC*c!;<=O<YFdaTSpV zVQPV1wCsn8GuI=c@EE_O)i=O9fwvmJ{IfjE&jNy8%$Venp5aXez9UBU^SD}I9ZX(^ zh7{vOm^2xWo=D9Gzx5vKsrdy3@c`9Rn93FDiBNtRh!@j)axOS?KdO(fBz0MSWB8_^ zg~HPBTw|DcOs3@~xobk0?!v6V{p)Br7!79F*#ae5bZ<qbm<kAdKz<=!IYbrjCL4C1 zQ2ke2kPg$0^0a}zsBGjkBCq74gajS!rY~BWfaHenV1g080|&u+&EgYu@B!iVFtq4Y z<&SWT;x7D!3U<y{^wmOYKTB?cYaksu!%Y+ZNFIuNWnrXXJ|d-5-lQd4>2x!lHXuY= z16I6|kT94mEUK^cAa2S_zo7sR(^rzdnv;bhR6OT(hMTV3|68~Z)~}#U7{y1=v|$&s zK?S;n*+IcqVl55)JC7_oO+g)@ug~dgZ?airx$LiXhI<Z)iZop(%vNU5^qe;12s1;4 z`yn%hQUc*3jnQi)ZB$q09HTH>>1$u|ZV@oKbt=B+l28LB+`DHa9Nsyh)Kg}lBIq=O zDh8TFE2<OrAbk-ex=$2FJ86^E039_akD^7S=LE>O$X`*};OkTR`iQ>BcTklf_`P(4 zXemT)f3CEWQSBsjoW8!Kujb^F&?=wLDbQ^g1fc!9Ry*z1Q!Pr>3^F~Lro)#$fFL?Z zrj5RY59~{hmdbQ~+=)j_Q3KqG8l*TsJ9z_A&3tez^)FeER`nkW!|0C6^&S{Ur~c^8 zanCwRVR}2>j1Be2ZbnD57ClkwkH!b)W0n99uWB)fb366G&?BW)A?S|gV*W7mXY?#? z;9+iWD7wF`AnjS|wPLoeXQ*_nCnFT64l3sUu@)S{qAvj@=#p*>#g|+xx}@=+;|Zr2 z{Xnc{K)2M4g>p<R8!$0VYS!Rq1_~OCr8JI1i%#;ryTaD=<soagi3b%cxEjM@1=fKA z>r}|9M}Pi6*y`|iJhqs+0I_RnxylB_4!v;99j-NfTd^)hbf%q6A>Uf8OUbA+s{e|{ zA$s~EW8sT9u#VGml+A|%@ywyfa#vtPo?4SKc0@k%>f*qNA+#Gi!i2XqpdmwZ-czm( zL1`?h6&KUdb;P0oT94p2E=o_w_a%XJ`eg{0?_|Yu0ldWKdk-_4Ya>4{DBXZj_;f6+ zr{HL%l*^Cifu>uF;rKKU>vmvnwIDwEXhsMlDdFp;HyAZ;`JlC;z&eU?VoW7Bn6Uyh zFUP~N>C4U7C@chfOU}NWZs~<plK$8Pj89ZT;!wEsNC*RVcn)o$tjFV80wac@Xh%0= z=~dK2w>~bw>${sVXLHPXEZ=yfKKc!2d5;*ssSDM9lGbBKd`w3;-t&VD-26Hc+R=Ka z@-M7<6odZhnCGU&XBP)DXhla+-~tDBx!BR0)j_=b_Mz|NoAIWrS^8e&!caW?E){WF zrc#6hw-a3)nnw%!Hez%V0o3f8e+UbPB2QuL)w`kfJ>B0!vfyDbZ0*BfZ0%=wHh5sQ zZhu5t(;OER(-gKy&tW(a2|BEu`teQ4=g>J0IhRsG(O|7eL9B?vGQHz1d)m%OH5yXJ zNRCJ{9X^t7C1qIHlVipTSJ97=<mY%3HM?j9$^0KLGwX*@A|cjw)S9}`NK!uoIZL@Z ztPx8JKKjl`yM6w2taxOkm8V1F=|eH_isI-ZrMYWk!_&?9SdZaMh>22uDYaw^GhWq* zA37jgMCOR6H2Cg5d=ATc32Bs$t{BxJ<LOrk(&4()M!9~!7y%*iHlZQjJQqtnN}|+T z#~HeCISq4=x?)}5UW%5le!*XHWgqpX;*q)xV__!3g%;JR8T~1(ugJlaJ-u&^7u7K@ zkNrU!ThjHJD=I^DWs(Uy5g=Yl>9=+6#ZaSy?xY{jp`|di^Z};AX0j6pnd_A?f5yYk zTjZa3ng%axY01PJDzT`t>H=IL>w3{%to15u5sT{<VEIPc7+TNbO2;A!RIy?m*PWT@ z;*O^zLSLRboh2u*r(eOK6`Kth_ZJU=$j>&+K;MCPZW8{I@wi;ux&DX@LXwa{EmdD? zTdX=6EConm+^H-ZFZQj^rk<zqJ0_ir^+MJ=$}vpSs$3qs*0c(jnWb2BcfG7-<0CPB zj*6O=??q_&-T|?E?^%Q&b{;o<C-RMlF)@PYI_JiaZ#yc({ET{|x)BCOPxmqw*5klB zjwt?s5@_=wsuu(BKr*vuKvjz206oWCJT^e({Niu`JvMs2>50WVy|5Om2*<^1sO*a$ z<Z=0S%*BI!Tf~D^JLnBlRUCFUBNOuBNmTaLFHQ_cexeW_ql7w+7A-aa85mqi^*PO> z;RfNw1=fDdJJkoDCJW8_pqNF0<n&d_uZJT=PfI;yHm#L%7bLJw$en(=<w+<ewGB)l zLtXo&xK<RTLQu96U-GU@{0u>Ha24{Nymzhcu){@zt1Ga2${k!CupW3iHozZWfb~A> zTp@JbeaDR@6{xOJ0<ok7x++)WhU0Ta#|oZCwXxh1<s%;G;S851t!{YSr*xqQkyvmU znT;VpsCK|KSNfL#=rU#4stp-mISysD|MvLl_(-Q!_;l;zqCP}Dsgn#-HR*VGMdcrg zM+Ul}S0q+v`O9Y&XHh=&Cn>sasxaFs_avvH!c6(2e_Vl8Ph(r}QD36KdIt{r0alTQ zF(o7ydf*p!a5o0(kX%Pi>kZEe<W$%~sd3Yf&=eiT!Q-9=%05)CIKjLDzA?27goCH$ zlfHrHEUI`wBA%QU9H9;xhicZ9iNU9So96V!;Tz&6oZj!rnR7n&Qt|9;g#8JwhcPJl z;99zw@{aY6aEg_ruw$hNLaq{*zqEtf9uejttJhPXkGg8Y_pq175yd(z<++BtH{w<N zIWA**5?bHzkXPd11y7?mC|Zka7$gCrQ2=9{QU}RZQWEnD)N@1?qm@D*x~*?`s4+xo zLU>qT-6)hc5kjY#`mMOsZ)3%ep<lQZNm9>5JnpEUltABA^kVTei068kjwOwVnbEI# zj)Cu;gx)ct`!F7YFkI;#(VU@MTZ{ILoDt=+bZm`i$9!u@ITfd(^c|w$Y(sm7WfCi3 z6Z&GXZ;7W0$0Dlp@Qqm;e2?`^rRa?HOr+iYo+7Zx^cX9KS7@9>JaMD9N7pe$({iL; zJc`pZIE(^;snpL#(a1+c=mx_jM;}NLE|6C2C=B|ZD$*Q*t0!gSm#f7CFP`o*&}lE( zOi4#Qu#&wn<7wdulze-UKR-qcC<+iY7QKd)B{5WRIR^n{_L68bC7pQKdmkaYX;gIV z0eT=n3x-DxNTAU#R?3P}z9R-S=nJWnLpIBS1oZj)ePTp^Md1NrItu#x9hy@}!O&9| zVnUvU)3NJuT0)@~S9^p%;NIGbpOR2IJ@AxN%c4P|q-CwKXe9JfoVOT@uBSsNeOGJ7 zy9jVUdPXk3K*SvfkP(Iyp|3-aBlLVd_G2<~lM&sY4h?|s6QrT3e(x9y4J2@o=3r@V zlT7h=D1a6^#5*4(^$7*BM3gTal^mk$yCUb2s@;@wyXj~z<xi5nNF2FL8CLWKzKTC0 zC9QLMU^h;*QgDkUvXH<Kdi+9~VkVl#ok`Uv5Ja8;%P}nVyD`x883j#a0LA;YjB6m- z+wW_m`T@FKq}9Un5f=oq*;v>p{YNGco<~LbgA(x$#8-5u45My?6G4v^qX%D-5p=DP z9_w$T@hl7_i9(G#zm{^ix`D2~XDp=kfRHIBhet~9oHHM1$alJf@lA84kb7;Si{wMb z1iAqlH-MD9OSdNHx(QImmXP*-$vGENl*l(x+=n3pX*>f8CVN~#?-%fF%n;%nWr1p? z<R9?dxr|g$8bVLdsB5N(;UO5Ydk3)aTO8eXqV@Gu`v3|Di$03<Bh|tI`t8TsTLeeo z$IvY5vrUxppP|6K2V6W^jDuoE2ltOX0J|u54ap~|?Gf!6S-#U)MC<#>geJO9Z<`?Y zE(%ll7^+w!`aA^y(rQ$T@qfs?AR;8hW{;qoUXZ1oq#}c)7U7+eN3M`EvTjC&BT@wc zB}bu;p!ylmqAn~^jR++lnUzT9LQFj$Ay8_GP|Z=)a?pO^Fgy8B=eQ2iTZW1-QSoIY z57Og)-_HIq!oesi-7BIf8wyeKQEQ0Si;58?rby9)bhMMc_Tx(yA~7cQMY0Z7Eu+Ny z2W5gHe!VCJ-{O$6g+e}oFXT$~-6A_^U>il==(l$^hUG-TruMiLe)X=p@($`ORl95? z1ylgW4Wg`vQ4=V~Ws3`I`h8_AdQe^X3bm!Ke$>yFpxnPlP0ohouSMD;aOiut^}qG} z2vkw?>#mknBho(!^+g{h_aKQe-inGF?|9^FOWuUx%PHi~<3tci7lsmXjvF>62Sayf z*g<2oc;#b5@^Zom;JY;{ys_C>w43ZECl|9mFaqP?{x{L@qfRDTdNFQ_C)sOQexg0a z;|gm}>0ts-!I|O*)-ty(*p2C+>Q|-a02K?&f-DoKMd*F@Ycryo<VAFDaIsqTF-qVi zhysaV-l|rLydwHiKu1v|B}(^TaZb=l#T~vR`c=>(+a|m!BWqjZ&gLYogAf3V%y26e zK&-iUqlz?g4j2#DCTSra+De(4uc&dXGy4LQscI78c)k+Nxdc>jL_lIa0uDv5NR$)w zprHT#Wbl}f#|4p;66OK^a|c#lJN7^_h%A@2M`wAG&r_lgTR?r-koAFotb7Zq2t8Mf zLN#FcX*B{3uAu%Yre;&mQ~@kU?tC?>8RIAN^{7QXXlftP=!JB`Y^WGd?Cdj+r+0ze zSF07|^M{8@Bj`(6UxB(ZF^I7jgBTQG=NM2)56Z*2Zvx38V~lSk6$AAmbX+MGLBYyG zJXF<V0$gY0^c5H|(RZRWUPC6~Tox;%=xZD+R{SOIpT1nxXR74Mp^WhbiTOElT!s37 zYca6b+5e-F4EQU$f3PXNalvjABT?x7Ls`K}yt}ljWeA?Rk%^6%zh8ym3RdFbsc;31 z5k@0&h0Eu5$F3kzxfpWoIDBA*vFJ)nNUo;BQ?m=NQc`=N%=T_Mwx;uG1~;H1HV!Z8 ze5E=WLThJziDz(Yr&XW3`S>2B^rMdGiEel<-(%cT4||L27NkQ#6CL*6hD_*8enivL zMlk}$gD&3cQW=7-dr2R(uQYBU8o~zD2s9orZXMM`C~xETV}O8$_Q&J#HwSMwjo)|J zsN00WFj$I;a|3<hQsFjyXbSB%>U!SRU_5jSB8zZjM+?(6$XCeGl#M&MSY)oTh&ru! zDx?&~5EbA9B9YBfSLfIiQ~=7v7I}-1A*p{N&;0=Mc&u_Ij8J#F73MAscjYpf&#IrQ z^1tjK<^NiwQ&GC`$@J|y|7p^+Oy&O<BL5qdN%SyXQUDt$<5E7bZ0`AFcmfeVRar%c z5b4*B`9Sm?jD<H+7Zu|{_+YTbRVjwpis(?e{)CT^(n#&%?Z(m~JiFBF606CKTh>^$ zo0Hc2PRtAMgA!Uxxp1e@Httirg=B4~45o)-yl;fsKYbtuEMP@Z^IV#dUF)M6%ui|3 zu4ru}A8%M9wl2@w_%OI&@uzqI0-v8_E>~{=de)M!V8(#3TaFvKJQ&lF2==O!AB|#J zL}O@pNSe@0g$Bp<1=d#>A_`ldTOY%dzG!(ILy+L)2Ei3ZbsCBR6^9#OKU9g_r6D!( z>jIc6l<z3F;;rb;@wD+UXZ%4iAhu@y1W|G+2ASJ2LXU@5QM*u+ig(l^SpG`uD+;Ol z>4PAVoUYq5AcV9nxdL`#IBvq;xz9^&2o@c-aeJVj#>H9}{3paOpbEzNaP#M|x(Tt~ zXl-}G7fQyjfQYzgR8L2ainlT+;{X~kCPKe4i~&R{e?EGZF2|FJZ1@z}a7tvuaUas7 zSBKSxL_2QOT!R~vQ}K1YNt9|DYEyNn2k+OYIuxZkeH%qBJynQ{b#$l@!$1r|qS#W$ zSrp>kyb$lS7vcsdV)flZyond$dr*i~2SV4Z?&(x|rzbFoZY&*&PK5GJJRrk8DMVx^ zQmxk8u{jy<iTXb0Tw2H+T~8gzame4?5pBNrD?anpMJ^+kQpt?z10*~x3ZS<aF+7Cv zEqIkn1Se{Y>51g~Xo-=&rBpuQh<L+T_$|Dm=qUV_UJ?**CVIA!FAFa{Iv;Of331eR zk{mWhW8h2su9#aRzeWC&UoISptPoWNdPgEINIBKU;05`5oQdhW@wM~&%J!wx53d)k z7y>J97lR2dG$iy(zm#j+7c|MngenuN6WnEsp~{UhF?<&+2N;ja#9e@9#XTKPi{`Io zBYxZfmf|N63|AqNt{+^+MHgKp=E4my4fo<3dJGp-Lb?hsv?2@0Y03K<XaJvl7Bw3! z5*klEzzI$BCs;dCm%QghbMqHOnKE?Y^El|tLkz5`-;YgTU?(TPO=n<!n{Q*q0Zc>T z#n3F8_d%$t<`NlL2kR+#yyQ3T3yL*r0*C}Ly@N%%vPNiGdQjE|wxK_mA?v!On=wj~ ztd~P2H;_*u_<rqk{s>J}086N)o6ywydmOfdk)uc}s7XQS@1Xa9EdK!Gp|B@NmGmAo zE$|i8v{b_uZIh#P<LSLZ%y%I1;c>_Y(c!4sC3_phTy&L^8<ALUEUhI6?@YXRa3&IO z4cVv*fGzPRio|P%_fKr|ZJujOJW=;Sc{UOZEv_5;oc83o)T>94!8^XAafs`xx^-73 zl6%o##G--u^0B2Ubx{{oQA??3Qkn=yc0fqfTFDFP`9X~O>xNXSPWllJw3eaVPg#cN z9Qs8sG%L1Y`XhSD-?gx{hTc8Fz7XkOw;eNB4>TYgQE=kvgK?;aGR9)r<D>H+Ya%BK zx3YPkDaLJ$Y*3$ctu&TijOHN}zbzwdHDXj;JjCm$x#RRYOY4u+a}teC<EHaybQ%?} z3vHkaqtx+Nksk;jgYg(@?s*CkhGiu{^y?JG>rk8;D%KQ~zKe<1Dt|oayeU3#19>a# zoF(HleFeR&9>4m?@OWe>g;BT+PUkMj!2Kd6{Z=In4MH_lT4GeaDE*WeJUrEsxgU{* zFTw_SUogvz3Dx+Wu~j70^HeMkSMh2umJ#BhAd&2ckZa(uE)hrhdKZSb@kSA)9a5sz zquax-;!WddPykO?aqoQ!ai$q4OenFqzx_Xr`@o@y-1xIcozfODmM_%GX@&GtE$&Y{ zqb~3JPSksUH|kf5M3)g4Lv02|L=Xw#^`X*raG3;7RZTPDRq@hO{QfmmSyom}S!P-v zV*XUl*$Ss??IE9#jGT{T4wVecLN^U5Ax4Ut(Taa!8pH8(HE6A)b!O0q7xwBGyiXG| z3sDo|w@>|>TY}b_pmUc|T}GAU>2r*QB~(eOi6l(e>pGGO?bK#`O>7IG-N&#dTKR*R zJwiXa2*<@u7284A_<dL~)N5D3LZK~QV^q^CEci7I)x9d&o&gst>b)I}n@>zGK2R=R z1O;`mi`~@4Th4YdO<nBoM2m<e5L@uGQT%oa_<>%SXB91D34R%yg2ZD^F*TdQ6-5Ff zweLoXjYIh^B5TJl#sN)Zeu9&-l}N`^#-c}HKYsh4ibp{L6<pz}NHG?Mnen-1D0;{= zb5G(YIG_o?HB1fRdQrQoI=XO`C;;&Lp{U68xQD7fP!W9!id#i(lAHwp5alx#7xhSd zOa}cX->aVh;};S{v%!8Q0ru1k!7Y^L@Cz?>HHxyRe;iHVS3zcx+t91!B{Wbzp*J-W zMNI+U=lAbWzJ`~x)~q)1ayot{3wn%2YhVXb<I|L1A-SLvziwbc4^G_q^N=zL+=PT` zp0gX|8FEupFH}e3tws@_C&(^xXM9M#tZtCJuoD_Z)gl5KAjV;_gb6KH8zO=%DrqpU zQ#ZKHA(87KpPxrjLcpkmikf3+tj8UT?!&u+;>R5V(xcM1Lm(ec+HZa3i<Bm<e<3+k zEEGC0b&!it9hH0(!PCoxo$3nWVk}xAs}$W%i4xg5T#o}9Ip5$0F@Fp_4Rh~7RLy*Z zL0$dkITs+{A437kvU_5_Ost}!JSd)flW34pO~DkgzAlrB$X>c1)fcUDaG7K>7Psk% zi{f>aOCdvZ_ziP@1Jy_qcYc2BBlR_5L<EnN_~kNcA5cmWqI`-#pZZl|B7NPj{y(g} z3!Ie2mG|FsQD<;W&qPF`CXUIN%y<cmu*#^>Y3P=2?TI8x0=tTk5rvHiff*o)z+g`U z&px)WyCJfhnB~2=A)l<T?5k`hDscvt8E+B1V!Vy_Y4Jk5z=#U}@9)&}^jy3o`+5J2 z_EXPORi{p!I(6z))u~gB1QDemjUrgJY@^fT94l^gP7LI&B4(C~)051U4tVcmUd8Lp z_=P)RXISYZ+2EM<6CA$|x+gLDF*QN<e3y2L*DJ8y*Jx<%BJL>e>wiu>oY-Ur7N``R zRE3RhYrd++9f=0qs#P5my-sbSKH}?S!u9V`7q5Hg+cB>nliz6jV-iLEh@uCaC^Cj& zl&If}X)TfrlGXm8m!H4g)1W<XB+yYz07u@9BqBV$XNi0lcf}hh{wR(Tqp;!YsojTS zoZn40?*;qH^j;GS6?=0Fi{y50de`!KMSDLPSsX-8`LxKAAaY#M-pn>6(cT8r-3zb{ z?5JGn7o8|dJ5f|2QKZIiZG#Kd`3MIrG<^?@13RG9PJ5MP(s`%dq>i<u-c|McPw&PJ zL}Nr%6a$6*lb0d=bC>#OrJbFHnLdnW{)PH?-6TFK&fF|!;>gtPs7gsEaOyFJ*10sl zB=&nE51J^s8&T5Ffq8D3$&LRYmg&Xw$>dyV49JI4-lR?>3e-GF3^Bd*0Ke0uFIOFU zO^1XQzI}#>EGO#F_*w=_zIWV<9lNGh+8_&cA^He_wK%O|jpb2Wcp=`%Wpa<W7s)Z> zCb7M;I@wOZ4W$IELxb|1P(Bh~+D}ooHP>j1N*d%F<+4kIMAe*LLHZUH6P@Xw7u)JJ z+|CpUjP%AQDVedTc8!D}%CR<RWr02QVXbyj#KpD(FRStI$-L})ay+)JTei{{!<|#R z^{rDaw@c_iO+mt}q&Iq<&JThG+wLIszJ6rDKIYx%>hq0YRX0lZk`0sCsx6Ya`JbcU zaxhxog?hf3_fVe->`}aZ?m%x-^J{@g$^`!~e+kU{M6$UDzxf>9{4SPXC5)fBv#T&+ zVvY{)OPn|FP3OihC+KXNyywr)jelPSnROv+tXLMlih&CTgo&PHW_HgWtk{?yy_zn$ z)hrFY_c_BLXFGVIN!zt2mFLw`gPook`Xv2~hR<YOrk_Wu`MgS!UV=Z<T<H{)<*^tg zcJ;;OX}tNLb(|^YZHxI|NYI1BoJE$?&&XC0e_#`H<4<eY9=*Pk*Fz$eT93O!h<HtR zdX^@+A&#>qY{?Vg9E{y^PnJ=tX#3B|7nFsQlup0tP7L9yv55viY#&O_)Xtc{pfus( z$K!z4+QAA{^p>fc<8=p`a!bd?yakwV97yLlFW7t}M`f_CWYxwr1V9O5j58Od6oQvN z>_m7{r~7b5hS8zUCikGa;Y=>(mDWVt|EO55hLY4xV9TA0ca}pLE|^MeV!tBQoIqJW z0A|>-=)5vfnRhtaEX|;-33n_YA<|>CGPQ?5)d*n&@0f2Q8O=ni%KVH78_&(e^UeQK zu&McFT6Om3bjkm6#-h}sPy;kb%vHb?FIPQ<x=>!iYGxIp5?w{q15?ONs)$N1j%J(S zQCFDX+L4=5RJYv=+O(wxL%Crtp^!^7u@K1r1m^#=Lvmb5CX-i=W7&Kz<vpQ2f{)oF zz+83?JiemT!xK-Bm)L+aGQ6FYL~r?!i+&nq!k)s25n^};QvOzzV!|HoK93_@7&gJt zMayvEHFa~k2ya+F87up(RP%SS>>2+!M3O-aX0n*+{Ol-aCi@dkZ2h1Nhj<(nT~eL) zFRW$ihypZqQ?f{Birm(ONAJjue^A}Wo4Sz}Wt##!S-MWg9?tNw2K6Yw-$_MJ>f#)o zr*$2ZZk+njK|4C4NbK2SAP%Y8(%#KWp(}>GUu*<Wr=9mtczBk1Fy*mkJY(0ueiru# zEpKjWo;o(|afp6@lZOT-`L7`o!_QQvvn*csoVSP8t>4bUV%=|X(i6}F@l=`Gll&JR zvHsM)52VQ?8_=6gy(ZTAhivR`y)9kRinSy2*0YxNv|f+nr8e9p2tz-yK_mZ<(PtR! zURHhZ!l25S+2Mo8gf~Kc8J4|xGAdN9jOD9FmO{O<q#I~&blYo}JW4DDZ+oW*EHpVm z&zdUVQ>bXR>B;Kt_j+1yV+?sHy6R3h@j~5|3iX})1}rTx@S=?A*)<k3L*hQa8&ez6 zg@{U59)VKy49*EeRq~j}79TClj?)s{<4Tqd(9!}lQvwh!YS^~o4;Z~k5W&f<J$Sof z|K~-lSXp_OR@Ahi@0jf}V!c$RzZ>b~9iO!Q-3ZN_Hedjp21JU>F{0Q1PXNX|46WJ9 z@e>`fox9`SbAv2_-!V(z7eh<nib0mZ-?Mtj4p<6^?0^}VqM;oyX3;VQ#KcTiz#lGo zMpnRQBgy{QQpJKav~fnjOnzhpjJ%f-@H;J)Y@5C-1K@wh${PdVN6p?jv#b+&`W(n= zQG63mu-(LEgOyxtB)5d@OVX&Ae3$KvwtoXMWj^Gn*H;KY>8HHsu=9S)T)I6i_k$35 zq`bNbZ>_wJx>&B=Mwx>*&S<e_MlQAkuxFHAqwKns>}V3$`pF-c+}ZGaOAUJJCOM(V zjbziH@{8nwi!Lecry)_Nu&O~+aRw4Cb@|ta@TlxBz#$&Y`a+)M{y;ym2B_<tc`<LB z0h}DLGsY`H6Y6nm2U;<9#-NWfI1SM|t+Y#gf)(;Ehyz~=17~*p_%LxOK2n<et){&- zZL-Oq%s3tT@MQu0(w%CThDTRC>*^6*JD%>BpUMv%@4f=4Ie;>)vasLEdDz<zo4f8% z{a5e-g11SI#5S*;#vKnjS=!5Zw>??J+07nvIn`r_-@Epg$-BbbZF01%L%<rfvX6Ma z%NDP}W8bX91z{J%-ZQ%WnP=Zi)G2w0eDq!seVcVTI`Vu|-7+smxty$+SDT_G_u)K| z7t;YVFO<}!Yx?ju;{DNksP3woXS|DRcG03+9z>j^bH^Q>&i(A@9heMotoG;!d2(!$ z1(W$ENW0!H4(|Vnc~6q@4P_Jt+zyk@RUDblwI8_-A;qRsF?Yipd7Z*5@2+9jO6Q~Z z=q&CICm&=zwP6H&`*BG$dp`kx8tzc4aae(y%at!vw>HhOR<dk%aK%d1wQb*XiSjpA zzWV&;vVR%3c|0&<JKu=czZ&;vmU&~j`7GhRGLU88bMf-sVd4oS-nqN}IeZ}OVyAmr z8LCEfRm@7Q2ug#b_mC`N7`Orlpe4#*0iZv#5)YgXXuSTdahuO31EmI7QefPlGtygt z^Ql*N?zY@kk$umFh%}O+{<*lf+gnf(_ug8`YQ@17B#f88<oq2|$(_4ncRmXuE>Hb) z<2J|1<xd;!EvWRKD`Xh}nj|__F6W?BZ8V5^3r5EMA41NvC?ny$6<hgQfu66b#6<Z4 zh>3=EkfRV`efGvVJ$ui%TaB_z9peq}d*hP1MNrBP{QHZ_0vtI!k?{6e{a$n6-WGMP zs<|h&^X(AafpNEr>?-9zEOT#hyx~o65vt0fvc+eC9b|u1NGbkf&<tn@&_wzB`<@#@ z=UYW*ZxQOlq6)d=c^P@~ZY(;#;usine=Ktka(F&t*V7DyPcwGyN1V+^oXtO*{lceN zZF~B|E26uZmMq*!%D1~L@39J95nWOGCERvYa(mwyi+{WFnwq{|uuA5BCHF6h+^?&t zU$lKOES|{Say&2ifMILo4*Fo+|F3ou#r=O*+PL>_0)0K;+?PVm4QjdXX;?Sz|DQFa zT=|l5@ULzw4><Uxg!dk;<XM^U26;r)%uA5sy+rPJU*>J!(=dCOvxA)R`j=v;JfQd$ zqP<@U70^}z(N)Je^wj+dO$K`J1=s)?L{$b@p_lvrN1e7%0HDYH>Q2gVcm?P<T#mKE zREiMY`39i&JsslJIRvlcEUAfr+^<wXbX7aFg=|0jtMS_K3B2xcczFiVh-DJOh(%or zl^FM{9)}GSI>s<jsZdBD<NhMoJK$s5Y@l}-EXkRV9UIHxE*(AS6CV|M<67q7;f0Q1 z%!}AdcpqCwDCB&9XioJ3n5!7xZ#gaQH^cW<93moU17rD*#PWe~L#B-jSw8z_8lN~j z?vT)rwl~3tCNOV78;koJMOA-;NbJPlaIqDz<6v1hR&vnaAYyo%mDA+i&?<yNc0nmP zfsKhxZ?j4E+-7Bsu6m=?Fc39esiFLIm<#|!GEu(wQlUq?<RUAA(%<w;ASApuJcDb3 zz&H~CLxm#M{og9g$^Qivs>Mb=c$<X-g3&rnto(h+NJ$o<u=CAOOvdWpA42l@xH*+! z+&JWA`Abp-4V&0jt@qbI=WQ1JWNx#{jr)sXnRBe0(~lg>4C+T8sUKY<2^e%!>qRZ> ziKlZ{luB2OH+<}UC6>GNV02a1`oZ!6Hu^B(eKfdNz9(o%<Dt-&I%sH~+YzVldoxM_ zcVO|EasP?|wqhW01eEvytDzvSaUd$Z891f5^yB)y?4_Ari@G<zVyu&=_kOB8eHVFp z+Na7>^1fYK|1PrhG;Qt28{S^B8SD{w=nm<U%WL-3y~|B<(f0G<-`t{unyRfTg{TP< zlqURBFx8_Y9SCHV@s4XvM`v}&_Y*)Y3;Nc$+iFBv*E{Kfj7BkUJW%%1GLmb6pby7$ zKmB;nP!c1XNC@k3mtIjk_rn7*w31Rzi(pT?s)R-tLgC2dI(OLA1zp63Cm}OL7Z7aG zHbBN<;ZXQcg`g7b1zqq8nNB&{hG6rN5>^PC%EdoUFr1Doh#3ZHRV!AG$1x3+1^#}k z0FI^vV!Po01YtPZ2;v5l;p3``U*n305c^g1NEOXJ(#uQzufUJ47X{oz|KL+B^KudD z$-Za!szI#4;~EvcuShm7hN%Mqrx9m>sWk)wQ`t<aFvh4c$XN^{OE!v$1F<@UiRlcV zWMUXt9%6bC3mU4DIJN32@_!*^G?03ObS1EtUgfw)8r4{&vOHq-9P~CTdo+6$R|yU} zH?xlQt=L_XBl&;8i_R76B;J6{E!F=3pXA>(Gtjtc;_myMFDP+4JMl^HZl&fm61&qt zT&=G($d1DItrF<@Ujqewmrdh*mUSAebO+5R+$<vQe`6|Z4;T5jXf_bNe!Qj<IrB&h zu*U?3<H7{@sH70S{Fdy>^fC|VE7sC1!v*Q~v1%Gj5qe8BY4Ez33_QmFdq55g8ab)y z@mOhfGl#CXigOiPloeec&&ngSnk2A}l6A8VH>L2>HSe+NS**!}oYM3qb8DsXhZ6}V z28S^*ILr+nKeI_il6MV0lw=bN<?G#jC3;=5`5_Jh$Nm3Ut1@ugcn^CRxK;D=UHQY~ z_4yd?oN)h0A87mDDL2OIA5zQ<(Unkt``cmsn_ncPIi;<KGhM8j)E{rSyyl*0?md+L zl^@Rs_VS-eKK01q&MwzZc$<y3&lCq`4l*mLVb0~>;#?K~TG)7${${{knHNG8&-F&# zi15bB7fiKVD>50AzYzC-Etkih)h6z}pgBq*CkvP5Z-#kxkZ0$c^?A5*2XmBLTsD;+ zUG;s<RBn+&<)C!h`9Vk=iT&<bLn@F61<0DOJVn`Zu&jaC@Pa1e);>ltgQqNS#{FC5 zP}y5+u9>|T5K;p3GSJ)hJr!cNi){7zxc8>FR%k$UH!~w`yj&9?mpm*=B|SqH|CY@L zTX+o0G61)iM6vQW!I3H}El7H6&F8b<%78mhN@xH+?)@3OOuWB<cxQOIs^-CcPf0ce z^?PAlPP3Op?n>keT-1P2@S5P*rotp<UO4EYb5M)H0N>M)`w4(<5_2VU7!A5D0>~_; zsZ7J}Y$TS|oR%F7>5bu7*+emS<;PwVlbEK8`ZpPN-8|UlA}4*`xJ%sGB>1d(%*o+A z=A<NtG7+b49<!&H7D?uQ<K{8{QR5~u%b{>0cU#TzP*Kx|=qfF-#r@xF`VjXmbzI|V zVJv<HUKlbKKg$3Z_y5yoGOrlB|HjQ^(3IbF!=D$xk!o$t^@>L0MDETSo62aWx-!V> zrZR78JWk~PqsHbkzY#K^?&dPbI|L;y3c~{kejE<WLeP|N4b0DindD5N1aKPn8#k9R zEuk<l3mcovSTS*?0Wkh6Mf;u&F>{ld0%pfi5$`v`0?brIsKx!>&1POz2QbooHfB;( zhhpYtGaq{fQAh++KM{=D6cUg7jhoH9DI(c)<~MFS^Bcj8TUS{|ul%$17N?wAFBbVF znm%$}#0e$WOKi+;ifGVY7Iq5mHkT$kB<p)av$_clgLab*+Uf$qct4~IeDrBu0QN`P zB66>)>5bi~u}fz_<kmFv0Rs0I3{wcLTDq`*i-r&<Foz4bf^ZrnJtdwcJ^fowA)jXh zkV(eD(sq!9mRxnjFnQ~(RiO-A${k&G&?Yy(mX_cOFUZ@wG&LA5#}Q!KgL*~HWs)cm z3X*~*RsCB`EHTTm0*1()q2iP3OIA2A<4o47QX;yyR`?)AUr?jQ${&(I71ybXOmqTS zZA0RqrihQbMbbBn9_NH>`763g#?X?$6?|&1qT~Kt<ZeCUvC!Q#<`w#JASL0=H(XbV z*S|9EH&Vx)*ww<3q-0$(Hy5e91`OjqcTqW9;ZI}p0eFEJ9|ljVA@G8gBZ=|3NZq-t z9r<%ZH8JMBL5~e^+lO3w)geT_k6G7>)xQ-V_n%VA$;fKkkIJ-m&upg+lw?0Tzk)?@ ztsi~%e1`;|B6n@RQ?B`rE%(P8-eSIk7Nqgxv4r<pvgE3ozF6JE@rFM~+fNgx<t{vk zU%lw6JTI=d&UU@EuwtYxXJRa%y6F?FP6V8gbMqZ$<ERv~%NW#*312n#Hu<a!?<aCg zJ`Qu3cCGb`yjv)m&t|8MT+vnUSfjK;NE_x&Zb<g<*|;ebsHQ~Bwuw$bgUGpQ&ie^1 zU|7kn+z;v88U{^&C~#ZOO>sgLKJuC>7yv65FJfqCdgF@sTbZd8`1(P@#?p+Ut}e0q z2jk;z($oe_2iG{Ps!e3P*|@@cBax#;9b8tdTo?D6Mp7s<n;*m3Cm^JQ1g@HNz;J5w z=HRJKz||%u>sqdMOdN<hYX9C)-uuY$o)t*W!qjGNY0J2{KP%)}NeL!VK~wL0CSEQM z&@if&BBQA5%`Nk9kwilpT#UYNYKq#%WrG6X%*0^dQ=!0-r0GGG+KO~SP$*OVefj@l z??1F>@NE7tXoeH?14%YYip1`Ef#3WpW-7KGF!0^xJFhZRk*3_M?<6F>&0zj$-><6C z&P4G2CBZodI1JKBFCWZorp9hRjR@Or#x=K_-004X(V*<Jk88I<aO<!vGuZr<(r#|_ zz5C6D=uUR#ZNGZpoEj66_w6RHoUYGs{y>tMmoUk=COE%_Z;;T|BI#`%YmlGkMh%5H z)%GeI67H6RT<I2rl(}iNqC#MDE;0bXt{14^8{Wu4-d-kcY~^HbQecm+dhxPl0Eqdk z`>1S@y(omorl`DMo<cD9BkjX|OJ6Zk)d_~Z?3a`T?ZKuNH9wQ<U${yDlg~=KeS$ql z-SV((L)w%5f7Q)9C@}4B6|vYOj_|;z6lbFh$LRHA&<esroG*K=^yt*1O}8-2+`0z{ zY@2qbeXGW9^hoX7vSF!h*z_S0wg6(@$TfE4(-}&ZH5?tiel2)wGp}N@e(~zZJ{s%j zp?kk+jN!H)C!<HckJ+~5Ka?<Sd(wQ6-+@m{EVm<L9*eH}kg+$0op}L|*vk8X*akWU zED|AJ(X~IK>LN{3kGG|QaLaL4DetYmfBl^-#T*mqDU!wgrXG1rZQt-kBam&7)jy4= zDN@W^!~8SmSNsw(*#QEh6|VmT(T%#e2Yra$trtpFrFc{}ah0Rk1J%~24i|0HP;xQT z?5XTJ$c5JTFimvk;OuOgqqeF;`yz(fCC1*Ag$FS|E0!cIATzX;S-Oj9Z&AagW_mIz zy7qG7<JbXU9+bcqz;q={0?jWE?-%ayp4j=8w?_tn_tE%Vc7|?Gz_u;@8wI`|hhq=3 zKh0sJ*Gh4-$&s+L*z@gV&$nmE%fhpP&AFrC5^f-C;$j%<Fr2TUu^+|eqyak^=M#z3 zE_6rE*EE<xJJ(Z%-$#YnHYgW7U_O+n(03?ijPXWv_471w+PAL8HCLTYULX7Oq&I?K zUxD#r6V6<5kaPOIMiuJ=5GBz8mNIWM8%OXAp21;iI{`iB-stLolkHOTk*up=Eg-33 zebCoAyhKNLVuPe4;H*5jVeL*S3BLMI>&9-oY(q>O_iqwMbtiiC#;tTHuDMFS&<U|_ znTI!QZWq2$eIHY+mFd7&wvN@ZViRqDVNfR|%O<Xg@??CrYz>$Gtis>~r*3c4^wxXb zH7X!zOt(_EF0SCs?cnB)GkY7>r1%uCD&zOakn0c!+l;QC$$2z|?ai0;t-ej<9AG@W zsU_A?DG5DbP6d`@KHFT6HOMyc$mm)b9}#Vv%V}KT_^q3GJxWv|!IoVRfOh$#yeMIC z?^k5Z6BJhf<to076%2m-f)b{eA^^thz(0fRbq^y`57v^-w-kbp0#|fpxqkQ8j7Shh zXf?@mZ&OG8UaZLD7$e0pZxq=ra69nZTO4#8?lq;cL4P70hkG1~xMFbAi6Ws_L?=No zC%Drl#U-VIFh+f%FU7qVF;b$^P8xIP;HF%xD6ZS9XzS)j&d;?RiAmbSa8Pk3(StE3 z{k<vxl595Vo@&SnW^}F0axv>lW)dBx96l*iJ>JJm0O;0;5RMU}PeRBuzJiRK5yUr3 z5a(r}Z1T6Md1s6+I>{UP^ZY985$V63*uGy4hl=I6El5=1#slmuAemkAAt^Mzn`=<< z#4Waxi5B(%v<;Rqn7aj)=E~#T4~w`4mfq$up6-V(4`tpe)>Wf*&!xF*y1C1YWwxjY zj8-^ry(d|si~3sjVno~K8oZJPIZTR*uw>!}HTh23EsnsT3aCg@eC(-L%Pl?QiMF4$ z6oaGZTktlv1ApB##P}z%=Ak{hQ<;0**?j+Smn6;wA0l&Qyt|CX0LAU`v*vX;(wBC( z-a=VW!5GSUoK0+GO&nvX9(lIAX^nbvVqL=Pi=S+#WP(1cRZGMUc7L*VxKUNX8Vx(D zYl=QH`j86)n~~32Od$Jk22DjVCF>57+^F_To%Jhg^4xb=Af$Osj0`tA!QWoMA)#PN zp0!fh0w%adUD<k6*o6W~pdl*dJr5yi#<N+#J(nDv*2P56bRf$+>-Qp(e_sYf-I*zh zmEdR_c5wr+OsU34a~~0J?VtoB54W3kF%)r$qStRDI_96Lu_NZaAH8Ki4ilp7J%F$Q zL^oTD0kHt2W2bV*b(`^5MTri{U_g{Ek=4_5cXw&LfvxvTx|VRBm2Ta@dB3ANX;Y0R zl2t9!@vt_5t7GtwrgK6SW*J=ZUT%RMZMmdt`2-T2gEpjbW!tb+K<HY2bWt}3w$1Kr zfPSY}AfYbl@^&OK@WfF%6yYlshZ522%Hd+WAfp9AES97y2mNE?xk*LdrEPJqJ9<lh zviV_ArUK)DF&{)T=aVwds(5$0xo6)~6m?<lln3z#%4Lq2jKLqrJp{!f+!2-bZdwX_ zWlms7`WEWf#$@xQZIYmISUu+bDTbw?cVjK7V*4JUK26P!TnGt~JU!nI3?WGsz2(u^ zzCRJi5V3)qbDMGtxk`p}1s_P`E#hL8)^(gNcoLvJXvvL$%S|aJm%M8heQ;rJ{KIH= zVcIPV98y&Y&dZH_5(8w%(BAr_WyFf}QI}THz?)*9ONW1+W}gok{&}W-K6J?ECQoqY z5Ti3!n1yobUdnqc+WrnQ4W+VO6f>3aa7W}n@g2n>nVZp1A2_cckEfzq^!k4#g8S)^ zNAUgI=f)elW6{a|u}uGAvFLgITAWv9=qIWqD~9C$0wRBU1(KpzjKJYlmq1h^ma9Gw z7KbTHT#A2mDMSvXsAQ=>Oi`*7EsH2XR8j2c%)!zy_7IDmO00;Z*lN60hq2iAllKf_ zMI*)5;(a}g#p;jyM88C==%m=OVHAV;C0$fC+WreLOL*J7{joZRx~ZGFTr}=IS#;1_ z*3oha*5yxN2)79fvh}sVfR`Uh7jdxa;wSp+Ij+PN;yUfoU3taC=%|X*(nT+#+FiIO z*6@z*8nsS&KX!C<%15xvE!so3+}Xe>AnqIex<9o|pmj6Fh9ah0GJ&q3v@OQr&=*-n zFYCcMf4bz-jq3dA5)3O#maU_$Id-K^$L#>wqY+csFQP|T=g`n=2eGo9@#uw}x;T1g zKH=S;D0(Co{TcVf<FVl9ow2gJquDRB@<f#|E|sM&1&EQj<pA+gTRO6!rBbQdu7nQM z>7)vpDVplU;0Snyj(`u=QR}D)vg9muRCRH=Dlpx4S#Stk!Xs2qo!W((+RIb|9lUBb z0wS?l;%?eAkmDvPIo*kkG*P7fX|Uid-}fKEw4CYF1ezo5=OXsFxzZY^_9hMMyU!Tl ze?(q<Y?+(OfX^kRoPwSqb*K*~UpPHNeeoVp%^SLxe-}#m7iZl(OSZG5yO^g_pcg;o z)I)BJOnH0pcUwx#&c!#{>C3SLuy_AY<}>IH?Whs!0CF$YnkT({*%}5JDmndbWYK2t zMl~}a`lFd|GDMOR3tM+&B+<^vni;$K|D|ZQok&L0v80x&r{*GUsitKb1xjVs$>u*} z(6pX~uMqWA&{Cv?=chf@@_nxL3?QgUboK?65G#Fd{Ouvdu4R9dM8n%w96!r!?!y!o zbqu{nWg{x-JC*q5;7(lm3D9Z8D(rvVor}zY)e@>E>g{?p2VqlIIc`qS<_tFBxb#WQ z?3%nhXFqY<=mv70HY{V|-M8;%2S^N&fP`Z>Lyq&8=&B+k1<r-hJn&2G-8|ZgsmfLJ zWRY>W*Ajd=Z&lA{)R1^!=B^C5od;=$Vb#`YeDQ8vV5#0+H_1=mgfK*vGX4Uq);0Wm zSqwNZA4R@DVAD~UtE@~k9Woo;&LC~GQAXy^oQ*Erq)J|r*aUd<BoNF&<w^84^fT6T zXR8NQF$=xIkhj`O52GGdD?g}}wU3+2S#`L!#(cTpkbnuDscSTpZ<Xx(+iOv!nn&6E z+O5rm6Ez_sK25CSXBosd569MS)F-Q+MO$#ZX$1p@(h2pP=JzCJ((RJK7)})mJp8#V z4{MCUEi^f%GFVTay3Q}t%1n$YhreEWme+&wFnMR@18y4cwbXV)YNlV~4JRz8GY;)@ z1y3r=^fU0_ClZ&I(e{zRAkCyo1lz#Z_ky&eIiy$kn$_T_wAHr@$?$taSIbp(U0fUb zaCpA2B>@MBq1D~cSoZ|?5YV89N=#yJ)6gHv$Ax)5cX3Is<YTNsT}uCd(87&UZklPb zovst$jKG6t)4nCH;+s98)05HF_u3cy?dUv`_hB#>hW)pS&iS|Y1nYz-xtb(1an2=+ zye7I_P7`8p{7R%hM&R5vpXfl6M%RApT~p0FnKDa@PM)>FwCL+@XO)s$&^5eYOQFom z+@+}!O$;DjSH29}463hrP^Fs^(Z`TKwa@2&%lf0c))8XPgAd%&7!yT`r`X-OLaZjO zRa=C8AvS*%sAstVO$AG)<yR2xR#~WYF!Oil#Jqd*{WyHG*=qhG(hZ?Z{u$!H!AO|z zAo_N6$w>Yrh2V=wzFHyVMkGIqP&g|H2%Eo=?A{LZmlsCmf6BK|e;V+QY^QY6&97c` ze(tze0EZz92X>-yZjkl1TtkIoS~A_4YVJ&EM9=*MYXZF8cl92Eg~l1?Oq?NuF<9an zVQLGUrH^a<^TOQ7zcuFzS^(u7)1xW>MxE~=iB?OQVsq2>rL^&-8`8R#sp$D+5m!Ji zTf=<2BPDgWbzO|j9(SR!mSUT?Gp7<Sv1(@bg{E@thuE1P8V3Z*Sj=LI+7`V&L7EsQ zDA3S^9M2P#Pjk?&7Z2gOpi$L~XSCtyWOw6eMe$^zN1R(Vlbx8(YK}y-KF5LmtQtwZ zy6q5BaW({dci@=>kz#??baW+`&>1`q9E%c&jz&(Cs%!ML<`EGaKn=*r+U4g6FTkt; z#;H~?hyDoLIH9}j0+3@JesijUH<qjmm>utEeKX~+-%PG1|E5j$*eah4O$Zwv*!d^C z-e~q^7(?rN?Qifg)tuF-hM2z$<G4#11(;fh<lekZP?4!U6X|Zw$r)W^xk;$o4`F3v z2ZBO=NpP;DNdp3_EMq2(UARJz2}_o8+M)yB7E$gvD%<^y0ed5=LqVJq7&EbQAtxHQ zRZ<DIzsAHyFPWrC{&U%b%g;0q2Zi}$DSdEEWKkJarJ0si^43_kxSZF<GTu3AYv=2$ z8=hRTqp9farlJ>PNQ9_q$Sh`TqEb{W(dHZ5vKV%73U+G=PV~SVezHt)X@3gO#_DXR z*WJ<@%QZ6oizM5$+@{&DV~&<l)pFoJP#=i7{2b6tdyg2t-~yhN6Ool6%1JLd1ZCbq zSzNTI6@2%ni=N87UDUdTme*)xJv-%R_fRNIvVtRO+fpa5mk^_{l(*hR;I}M#{Vcci z=d=!g_8QjjyAvDfo3J6?W%93($*s4ibWfc3e1iLa;aMu<)+%-8MXh%zb1Deax0RhX zl&mpve7;`WPj2N)`HR^&>la(M0V9T>8Vp1E&x3fa9S#U0l<vR<dJ6<>V4(odmbFl& zYsn8qeC4uZhd5fSW-PTV)K}i^E^{yF0_KEq24n4*rp?ykO`F-CU~15fZ}9Eas10Ki z4c*I@gJNY;J#wV#4rt1f=WfG)QZ9ZjXHl1}BLb(Q5cE0S)TmR58<_97MVBB`UV2j@ zAD0CbvQ>X-w*1owSz1fYlPa=C%PiZ-81oP$iup|uf0=bEcO?kTUgG_<g5HH}7>~fT z>)&x7zlVmOQp=A#57e@xrp1iuiA~}nx49iSgSnuZmc3{+SJ-(MRI0c77ob<P9P5{4 zJ6k9ESqbK0YefFx`0QKW4DiNEN_<>xL*=<&dRwYwy$o|GW#Z_Ce+Qgd{*8hFE8yf} z=G_jKw`<UG@t7yxx~Mu)q~`@(M|8`>pptJ<!M+wIDsiKLP241^Grdt=yKC{^O3rnw zV3R)AUrb{4F*2+{YzYT2Yjku;myG2I(!e_4MD>=jbgZRt28Y2pf3;B;V85I{0x;4< z@>+wXU=zIgO^n?PA)A`G?ocb=90yMMxgOOz$EjlYG<I-ml21GMMCpoAIuy;mQ?Iw} z4>ZoHn-WF6`5nMYdDg50Rp_8JPIc4p_$#uV#&m9LBj4C<{6jU+aOJMsAXDCZc9?tR z8@j&HTYnr$2JW@(9(KR`fx;!fy5Bw1U)>TN){x1Jm2$A<HUCI%KI}F%nBpSc+3|pO zp$Uc1*+IxyZ-4Zb`)z#AwVYAH{WI<=M09$@Jhvg{OjR1V@DS!;i8(kAt4nI)HOI3) zD3zFPNImwT>e;J@dMMHwHc4+%Z7%-B;_w`|9YhP4H3uEx{&(i#O>ACd=MYG`J0g?Z zX$XUE5t)+VeUQoAByL<cF9MXWIZQH_5jlC&wexP31W=xRjb1PJ(#*$_24vENWW%=T z^;e=80iDCgEyw7(*`)td?n!$FDWh)7!sZqw_qSfcZ`xZlA%l+e)9PsZ@uVo+<g80@ zsU8_0;<N6nb*1==s;TA9%mFYvn-#*XWk89x->F2tt$PuDKQkzn`nhbxbfr?3vfQ#h zS8Thh+2d|<*W|r#m(grh<wzuz+|P<6o?HL*CymyLK#fdj%>Jaxblr=|I(%97x*I*O z;YQC~)4Jpd@1*4l@h!Vx`FSug+G*83=Kyi&``|_HV$W#%R8h3~NO*i*islAMZXtY} zPh82Xm+Z@&h<;*)7k882K+TWcSuOJA%(n^1st*jlZ~dN@(ZL<JFX9kwD1Xxo(e?vm z9|B}|H0bwskL~B>@2_sH3K%1m`RHIY`wp8RpUX-99X-_2S{#Q1{e!}_@JIN4S|ObI z>4Zqjkpuj4Kb#e&lD6u?L(jyoOZt<>!W%F}{#6iK7ZR-7S`zvk%-==J7S?Nm)^|57 z|5<Gg$zez_5tK*$aO&6YF9zdy(RLar+P<BnpF!Ja^1mT6pkwUL3D!id>%#kcmH)Hb zCGDF}2q-Iwp!=c!Li*-rp({yney;Qt%HpESmk*<izplK%e?Yf6IG{;Tw#`|D01=d~ zqkjaA+yv9jGs^}QbtpxhpKJe`Df@o1HrddG_p}9NEq}+Izi!WmjlFdPNz8OX-p#lm z)|2wbWD*UH=SI`a*q!59&HHAawLH;ll4E&x@|@83uPmKloq-;7XD#UT-Otrf%q*yg zFr+g`gP=3m!?zmnHb)<Qs~T^B2;3}q!RC=I1$#Dp?>=1m$6uto`GE+VD|*ZSdwbzt zyD=y?+J41HpTl1%A_M;N5BGXXCY5?QW7rKiB48%wE{t~lLqcC&!V*N=yF?>yPGJWT zp*cumlJh~fF(mJ__nRwyh?Ef=OFKSF7Tv9T;6r)B4O1NUdOIv)MK7~`%j%o>&HtKl z+ad$mo<E)sv{~ON7tsTK&Kq0o73=b2sLQ80t^mWl8tv2KKJ8mTk8u9%E{DU?7DpE= z-&jLc{4<z2<IlM>*}RKO<Q$>?F4^@GbIxlf$gvB`Xz9|z_I_>>mo?)l`d%o*EbMaK zKlJh*Cb2!Kl2wvF+55c8xcB<LN4zPe(KR!e*}=}*qhx>bZ}vzl{V$tTvwF<bu7g92 ze*7FTc#W&xn!J5r7%%E$Q5*P=VF%=o$lkX+!P>hwBISR-R_>8?JUrUI6S?P)C^^4W zGu?Y61g~5Y?0D%-5d7b%q(Ok9YwjSbWMV10%r9g9_Zzd1wEjl-jP3I-y)D*oFJm0K zUq_Sonm6^jl=qRB_+@l$m5r;3+mb~eGQ;20o!BgafL?c^Sb?WaisQPx4w68Lj@=_O z^KL6j*Rj}_xUB&<nQLXt%_z2s{p1e6j5HhZ+0u7>QDSrUz8_=lBabq+X~50E&EFF> z&?jwKQG4W5XmBs5-bqv3i|vjS<wF89tu#tdNs5y$NS~}QqA}Z29$sA%>l`DpI^{3B z4HpV+z5!vuRxG4BXvy+YDi9P@>k8_h=$&nVQqAYo^-T2K&auW|v<O2&H?rx-J7UUP z)|SrA7|Y$q^_ri={L>Qt#8Ngxm$hKS1VJ877v-;5=NB=%UvmY6n5IY#&#?V=_@c>Z z2LXSA1PeJ#J~Q%jFl{315LMEtD;xXtx=XKwDkt*I)*E$!QI%FK?p|^?TR-Wd4=D4R z4JqciO)OwuyNC*6e1RHcUM5k;KVq?2)wU~Px0OIaxkTOwGOX|SFIrA&rptnlo3QV* z$zgsx@PI?HQ_5H$(R>6C9v8EbFrDMo@}M~#M{!lmB@~{4C(UUOwz3-`Pu5jQvS`W? z{SK~0X0RkV<^kgGv3M5#tC;iz^;I2iQ0u5zY4|DT73qeib<xbjG^gPa^IL5}gkyxc zo7MgyZCSDqo{qk1wPbUQ1*oBmPDbytl;3`6Bdoh<mgYe_sO!Lb0l1zogjL4}7Jq@7 z34bl0R@rw3qC)F%=}>g~`4GxoxL0VAe$|RKpSzd*r)v?A%{D`ETny1D4@Iv%T`#^# ziKN>jgGo2#A0Cj~eMi3G`f&DaJ`S5`z+Y@mKUH@(wlya_l{>B|e;SDb(Q^J4B<M!g zLmfT7gB40w8T;YhclztL@%xeZGQSh$2iw~XNx2wlnW$Sa5ie&VUf}Oe`B=$~Hwn)a zgvrLAleu&m^E<alwiNEHrrNq}u&QyLP4=+PKt#L%;kj9n&FT*1M~}_K5}La$+k^$k z?xS^7JsSU5rXcB}2b5>UC2_Ae?$;b2>-y+;j^@^FM^kUb-C}pbd!6;f9=c9fqHcex z`4Kse;*C*h{9!5XyObqKky{;*S11r?^9RE|F7fm`B=C0MfOy7Mm_3RPrEbE8$FAL! zSr6t&c!S|<ye{uGT^I9zF2_w;$SmrP*S*fBA(2m-;P4aI#fnxbI=>J_ih_DnBkZtt zBf48R<^PMXj{g{6`fbWN$g-6wRNTLCCPHI^bYL$xO-<^p-(`<2oz`{_XI?AuKEyiJ zl63oxrCyhp9j_$lKlsVb>M|Bv_j79l$=t*wKxP_{tn91#as?~C1*_F~&1Dw$vKw5Y zJ|6yIY%65P63UfcueDfMpi?86=8%>izr|)il%3#mZRQcZ-tDNb?u7`j!LK*E=f7>> znf51-=GzS#MLpT7UO4R!1eI>`6dgfKCjHf$`5-SSyf*T>$zJ0%6a3Zf1o=AFU)|<H zwf^L5_)zUnUdm&1(x1FQ*-!x|&rzVvpM1GSs?wT{L&#xGq(PN1V~efNxiG3aK2*LX z|BuntN1v`(YXbjxK(G8T!jK$YdjYYM$<ujaV$kySOn-UH37P)G@xp4Kj%fKpZqk8F z|MAfqI-~!EK~v_#;?_6i4Ltg*PI6|;NftuB@ES(pHHUCeFZ01+(e`>l_@F%6UTcBF z*G1b;vd|IH_6h=n0SlBaa|}VPZKFQ>x?rt?Efa@8eYHG*`m6=O^k-xB<%lbQuLDcN z!P*3y9YlC5VQ0P5euuR{ccZ2s6xrt5r#oHFRPA}g;zlJ;d%x`<LE5{uQ|ZvjyE8J? z)<1$127*%tf(r(MYX*Xwf?!`V1shIUdibPk4$rg!C%R?{q+q6H-NWB%+}fSpLGiAb zY%jqHCmBaIPQ$tZ#_!OoMt5VQQiLm#bdp`9q@(SCXC<4av1VM$(n7TT(JwJLOeyu5 zeRJafPYpYlUyiV=+sQsh&*%a9k0&W?+D8L4ox4dG6z0qKNWVQgnA2g7^D5e^3J3a% z7uW$6j!o=dW#@vJll1T70WGLiu44fL$uh8no!zKD)qXV$7$(RpWj6cO%u-fAJRAVO za+so)22SICT0OAL;aj^fL;mm0mi;@_6b@tm4mDO7R&$17NzE{<cDJy9qtMMh-O6Mu zXrqo^tNFo}qx@+zGcQ#}+h>4q{nNV-xdV2!@oLDbq}*36f=A>2lFREm6Iuz@^-T3# z8BiPjx6b?)Ug%cQ>~8yNT`RA!u2IN7L11^DApD(Oz)OBPKQ_KG5f<0%J~GgsxKomL zinjlhZu9AF^=$q!;_woNnvIch6V4ae;@ZP>=YBRs#%ofKh+d!r4Mn&MJbSF{A{|Y% zM0GDan~G%hiTa$M8~F;9ps7r-unvP_T8UZLo}{<BhY0)$vV6CC2f=9jCa^y1-*#De z@|Z!nP(gn!a!0S<z-Mn4rqK1cnrHnI?cL0mb&Y9>Ou-EkywInbR|`;64(|~DVI*tH zm7?h1u!)b{0(}h@pbUf7T(;2kdUsnH4XuB&V|;ljR2&UHK^i}KIU=V096FibIJ2w2 zOns)T0;$qJ+I7Xz<m}Eq2C=C(A@#Ib7J7!z^A=Jc$Wlso_T|F2zC!4YLTFDR^j;y< zUkH6v2t{Zq2f4HmDl3F43ZcqEXk;NYx)3_95YpbOgI7}s)fPgh6hdQz(30}x2EW}T zkqmsmE7Lc+e(zmVyS*c0UYni7?rzf|!lS8wth-Ie{E)v2>fnxO=JW!uXW!fAow93x zMcuZ!+b;R$!Gm)jY1)B5*{-?wefyW364`0-C;k?5<sz)Cv}Vo;i1x8M1<n3GW;F+9 zw*D?09d0O-%<NvhhFJY0xGo5KJNE4=-+>3heLGGhrpQ~ZlYjYNXo`(Z8;$O79m_BF zf=s_vtC$qE6~Bk~+&X{rld0UVBp28rEiUn$8lqhpOo8`lCXE04DKY<hOPOlDX{CGF z9w7D|!7W;;+;V0`xLw~WEmZR(#^%z?r1Ac$S0!YhZW-BjRwSDJAI#uV-K+Fb|M0=O z6d*xxT@aLyB`pC9Pb#ls$Yb3=dAeS!;B}8O@sD7?3n>^;R{q7hS5+!l845RbWYfN* z?Fr7}1T;kv8q3rJ<FLR{0{3HSa)j&2h8>H(#CQ_y5Sw<tZ3zcLtk)--zt3K!DOvS< zyH`t3RB7F-)!`H(-44+1Zamw*H#YK(+BQ~;>fMd%Pon$aogb@T&{|}-A#q?bgGSEn z2v;43V&%B9!-|Twm(tLFhbgjt60Pa(q;GTIWb-~&w;CxP3pL@wP&w8_TqhF}n+7eO zMZJHq5meG1)1Asi)0o|0_Eq`ADg20$n1M;B)BIFZ0o~bfF*CU7%mXjOG*FHoH6^V| zZsG%zy{g8|eBtm%Rbxl0;oc>L9ASALA$a6xKKRX^#m9reDa@waXQ2a}Z95Jnf&5YK zz%a}9P+3J18>D?xJS-CxS!4C-(MtNiB=;TgFS;hP|A-`ZDB7lKf2al_wjUkoK$QaM zV#n7ia9A|E_8V#&H=Z`%x(DizBY8-V1u}Eody11?-e##Z$?mq9JoGPBhk$=K_IrhO z%X8fWcDYvnxyciD1rYO9aJR<2ix^Ym{`|{zeL?nU4#X8ky%D?wEm#=q^T+lFL*W^g z)D49S8%yN>2hoE1E|rM;R|1t?n$d%y9?r|&#+fB8BkmG<0VfSoi|KzT)yBG*bJyQz z7Ap07`+Avj!vBvjriw+<{(2F+so@n{4RB4j_-o;MKouME#t2nY)~Ja$>Su%6`K6eD zyI2rq==vLYrkYPfdaC1Mpq$yxio>g=sgnOIU1J^4lO9_ky-SYYeYx>hRdTeKTp(bY zYHO-F7NCnK!yRznG*%((BA|)v+1ttkTsKW~^l+g;8=6Zna2?Y)dhs6wX7nI1OMcIx zigeNTh7Ve^Xu?*vmln?}a2`HmuXVlT#!hjSpW7u$crO_VX7uP}%U-R+;s!!?U^30D zD&-Ik6Jv^;1RlEg3f$p*wuq}rtCG>ly8;Z#M4fw6ncI7z3i?1^OvNQ0D(S9Mr`bQ) zX?-If$h$ttGiKgslimbcOd`>mldUeVi}rB|D=lHPUGCme%@a$Lw@;cnF-8e2if`=; zV0F;j0o}>N%k6N2nb{=9JKIvtoc-vnPU6kiU*AUhq<2`#zg8tBy~!+>Tr2TPu#%v} zE5XqOBSPPsTpRPRRdaij#}kqu@+Ncm=30qdZ*tsw*iZ&rm5ubVva@|Wnwl+R$~Ru{ z9!3u{HUZBbqP^T>{HDEatTG2&ymcn%`S$(%+{Ndnk|(bhAm;UTY{mS<Q3oxY(gcBa zS+9yC7&TfpXEnP{mt&)MA;_itf9eHql6UYx0&kVVA52}V)^8$XG8)Iy4tzHA;&5=O z0(=H~6-KEhnJlHsRrXBpf%pmih+3jzdne9Bm)%WC(tq1a-qVQqPXd(k&tH&av2N{e zzh-kBtOhGDfWHHy3yf+fPJz)bn}|r3lyzNEjJ`N7A&8Z*bvR_Znj2wnA~c<A#PD+r ziyV{XtQ(J`J5p!Gs-rm_4^DZp>R5NIk>Vr%q6KO1No0Y!un#N|tJco}7FA!sqwk(R z;9^FhPpl;JP#u*b!>E>jlFC{I+4QEa0vc^Uis3ED)8zkyDr&S%ICf#mwAsK^t)EG5 z3Yx>iPd55f&JOrYE8Lpz7dTLNbsOcuL8);}&4Q=%#A{Fz{@<2j@)W)P-zY8aZD|)| z-<DX|yjW-D+`PsfkLu_KA&jP&3551i;Hw^=;OsD`$KEzu>Q@czxUR^nTHh<2u{*Bl z?U1@9!&t`)8$=Mrri$=L|I^YHx23Sz@vXGDA7El7GC&9uI;RLg#i#Hl*wc7AV1rgM z1XdALS?Th3LEnTwy)nW0mBd-sYV{=U-S{$52`|>jnO}6*)L9efM6WxMP&gPJz<ZVL zANl{cmmGmGQK4mm?X9omVP&g4`_|k~k@}p!8#Ez|MgwdLa~)D`JK!OD|AAoM<?ZxF zNlER>f2Drs+?}(%!>%gYhULMxeni^V7Xmb59WN<Y?p8s_yoz5cj-Bm$F2k|s_DKND z9H58X^i??0ms0Kjv(m-PZZh`!7s%@Mcn`09kw6=lDmW)Da`}XdqFv?t{X3+7pJ>i# zGV;B&^Y!{2-u+%iP`v)Y2~BTNIlEKO@7uNW_2kO#K{@1kiS!wj9QQ9P^`nVgj8)ZL zaqmyA5S3{sGAZr;ov&L-^*hF`Hdm>+?-n&Y;T@LDO~&2DQzwA^WV~IdzHKsP2i5@& zb#!H3EOKXv_x&kejs?G+`OnwiKkf!O--rVOWit1D9MLTnjPF-S^J*ja$E<r)csmE> zFYgJm_X!E}3Nra4hAg#H%=_~lDjNkoCsN=Y=w-ZIn7pcE`|h|R{Bjk^!Eb71*T0jH z$iLx1<6KuHf4?j^bn@*~edGCMJ+b36KSjlSC`Gi)XVLv>&fz}IF2K_`58sV8H=kQS z_sh>P_WuiakmzZSJ_o*5<!r1=zE-hU?ySu0KV$LDD?jW7a5A^rIVf5um6+8snjn^2 zcRVkd{rJm}w-tYFdkMccC}G_HH*F+&m<8WoV27A%n~)#k<&PwC>%IaA#}TXLp2%@T zoEuZEKpNLI1}$5DzgQwjD}O}wJ3!&f<o8yqWN=iOhR<Gb_Sas=YtX`!bevN5fRFKG zfmPz=f7-VTeB~=>5X;CH5qw2!?)#H#MbE&GyTKd|dAsb`YB^4zS6fav#Jj-?%&j}t zk!A5B{|0&gp%N5-j4BFRZQf2-rE-p82DEvhXlGyOM5DfE+-kWS^4FTbOoQ(Ad^#26 zY=|DQ+W8n-tqgv$)UOQtpzBfP`#lz~i*~-g@A;LliJj~Bk6UM50$O>MEi*9PbVTu< z403$nJ*gb|LXHo{t#J;8_7{7}(w39`WQD^W&@TiXecw~%`&XL(5nA#7aqG+*u&hE& zlg;im=cwu24e}TiZ9f;5F>w+<UX?XxLKej$bnFiJ3+^ef&c0niyPKqVc(7oRSdllN zP?iY#5Lt4U9AgZyj)@P65$8!Lqr7o{CR9u3rj+I`L!i9i$_<+7em+n~$QQUdQQhR` z#jA|vF5*z+q9t*^k&R=lX74U`Spij+y9|r8t^pujp8z7gl8eRIeqJ;lg2q<%ia*F( zk-O|;F)A#x0uGFqckTPr&b(tom2S>Qrj*5uqJiK~;o2`&_pam!uJY;MCQ6Xs-0gwA z$DL(j(|E3C3uP39$@#hK%EYvvAxwZ$aTxwY|C_P|1K77qBl5dra-`v%g}27*USb<5 zq5ZwmYgwphf0;(fUF4+41caBrl%-#e)X{XVf4+#Lon8?j@GXio?h>6H6<iDKq}M@X z2&<j^Z8VTcf5(L5)`-64PwsphfBa?jALN#Q4D05;eSi~*(N#O4g1;1ZL)!pa8SwH4 zVQYCGxKcmSWTLz)G317EYow8TQ(%B?uK4mNDX?<q+bZ%yFIkcM_D2-C_y>M+q@__K z(?iYWn)+r?;o&`0esuh$qrEAW-hP)DRw(~qfD^{8TSJoi`*Yvk?@hsT&J;Z7Of2<_ z<KA`?G|uZ!`5xZ!XNrUg+?&_$8F#Jt7f(lCF}?pMpx)_3(}6ILci<CQL`@7~y@{nQ zC;8`BI06lpOdrt6@@~xS8F#Jm=)|!1`!}fP`sVSbd$n9->fdKAk2#7sY7UkB8c5|p z$6GDmIr%vdQC2Aemh$e&aYVp-jw1*)MO^S=J7?i#>2CMT%dVpqSYYb0M|z%Kz2{R! z&lrrLFG=%Mgul60SZX#f>P_Br>l+!mZNg{CwIlQ~lk&aU>3lDWw(sF3fPsmV-=XY* zM$D9uqbbq$quJ-6U@;9RH#hLWgwgwxE52b@>*;~K95hL6o?IHt1i6%tXk`i~gbi$B zoexM`g^PQyIXG@2l`P+7$C9LPu&6h9{=~AAaC7r2n?t#bpD}p~aAH^P@X6O4zPgR9 zKRzPq|4uW^gEweh6Zjm8p!)eg?`D;v;2$+mER(sP*18h>Np8O<gK;|xidvBdS|lIQ zd$3wI0d?~OR&2c|*dFXUaD4p}GC|oc4?NLZwutMqkGQp+rMNQP<AQbspF}$kpy#r* z#OeHZ!_w>ar0O2PT7l!L{pY6Zy3!}?V%aF|`7@~i)}Kl5R$D;g0(P5AfKXe~^Oq8v zI$=+$yb~+!{w6ktwr-^G=o*$dBAGkdNLJLH{oi~d#F+N?tSE&=`de&uHD_BnthFXl z)VYvG+`57NwY`%x+1v}9AVYU{4=DtvN&E3XT@d$gwRJ*oYb_D}9YPQ^4tV{(eW{b> ztMSj)JHfzTFgDh}9hlEDp0Q37tP$bKgcE(KeNUym2QZpSH6I$z;nDC)nw%jNyi}Sl zVxjT1=&I{k_`|w@MI=pJY_^MLRdI~W$H{{I%(He1pkfO1kj7o9h9}+Yv?Y(TimSy1 z4c%!ky9u0FSdMi!>SH8!@aLj+s`+%5np|9OxYopa4{J=}x>Y6iK^3*Zij0n5SH(}5 zNnsNytlPcLS+dJFvTGA$1xk=xqSE|H2@C5|yd>ATMbAr^mRBX$0b<EBF@KeaS(Fvs zSai@M)nH53(d(K4hXGxaw>|F4;2r~=_{q*?&lu%h+=ruhI{RoO5TTOR3z8Yzyn_Qy zIg;G|&3z>5HiK#gSFn3N)_q=?2!nad*n|JPfzlNcGdysg;2m0&vGy<WC(V?&E|F@~ zo>q~~hXYU(Q9LKGH1`5cg~7y@9eiox#@tocQUnfzuwf6n5~n#idzOEY;_y_=J#Q>Z z=<1<&g{-b~<HIF;bO+mm@;Q7I=^)$mz52px?sO<M?E&Wmd{b$({TPttnl{`guvTGH z5X^4k(aUUwn8u&+=K+MjpeD|2U&{8X4meky*U2yUz_18s!OHUloYT3S^U^mv@qOM7 zzHPVn9TZfR*rD*UUj4TASsi}`?O6GIlTVf3o2K9MrhpB;D{A+*+Vx+{?97DUC}iEW zmamb)?nJzL4wd3<%v;JhV<wqCZq?mJl|d$Tb4zR)$Gl2%wu!efJJ&LeNdX0J4S-`x zHT}N)Z;94=Xy~;W%xCCkr0M;9n%<RvIEbg1Cd2K2shD@t0CaGwwv491GS+N}D?D4& z{+awU?(^5HB~1=>(3w?4Rko5(Y<t%7fRVRW+jGWyWO_A_s}{#TBTOGeS6T_lqWjhG zLe!u{+p}e=Z|!y~BI!NZ0b;I{Jz_I&eOXXSKd+RwCBnOvl5XySL0N^g6oRN6Dp5(z z?U5y>2akY>^Lxk`^lNcYnfPd)?%Q@J<XcA?V^xYOzt}ADKt%2~8e_Vv?i#eK3wv9B ztnf2bVaD?c>4HOUZiUzn=*O-Se3ZQGZoqC2DJ0guq)*)b9HD8B$!VB-<f-6&<>KP7 z>HGNqBjvH~@UY_S_1%0in43H)phh5LO$d&=RK(MH*%$`vE7o66gs_7RT<E5f1c--T zC`^}MJ~p?c$lKb%$C$U6qY%eaX~g(ar7Em2$L>^vd~!)S=G}|eFh%JgL}3xx9StaG z2*`-RYsD$=P<EEodMQt*%*>#gU?oAV6%%B$ArqlUg0=4Qx|ny~c;Dm~p$YEdK|=9> z3EaTso25He#0)80dZ+;!7^caV28CfJUswY^BSi|W{?@&i&i%l#5!>+5_HtQJge$(i z(d^&D>yW}kXJL_&Q7sq;HMp()Itw51k}Vo3(`VV9U6c25bk#IK#pZ7BLlVM^hfpg$ zZD~YT4(vp+xKZ*FQI7HCu1UGlz4Z5&;p0xe@~J28?LpBDwiD3Hrt#g&wowlJe`7yS zI*hqLfm=>O0?goMxT+f`Sc32%tT{NivC+PLXP4qf6V8tnV;9zhzpulXUD4IL#sKci z2?XvGd)fRY$Ibm_XPxV_$ND|)>rD|7fk2nh7HOGvg@m%Z(h^V|m%h?LVX;|I`~dch ztgxYQqfd18wT?<A#-WDL>RGY?lq?>UI$Ys5>kJp7r_&zmd)(KXcJU0*acEGy;-I0W z^n?7`9K<b$<*GDT6k*-b>_ae_SgJvN<kwlLW&h>b=&FAJ0rE_mz%sm|O25i@F{#ml zClGN#GJ3s`1mPEi_@X-q<@z0o9$#{EY~=xQLUiqFM6kcrHDcIC)1T4-_T5%Q)y;DZ zt?%rHwwNJrnIil#|Ff@EH!ZN&^)ub;&DE4Z6Xlk=_Z!=I8U^IH6$n;Q%i{-mDy;x0 zB8W7E;KTSx4XR=JDRhkkm))#1UT&Q|)^FeeOl{8IywRn&X_I{m4u=LzextAg0c}aF zHxRz%g~-gR)uRj|v6dYqTzQoN)akpHk0sJ7)gfi2VCQ^NC*^;DV-~c9M`I1zK<)?X z^DF2>x*$-O`Cj&D{w#<*M4^%zx%%JP<3x+1!=XqGsL1&*+cJ0D8hA!!llKZ`Ur}aG zN)GNmiSbm2XA@(is~!OrTscJB`${7b+W<wUSlZO^c63!YQS`#frkVPkS`C`)<V}B! zw@VUI3*_doGrGEsbf9TEz*Kf-rsD=>%oED<e>Mn2)VU*UJqiHt>Nd)s2Ln8+sIFS9 z#Z+?oJ66UVaz5EQTEmG;X#)Yn(K{M4aL+RxUp&+Fd|X@Wq}~=?rJHV{jL?w&_*Gt2 zhs^y&s>bRD-iIifG4C-cn(a5>Mgc)6frYxttzNuCCO3qkhqzHFI%9{%C#NTGR~w$! z%TIDMNU&3{jee)|ZkEowD<2co=EHU2EITTxu2)LW&z*fzs9HAck7j;J3Vhz3Lb>e4 zRP(^`iRlO_?{QY;bV0M*AreiRI6D4Xhjd!K;l>KD_D=L~z{V@xuzSg4NL>d7C%6Vy zx<m8frY`2csagq+DMuNN{-`2G?J_GAe(N!gWc;qmMnH$Yu%*nfTR+;pZmrbQ%6Db^ z7K0Z$=_W2urOQ(UQ7SEcJ^~Xa{eSKScSfR5>@B)IMF;OQ=EH6?(RL4e-R@y9axq@z zFJO=gUZwU^G0gyo>3e=F!@)7^D>6K826HPTf4`w~tI*;5y6}6txi|j|#sovBRilvs zpEa#goWEYv(Lpn-EGJMd;S;QeELcN`9_eQ^0doCP_|Z?@Y$$&M-akTS%U=dSYNGW6 zjLtH>CGrH7ef<emopilh`mCG9q)MU3T_Y}@-!ki}MQ5V9Y;P>XKyzu?;ww4Bu>lbU zqbY5g%h0{oP!!12$-A|8QpeHZCM?0(#B&@+M*)peR1@3pBU~}sxPbv9IF;u3%%CsX ztQ8921zceIqoeNGU`t=V8%bNO>Yzj0WBphjlCBeYA|`Cq<Nc;a_x;8sPXnP#4=6u~ zsI&|WcFGS$4VrJTmw%IjdYm?md>4RqC>J~U`XOr%@do7Q3^pmJGXa~{)ruSq2k=XF z<bO+Qu8|I@-2NzXZ?G;2A*31w+@MBl@_Nnb@9j}u;0bZq*8Azhjt975x#jPyhm{oy zQctN(!G-p31*kY#l_|E;wu(IlxI(7#na*>QS+?0z7&!JHnk?$aL?XKO4ohwbiR1q# z4p7{JhEw7O$S>Xy_ayD`)8@xSGN)W|r{=4;k9+IfhCfCp|2gx)q0!Ynj6bxabT2Tr z1~G3wRa}``U#9VZv8ZY?TW?>oH^#iG$(49{vbR#bjmCF7%AmRMshV6JU6tWY5w*8# zD%HRhohO6DFyB4(ps7-6C@Yl%3|JLtxd^vCoNGF74<d9A{(9mK_^x~XQPsjSfTkN| z<*%pexE=XF5|=p(JK31l3lEuwd`vdq+NKA$Z_{cRFy+sG+5p(H9M(+~>}F#A8VxJ{ zI=Afee6Vn+MFLPC!VLLtz^7JzpzqOkkC*Ht1MP;rHeYbjw(^5rCz9Y-7&J>N<Yx*g zzi~lQ!_0p|5L{sCs7G>Vf9pQf^pNWN!V+!groPks#8N@K&dAN@aQ@DsOI=s;(HE26 z&up6(Ucoi&z01(6Egy@O8o{ssvQ@i3cDu0UnD%=T2RI`<L^~23BI(Z7f}A)y<#n-g z(c~}d*K(Ejmdv%=YluN?#O@T&u8U>3Xh`TbHNOXC;@<jRz~Nl2B<<yP8DuvDp%*9y zlM8)KG`x7tcm1r2PIxcH>w0l0dbh?i%(K#d$?`guVA*w~oIwBCRMb+Q^iNAZ`f93v z4+XORRfau!>ucZkO2<hCB^y3$-9{htbFMx;Eq4Ah`DitCu%zz=%%5@fV;@&$I*gOa zWOJm!K1Q#LQYpqs<AuO}&<@99yFar|1f$_sc30Pic4FO`0fW*^Xi%D;iJht(;C63g zz##M%bQy_2Np)}62S+>OBE0`V8O7z_L~}Fq?W-T=?X;)V>twz1oi66%r}Rl9dMK4k zpxTb<N=GO6<)4On-Y1u2GY7sAUHik=fiZ)hfPV7Qq;>OuqG`Q7`4f4VzJHf$WSHc? zqUOo{c8z%cpW9SX{HxU8=WJc6L*LA!MH^d3O?$7aAIum}DZjKuc1JSI0h@2FR`)uj z-`K3s$zFM~(8&UWOWl*cFTbAgAmyL8Aa$}W_{IGHvhMaT98^p0`#@HSNa1TT{Tu+X zlOQ^0BI6`Zo#2#!k~o7BZJ)vyuN!wmT?db^@9uj2cw9W<qA9cg8!JjVmh^bG(<-`j zRMOjFA-6icExB_)oa9!g|1i@qeo}UkbvQ4Uabmxmig-WQ=$!KZFhvjV=aLGT2Nl_= zgg_Ro*LpHSKcG)vd>owZfBTvNDS-d<<)iQhyYdgpKSU5{oMBv+v=0aMZ^99QGMMtO zR}Pa&!Ko{mSh>T(;dAiNl>ajtPtfii<c#ENA3Au@g}NV9GyG0U7AoXG?prr0-G}h4 zOLsBpY!4%UuI=gEojgQF2BFk!zIBSd?aCiP`=Kc2Z+mX=+2Z_aP)K_R^1lHh_VfAm zMB{uc_WPGq&O^@*PCT%IGr)}l-;&Lfxz5@om}j=a>^Yd#TM`EH-9avV4L4*LFtA0l zwvXX9aySv3^jTx^R;!T+RuVMRJfAfdZ?%?N_*zR)%PszS6Ff6PPBxzx_f}W(X`rZX z*Ukk)=oS`>G1=Z;*y5?XJAVXQCUWMrEnmVtEopB@qW)=j-NVUj9e-NgQq4bCXG!H& z^;4Q`tW~HCXrBzY&M_ml*<w!p3-~fWkJ`pE=ajUZ^GUwXm%GT~)|UXSL63qo=mjP0 z{-xQh<(DChNT7x#fm$?3kY9?FBBn=JHUE6i0CM>m#N2_TI+&jfQ-vcG16Tf1n%p^R zI}y0fjhl>fog23*g;a<9VT2g8+O0aV@29*c-PymG_t8}EeH}0F(5VU=`P2SwHFHkZ z8vcLOEa3UA=GGs~indqM-K~J!f{*1iZ9(0(uKmZK@Q$~=?uj~%qg+?h2K2axX?j(A zO($V4@D6d!l~&dLG45Snvw$htHt(vMmNa*aFU9^p?X}meAu+kGtLY(d!XAP@s}ZBb zix9<CzpN>v4kX**lC{?u=d{=C0cGO<ca7MF_{WG(`t3FSd{6SeD|nAk3BC97PIMWs zyotGZt8{N~xVO>nO$<w1wR?MyH^HstRd7aAoZcq{@3p-1I@YC52C<DnY<2LS)O+U6 znrS=@jL8G?O$ic8(nZ@Z2$CyVW&&gXKiUThysl=AQu;ruX|o*9CuyjqLFNqr?fcqx z37R`=X7VxSC4^L(+!%Zjnnoz4g;0XT8|;&U!jwD7wJ6hgT3}`vm=gx3z<#LJGfU$o z)jFPr(y;tOT~XA?O{6VvM((I4Wg3&jDTDm4bSLZX4*V_9b&*Z+@Cc;*6LAR~%F-Jv z?h;Oh0=Nq|Y<nFm;?3ujqziT%ZyGjy9R;$Dkv5WY?@41Ih!5^auDnNlJm~6}&m&v6 zD^)Q2`tJEFNEdG4?!E!{jz6SBntXu;FRz&p_tG^r1TU!>o0dIj(yP$x#Wl73rfWv? z%kfY#olfH={fe5jPck|PpZO(8oJ(uSQ)ziB0Yn(c(e}5=RKNH35z6byuWMMImBc$~ zRi1TAUO%l+RFO_j)fyH5d!?Ts^<|q=&%Mvn$X!F3j0md&qG2_KBeh0)nBZ{rbmGHR zzfP+Y5F@{tVSS*vb*j)Rme(9w{5Cb^eVFoazVgZ-NhTS#iMDr0piYXR@SL-YM<Bt3 zSt!Bqv9j)QCP9N`Sj;ccToKJAw~;vf;BMdnJ+r+$v76vG<`;X}pAks;v_*CkA&y$B z0qL0uwQ{zPZ`kqZuyn5U=(+<4xfAvj^<W)<^DCFW+K+hI_guI(X^{He8#EH!h(>rn zF+u6dT)0u;3Ku33j;vgG3T0cX>f1>7Z5rR$=Sa*%+RDN|H=6Ilt=gW3>m0q;4!keW z`&i2_3?^78+h#nMP1;*xsmhq+V%8|ekZp7y*14p+s7T9r4w5V%lWKmv?V2MGR&(h4 zV9T-j4D?s~wOv!9Z&T15R!9JOJ7SqPi(311@?z^opztZT0HCY`nt;mcqX{gHiYnAO zUPJNgB*s)gbHN7Q9TeYpOqa-K&MQf}i8LhL%mcxay$Z-4`yAP&!dntCyOAh^ztoi{ zAUf&AgBT=YwrwD|W+1qLpp%OWkc(r{oRN!rmrrMC#;|)Du_^CC{39RtM(nO?0Ks+2 zQaG=RU!)=Db@ztzT%Fftmc)9=&4RMxPLMRDd?V0c0SU)g^AGeG<V(vj-PxIBbRu$# zf&)TwsJp3@*BxVqgU4g+hKAV-rFB`=3wzj^b%M+5nz+4mLL`4Nvaiqvf%7}5;hm0H z!jw>?@1O2cI%|iJ^1P}&G$y$QU>Q)kIL?t<9@xhWMG#r5Q<T_`h!iGrndeR*jEO~~ zYUbsV_SiCohr=}6$?X$LFOzgd`j!U63*}%&to+gTCn$PAvJM3sh=>5XOyHH%GpJU` zV3GP)mG%n+SRhH^+3=V^I3y0TrynFq15^XV3)OJQxGIJsHPprO<31rkgSzCuL=4Jb zegp)i>h2%i(*D8w|4;u|X0m@FobdVI1$y`}I3a!^{J$2SZR?RZ#3OtbG>N|w5cVwg zFU%j}6TXMfzXT2wwIOiAd?CEQwtgoLgA?WtpXEV(_zYe@@i^-<;DmUD^b6sB0zmLV zM{@NqtWWq1=^VD_u`bzX{(dWn3G;{LhH%2~TI>D1e`f@dVfyeH)+>bj<<A2`T(I_3 zs8^UTgcCk(SL$<MP5KOcLcGFu!rIUNh3y->79O*LP?#^oCwzu<3i<VfLe8OqzZ(W; zIJ~gk!*&bnITT7HGVe3sgy};#A>W7i4Tp2(FgU~OGaQfbeK?#&!{CJV3ZEg|5U+0x z2N1kxhQSH*g>XXt!*J35of|wuxWQ|rD+q-7!e>Z_@ELv&`^O0(fZ*v3gA?L2{29_Y z#4Dsn2<{(;!3oO^;e_=H`$hO3_Ja`4+F@|Q{2{!s{lo7eUtbsk2%dlb3^-x_uwNV> zqzmy1>lcE%aTuHskC47$yM%lb;uXRR;rxCWoG@JoFT^K=8}|DpA%Nid>tS%h{KMge zbP4ghU>KZNhQSH*htIG+A>V{_N)3ba+hK4*d_p>h&roiJd^C3$oX3a33GoQ&5k5n@ zg!BsGhv4oS1}DTPe1?1%!mAI`pA`ZKo*(}OI3c|7c|wprHVn=K!{7|BSBOu@cOjj^ zdWPU09R?>XH>`iyUSWHO{1=uN!g+fboG?Cw6VfGo58?hO1Q0y;4TBTn6Xp-$hV={U z^{ruWw0Wg}Vg4{*_#QsP_73@Ry2};`@%+&+IAOjJUYIWA;}EY?12|!SIe8eIFn{<A z@d%$GKmRa*^Nry7|JP&QtgEh?-(3C8F^d*9kGXvA;`vu!J$uY|Td$h^&F0$E$JRwY zFaET#r`Lsed|tY7r~h^7{$^~$=fk^b*1QFV*=eVZ3sMd#w|V}&dGoIxGiBC7YBl>R zs&HC8b<n>>$~yPzE2~eu>Z;4D7tEh~b<3ja*|VDGRL{S<`oznto98c_y-4Zi%$wB` zkmHl!PXC(_!M{*$A>oj8A$>0bl@?();je{v+JvCOpO4?T`ZNAIx)c(QNGx19e_=J1 zZ<)VP^jXw0t7Ufe6$|Ijt3GkjDSBPlqVM))QS-uCEzNVj$?BA2mFl@yFKBJ4UI4}C z&2E{!aM76~s;jTQd@h+UR|pa=2!e}eHyiQ!JbS^Sg|n}!KJiKyp7n!8E_}sRv#unl zoQr19zTAc8&Aoc|;#s7o;fR<wYw6(EAI|=9y-P>vv_fcHkayP71+x|fAb&7_;pMXz zx{`p>JZJ8r9|do7ufBZt;<>Y0=874F)zw$dT|AqxEA#5vOIsGs3g3)ESIoU?cJ)_J zT=Z4rF7(My>qm}(Xz1}FyMB7Q)YUDsuY|JdboFD6V?Pz%kaYFdSw^IwdVu)l)wMxw z>&~o(0JQ3r)M(L&6VDLS!}2QS>dUJ|z*ft&sCv=->MLd~Jf)DPdj5izx%1}!L~S1A z9~5~7lu}G{Ym0hIBr@XL^INKCUp>F|$~o26$7V08zH0UrE!9`RRr6-ey*eybw1sa* zG!6R}^uM5}>Lqhq<`|(1&=$~UE|%;O69Eo4L04#?qJwe=J$z_p;rn+dUVbTUTz&GX z{MMd$WgV>zu?BrmwT7jut}YMRrMi~#F2ABKGUB_|XJFGIUFMsSpi3>9wOH7>$d>u^ zCZaBywYZQW{PtaICE#9BSAD8IA|nuCEptUOfmkqS)}q;G4nql8k|Gg9pBfCw{)s9L zsz5}}OTL%*?!*f(N<?N~y|{YNd-b=Vrqw_EIU;g+WJIJSQXVM|{#@v=!n?j78oYfn z_0f^4NChyyz+VXAFFh;BQDHg05cwj{LxQ|VMvjbpiN7z}-={<QQUMp2^NW!q@Evvt zWmgd6AdjF%m3*nR-@$N36mSefM@2@V102Qok^F^eM-@Wu%b~zlnxTLC`ekrFHd0Nf zY*1|3pto{ptG}Un!!KVU|7h?W733I2U52L}nseyeS0l$kf#bm8SV|}jN>R;AtwuHc z)&Ns~HHFY&ydB10apY^1e*$G675R!`APA)eID^ZoGT4XHK8Mrh;ophm{2Ej^7C1)+ zr5_TBS}4j>U)|pTtT3IvoEkX={J#XeF<?+^{|}^eA(vkz4v!K3qar6lv9HngUkhk> zTI4iKSxviCM~(-++C%L#iWt`#qX>_JPreNGPlhh_mZOZCe~Ivyf;Vx}h=6*vgieUm z@>fi4N03H;r@^b$k#7{ZL$ni})gK1>grk<@$DuLD({`uQMqdPrldUCP9ghcZ_vhXf zJG}Oy*EgVX9W6Q9V!vY86$iMvT7<d8t%@n8KKkZjPoeBD14Vs6e~LNPev6?)_!q+X z<Z}Y~M}hYjq5jvb1jj)x<<Zs$OX;D-k*`L^+wTCED)yUDuZrB_pn>|91|0Os^7Q3s zYu9ShL?h=!PJ%L3d^>_a#k${toMBHdrsc!%kpUN!M;gJak~XM}jDrJRu0z4+8~hEx z__UB@O>yM>$T4uR_+WJ8bn=`DKE?d6-=Tjez&-l%4f>CsXIkp>j3-A?etFO$Lv#J5 zxASSUDsp}e=&Ica+GAv-!TyxD!O9wdGMqZ!p{^sqXiVhmk;(L=V*5W#e+;!dW*CGp z&OOhd$4;fTmGJzjkx7;|J}gJPK=+|}_0|aXqbZ{vYL57eG#{M*te~t0+Wza2Z}Go4 zV6YS(oZ5xs##g7%Vy6T+&Y<njg!_)5S47D@G5D_bj|Ok9=M?ki{s!PqjLe|+<@CTh z==Np)LK!u5{2a(JI3$@g9bUd5(!`%y<}05n|B9ijqwLV!N0RqEsD5VTT;fMWlKh=# zeXs^t=LO-xc|IAQ4d0|G`&3{k_Rv6zJK3q<7+=rj?{NDIrFpr1JC`!1L(3D%b*kkr zrcNXH|8)MQ6#j}MEyU{oV!qYV*DmKzZ8e#67x8{l<OdcjntTB&TuQ%C{}x5QV(sNx z%*pLmzBqj5QTDjVkD$Bj+mf_r0O^cDf3DUIk+J;gyWYd!3*ehLbvWFlQ*q=w#)DtC zG%nxZ-@zl7`~IEC#q_<e(&sKEkJCSjBQpul41Nda9~_<#(cc^>JOL@#1O}3zqj?KU z`L<zkK>-){J{X4Zz0!LBanMRVe?W(EZ$FIuu#kUfPD#omB1_=Dli=I)=|!j0hn>{Z zD5jPkp5ydkUrvuKilk_%D}eG3$bb}bP@0z;e~Tm8Vd)3MlRP|u^2gGv#?j`ZhG1VD zIr|fNhknspEb?P|;1uv57fDbLH|`ED<+H=Cr>>0rl)if*W5`#by_3uu!Q9^k)JA_7 z*q;k)+-$aZ#kNt0ufajm-_8LSm+u_H#Q{f`2G45R%Jr%r@Fo14%}&L?(sm8>yko&% z`A_68#K1knHvD93{yn{Ew8_84k-z6}XuiMvwmvc+`Eg-n1-wv4U5=$r(ks5j|H;pU zCVDv7b0e2PyI;bCe?uJ>eP)i&!lW7e&p~=kqz#+x@6)*avvOYu^-iLnT}J*odcwuj z;>!OP4)dvHCH?<Pk?%!X|3AvE0^W+^`_DNuvwQEOOIjL4y1Prdk(7|`Mv(3<K}l(8 z6ciB!2|*DAqy#~b_<>0yhzk6_vwQd5dtd+G`MkTcd*@8;%;}knHUwohQ)l>$i>Vbo zfnNmgeI_VUN3lFGE(){iZKoaP>ZN1CAB4Ww!Mw<aHIoMKe+vGa|37;09w_K?jDg`l zjqvtT#(_Hsv(<yF$Tt=k!$cd*o|o|!^P?5@FprI-7E?>TXXBi2-A~5)8x6UwxOfZo zmjMml9EoeFSq|r}BSt0&?sNB^#ZruW5m3R`F@}}FLn@#>2E5whyRJnG@{123zhr|9 zn+)&YV2nsG{#dkp5_m=}^dUWH<*SiWuqnsTK|{-3ZOxB1hC>JOv1o$vuZMQ$K;5my zVdSonz}k(BF%_@?ytFFDZX@P#d$9&@BNKq}PR9pIimrRQ<C0TM!20PAd?SaIz&bX- z&cB-@G@aC;FRq;Lme@wD1667Z8tfN+!M%)jlRZ$Up*4o?c(lhW&$}AEBQM%qRcylB z%>lku3h&ZTI4_5>2pDb2rDnOD(#^dAL*oogLEA@ze$>RwEh6TC3J$@yeE?o5abFLJ za-jXy0m;w~19JdIGB@DLG;x(MPjo@ctAP8}!w9%<T#5M(Fh1kLHM!=Bagbg+VPp$p z4i<NyNeGrF4@NJ?o#XRF1I*sdXhZ5iYhAu*bcF^e(Ssm<13VAX$bFb?AAxfh0_9mB zsCSPr;L4Ilax^14!~s)^%VWIqKF9pdjP+6o*G-toF7y^Fkn<~ms{w>+0TYD*5C1(e zR9we;Es3{h+U$Z^H_CYv=6()VmI0HB3Uh&b8*8XB+CLq0-+*bWk@oUCtHZ1iuUxaT zU2vaF6?-ujJ3u*xg7)oo@|hm@4FCsLQV^dZtAyUI6GtI`))S*J2aL{UGy|iprgc6; zbH<!LCBDP@sSBDtA5@G%gHk$jt;zkJv!2@{Wx%ZMAb8I<V&=922ReW;$R;eZ=tIy0 z18$D^J~xZi7=e7CKPf;54E_BSV-b84L&M5>FYL~geFpS%7*=j;q&lD_*YKWpV2&6t z-}jD&;kD>9=bI&1KTT10a&a2epdr@r`*`kJqr9Bq*TrEaZUhA#54;896TD|*1saC$ zhXFPM*!d5~55K#Q9xng~+5);&75sV`II)`}D5H27Ut-UUn>G@T3pX)qc0q0$irLph zEEIlnC15{!Im~r@Aa^bB3HP~stp)nI9I{gy%)n&ersEw5#f&Rm2W4Fb#xck(O#zwl zE{xv9VwO{j%WK@V6ttR{9KA8#$-#??i(8-`sl`fQb`^{9Bspe(Xq_IPWrqX1pFv*S zQS8LnPs3=>fD~CD<6ks#t%jBod-|?;Aohc@=Y<qE60`UK-o=5i7KGwPpVfCU+iGJ? z-vt$K4?fgDv<#tcp|}iMJJ%`MTusV+{tjC4HQxOkyn{O69{&M4Mb>{9vQ4lIW8Vp< zr-d;4`XZ090p!8hWd;ox1&Uy_&~Xk8bFri9-#(18JI;^6b@yV_Qi2bC46rep)0{fH zK@v4!c&f+s7=1Osf$zGZ-;*Hww8fYu7AM3V2eO2;IoSG`Q~Sgt%=!bUKPx`FV+=+C zs>WD?`G%eE&DDkNz-SE`yhU6B|7jNB-iIQ;_wvPdeTI=YcCQh@tP5G;cVK$<lGt!U zpJ$*}SW_**t<r)A^Z=M|&2>VU<Y9P``Nr5-j07{*;Z9!(NrONEUctJrg*TE8;Fg}w zd3y?XrbSVq4tniA^U-Z^u4Cc})|9K|ndezC7kv0PuogPOS|@k#X;#b=*T(0go}ik= z(5ma`!OQeAy(c^ftu<)d41Jo34vO=jJ88u^{PzYWG41*m_3ywnb0iH4rb4kz`jALO z|3ZiR#j%<c#~NbjlO^z(Fo>XPkomiSdMpQ4dxz4!3VxU{Y*>-$INs9^@u$O=%Tqn{ z=RB~(HK!ZV%F7sdk__*^3f|>J@UgCt|4WN)4j)Zu{YStdHi7yr1s|ON38(>VK?9t! zD@Us{SmxHq@3PVy(0m`&g0<rplw~-V*S28(V5(Roru(cE%>v)tiZwJ$Ovanf0s3P& zNX+(QuWep=14Jph1u8xre77~N78d|*K+QkJr<W)0YbsigweSchMScd!<uqie83Bk1 z&rqIl_y{YfDWvd%&|G?h0=UwrYq>dxS!rOBW5=1~V7lpG85wC5xYd5Fft}!@--8E? zM85ujV4k>A*=Qfu?;^1eV^|UzR2s|x1JQAQis2b#WGX^N9(@y9L`hf}*E$r$r6SSG z@SbFeTv_+PKl6ifE*AAE8A^GKf0N7DBD~y&_898pe%fRM+kIx!V{s7kry<^770{lF z7{{Ffyt0vXxaF8t5gl%#2brlLrGccK4m`SYB(L}d^U**RU`6MfUP=FoJXA_N#T(p; zzBdq>bY#5)L+TSWTg(o*cky>)tM_6^f8`xHpckaK%mJOfEI6X^QF!%Ka4bUZr?C!I zz>H`7KgO6Bfb81`>8#*tldujvoP=B-W3|plD^^4H{SMr@fT$bU{)FInr+2}%Qc)6& zUw<lsmGB6&xKe`Ka2MmZ4IKDo{5OZp+s%=CUkYo(nm9`9O!=v<C`oUN0(1nFa2Isi zi}+7S+fAOXbW&^(?*h_bB^JfJN<{{O`2PmV`d35+lcy>;$nThUe~Nb?OU$Jg;sxYT z!}k&fH7PYshAn;$-oqeBqe(<llxQGf_>HmpGUBZz1^4cYH*rT?g(hM6bi(lWgT4#^ z&3}i6h!)g>N|9$Z3dQddLup;WwYmr&rJ(Xu0;{GDfeS+#xP*~#aT|t=qM`UM)!&M% z2TjFuk&E7=p`abF&`PW}BW<?}sja*-?-^F2F%GnZtP%>%sexz&ijbbxf?_nFS7@MP zyKptxs58e%U^&SJlO84Bq}Rn+jDIW8?n$C0y@jzX0Dj;?=orMDPD!&sb1p&a%0#&# z%hwjWv4SnU4KKed3p93~cuz}!*SpY;3ehe~1<rpDZ($#>Rs&qzgh&D1sSV_n<B+{} zLISQ2%=`h_)~i3R>nM?tmVjop0p>g6259$Sa6|#{yhU+g8%t9b%1Zq(dQZhb(81*5 zZ$~nB?a-6Kkz>bqJxQ4;DP<tzyW0uATLd#GGYzGGfHxFZ7u(47Iq<|>y-y>Z8R!Q7 zQyetoA?A(^Ii4L`R57ZEw`j2Yqdx{>Ye!ZZ26{0~^v2uEC`LN@&OjCnYVZu+V!)IT zOnK#{p{1anC1@b^p|+qzKR94!v76&G=2Z|ptl%{#sBRl*ZzG`__X0I>XQlZx7MqGr zDaOuaFe*CN`C=fh9&gD&UxE8Crs|me&m#Q~zksKd0!B5ehPP5GFjnDGtQoy(l#fO@ ztA7AyKqb&Vw`J2sYPtcv>;}rX?bID?v772Z23TaED<Uzq0QKx6I?|%Zah~G%;x35$ z(V!4!d?A_wjyVM-52ZISdx)lilYI_pI#|!wXj!PO$=GCr)?e?ttkf3cvITh;i)&Oh zfd7y9M{Ey3S_%bIep>Rr+b*)=&CSBvJ&92~NYw)PyTp$U>;gYo4}H{y^^q37wcz!Q zaJL>BM=tsX(&qc39zDRybKAd&BB-1*7JcZMD2KEQ=3Do<n~%kN)Kq*-Ux0olha75T z4F(6zgSTO9FmA444rTT*7<VRZB!ppNHW_`rj8Jq8T2wyB;0C?}RK?74t!*{Pg<uK6 z)MRkqnvmYtVBKEB`ZL~#?2ZOy^7O;M`E;*AtYB&yjT6&oBUa3Q@KK}TvnUOjz}RQr zb?#hWmiHONbW@9HD)JhMVTHJYwYw8A67w$H4-^$Ec%K_}H-rsjCA>U4M0WZdv#7L~ z<BU)+SL~@3^gmc|t3v`EfjQihvOyc`Nx`U%f}rk)95A|`0dozOw}QrFhVMq7KLi!{ z1~W8085@U}<Af+imm}{OGJ*#uU~f1fR?!_$-gVGEQh|D{6%mvJkS~DID$tKs<fTlx zq3I*EA6EZQK_9naUUUu6nrR8>zoGK)qjfJ(Z*Eb8Dq!|LhAq1iHNuKy^vdf)T-T3i z1K!;dNbv>5&omDfp{(Et2I9gBe%BnW7y!v{4^FsW1uoDRYs&bao+YSu#1T+;Dvf^B z#`@_gPKgUt7;?N>3tk<+Lq0P$2=nPZb)T8fopcEGc7_J?Sj@mW40_EB$B7?4#rkQ2 zelG>Z`~VzFiIa4a-h>oZGXdBvHqkZ6YvVEg8L1<606k4B@&(4um7`NbLX5o~+o%gh zJhwOk`cs1rIKIx7AvGHf#?we+y6%AfU7RL?d-Xz3DnXMU1zKY2Q{-Nw)$O&$xgLh( z{Vg=mo8o7T<{ivH0|v+ajD{W3HioYLDdtZVNRfr94(LZq@U@BJ3*<4<UJ%zvPo7R% z%&Q;I8siw4ov3{r`1NK;l{vt*hCm)DKm{Um1xtx3wIBTdLr5@FAp1Xn6t(~~&_MN& z+Fd+D8>2%*$eX3G-m{_hELf#q!x}o(u_8v#8`G1sG@KrS$Kos&&WO4H5^Nv|rG2Kn zBd}WR!PqaNQ{azlF?TR~Km}u}E2d|AX$oZa>#(65p}UY>^7H%PWf|fay>R`oJIw+G z+yXxKGv%Qqpd{Y_T8H7!i=#Dyr{eAPpidy@r=+ps140xAtqa5G1>Gd*KQq1P6<Pij z+D<p1zaIh5NCDi<fI*mr!M+9~a=d5n&^wX%H$gkThWv6CI(R#9;Zu(9t|#z+2`R(F zjDDR=`!RdwVFu*mepCT`zPQ**AJbMq)Z90n65UV6iZS2+PIW<bW<v)WLig#CSWoL| z1c1ewX!udfGxsCtUFwfHmyvU`;&RX;?tvGV2kr=`{HQoVUT!RvEH0wnzoEOm0xhry zMz9;+B!eGC#f$C!F6u9enX?75=AT$YxggCj^l@*s#)juTe?a@t{`=w;9)>r#7v3We zyc}^~pF;oLC{{yr%>>R>fVPN~TmkPPRQH7T80%QhqG_;zC7~0r8~dP%7b8PojP@9N zy(>b#yGeh5?k>b=&lCRxA1Ot~?pe|CK}-wDXG)tILo0ft=I%6xJ_Xf#8<NO4N5)?U zPZ&G@p{;Nw=irltkQV->ufRR#fqHKiHz+k^f$vdED~E$;2&sP~ZH%FIhQ{*~EH5KK z`x=OoSUK%Qk;r_X(Py-mx&rC~x*{DN{)Ke&1ik$f_NPoJp$2^#iO=ZMub}Xz#nmx0 zqQWXXe@1?Au+iYmEntOQ37w*Opw*c`nfg1pivmw-gp}-!LV50n-^0BM{U<GE|KH$a zX`I}TVNrM-!1MCPbX`F^AU6)C6*QM>!xPXJyxVx6Yf%1Z*fG_=4Yr~`LBC$b4DOHA zEUp87b`<iDJCj1|tP+s#L!a%S8Ia?5f`;y<J@8>x!aOpNKeDgEl!rHug77j=$1Gre zg^xmhJ1i=4VYJ(geRQusM(c-H4nxPu&UXkASd^PD!4h-|YiR-1z#M832UZXt7Dzsg z@jr@Ddj!kZF7YM3&kPy7T4eh}b9-q+;a&KEmQxY#i}_bkd_q?!CA5Y&xTTnYQl3V( z;Yci{9ia%G1?lq{)@}*dh}waN6o&=m82Ff1SKQZ@{8S91e7ugTf@(Aqnl&eePpM-J zH6{*wR?xZ22dY~Vb3Qv2;^MGG{|!wdGwpV46LHt<ew&Z;<M&s`(+{v?zDe7m$-PGh zp|K_e*W}5{+oAsyg%mv>o}ha)8{B*l^uUDTzr-nFZ~RGA;>OTMvT}2*ziHrLF0>43 zho{4utBG`e&8cH9^tb*da)8pH{;F*B@>_to>UT%Z%~2U6KM0!dGstZz#5~T2)wlyI z;wA;b&A9>^q5*LKkat^|3(#y)8<KNgQIL}JXtc)YRiX8}_wMID=i7a-v>7-da&iX# z5B8>v+!Z=RW=MnEK~1g(`W;M#mKU1t%SkymxZMN#2vS^oN)J2uMc7<I^Td_@lGccG zbdBzbmta2~0&bE7GGI)+|0C#T(M#G(KSR>)jk*5;XzUN-8vl*4=zyLL4|#Xd@mvpC zaz0GM#c!DRJLoAasg?LF4W_ezrs8Zo_->gSF>A--eH{et{1kFpgfRAl9C!=8VrXsj zc6<c6@iqDaR+15%472WC%EIP9OUOHpjum{eopM71J`Ubd6Be-Q;ISK_hff9s^Td?; zCeXSg;Jv@VK3GOn<5ldVn*0Skd7-;~{vrc0m0_Ok1oawAy|@>xrLH^#6!nQ%h#48( z*AsIIJ22jN#eblD89;|#IF^^`+#kM%nDa+{x|1de#p_`OZ4DhJJ$S({WI2BDs5!m+ z=kz?JHz%n%ZG!x;15~64b%O2r1Nf1qLVhyf;lzIJ#Fx=_#TDr@c*57ym(T(40Iv}> zN&q(ee0)ayL02I^mxSFXF(m{19BbdZMJuxbpQPi^fmVyYydK^J#PC3)svBzwQG0TQ zCQ@f!fOS`dKY>lpqO!2zm|Uqs>UuAvywb2Yln#8CiiYqtQBCyYSE(L%g8wToY(cQ0 zI1sfi@7@O)*~Dpn3_W25r=qF!D%$WGHKy}eNo6q(Cg<;X?qZA*-_o}st?|l1qyn^$ z(U2K8fO9v44Br9rl!0K5_)<&xF>GhmK{t+}l)+pO-t4Xc{Nb<$gyI+G@Ou+|{5GG3 z^|Ui|n1<*{5Ac!-^lMoC9fgHbEUb&rvfQ*KI`a(b4%yE~RmjgZ=s);Hc0i6ckX*b@ z9z@4=zqv(QC<|SHPiGdSKg2R|r#Q6NOk|(|TI`kAnQPHmQGyTBIQmvh!%F%C+~4~) z{_6><#(#=^R30;MGc@no;uhZm?Q%ck$G;01yOr2QRUkVbgBCag*4zHTcRdmD<DY{D zU~KhO!F?2shX%Zav;05WKbfb&gLeluvn1fbW8lLr?|^5!jjsg*`4Ftbr%>~Uu*AF% z8aRd8QAJpk5W^5T%CVQSlnJua2zU<?aeMI23|K=$AxHliZy#JM*DT%$|5Y0P6<(xs z_?6Gb;N4GP$$AN6=s_?YJ@r24<CV}|+HzYiiZ}2UW#jU&MkEcv_sWUsI)<OYYBZ91 zi~XQm&&4Qu8FPIin>n8l7?0Y&<kpD(c@7D{&(k>#EMc#5xc07j8|=H=Vkq$gelEU* z+&_woKo3lhvFid@N=AN;8`3*D1h>K5%g#IC2TchLbR{pt`?tgw3GBf<{tePcZrHF( zKnmOdJJe-BT1rgW!rp%PooQJ%C&vTKn;+pvZU7H>KiD94iZb#j&5Wn*!JaMP{`?l! z|2k0>cB|s_Cnb_azztbcj&}r1DSpWR6XC-<Lw~_rSqhS^q3-<>glq5@QCqqIt6M=@ zhLNlUJIE|(Qyatwff7VyNh;8%JFpNK7z_F)csb<XTaaDOiu&@lXhRDS`&CL_2#npt z0FKw+F|c-walRV^xy8UvPRTPMdnJ}D;Yodo>d^lHM<Vg21-O}4g1P=L<jt()cVRW` zi&b0~^7Al6)s>~PsHMCEuZH9dEg_gbzy&ee4)DjA$9d%|;A(HmvVdTYxKmsBCVcG$ zq4mt6CRhWB$VBQH-|eZ$KEzeRS6q!2gX(3$3i=b4_n~qb;_?0!g&~Q=h39>DjQu>4 z3qyN425wxA-(=&#HS(Xw1x<{Im)l&8J;Z%tu0mdg_kSaup?4s=O#tmM@kuTOv66$X z2k*R8a_Fr2AnEP^M`|Lsi8SDz3ViQ8H1HZ?Ls+dIPSooTJ|W6;AK8+}!4FUzQFQOX zk9Gy0UKB=DjPU#PGA*L-O7ef=E_IiG(sk-3a)W}t0SM1&{KY8(5d3BzZ>DRaGPJ-# zus`JByO4luL!PKEj1MxHFSb-#nF_pfn&?2aWHs><BncCPSB#5AuAA5}-RJwbG**8- z{vX!Tc&x$8)PpC1`xxHyN@Nd=tYGqc*B<Nwi^KekcJn-VA`W8C?1vY#ANOMgJFHv& zH<2kbs^*#b-UY^!y3nA8K-XExEfD)qnoDzTXe7i9oV;tXGTm~_*#}-K^m-HalMyrp z^4A3Dw&$oEa+L!ZA4p8&_p-CHUX~tYg!SPhthRZ%fau6I=`iprf{rFf``ze)(AuJ> z@9;kU6xNrvq9G-x)6@jxzL(4JMH=T=Vp;qfIf~J-asC6JHkM<04YFYsSWi1Sy?lk8 zKM=o@_z$F=Z=#lw59|LmYJ>I`k~io!^iM`x+F~7;SPlmuRRKic(|cyFcwQavt}E@J zp<Ek0yf5{2T00wd5Y!Br>KEt!7w6908wix^q`xH}w-evNikAeIn9oEftYa6<&N3Ig z{4rg-%b{q-MR5`w`Y<AATfqNoATy8W^oVURr#YC<n6;^9;u+}wIPogIDf`eB%>Q}N z9b03ryaZp^b=X5potK?HxV2x$Q+EE%{dG}Aj=<da@c`IB(n1HV;b4q|G}{;P48V2n zah3!ZLCXAxLtW0x-6<pA5Lsnu_yW@fa#VJBl$+PY-Q0HCV4_?<gNEWhzfHI4SIpl@ zl#XtKd-j6;%9HuhaSBSuE^NRUxDZ~qxvMR&fN!6J{tvG&-51XT^}8`%yU0Lvtl*Oq zG>fkwZX*d|4ldF+{F7J?p6bG6Sd(i2`=-do;Q;A_J5ULHf0njUW4RsH)6G;sWQPyL zE8E2I1i^h8^`1p1&IW4vE89|VJN_EH*Uh;HYiXVshTaV0s9<uq&sxiLawDvFb>(Bo zUb!%eHv;(U93O=7Lwpu^;<YRMS`0eVaemI9fd^-YFZO?d_GiWWbEAe#B$vA@(ZmsX zI~2{{I&+s%?iO#*8O-$b+*52|mu94g9%R7O<yt?C1tcab$Z*~Wzh6$i4?ET<XyUD$ z`YXv=JXYpLdO+ZPdS2|PzU&vU95h4R?e}5=>N|vZ2o^KRgRzj3-2T1>E0H()U7TmH zL0(8Mvdc8wMULibpxn9S&)~%-|31fxXijzTM(ab!nQq!kx%Wwcy9BaFBRWMb<tBKM z+&zfFJroCEp&3jE955xgDepdy9F83fU%-m+GCYaxpgkJR-uTWvFM2mNU@+aM=F@#< zJ`>As^qhNgUeOF3WF%*yulOtO01xyK>cT?;ZT5Q6g$;Oj=9*gGrv}sxzORk2!DiyA z;15$|8Bp*toE#M0%Uh0PhQ3^a=E>ZAUA9IPRz1cJY*;jt@;$mop%V0`@bG+!`Y^We z*m>}&C@5$05wc`|?kY2i8~i<L>@BKtRnVI}k+plRh<+_9)4_MpL#{(4M0039KT``j z&szZR0z&hL-+A9O=B2b-9)rKDj7T9nLHFDMFk|=?R|t_p-)92`%Y5(3R`2r$*l!AR zAO1^h=HYyo^01M-vtSp<Z?pxP;g+x#cy)$eC&}L-gD;^a@L%rZ#{4b(*fjxGNZq0N zL({8iH7(~V@N?zly^voU!;6$jc9W^8FTd=Jbuf2zuFjzr)g9n@20Fp|FdUp~BX@=F zk{<fQX;7Yw;Aaf4LJ&W;)GFDXx{6V<HY7O7*|3+R2K*m6gg*i8H)Xbwukj`NjsKyE zkp8>KIk4z_2;12yC;l(CT7%C^${Jixj7Hnr&>>l!reXXlz?0aI+b5v)*wM;$s5*SN zA0UdOEHvcV@P7OutBSK65$M4a(C1)%QB!Zq;<5m&P8AUM-UF87qTuCys3zq4mGQoN zQ&vCJ|0!n6S;S!6<lkX~TSnRBM&8KTocc{1To7O(3b`}sHnN_4PHp5+Xz{tR`c^;} z>&v4d+2B7)-k9z?^KHmZC1CH^#Di(QyyI})*VzC^a`Tul-Dh>>Mg9Y^SB2$WYQd9X zeQFC?z(gSAO;G=r@+^1|l42Gw;70OC?t(X%7<||dh`rW>fu8w!vrHy4$+awDvFHYy zKr(1Q=G+<+DHl7w_sv`KeQwJ2iD-sgj#bp0YC&)5%zFah<%|9L0sLRP_$6@Ry`UK7 z)eqpI4P*oPBW#-$0&l?V4Go82d41$g*zFr4=0(8%lLwOgAeup)fLV+_!VD-7&pH|? zSJ5TVqf#`PTSH2%13J)vJ3BR3PrwW~#GfPD=W}ia9pFPg2`;>nRzin!TR4n{;Vv#) zR7bgnQ_9ltI2=a&XIpT(`>;Zvj~sjBaeG%>1<Z<kHVbJF>d8mYeSU-XW>ZqkqYq%U z_KB%sEiWWpz-z)9^CT?y*-rieUX%6k-k;;EumXL@ogt0qi^N|ne+`*OCN72@-o7Jn z9WM*<OuEIzU_V+)mm%vsVgqjf_wwFI?0e{+fS0!_d~F_7h3=OLlyeHLl_fBOwc)wy zh&Vi#Vsu12NbpU^occjl<D9%4qufo@f*mWFO6qVglY4Gt-Ql=%*?{?eF7M(2vLS5v zTj?iKaw(sXo#25i0-OH080*doJoE2DR&FDE;C+?h7g)1d_!C5P7#X$)*0TXGU+mWd z%yKeDbc_5*&gPb||7Vt&Wkb|3Pjrv0$Kbm<wP%+!ceCUq8qa_66G5OoC1FK8CX*qK zw1W5tHP1mzTkQ3E-~0rOHM~Z=4GU^vL~nML#_yXF_1%OwH+fhKJe<&LM_EpGMa;!H z-pXhBOY|f;Rg<TImm|jU3&l0*rE(UX=Fbr^P>ItadKD)a!J?8%CWaj*YTlUcPjEN9 z`GR=og&~9HfFHI6ZD2p5TKrD$-Oq5$Z6V{bLf)pI<UvTlcOXet<sPsie8tISCy_jc zw>J>c>WrNh!SW``Z!li1xFc*v)x=?$9y+11;0=;XW55sMd8sK<(qcr;W}^kNorL!a zF*hcH+=6Gy%M;giyX;CU5fR-4JBWHB7U?bOBmLY6mh7PH9T)ywskk?+U_~h<yyl1D ziNRhZ{vPev9n#C#OSsPuV7ci9`u7GRZ*PMBH3tW-#7Pr`&6xMsVZB<yNict3M%{fx zc6z{xc^Z0uG|CL{N$gCQ226Y0Jpu2?(}<iLjvWoRL0|lkB|pS!OzrsaS|wlvSMp3w zC!ay?TYw0z*5X~nGv))$b)zc=qZgUtEafuqqV${#v0~GCf&7AgK?@ekMZ72kYZE7O zz_i*;1wVg~Eh)b&#SamKfxUpxwvUUJe1k6r@GC?agQ#!f2iX=e7dQuu=P}OUlB=NU zpX2<{oTKK%d1sU)+FSVzG$#|aQ^%;E$`AWxeOVX!i~+N^)O^Mb8{}g656U3!X$GPw z{z5!QVrVBVco;DE$AfE1z9{d5YZVZuphv#}3rr4?SGf>(z23JEIg{)o&tVlE6wB0k zyuta7=3=y!oC&D^oE*rPK*LTWhN>zgfJ=}f478x^%Bv&x>jmB^KcKDh52`9s%0|2u zQD<)>iuDS7@>k*=J5%med4>n@zmT4@LK8eqdw3%Mk7~%NvT}m(OQ?HPOg5tvas+m* z>{i8ON^zW~@>HH4h95eQg5ON1U*u|dkXLb9_)$+_<+T!>WGmRN`ify8^vh^-F^$4k zTuybSe(-n|;&X@_yG*rUg?>qPbK{^x#{XSJmc&%TZK=S?_RGKMC=UhyZ$SUb{rnw# z$;U-WSu&&zLF`bi@H*dSlAS=mYQjQMl@ZM%4ODk#U;JLw2Xdo4Ko_wK?+EMw6`{B7 zp~L8Fgfx&_CISR&c2l_nPqM)C{ZJ+b|K2Wl!E<wy)5DIv7SS-qR&9I$Q8A<6zo9n6 zUcCVRx*x?7DLIu$qtamJRgpOmTM#|}hf&I`smAhL*j=iDcN?qtPpXQzFL$fmD!-f% zz^54B9b>lqE>2^mBJP$XKcH!93JsQd_>NOY8JR19mnRl{)4Fu>AH3_+h<w|`-~fnZ zy8$rY+`!w6-u|dho`Zh06W!=MW?ec!cW{I)&iIa|WRWYdQnYvAl_S-1XdVrrca%j- zM!<%rWpU2TYhjCB3%kg_VQrr%&CG^PJ@Tni7dej{25;AVM9n>*wa`IJ1jcPAMmAJd z@ahb`-jqpr1HT2W{{m;lx+$x&a(Sop_h1jq?v(T(vNoJb${x6-WKlCHqb$N#z&CS) z_Y8*x&$Z#1y#*zle!HKcwFc8SA${Ewqxm6M;-0b!wS+dgI8fgbu|&M!7q~P3F++Cw zDy@VaraLt0Mc{is(cfG(kk{xTzmtI=u6rN+?5<MFk+4h_;U{tprILk3Z-z`8D4`{M z+Kf^>jmEp0XKtQ6ayy;k9kA{_fbFA>Oasm}J`&%x1sb~}i<Z*B5P+L<?;dhz^w>`W z=ymx%B%mu~vE|@bhIP_sY=O?zCsL@tD1|el+;7bJCQ0c}d6HA8?_haSJO$Rz@zCWy z57a-0J@EPy{rVKT+iKZL<>yp-pco)`z#20yfNy9=H?%xliuR=H*>X1CZbA7YESLBA zC-}|RQW?aqti_nS^`w{i9l)MqT+K6M8O$%e*a&l16xNdzv<NcuF*!yyz>GDrg~@w} z#v+~#R;U1U46GsZEC|KrQ<0ON%BOM;B*<LQeU5+@nD1+dv4MUBb9<@M(tx=usgiMh zeuQ^75?u5Ro~5+h>y(d(%8+_kJb`2s9XiV1Y73(Np2L%$j^Cm(axiqr2g*Qj9(naf zzvfnn!9NP<7Mz+MtHSWb?m{ep(a}0`P*01F=RL`*H1wyT>WNs*<FNa@5#o6}q1}6A zZ^wq`<%{k5Ha~&S?ikkU6?GYw^D%0Ns0#cfvM#p>>wnB8Ov3vA5_GSp+QrKdf!R+C zl$Qhc>8Kb%tF>#<Hc=K8p+BvaHs-+q(T_ew<aSz4%kRVA8kJMHrM*ubocGp2x{zL; zq}p_mCu0R1k!{5bL_%+%V!See9^ee>Hs_T;BYNd8(7!FBIiH62b~P-klS8OR?D3%G z)qJeE5-K$~aDJ6YzM$r^Da!hbjrYQXsG5NL{4dPUs_KPE2D-aK`~g4KpGX&ysr5?O z16Dfqdspbglvbui-_5@Z=03Yxg^0&3qBM4Jd<MToCdAM`K@7qZ&J$U?mp`U!HZ_iH zSez!wlysh(L6Wwqfb1$;%dH{(j|tO#)<D75B`c`^c%=9bR+OHyGyG}UWWuCJ79G@L zE(Hr(CGx8ml$Tnwr7U$6JmFp(?cW_a1_fm<`j;1idklltH4=8Hk73bks1_!u^(>kw zNZN??$f1A0&L10*XHy}M=h78{|2zR@e5%gD+LTGn;eptFbWT*kE{w|J66A0*KE?+T zv){oR(GF^g>Pl^>raURS(0cH%;;@J1hV1C&FxPXjjzw|R3?A5Q+)$i{C1^N2!5hUG z?vD{Qar~iW#GLM_w&T=~Rs4n%Gu<Bkvd<wi43>jYzxx?8p7-=?wG1B6uMofUJ0cL; z<6XALJNQw|4Qs!bJNmV_JPzN(XeTbDD|Gmj@Z}GKJ=gdi*7DjY6g(K0<fUFyv(+g? z|8!Gxp+i)qEi_#YgB^NvWZ#W08>-EQx1pNaA$KBjJ{f11&3O#h<w^XU>TsPXHHTwu zK%|-rBUNqgELkt%Rdkt8D#`U|uWF1q!f=e(?izw}Yy<E34IJnT*&B1P6V=B1Ul(Wn zUTHtk9Cd}}sm!Vv4}t|uL6*EvW%bW;L9F;0BS*%R(oF57sj514mfN@o&7qWXnwqA* z;!A)zv6kW0k5~&;7u5d)YOb17Sy%xYLmw{56-0*w;F?m#%cP(cpQ%IQyzIc~5l1#e z%|hhOF+P@{66&fo(EIPfXRw@F=n?#x5K<!+BAL7@k|kgcPFCAxerltRBYx>)aNaNA zd9!3)fQj_=`Z-IkbHLoslCvVqodrF20ZUyF`*%mea()r}2#(4hRS{?RRxwgEIx??U zR`|7>$_t-uS$IC*6b!q`bADA+=lh}sx8M!Zzz}vJ9M8KOss=)fTP};y_i7x@KUX@d z%7)gYbNnZk_VPu&Hk2+5Rt05pUdPSE2DEw<H>9s%kE}uU#kXkrjCkKc3f+>|(2wwV z+=d^a4|K-6u)_Vr{~#{97Npat^+vs4uDbDc#9-WklvjrSp-v*Zz6k4)fv9<7x?e22 z@L=}oe(*BvgC%A-H$@~sYuG`9Rst8#^#`^m1KyMNv_a*=T30CHGFQg#yWXHg>tGSD z3ka=mw{*cLOw=TcRk)fbQ&kUsN;}n1(4Dkc#|KRu3ZOP$h_~;i{Et<Absupg&!M+{ z58F$7F0K4DTp0+RfuU^)O@FT72~bI8cKJEw(N{PFJmKqL4Qz*hoS6}C8@`g0`4mr6 zm&8)8tZvdL{0YAY2`q0se2c|4-i9~yHDvagA}{R~_2h6)EE-A^x&8>A<m_SN7ux2~ z^j3+J4^;`;Dj2k@Fu#uVbPD|Y6h2SIIs>*vmc19Vb}pZn!}J#Q315_coPYIzi{lNM z|M=lMDP(h%2+>yAd5g|0lItY!xf!q9g(z#sjH?G;xmmfWUI8ydB{^UJ4Da_w>WvuK zUUVAxPx%IXGG5Nuu4~ngqNcnJ|HV<nAMAuAx)ENq?!fOZ&1Vplqx%K#-P8x_Wg>9? z$(XYfAc@}QSGk3<c_nsbtPH`9is#+`tUA(hcq>z@+`5gbgi~N9(@*M}gZW>)t;cDk zvM^5+GxaInhv>yDh@O2(RE0&v(|o;pV!K`fwfz7#?|In4QI9){OxhCVWsg8#3&h)l zFXUNyAMq{~;Q=nB^K%QDq7$pc;EFB;qYvFZIG#_|w5KT~#ep)ZIs==^Hrbfc>u=RU z-i0`%QIS1w6Pa>*(2`C3PY^y+x1g(>0|os=O%XH1GPy~-u7b536$cR;*2@7?!a+WW zI1JCfdXWE6PvsHp-}wR(;56|o=ivsFQ|t=7`7ii{vj)Ox$psm_-=kKmaj<}wfb2U) zHW54E4K*=#Zfj@J<ghv9J`Mf63;r<?yKqL~)S2}BF}OehVx293pTY{w8%ziHCV!*0 zBl@8{EHF*PW%O$_q`_mb;Ieo}_C!R6!Erxb>_gH6<EOhxPh?}ri(_>$#6Et564uBE zawWjz?koF7w%*7iEWA%QWu6>TOK79&08YDu&QV_IQwQV$dBGXAI#J$Tu>HZ*c$o@T zLqAr2Mfn+|_x`H6=%dOiqg@7bxv4ZV4W7B5-t`-`gPO`kh;==$zZA2;iF1k4%C)+g z_}eE=OQMz(yuXb4Kf^Bf%CKH!LL7`af8qx0p(AM|y%mK51+jvu&9b2K>F46OoCNDx zAFRP|;XV5a?c5=)1oZzuHImCf1FAu5uy&dwYP1?xkuLZm+wS9FI#{<!{UHB?#`**H zi?-(dw3WZ4@|?u-iL}Z<c-~(0*lAHMP)PGlFX*g3Jyc^<`8{}znpm6E485CvN96K) z^(mD{FIve~(cVL7slUq>lt%r<_v9H!|M$cf3a1J4+bBIY4|pgxcA)9`l!S9pNBB$* z(JQh7cCf#YFXT|bi#Tg`%lS=Cgx0tgdsj9ihOIp!d0xn-kcsP31lkZkJd~HHzD&)f zc$a*S^T7N0uet$GNKf7zIr?#xGF;z81bSv!2yq|3s_XQdo*=JsVp#Q0N7kMUF*320 zkyiDW1F(Bx9Nyd*NJ424I|(}|>{!JEIOa_2*s#In)LwAEq&mMfO{^9xV0lS|$ZKN* z8ytqEm4UwrCoDj}cELO;rRQQl_%c{9Mq%y>RaUg(*^np4a+L)2f2;mj-U1ytOe<)n z+JfE7?f3(_CC~Hu0Dk`{voO3b+0-^QU!(v9we(8tfUOI;W-8CqC1l(hpjS#J^*L>j zmBmESN$1n6AQ!HJ9ezR_(QCJ)3vLOsbxrv@_G?{*?$nZ!ax+NpY4sP_RTMl&!>cQ% z>kG9Jv9<-^=}Cf7T#J#rNl*DNISqcrnDR$`wh8w4L|lN!WA^R<-Ohp%2GJnU(=G`b z|5CcDoCygi9ZI>6ofumY`F98V50vxo3(SE+915ll?mcYF>Xxhyd0`mhPz&lWXpz{c znsOsVaG4mc_~9kpR%N6+@@-iYlH3r)V;_-A)Dra<pmzdBK&tL)AWrV;LaV5ed<ju1 zzo{!+6QvbEM4~w%H|{nRR%iJ*_RsXdDzeq*yioSA43rSL*z-TdRl+5CNo@e#Dj`Oz zf}E3@s)}4t9@GbQesK1<Fxxo2ORm<!`#2CYa3Qegi|^%T+RlF?3gmBiRbs<$hggkv zz;7p$s|a3#71uy~58qQ!_yXUQX8*!<P-rFM(mdU=FG-;<tJL~^*lbFR?C@OefG+u} z_*Hh(-4ejR@@wpS){S_b*6Il-*Ee{L>_z*rD`!6&h^+_S^X%$tN@MK<wa*KiS6}@P zd?8B_yJDhOl*kds2)f@D(&ae=J(n}&e`+ye2s5bR*uifA``qBy_v$g%$}#ZMLHbKb z?_DsT--aYyNF?Sz_^_xCpTa^p%z@AnqNfMx6nq@?_aI{4Mu;S`AE;<z$V83f?YUc4 zC!HB_lZ|8>M4xws47CfV5YM3TqGMp}P5j-8KrfUtW5U~zTb)IuP$l?%d&rk`Gu2r) z6YaGDH{URvNyp-B0P`%QZ7=P9-(Bb8ZIndrko_QmER#232TdxzqMVT<XS~c=D2H^x z#q#cQ$Vqw-7tz%b^>!F>)2nEdItK~y54km-{vXGxGi8-m@2V=+PWYns%SYHh5TVnG zl#pr8M%M4v7~AJeor(wYb$D*lW8Iw)SL7eiVe`vxaVnjGAL41pOx>S*0e6{x346$g z!<JrLzJ=J^(HOPa39z75Q|V=G{k`~yUgrk#3H<R-L^j00Wl$y#E;Q;P<{muLr(vmD zCg#i4Vk@sy|KaWJMV#VTwA=j02mk6%;B85R{YGu{dc6sBypQ;ZE~pDwInQI5FHy_u zu4cn8F<;dK{aHkk9`Rj7v*u;<ySx8s15q);?~|+j*uBs~4y7-3N?2C5!WZP)Xo7Z{ zaE$P~cl1y40X@}kV#jPgy%3hKO^zkIA>Gh1&G&F@#0aT&@DE4OTzLLp=beau`j4k@ zchwFtc-0+<iV=SQ2I5yHaU)o5`>6GD3*yjIV?P{Dv(gJ3DKvKsG$XWx1}dd02f6=_ zl-LPYUDV|@Di0Z01PIL;bNUVNpI7xl`bKo+N@|GArYjJ^hO&SstF(dlA9WW<Xh|KE zlE3h;)EY6Q$q|eHp~QLeWPT;!TiFgfl0x%>UqrdbIRiQqPOfQy5o@EXV&wa)?3_cJ zz2<)D2UiZquf{F}pRUqr<!??jaCt-yyn@rr?yASI2%7lws))x9<_t|GVFTvLB>gU8 zj&ks9^^dTy7q&a%@Q)*c<zsjx%=bg%Spml(fBvX9ApURztWK{&?)s8%<3zDn=ucpp za|Aw;CJvjU*%RINbW>eqK~BT_)Io9GN)F2Hm*Z3^2izQWpr1fnbfRM1C&ABD@?(8T zox%A75!6iEYJ?o2Z_#XPw$)A;8<K(3@?(Ix2JwQaK`O7rsX6?Gd`)#wU+Tfo{WDvc ztpbqgg1IWlg0ZZ_q3VK6ts21dcOTxWF4+H=9yv#eVc5ax;)m1wV3{Tb>0ke>o~iD9 zO5DP^7q8$HupbeDZ*~rCcX)4HdnZf@Bh}0NwZ2E6%I`t@{(v6!37)Q`$9x#|2QBTP z_5LgWjU0>fdWq^OS5Q6GpR%d%R8c+;K9U7*)4*rZ_<!)pXUe31)U#E6>uudj<dD~7 zM$mCT`hO2`Tq8I&za0gC2-+43LquaM8$6dA#hZ|rUv}aEr^}W&K`cLf$gAKFFu5B< zwl);kO}Dj9@m#tqE^ujmL2jffhyeaxnKNL=ay#nI;W5+(CwymiTkB=e?vz}|`WCj3 z(pGYuqQN*%!KR|tBxS&@Cp6`?!aVy|_u<pxAy!-y*xoA8W}H31utyBWev)A9yN40= zx|jdcmH4viPEW;9o+L)=MN(Sk^qP9k-q%3>IQri}rI15KJ8=edJQen#6xJC~zj*^w z-~)cj2BOv)djGXPjlHYS^?7TM*l(Ryewl&(1FTe)#7gzLd_7S2b@2GAfKXhMKBCj{ zEWH--^UdJ7nP!=th~{}pUIs~OtoX}mjd|kk$BT;pOuwWpoq>BHmSvJPPeiCu$eUCp zRTHtNZvy=ot;X;Yj_L!l2BL3HTZ6F^emi`RcM%J2PC7iUepLhI4Sge)mFt$XUpK=J z#_hCBmVpkD7}l^gyhj;miOASJ>JN1}0O9p|ci*XvWT`LsJ;HAo@^aZob#!`cp;wkR z_L{Ghfe5t1O??%ZQRSR`iL7~`c)R$Px+>Pme%Qw}E<iVC>)Y5DH$;BzjKJ4ypn!0% z=2;^$pR=vglnZ;X+f!kgLNy?>gWj~QEn<4cLxNYJ2QG-fNIG9T%^!>SsH9dIzJ|D{ zxmIg+U#-NRwS$2SX?T@P1zSKWuB%;0#TRfkfY)>Pn$|i&O=LF8Zq*WkTgz8vwaD43 z)J{Nlcm}ewNx6VCyCTy&)duyJ+>4l}38D-1h}$9w_K<rud~4O0_2nJ3JGY7sI2m8v z1`XN-y}htXNq-BUHHiJ<Xe7QVCn*_tR~$p>=2u3dLU%Qd9_S9R_1C~ol(!J~{!v&D z-_furs|L#Ke{BRgB`WMt8DMi<tg5OV{Ic~sKa!6k`(Flf{VTEzby4lqYS|8-q2Ts1 zi*;WOrjAw@MEyP#4|N*s-E+V3Y~<$dwET^R%TRFh;1|=aAF#V;l6V`QgQcpHoWY3$ z`2E0(`T-0zi9P=Bfu60OB7*NB{Faxvr7~~YExUzmAsdnTPZ4->KzQKQjx$wNF}+Z( zwB}I`oSD;z+spP&|M%fs0|R%-fXVNs%%>NHp2VcAf>Nq=h&{P39>LQ8Ky-D+e=edp z{g9_wbWtwgtQhbXzYf2vXw9O1dY_)II>|r9Co+w7&6(%;H3A;1pYb#95SaIy;Zt`3 zQ8STGD_T3K7iP%<kxN&TZzJ~btg}9=!4oQBKR5rL6&>NZVROUWwY9G3l&Yj`1p9L- zy#@PkH(}?-3fPd{6WBJ=*hs80ItX4#Z&=5;rGBceAr5C8W#flxEIcXz#IzM~#{B^7 z@g5i~lXkBrUC%nhi(!4tBrAb?57qtHqW|&#xGQ3iW;x?NN{({!zph`yz4;G?239@n zfarmFUr$~^^k8c4D~qTis-l>pck+AM1;p5fKq!7K>t|h9oyX3vG?*)A5&d)z<NYZQ zw?2^G4#o%c0JUaED+-3yZOU1oF3Fi<i~Sm?Z8N#oIzk_+6Y$!kMNEG%QVWt~h$P|q zbj;@o(0wU;^9sl=J7IB)P@}CHsArV=T#r%)J`c>@&^Cvr@2YC@87%03sBMsC3LyIa z7+RH$+9D>^0K+d^&lx|QUZM<yVzc;L4VDwBqrFG2Kwp|dew&1L4RL%_FO=s4KNGFr zUMbq1Dz{+AO*`5yK7j{dh`IvX?VF;A%8lz-lx05WNCPJ2KJ&0~f;;S|_vCB(p;#@x z!C9QI@b7XNA_>PL5`QcrK!Z7rMfW^-O%Sl6WM!)-EdH%j0qoft0_{B)P9pnOzJXJq zhQhO8AXq|7scq2Tjw04_B2Q605KH>Gkk(YhFu)&cvoPn-xL|M%XEIR{!Ow5yY%8b! z4!YkT@?CLO<<!&kMRCKrVYz1qoY7c-fj<^8t-tx!0m=s&K2@}kIdKBfD9(&nPVY@U z5e8yvxA)Aamsnr&--s8lkGP{@b}rc-r&&}JS*@&&@2)M+jt9T0y-19ftr0<eQyvpf z#U1%vozkatKD;{vMO9H{IqA?(ul_35Zpg`tun%&u%4!u7mvmzJj;e?_Iuk+XLTK81 z=3S*OsnWuFI)|4b4z`-iNngs#>I1H8-F4pF?y%MyS;oUO*UM_5RmWPdYp7q;M!65Z z*$D0qN%AM`h%!E~&UR<K#kk;QyFPZnAIGl6JUB%>o!SWr!u<_`exk895EnL1nNoET zEwCJsv&;Eky$e$NW&WQu@Upc_dbB(CGAe3w0#;N0NEOE(;VEq6G%oY2qum5y%+0?C zp=s|Ki#M#F)NJs_RQe?1gg&v>VDHUv)nAQNqqKowPO~q-h2S%ckaa?)g~w-<e9bze zmx&X4kT9_~?d3Dbl%Y9ePUqIA6`~$h7OOR4Ar{~qs}s<n&x=l=2jxWkJ2($ne^{?U zf6hx;)pGdZ=EM51NR^@n+yK6)=yhh~j3Hx!@0H*!YC8R)vgv<daW6%$Sg%;8a2m%< zaViG<s3kViV_<oDOb=l9C~o!QD{3Ze@J&^J;hkUNV#FN5i!-8hXREdRTs?!_na5fp z=IU>#x?NcoQ#HWJqShAuezH|lZ|9<*{(BH{J)Xy_U33Uhc?Pb8jDO3pc^@pNu{}aA zl0C8Gb_NK{75E+NiN8S)3{;DpJ3lHHf_Nrnp3S%3l=U&=2g80n8>cYbkX!hGEXLWi zf$;n>-A%Qws;%%pS=1Kiw_R0*xw-DI@AG{`Hr$TZ=Ivs8WSiX5`ss>ROV}SW!}e51 z7ZL|_BHhF;j5A$N(iOyZ$5dzNv!?bd)-t&cHuTBjFWuD253MyHtaul|fkXLkD2|sl zIUcI1a*ZlyJ>$*#4&|~wMRecm;yygeZS?Js@%M0|UK{CZ>T7)tT2obSWZj|J`e)Hm zR#)B7^3n>E(}9n8E9j8<j|x9n<M9guugNoL?`A8HMjymWx*Vqieme4YAnl4al3qDC ztbb%R`y-s;a|ZiolIje~XP;BOFr%;sOq`1q&%^JaXJYKG;RLP?kegnph1d&w9#QOu z`yqx(6_2NcrS>#P#5-hrJ%t+iYVt7b188KM*=O)S(kJ8z`7t7M-A_n7NO^Ue>#x=> zSm5u;_F|URlNzfZ<#sXOnr}UFM(VUm;ed-_(xJFr(Z)yCF{{2_U=_8lV%P82a;epn zn$lQk?k1<XdMOWcn$xo;&dh2;z4XVrD~;1*?1hjlent#pDf^Lx+8J5XOg&RCz(39v zaz0HtGqtA)`SlF>KkQgqVSQu$Mn53(@xE1srdw+xd)YuA##pSk*V|?{E~2V&MuK-8 zOr7)wZl_+?PjGTlC3w%D(m+*1wZfS&ZhMU<-%b6<2HbS;Nrc_UI!vWhTUgN>(CacY zPBG4fD2~PsmbaHEWf-3O`|NHR|EhY{98uJIOqXOn?El~6%Wj(!n7cY{439f6Vnv5n zwZP8xkEjoJP~@`*z~uf!9kUFdIj#(Zw%4RrVqb#+@A(z0n#@9P$tl!JzG^F8q~B4U z5Jy>%zL)T2I`7KM8`E{Io=)|xOmY&B)}Lbs#eCRN%OaBO4fMDQB*K_*LZ6k<{q!`P zxv@^X4qlQPC#S!OXr}V~F0{vYBi~^tMtC}(t`EykDyy@#K(&D1({Gg#gZMY=H%MP^ z%GV?N>0+IYd=F=F+JJeMPxrINQUU1rxwwvcOTDT};q4`{P4vfh`BuE`FQkj9jQmu- zFW;aB>Q9`W{Rk0(FH;hoh;GD-4VhLiWVU|6?)O!`Vmuu?z`n6gK!@n64+J2*zftcd z>F1FB_vr#Ssp~SARhw|S+aq;Slu-tv=8k?}!#=6kAo?bYd|@3WjcBw%Tt>W4?~}6P zmVDi^TG`*hVt|NW-yZdgTtrRv4qB)e>i$-L>uv(x-x1wQRZ)wqW^_<KrF8ZTSZ-_T zcc_Q{&PGgXyim`c&Lh+k>l2wz+(-0mTk9oQ1bd4Uutu2pv{2YB41_+xuLRkjs8kra zmsL+_J-raOei8KF_7!5=XZynQ#&lO$x8hdZ15ux6a0-dvS`Dc+kIW1Yz(Y|PH0vBJ zigE2@NpAn8d#IVbS=FZTx*&W>bFc?L9bdz4*rHKpuc<#XJp7qM`ZdfhtH*E?)k2QN z*`c*{LrC5|S+nJ{d?pGsKFDS_k)McTx&vaVi{kgVdcynIR=3rAl<^?OA4ApI-c6@K zf&T{z_%nVBYB;PNd2}A#(AUtn+3puZ55ilN$xdOV<63$n*3AuZ!rDr0X^4J>$EY!w zy~Y<2H*D3ZVZE&)i_kfJSx#0z@N+9Q$4vW7Niw8GYmrXmYs7yd0(Y7yrl;b(g17mI zKH*cgvV*%1;%dPs`l39H74VQtW8c{*IS8l1r1j;~zsb4LTK+_b0;~iwn=ES|(&@0@ z{4e{ac-2Y@4eGew1Z)Fw)$4sX-tMLgKzsaIE#VpV>*^o7q1eQKQ4Kxaq21;rD=%+M z*YWnte9RhveSaOa#JM$1pf^6H)H1uC7r@INrxd!({zq5lnp{8)6HR@2#S%5kGEf5^ z&CvRWqm*o6BT`Ekn2I)U!0h=#ms3;hHvAlW&!j3U?(&XE-qQyy>FnT!&dBuAz(74# zuI7UN_PUZ))t&<We;WG{wqg&lISDW(@H`UkcgjjDE$pD^sq(9Q)KhoTlSLcZM%EIm zfo)nCQyIZ$<$Q;^yj+5_M?MoZ)i|pdC9$@P^LBHgV|jnOBj1Nf?Y0l9N1_i^MikIf z?7|qr^W-4=qO65^wV!{Bmx5o=Z`p}-X7!v>`qQa@^oPDxJX$uv7=-G6u17oA>R{@g zZi;Bz4`Dq%WUb|L)*0*tsfHc3RebfxKrm;_sR4FpUWE9UqI}Q3CDQ96s;Ruh=5*UG z_*IFhIJ@<39qtWZpmVFgWnDxM^;BuFJin*=Tv*)FxAbb9ebpLV{BoRcV6gs?w^@x5 zG4~r)&^3G$MFYFJYz|IT3O4ts^+&(|+|H;@$$C5oYwkZ<jJV7D^bY4yW1;`Vul*oK zL${FU?Op0)dE3fiUDLDVK0VADX1(k$q!%Zk{yx64zV&$TBe3@Bt9qOd5d^8NXTD1~ z)g^x{GbpqdGkkv_0%$76y*{izFR96h2LDox)Fbse`BwlRFCx}4?C2|i9hir~Z-%IE zt#Y!vZflwNc%MpxsFc|8yl+PN-qcI+3$m|Top_i%LGI?V;IYlQIbTz)A}L2O<>7hP zNxFnp&HBmb!zpl6bsO0f`tW$DZHe@9>?rec#eS`9WwBRVk5oUd#WU^cRs^Tunl|aj z;<9{<UYq~8Agy&3CwFJlo%y6bsgKi_@coUnYGLHs!!{omru$t=-!AKGPO6{UI7bw_ z_b0*&(Zn+GYd;{4&E041=4=|n+x(U1`m`!ZwXH^MS$>>E{e#^El;=3w{G<J&?fUTJ zYDISIs-CQesgw3h`-yxa@w-`wr)miNhC<pq_0Gt5;Fe;ZxZvJrur|sq_6M?t9)T0o z`-qvCyXABW&|ZOf&OLFCohf0fy;EjWsnqwr9M)0UmTHLn`d#c}GH00e5F_K2p#HP# z+co7}U0W^1F8W)dlwM1JVEwcB5WjfWH-v(CC(#aIFJ<cg%wDXE%fD$I-Gv>!oO+v^ zh)3G^{BY8{>=|$SzqXgz1J%FQGwjwaO>f!FsimdpiIqd=&@V|3+_8%3^IN+%*P;RX zFFD1!VlC5$?E|X0I^>LcO7)0S#<BKHc|KomRl|DE-oSfl0HW=ub8mgsKIvd3)&>}7 z(s>ZQ1sCkw)=FA!XV<s*ed{T9F`cneNOO9Ufy?lZ;XiT|GHVyyCz(<92<x6?oZG#b z3MrT_D6Q)5t7=sZ%=|2RInH8c(Ze=i(ox~Guf5&Weg>~yTSWh~fgSFWDve+A@ak+x zECFJeD&@SBQfy#ppiN8ZqOXztv)rTSs?CT2t%4}%z1VxaJ!IvrL8R;`N`<zXh*<+} z^sE~}d(C%C=a9F2bzrsbqi<o~b|z~8yc%BpHMKeO-n)ZER~s<*Zt9j#shm6nJJ8qY zuH3}Gz+Np2aGJopEr`7_-6H!EEG3vK@AJv5RtsA1Yi)1j#JY-AhriW5dAjXFCtvV9 z77y#4$kyTfP~SM;U~4M&+qT1rr*H8EYHC%+ZWK4~8Ox0_cJGY$+`t(t2xs+voIfx{ z`1C3o4+}QVGVx!h-<`4k9e$NJ9q?+7er;<tkXQ9|{9@od`V0F%zkxSZS&7iXakj)( z+~^qLPu_s6*V2OitY#tFb|`*JVvcwQii(q?bt?QOSa|Lp&Kv9je}ngYsMSkZzUy*? zFDGY{|G^4yN&HItF#g}GLiWo68SqGCeh<&Prtsa<bF>EMnWz1>Pgd}k6_a@v>b-?H z|BB9=_VR{aN2}4!TM+(bc6rL9@Y`>&oh6Itt)I&=&aZcUikJigp;*z=<9uK9TXql5 zD@&?x#5B1I9)xdkh5&q5y1HHxGV_{+q=V(8_t~(WCD*I{_xT$tD29pmt%r7L>jZZ6 zoCwT<VD1GWGsk_J(U%qRS0#KUq4$)~<0%8DvrhOBgNOLs<2cX!>lkarzR|!pldV%y zS$X+&dBD1hb2IkgR|kHA9lyG&j{dk1tUr3Huy2Ao<r^gq+JA}9R43nE-v*wfYvcD= z#_RDRqi-S_Cq?TI%ClJY@om?CTQB^GoI@043iz^i^LX2QMz1gGld`^+lGJGUu9Aaa ztmJ3%0(P+EgwFk(60-kbwAF#P`6H;Peu}eyBYcPCS#HLM)nRbuS7T~#lxLN#vicDC zRU17}?UfrvHeRH9sb&5xmaC_`JFTL&I(R=H^!FO?p_1|!nbMb$CUbTB9!?H3dnk_5 z$v9@;Ny|Vp-y^QAKEP>)OKGf$$>u(KI0qqEQ_QI*{y(`lU!f`3fl?XqUv1QvqP(bX zSGTicPqT+}PgT`bL*AzMoJD=#|7008QVdpud7?GkeoyT4CqhKJqC-5}XCRn&q|=-G zI3d9U7FDfNdW;-HrEzXjHs5|L1NQhO$H_{WWkF{Z1+l%9Ip5TS<o0Uc8$3zo;0a=) zUEY484&oOGCgbcFA7_-t4&`CRcKynFor~a|pWvj>gTC=s&>Q4Bim=n^bovY|nz7+| z&l_0TRYUy#z-?C8Z+B1+5v}xUfU@==7S_uZ`}MH3o}b!-{Wa+Wxj?<A4~T(e;wOrz znB(0{NgG3`z+1lmG|7mFw7LtC-O)OV<LQr!gKEG1UjkMSe(BY>$?8ls;6q*~H&_#> zimsxwV;|NVI6<K+cjaQS&=0RiZ&?L=ov0)gr4&|AaSW#hl@dp>C*wJO3kX^}b&dyr zD0mGbbom3lTRx=O;)y;BIe5ADN3)vcvt96NcCVGKpJ_X!{om}KT+eFb+bGULmMo;t z+vg+g2jLjuci&t4u>Y^4?@!o}H>#|9f&AS{s<UGsf3=X7AGQuVbN3)Vz4T!#59i@q z)=O3&dw{+KFHj*l3zmx%zLu~cZ`E4^bMHpvDhjXJy=!PaR2S6`dJetE)p4R;E-N`= zG(J*)3lqB$Kg@>aP)k3<Z(g0^HKKxb2UNRhL{U8odX2$88AmA_(3=&$qu6Wpul=_y z!ijK_(`$%qTF-^3vaE0IlLp4=adE7ojlK@FkLJsdR1wUUM%FWW<ZG>3!}CyFWX8ED znM3Ak)ZS#28KvLfl*?Ev>`5X6{4#C*?bLNq+Ls8sUJ`|je^kuiz0ZGARkv<p58P|2 zpsI{BMBhcUOC3mLKl_ajB0f0m(^gJ9ne4_}u<yFF-AI0=R{6`4f!J{KMUF>4ebH~> z^p<;|e&zI4?3^v+ub{rLGyBWwdVo72)GxfW>wfqCyuZKdjOgv_a;eIxDnyLOxycK8 zt*+x6iQmU*?TnsxUSxO)?%hxRuJ$vL&UaD02`^3)ok?7!L$n`}MA@(>Vt5>*@8bI- z>cM)ngm&T#l>g~U@~UqP?X|k`dSzg*KRycB#NR|6#`&Yk<tmxX+U_q*oqZA37jmJ$ zlkDWozze<$v5o>PyuKOgm_3bul^bw^Ybnc;FZdh4be$NV^WcT@dVS757q+7N>b`gn zW&NA1;y5`Yxqhf>iYM|OrPPmk3F4RU;q<~K@xK3$t+T!^RDhGo&FY@-xZOd`Ma0jC z;+Z-oOe9x)@Yq+{Ut9mlEA(}oJek<vQa!;*R-?grj&Ns;zB%I{t}<Tu{*mQzf=?rB zmh33Hs$}{qqGU^oXZ8;~&7nCicA^;05jEem@c%&v5N#6SKkA$4D^6W-ZiwO4RkhIG zFDS%S{~;?Gr`3zN7EX^`KnrD2^@%7O(c8b9zOsJ^sXw+dR#-ObTCOJQAy!5Co4r?l zW;L*eVGo&s*sy}nf3lSSpxs66#pxvr?BC^NI;Yx;Rk}UwF9+frIk$}E{)svhuTVEd zew?6C8{*`As%6)*3v)po+n$SH?JPE1$GI=|$F;GGV*gPaeUXw`AImp<?d*@`1^Z9= zXFPp)Eus{UQpeOpXwMV4h_w}QCzTLa_ysS-na&HsW^AzDPLV6(w)HD4N6l!y-3{jt zx8!d`BRS7M&;Ji}v40ZK{|WxF_H;U`BdCi7&yls*x~3`sW`PcSk+{Knqo?xv-{qv( zXO&BpRx9ns@P1VC^@=FqOXPda_k~;^N$H|vx=-#~-_S|@f%=9lqe=L8QV&p*mU5<E zhPdkI=)nW~K`f(SO6VH#k#DG)%jIz5(nUT>*ToohlP&!O<Ngs}iv!cGzh{JyDfo&^ z?;np?_SOE1umMe=NBRY*cXSV6^j;kH?^ln-bHt49=NooQ{07g*s+#y-=X7c|ad^>j zLZ58%Kk{X;llW33y2~SdTddF33~L}xU|-`<jx~X6C`Netyp_iqF3aQOkhS&^en>O* zyNIB8$^X!)zaSUH2%e6Gil0~K)kXhE1?!Qxh#jO^_=P@eWA7<-jMQBgs)fK#6lEnR zvKFdDmU%iQ;v>W@R^yJci&e#LCic-%vB%$r_5?<Lf--=eK(>MKw)e67*vaj8tc!FF zvR`Xhp??&$bXBV_B5JmU<TbxW@&+OTLizD~(uI+J#1A0`^C$bBn4?xhi%VlI^i5(D z1?xdqUsq?n6pcKStT8;5?zihBlE}r@R!9Ic!l%wsew>K?r8>u6<Sfqdq3$@#!z(N5 zb(vj3Ro1Wimg?sI;fe2J=j$V}lndHP11mJb4*r%!R9tgE&c7DYe^GhGzKH!6ePF$A z13UaJYo3FD$G(Gca8DzN2^;d4{|Nu3^ZQ08>VR_t9*FV29R3?Lz^>-ZyDB&tA!a=9 z=|le_IUc8;)DhM2OPb02KF;KSq3?1j^Tr*^o0l`@>jHnK2-~+9J*XJ5oc>gY<r!Gc zzk)`I6PVQvy!l^anSE|~>ulS94ZnDliy{(L!dVt8WGcIpdOy+oiOly6;%PnNpZ&M6 zf2JJl{*`16`(5nTSYzK8z3lze&DYI$AlCQh^`^RA4YETXYrNb9zk^TZqJt5i!jgRq zm>;SS<7~Sr<JE`({tot4|9DtBZR<Cjr@PI6O>EQ~^;I#&n&PaRHF5BOj`q*~7SR4D z;2oT|R*QecD=H_VFwanSoTcrxGWP2p|7ulJH?sCdY_hY7LpVphfb6S(0~Jb4TSd=+ zlo&hyA%7lgJ$9fK;gMufCToIyQRVbqv7}z-TZaAMF=OVia|G6BQTqturhZ{*&9gT1 zL_J-Xri&35BX-%l>>RORhnDF}v_dWRy@cJ1pZZE6<|DBxD)Z{B`T-X}T&{u8+|kp$ z?W6wBWDd0k*7}WnMm<q$Ra)OhYlWJMUv-a~e~)iZB<FO$>l(2}r}a<7na874PU~0R zN`3f-)zIJ1zM>K$e+-D2?8~U{S*KJ^JEz?Y`{*u+C$tj#d1~_evav5_VEjVLKeC}} z2!DHT#QOPtUq`gTKALXoIWM>V6R%+RL1>g!)P4l-OZo=D_BqWuz+Diz^AV!Pe-Mwc zANa0Jg8e+fe6gh_M)Zg{AivhtX)9&XZ&811yvX58i?bA72gHUId|t;_NfqNs))f9E z(R*Tv{~uA3YQc8-CLNY9B1-5Ik^FB{l#zGKSZRM`pY@GPw9=nNRgEaiIl(z|+DGM4 zc^NypgZ0FgO6OZ@KeV0;D^YUmb(vF+OmbB0f)58fVZ`GEte>U!8mofF2{hIQ+eZ^* zSvB3dBwN6We^0Ik#8$8Oe3kt~_p%!DZT+_YdzH$%<G)L5_?G{cKYQY)B70&lUu@UU zBL0uLH-V3$_}+edGD{{4Ork+hRH6cgoneoFoq-8VFvu<-AWH~~1OizEMI{&lj$v3t z1O+4tD5wZ7C<vMags@8342wcQ5W*q>L^dJ!Io(y6Lreb4?|tw6+{))kcYpiTsZ-U} z)ji!kJ$bfe_G;!E0hzY6z#2GyevkJtIYa0TjPzGgK5qd11t=c{ziutDJZYY3-xkuu zT4sJeAm09v`93_6^c#K~q4>Yu|3Aa?Lu>GBse=Q&rnI0dAzzz*x2y|%)3(vHJn*By z<?JYY??~DOFAaJiq_a8Hei+Zo&ce4u)&%y#w@9%avE}vu_s*%)FM@M%6*2(df_?*U zU;az^#nRPQ-yCL+Hs2Sh|5deBHJp8Le^czg*i&sgm6t=~?8}0$o6`g8;wg~GkcX6q z@SR-x<JSM4?-ShEdS7ssGT1s&SrgRH-riKjGF!P3@TH{{>fX>yfB(+qC*Oq(Gu>1Y ztizNBLHn!^+3VsLaBc<vWQj6G{SWpYj03?pEm!dSRU2$8a1ZH0JbhL#c(;A7c`n|G zte0}}9)29bGJ;|D&H+j0uC{?V51WcxFJGDlTAvP>V5L84gYS7;EBc#kiwWGOv@$=8 z@6P1oIqrehc^1`1Z&$x2`flHV6@e>6Kaf-1GcC;u&b6PnOjpL)e+zCL_;i3XsJH3u z(6&k&``>}xu)a=U28+WVk(_(Yo`mbfbM3*ERx8(R#rW>co0d}iH4dqZ`bPys{Wsh1 zo#08f)Am+oxA|#Xb9+zQSC$U8KGv3&nYg1J8A5-Z@rKUMVkCH1cq=X+i#7#*XRQ`A zByfqfHm;s`2?-9UV>@eo+14PK-hHshvPjDrS8gxkmebeliMCXW*Bl%;#2STP&-oqS zW}IW)gCp_Jrju6sla_p%XV0^LjVG7Cwtis$+nN^8Hso=0_25&Mvz7?U9QzlcQA+oa z?jg%<&mrEyqHH<kegc%K_7?;28y2{GP~Y}w@Laq#w66VhKyCb{#{f%Vz<TX0>h2tO zFO>vV3jE&sgXNdN<iJ(|OKs0s2b-_i{xtuI_tG`QIfS(C8Pqd~z75;ius3+^l`UsO z)>x0)lkGp^GeC**bx<YzqRkpy5n5xqp_M<@KK7pNNBjx<Iy`guDZasxYnp(O>$t7H z^&@42QY)lZ$g2UnP@3_V!0XuMAH_B*q|ClU`Nwn+zd18Fv=V+h;F-|mprtnY<IgF` zdKjnw*!yGDJ{#Q8@`rhM;Opj1cpIhL)ZLyMoEls=;I`=ZGFNvy{mCVowzMne9|J;d zKU=@CKN>Q?{9eEz>jRbtEIaLQncgyu4y4aM_xj7jx6$ZtR7eK)^i2DAmT&RK(9e_; z0hRFl<WXh1xr&|cB3HKk`za{$*Gu>f4>=H+i8og_3D|FHYbsV=P>z~9*bWDEu<Z#{ zH5>i^y<#BN*}f|10IvGaw#>HeFipohNS4?;+r9``W`EB%Lpyqm4jKJl^dfJ_6S!Yc zCG;)4L2anrWj$g&sLaD#SZ4%vvJEO9x9NM}dIWf1)?GblQs_Kuw}1fq@!(r{Vz`TC zC!%;7pMS2}23ul~KgJegqi^I_^tadkm2I&p-83n%LGT)U4tPDV)Kp+i4t!2&ZCR}K z-r5!BC7*{vO9SIfFWc`AQf=0N<+hfAHE|a`3csPm|HzV}k^lYCq~oY_)jrmgA8;+? zPt$O`H?Em=l~O&(6Pj*ciO-dF%X>=?YY&VCEwD%PzklovEic>82OY)tCTE#nw0>eQ zR;<>sW{cfouVT%`H+i`AzvnlFwh63+bKQi16PDGcUgq`Iukl^;0Oe9(oVii3{wH&F z5A2Tq+#UD2CBZLy1X+V0!t;tdZEf(}>(8cbroYWQ&~LT{e~%-=4aB+~zf9$~=Wov@ zdNgEU(5KdaEL$u^7^|lS)UY%P`T|$5{=qLOy$~9#?LR&X{YfAGC1OWIih_Qzj#6p` zKW?sy^T@@vHv``ZtZ%Dt>!qBqJG3^R6x0~sQE05SM5l5;y1(L(2t4<h6Iftv7COMX zB``kV@1WbTNe@U4ZW1^@*kk?}KC&SF6EWq=vgv;`R~k~o_I1D!i!b0J-n!Pw{83=B zsPCMhkIh3vPgdGzx6^(Qj6d3PG}ZrTNtqdPBdED`w0T3&;Lwez`JaK7kPk!YyI1tB zaQY)FIo*b(fp?859V-1~egW^QTVdN9*upd=V3yL}^1GI2VNfZ4gZV(vfuJT@j?Y=X z=~}yx=VyWrhkUFwG_|p}u;hfe@ePWpN)2u8Su6eZ3+$)mqv_p$lpDPv=x@t6=xiJD zd9~DZ-LBX+;oE!qI=mg!(#C%G-%>083s5En{T{G3=tb)wTWfpW;C}WZ+W^xu+L?p@ z_irppq&OGT&&KpM`dcA7S9-zT%Qi-du{-Tgnor{GYjht+mj6Q#{n4{KQ<Sc#M^n}Y zx=pXppDil`O04q&T3VagKeRp`IJNw#lO7>GLWWpdpq35sr`6WlU29wEAHUxl)WY1U zaz3tCO*BtdTAFX!@U(D1Qn37^Uk0pPKK@<8-BtZhdRQDZA~+~yE#CBzjyph~<9=mt z6W!&*tF-X<l??|Zl)N7E`gFZ{z1aI`ZoPSCP%~R|yf-1s`c%*nYeZllOC!V)YzekJ z6Sz^a1$<%Mhi`__b(9>f2KqG>S$cr-K<F@>uRLQuX6+xi%~}N8C#@%7xinyK&=Ok{ z{3606JW(L+_20~qOEhgBx<BxVfKNk)hZLE<G4I1$Xgc7|J#G2h+8^1_w|4dK?S2<5 z=cJDZf|mtV3HT9LA&*;U1zij*v3y4FfwpZ|j#qj+FehM>vPp|u+8d{xf?f^yIIzF% zwB>?5$Ns!+cR)tS)0TzSh1TzEs(ofa=itubTvwl?|N0+}U6^wR1%{5Zn*+w0x}Y^n zEVBb!n_dilJ8-@2q~)aLMf@TY&f?0)U}Nd1XHclU2JBW@M+J7XRI~kHpA!^mU!&9w zTBFnoq(91Y%1VDUHG24`(li^M9}jGZ`<(4fyF#j3?hn2{cz($IkYUQ8;AipovBQ{$ zFTWBRWou*UXI4XEZ0qpEL6IrJ+|9DrS_@aiYH9ny7NvFh**?#y&(Fm6vsOB0-xvC- zt+zeLmW3YP4&ULRzr&Svo4$cx;jNBxzHgxZhj;U0Zdzq;P(%A<+h?{X0w2ZmZwdG| z*&FyCPebjEC;FRD{#~k{d>Q(Pwa{|VR1k1GsK9E*XQvX=VC&eBu^}5P(cf0Q+etqT zQ=Vp4`lIPH*r(|K2SJ|(noK|0zX%)`xKpv2YM52L!6C=C!@R@1x$@iAxBu1R{<3NA z#Y(M1$6I?<x@~>XbTIU=rLK9JvOQ>f(9gE7@HA@#&Zi^Fdw+zbL7@DTUVaH$Z5fXz zcHR#hZJHIb2=7>_?YOMGAKWJB73(Y3`~KU{&yQF7HSie5?q1e+mByh(rWUp@Lc{Px z5B)6<x&Ob--=b2c*&SLxB-7G3&=!(lI)u+-H}SiJ&G37i&G2@+XUn6P5#K#s9^3-& z-D_e^32qU*#Jt^}YCd6|jq@;<<uCM}BX}G9-S)=ijt&Q|m@Em{Z0m^MP+yJjvo#LM zG>@|PwCK;?)(U*p-lIGQ`ewCU(x;n)->Q^}r!RY&wgx|92@Pnj)V1%hJcPF`JuSw$ z)biYSN1`tc3!Z9jk9$yYmY=Mpcz4aoO8ZR>D=EQU@I(i$uHwz=bRSIrQ$yvS-&2E- zN!C_)cI++tI?GZeJa`<Qpq?G@NYEoe%k1>$x4ie9Nl`KyDGJ`bq~QDR3f{b+D0q_) zo_<#FG^B#x!c&yN&~RupG!B{sWkOyk8=4EvgBC$cpq0?q&>AQg%7+S|eb6!Jcjy#U z0$qeILAM|if(e8wK~<pYP%Wq_)Dnt@+CtAj-JpKZ0BA5Y97=}Lp^4BWC=2pIv!VB( zCD1Zx74#+a9kd?GhqghxpncFW=rnW=x&mE;ZbRtI`2AP~-yu_!C!hvUQz#m04Y{Ca zpl(oas4p}SN`yv2qoDE7WGEAw2Kk^l&|K(4Xc_bw^fmMYv>DnB6+yp2zeA^?i_lf* z24pfTiWRyadIYKi)q|QtEuq#>Tc{({3+fB?g9bvQp>a?uG#<)^W<v9z51|#%O6Y57 z9aI4Afc8K|&@t!~bP2i&-GXjIfflqE<bWQ8szbG)C!q$A3blt~p*W}u)C(E_B|syg zNzh~{8=3<xf|fulpf8~xpnRwR+6C=~4nW7DbI@(53^H303lsu{Lsg)vP<7}@s1DQ! z>IU_O20)3>cxW;-6Pg3fh2Db}L!UsOK`WuJp<HMiv;*1=?ST$JN1)Tt73dZeXhZ*o z!l9~A4d@A|9@GeG3%Q_<P#n}5>H+nF`ay}%%g`h!6Uu@XK_5a(pq0=%Xg#zU+6C={ z4nfDDOVBmw7IYg53PitwYCumyEumQG8K?`?4eAB;h6Y2Up;YK)C>!!Yi=f5O8fZPV z3EBqjf_6jupd-+6=p1wbx&~S8=pRrO=rQOC=t-y!)D%)77t{^v0riCjKm(zX&^Ra) zS^zDEmO(3_AD~=l6SM<50{sRZhf1J}&{gOLWDUYLfgXXLfNDYYphi%0s67-1b%we? zy`a9(Kxh;+4jK<-L0)Jkv;bNHt$<cS1<)brcjz2+5xNRpgKk6j2c!L=#~>#Z4Yh^h zpx)46C;=J{B}3`ZL}(H;8OnmPp*hez=sjpLv;z7JS_Az6<wLunL(nPcG;{&F1YLp5 zA?TM-6{tG&1XKrV0I5(%s2kK98UQ6i$<Rc|3;Ccq(0kAV=sRc~v<cb)?S_7XjzcBT zRp=HJ7>a!p3WsVzjUXrFg8D%Np~28-C>0tHWkOzPHZ&Jn1bq#yf!0Cmp#tc4=oEAg zx&&Q=Zb7C>s4wJz?uTkXk3sdI22fi_g}Ok!ppnqa&}1kJng(S<K4=N_8T1|W15^NQ zgLXmtpd-*J=n8ZjDuaS5WB-R9fu4jKL9L-@px#hlXaF<{N{3#9ra^O|1<;q!chEX$ z6SN0903CrYKsTU32ig^?1XYD<K~AVW)Dh|o^@WB*qo7I9T<Ak+3G@lH68aii5AA{W zL5H9c=pu9r!UM;O1F8Ylg6cuhkP3B!Mnb93%g{t93z`PaftEn4p!HBbv<*59U4pJa zw;^jd>H$@Oo`f1e(NHYZ5$X#iK*`W#C=>EQ3!r7tXV4~SGqeXPf=)wMp<7U;`>-9L z8c;o`CFFv7Km(z1P%88qG!vQ!t%AOW)<F5tF6bC^8w$K1KA{JpC!q#VOQ<~*3w418 zKqH}v&}1kZS_CbIRzd5bP0#`87<2(DgQ`cMpF)kGrci4r7U~O)f|8+h$OpX#eF%LC z{Q&KN4nV&{ry;!TPziymLbaflP+KSt8VC)CUV}2Bna~1g4YVHG3>87wpuh*vpCJeI zAXE!#3dKTQppj5Aln%{-=0Pi<HP9w#A9NhL0NsEbRWbHJPeLwe0F(fYhbBTkXfCu2 z`Wo5>9e|EQSD?UZ*r%aKpyp6}s24OG8V6-TGoeqQub~2{2s#B_g{nM=c7~i#EYuC^ z2fYkUhUP#^pfykdbOgEp-G;&+LhMj;s58_J8U?)u&4E6F)<L_W-=QmzwL0=ZPN*Z) z7a9d+LbIVypj@a3x(Ho^?td746>1Chf>NQ$(0kAtXd84Kx&Z|}0{@T-^?=4fUT87& z9aIEeg#sVNwu9P2U7&H$OlT#v1Nt2@)j-=o(a>;cBD4rv4;_cfphqH64`?Lhg}#J- zhsvPlkHI&T3VjF_LARiKk7FA{v!Nd#^Al)$C==QYRjrBgpv_R*S{Q?BDKQF?uW#?^ zH=?_$)2@4lemeG++IYfOMQ3l^QCH=kbzjOZR<}HTDrZ!(5)<vd@A3DBO;&gLR)j1M zI+(lcx315>^F~qb-ZQ6141CY0COtpo$uTXbt4p@8I8%G~W9p=+tF^CG+N3Vq_;dZX z$_HwdYgJ>u2rbI(_~W_pP0~-~wx~Dyn*(poQ-?*IeyjW6yK}>C?*H}Ht3Tv6yYr9h zgH}cAV|On1{3T+E8gpZhb7zZj>h)$T>VI}=i~8E=svR1Ie5x+FmiAzn=QZ{F^&1~Q zS29tZQuB*-H#YWE7h2+4R%)H3zGHuC_WoTTt7}r0UWr@yUGAbszOVLj=auT=$dVgx zd|XeR^4b@d8&yuv{bA1czTu<i<qj<St$(crv(?nK@#h{eeUiK6z{Ibrx0$UD{{G~J zH#Wbb4u3c2xjEYwsa1o9z57?K?{kB{d3eRN%L~+2K?@En{k*<9rQ_o}kN1wvHH{s* zYFO^@+{!7fU;1;y>$oYkE&X$~rP}!Y{;l3Vn5jM$mh-`dy)WlB+m~PO)Ab8;^A9W^ zSmpREb=ti7Bc850OFjAWQ-23#E>;iTy7TCi%U(4gaKlHtkAAKWd1~V~)pvcWUa4eG zT|9k-dTjF_Cm$R>S^esX9iKPq{ZejNt-_AukIc{QpFcYJsrP;Akl_87pKdi>RXYb1 zeHk%8ZS(YND<^DDRTq9yGi7<%Ty^1+>yPbRKSDjT`_pHG-Wje^U$|GAJE7K`{hcSP zmc70wQfKd1ukBi1x6Zo<)DhMC4!%C_Y_54;{a5y#KdCMcy1Hn3@A+z%oHsv+Uc4oD z@h2~RWvRS5x6D5CZ201R>g8%JtNi`g_S{iLmbCk;f1rMPy+&d8-CwE2moDVIxc+PP zp-)Vou6a8_4exfi%NzZ-<c9tIc&{ccC#vHkKKNjC&PTcR%Vs{b;FTr0`ySlWZExfJ z+>=#8J9+CYRWr8qfBLDUaca)!ZJl~=nyU_v{-^N5Pw%P=3ohD&7JaKW`Fz;>U1z^q zUcb4m3kN;_^+vVZ^^{7bS2mV&S@$O=X4JMUAFKY{ba+zxQ?pf1{E&xdZrJ<uf{*sp z{M6o6HGk3J^Lbq+s^6Gm)?aGzp}P3#%xCw#zEM5&YUf37bls$OYIbMl!4rA87aP93 z_;U2;YH^c`HNGm#QFH#Xjym?lW2#zE=f%djNEP}}z9)P@hWbs>*!BI6eWs?B4PH|F zx9RHRz0bs-{?Mg%GH(uY|JhDGIJrvSfNi7HOY?U0Jhft;daPvl%E*AOYQ}<hy1m-H zx@vmy_vA;qR98p5oAdg%okLX1ufrC6`Rfcde(VqSV~1W>-OUb<`Sq{oawlY52z+N( z@7x1BHvDmFZ+7m@dcQSym{;Z28T@CbKNH?p>rcAiZ80H39o{l8<jeaft2f&ImA`f2 zQuUpBv)vm%S|-|QmU_HZ@K2)}Zp`)U8B*PGcw=tAvoG#Fylag5NI>N72iv@FXwSYe z-QHGbhdrF9KC<fRNrmHnQRhDx`PA9fN7bT()4%`w$T4AGsCMgm-DDd1jr!X3+n;|t zXsbFds^8}K!w#ssUOG~3SkSL(<o*v<FSv9}efE>@GHUlcrj}e>_020=_N(nZ*N$gg zIHDf>Jni-T3tQC3wX|2g=xEaOrTO0r|21Ru?OQ6ABVxL*eKhM_x3yyVp!)uMln$vy zOUAYhE;^<@ux@jukFFk5Z(o}c`F`m^H6gR`SYFvNbz1EawTj{nsas||nmo1PPW79D z9z_Rd995S*`sMYntUJ|F^`jzQID1rG>=@Gbv1fJ(|6!v1VzF$GSzl5Ru%UNC?q8kS zENvY9gZlp4$9r}deKI#G?`+_=S5B)pZ#?qBh4H;}9iOD{I-Rsq&8R-Nou~Q6+^9)) zOXpNut-gI@+k#fl6sk*o&uwhk?Mm*bugC1_x8l6;Uz)q_c$LQr`V{5PKU&Z7zIn8| z<mtY_)873mchSao>R+|3S0_$<x5ef62CJ2iwd^%HD<}6vvs*VeY|T=W_T~KDt;!75 z*(Y@7U;T^KoKIIMTa$iMb$<owTf>t|x4(N-&Hlx{e|nWqau+Y$IAzAj9qQPD&$bK+ zSeRSyYXA5)kA1GHE%wJJ&HPdQqWPex$M>I9Q{Mlv>EdG>)uu~RTNnMaO?~0Xdb$62 zSE?a-u6YyAeJGc6_fMH;nb-L5T=UeYnq64-t9t*|B}E@i|2bFRetBxAZ3pwych6ME ztt~wLOKFn&-e=w3fAFL4L_G6E9Mk1AS1*5mt{(3^(H;Xt{kzGj<f45GRngA5=6+AK z?)BFJ^_#1mZ*({@M_u>pr?0F%cqsR3lJ)gZKRT)2U;FL%t&wl4Z>vR<3#u06R;_*2 z{Mq;4s!!Ih{ay8<&qcn>+%E3q%oS@diuGI6>toVSA6}BH2ASr~|H=8aT+X#ve#!qV z|G3&XDEPur@3-oT%w-{!a^|Y<f8bvD%yUz6U4Kp+`|F6+xyKKucTaeDvGgzEm>{RQ zdc3KkykArimn=WGOiLFht^c9u(6LvKwAI^pbsL=@(<f!eCh5HE(+%1`eC|YxhjIfH z<$77!Me1i}MUnf{8PV^;@~RF<+Y?*$H?cphQ+I0V{3Lz<iW7E9%r2eFd}3OhoAPkM zxQ7caiRH1v&k9wPFL<elxAaFnzS5`lX{0(a;){;QUzsBEZ4>rgf7B~<u}rrc8?8-S z&CH`|#`%pgG*y(w?e#dl?e*obR<kd>sy6?*N#4%ZlZJhe^M^WmLA$O+l`advx)uIs z$T`t)ljO4OKXR&bIS$Bad4AzXwri<sLI$p5tL^V`p}a|4Fee{eiX!T%O*^)4|5RjD zk6t}uBjZPoNuN+BvRT7c4Vxp6mhiDgOQu)4E2aryrs|=A_E`u3A0ri<3TtVam=bF& z=HFn<E#`Yu;7CKEKH8k3w87^CrCsH)nE~x8SDRsOS2@yWX;(RFy46*=@l>0;a;wZh zcjc}DUj<ig1>&k41q)arN4v^)R|tM-sDd?c8w2G*lwP8;k!wakY~^Y`DrdUIT{&th zm6K`fP&p>xa<Jy##r(GmQF<bqMa2C(O*>Jno$e8<i(<ta{x-qQ7R0#|j&>o^pAqWr z%JvSlda7-@)n}Q3w;M;nRe$04MVh)QhfNJ|Rj!t4?pQf8z!O}#8i=d1JvIbypi}T` zVEBhb*A8{t4wY<iGtDzBKI?QmWsM&=492F3!{r~m@mf*V3i~UVSDvjLmKhLmvNEpE zk+1z?T_~<s>b}}nvU#Mh&TzKMO3plR77r8LaM2Q7pVYUNr=t3ItXya|U%vM?K}{6J z1N9XCdQlwOw#POR+dlU0ZQrr-EE8>+du;qpA>=DZ`10a<o9-))e8t|~kF;&msdBN& zJm{Xj6g-`yDCdQ*B^b%d+t^L*(vcdO8Ya_>cBzTg)yM`3x90tA*nYY>(_-FWqQ>j2 zZ?_m>H<jC!x3wECgR~7t*8-_NV}<>f<@M3p#$O+I`F;^!IVT|CUDPM`9y<nY=MBQw zv*b(bU)av=W}0JXSYmzF4qCVQ!cM`uLYl$kys$r0Zr_RZ3ySp<i*9ZHO3Y~esip;) zk&1a8QBIuRIkk*hB|GSC(o@*uJAooDl%usX!s?`jwL|)M!(@uEcZXs@>o4);{l!04 z==<N7A^L92hY9S)3i;V7{QO+*$1vvj+t%DM^xuAHf1q}aptzA*;aZK}u5ntsb}Qc* z_lQ<iaL*NG3;TxU`!2Ra2Yr8woo=J{$<=l^R|uX@&^CwC3i)0Y`GV}S9DVztT|GXl zo-^PXu|+;I(+pKri*c>U`#j&rWgB<a+W1qgjotb-IV0?^wUlLHeCaC31VmUSw}?I_ zR3pDg8>meU`>?i6w6<(dgI>qVrM=8s1Ma!wxhP($>j>emBgLWhRb!hr)+&f5$`MTj z!-^9PEf(dHIKJO)XV#9OcQaZt(<#h7621P{m?&;Ml~a!8F_4az#Ak^$Z-^-_^=Ld& zWRb^0>Q9;<YIh`U9K)0rH9sz*xIQLAYma&2c}W^pw0%gQMf74Lie;K~gUCLE_Dv-1 zc#CO2$fN`+F$ak%3T|v`X$bxkA9Pq>ZY=mnENbQA`Whwec#3H%L_9{E3~0wluo;3k zrivqJ$2d$sg2;cy4x;Ekv@as9gow)|*RKU2|2Z}EHQMnHvp)!qpGMY_cAUf9R>^5V zN79aQm{K*#Pgp~u`n@)qmOz?+amJ$^lfcdi9utchByF6>^fE;DT{{w0@NOS{8i4I; zV*Nz+7za4n7su&#+PIF{hXl`|6AUD6jK;LK;H58USkcB}%r=sKXhR?si*lO_9+skW zZH&ZhJHZFNu5)e7!|bzyH_q0%HilvLdBMl#=v*7CFgrr<oKJMFjYXKHX9K8St5@k< z8)x)c^h2>Ti)EUO7xrP_>QEbJFgqFC#P+)w+Ob43v;H6%P0je7r+X!{5_B&Nd*+l` znDKP2F};O&us0~BqJ8Chdgg)nbpxL-xZN;xEEfEr!JeL%AU|^Z(GsQ41fQ=jmj9>c zD#)HSk+x1hzq2c64E}S4y*xjWj<yIMW{8uX(IEd(2CknY+LcHHKO*cs27W^D#s*#@ zcq;=h6+Fhk>Dds9C(=+adR~NhSA)HNZfaNh7&tvwf-Cj(@2(WCal10eU|&t}Vyzs1 zmPZ92VX&_y_-enYHdjw@c^)TMHxYc6!4Ey_LiL(p;4y;FH}H;vXBhaig1>3ty#&uO z@cx1qYEv1dq72cNgOo@=(&k1;KL$QV*wbe}p3;Q9aZi0&aF3y#CkY;9;8}u?Fz{@_ zmmBzO!Ra$9PxA!tYT%0mZ*1U81n*<uD+F(4;Hv~5WZ-KAk1_D|f{!)ue8KY!yg={? z2EI%13<KXM_?rfPNbvaveoXMy27XHL90NZm_*w(MB=}YXzb1I0f!`MVpn;pU{)+L< zz=H(8Zr~2VOAWk=;9*)h{vJ_XaCzP%*E}XT4sLg)Ck5BX3ID1Ff=3zbn+h(^pJa|` z!CM*ZRl)WBURvXxo!}mW{WF4hHSlhN4>IuHg7-1-0fOuMx4+y3!6z8(M+!dHz>@{f zFz|H2-!$-vg3mJW$%4-}@M(hQ7`RXHJOiI2_*MgdPw?dizF6?p2EI)2wFdr~^y6<b zZSG6K<#jN*`djHo0x{J;quZ4{1K%j@w;K3X!3z!iXTinkeEHh_f)|$)ede&>XAHbp z@KOW+L-6Ycu3t02C~w&BE(`lG1HUe~-N5e%Ud_NQ+KIGXi8SzF!HvfqdOnhlr_~H` zMo2#fPR~-3eUyPeDtIdce?ssW1CJ8iW8e)1?`q)91n*<uPYFK4z+(g-WZ)eHA8X+8 zf=@8;?t*6+cpt&vH1HP$pJm`f1z)ahH~-2}g0D946v5XT_{)Ol8F+@^dVlx(pQiDk z^6SiU%?x3G(BNmT;DrXhP;kA!OE37GE%+IO{ilML8aO>SOZ`Xh*M2{11!o@#wUxPo z+qJ3Rev9CGKk{>W4p-~X2K)VjH#YDig10j86N2mg$nU>I@JNGwso-G-eob2rQeylr zw7EON-ea)0YL_H%-frNb8V^#8`^EjjUhj|oLLL(KgZxOFdrWX+|Bn(p!(dO(CDZ2u zV}EX;al10e5NBJ#Cm6VXP0y~3HSlMI{Rji^E_jB4_Z57Wfe#Y=O#>e;_<RE&BY2L1 zrwhK;!1Zg3IPMsDrm$aa;BN_TXin`}Zt9<f2K#q~{Xqj?BzUobFBN>bfzvbL<bSJy zf2HvtCC3;Lmdy%Xz`i@JgMHZDNL$LQfEQH2cUHjnRlpBdz>inJ|EPffSplc#;O|wh z8x?T6G;=R|dXD~HoSv<}7muibKU@KStO6cY0jFp8?^SNI3V0jvaOHAYq}aytcph7U zJ$(=0UjBPl!24Ig6Dr`ND&XTP;NvUcuUEk7dkXi8-&X;Dy8=G10-jR=UseHMQ33xJ z{63r<hW)8;80~%mX7ehr-(CTy?_AugzK1K|$HA%GLb_m!q}^Ab8TZJSlE;imY?z?* zNFI`$)G;wlpXo7b<XEN0;L&4~5>w-olSie?rS9oTiDHG8L(D&uoPzu>DYV*^l$4yH zjBnVYNvjsxq(x(;``|H2=@ZC(_rx*DDWeA`jeI4s{fK0^AN6v>k*O(z8{!vU_42g* zI%}njO&K{lv0;nmEu2b1a^kRIG}}aJ*P&w%;Zut=cEZ@C<dnp&gHr}4B_$>)?quE9 zzW{1CI<b9vn(p4&SQ(QzA#Lc$(G6QfH;Yzq%RjM4;^35o5lVb=!r&w^-(lpKp~#b} z^cb5oGEM26n39@^M$<}`3sg0->pXJI$kFMe6%kR7#FUYPla$`cDWeiol(@9Sl)-6< zO5B*V#NpZ;tQ)p)HfgLhjBoF3?9?Ys^hq<CM7PrZN7H|4)>L0FGPTf`n(GtI+}XIL zw&WC^wA@bAmP&DIrL@$YIK@OOtBG#z)LgaD9Xd7lP4q&Xy4xmtoKC$gnM*H3#Mngh z8?E_>)?H|sbgs=d({MAb%;s8X%{7P3wM@;lqMB)LnrXb579+M2D$z`{X|DM}&j4wz z`_b&1YnIJ5|IIb~=9)M3Ls+8w(0|Rcg=X18vuvT2(n7OrsrhWF+iM<LYPni!_ARy2 zTWYyl>h@aRmYQWNEpIC=Z!0ZVD=k+mt;AMZUhEi%p_P`mm6o@amN#0niPr3+H4o96 zw`k2z6TMu@+C<CRM9bPl%i2^kZ>pI$)y$h}&YEh@nrc~_YQ;9yay8XFG}ZDp)AN#J z%~~_oLnNlz$lgOh^efF)^dK#Z-dRL1(MoaZd7J2_q8sVKJM}1?dYDc<PNyECQ;*lF z2kF!!cIv@8^=O^Vw5mGw4&>B(lT+^`PQCXy^^W7zdzVx1G)}!wIrWa@)ccULxz<)r zy%#z44&>B(kW=qGPQ7<J^$z9K`;t@dMozs?IrXmS)O(dv?^aH+Bk3K>srNFc-T|C? z4{++8LfZ&VeTR2OYYo?=u@3cK=G41^6MY4P6AiLs6H`)>Q<TIB7?x7OhKx}#w9=Z? z#H7T8G$kc5;U)Z&Y|Kz4b;RhQFdi{FAuWj}!!dASGB`~coj5vS?8{0jhTJh}!<4Z! z;-#hyO-@f!h7C(fPaUBQOG!*rl9I;^e{u9!B_Vyt;9==w22#G!$uA|+G!@PU;vcO~ zACok4%qV5_sMNGXERIhZiIFcMDLFL}0gV|vIuXuOk`l)#0|!n>O+)#~W3hl(hw82| zWGV?mQqq*flwq(*oG^CaFbtP)l9VJ4TbkiZi77({YIEZUqZv@2#4#_C@3iD3m=4vC zaCER!lwsn!3EctHE@6rL%pVF)XUfE9x$qB3zYnEoXVApuedZMLxtCZG^pAM3?QO>C z)~e(mFy4sqj~Q>w_*aZO8ULQ~CXDOX$Mo2nGJclX)3X;c9{qZhZcn#*B{z%D6;!Vl zj8|ctnoQa|8K-MQl1DR64--nRU!T#-eTs4Yx{A(QGp=7h(Rmxj<>ya|lOA@I{<B!Q z-2QFGpJw*U7^jC8r62n4FD3FH14+J_aq1$H?_s<h<A)e;&-f+A-Hbng&nc9s+*nBZ zZ_IcH##=E?x8S9H2gd0doaE0kPPgDC@6UKA##0%8hVg91dA&9=9?$IQd&rciUY#LX z?kdKgWqc3g-2M;7yD<C8fmlEy|GfV{$~d=g&3ISjk@2`0r)NbZuV%*r68Y!*yPNUu zSSRhfGTwvn=NYF*9i;sb#(DfNGTw{Xr!f8;<8LwEoAGxUr)#XT+>aUW%lH?JKhOA& zjMFnS($5yg`!im|_yEQ)FiwwlNI&$wX-d@210l&x;?_0sL5$zW_+Z9sGd_gz){G}G zPT#+#ME-|DvRwKuHYMVTkmSjX4`V!o@!^cmW_$$W?=jBzqh*YbWcKSA=i|>d#$ROi z`xqa^_%X)m(J5K4(~OU1oW4^|iP~WdB<<y;CF049R}z<;i1YEbHsfQNeLKd-G2WAL zdZb5|OW#?iME+AD$;U9x?dkjMl*m2}lJ>J0PiK4~<1aBz-+8A*e#S%64}Axo5^=sA zw=qul9;7{eFP;+FzYIzKpm;Qg_$!R#QBf@spU8M$#$RQ8B;&6!{u1M_GoHyfkDtD8 zPl?Lq+wo(@Ct;n8e?8+FjMI1YDUqMakhI^&_#2EDGoH!#1;%-~HyNM8?CHDzl&D-@ zuMEcd@rAy(Pl@dL@rb^+Pl-6Ur|<AnBF>L5!x`t}`FO^;{X2~F<Iy6<`SGYnWvy7P zTz))CV7v}Y+8osF=sW(DD9$WMwtoiWWbYRC*#;gj_`3$)Q}7QByuaX|8~9McHye18 z;DrXBCOEx!fD*+|alR_}9|k@}@Jj|hU2v;|y!idRBY2pBFBH7GfiD%jwt;^xcoW8_ zq8!=I(Tr34-w1mb<FU*>k#Vx$AnZpoK8@K=V4UoK684z}zEkiS2EJeL_YC}3!Pgl0 zNx}0B{Jh{h4E!&_e=+cX1V3)zmP4on(p3Ww6<l8Yl>H$>@Q^S)pX3h<em~=H!bEPD z>Wq6Cugy5MXHDUU-aA1_`mZne00VC(cp~F(A)hRFEaT+Ajj*TpS5T7v-GWaw@OZ&z z8+cE_R~mSK!Pgr2P{B7Dc#_~h8+e-F#|`{d!Ot_Eje5xX(t9>2$$Cu@_L1Rt^XY;| zF+Lq8(oa*ysomZY_D>u5Lc!w<e5v5+2L8F=83z81;MoSgLGX7C{3pRbH1M5*uQBlb zg6A3duYzx7+{fCXkntIeA7Px@=cMp+$H31EZo3agNVHvMLb9F187Dt~3H!DN{*T}u z1GgMTCZrw)9xC_?1|A{!NCSUZ@C*a5DR{Pl*BAU<18*kyM~u%xe6qeP7}xekVgDuL zvzh%i#@}X~-p@jb+H(#h{af!Rs`Ga+mAo$FT^Vn}cvHq(Gv1AH599oEfjI(3NE8o0 zPq?3Ps&9W$-&%~%1($I)W}NJY3VV7#3?;c=Ckfucz|#cpX5g<1-rvBd2u|;s;r^!! zo?+nc2%c@=3k84Iz?TY6@2}zhKNozBfqx@-o`G)=oZfxI{rn{OF9yC-@Dq%`i;S|J zOBkni-Y@L`VSFC5uT+If^|$}8!u}D)=VQI}AH_KNKPl{+8u)p^pEmHn1gCfSP?FpI zAHfq1+;T*>8*AX9f=@K?2*IZs_``zFHt?E)FEjA^g0D94W`ff@hA7GS+X%jiaen^x zGvm~5Zef3v@%O-GJC`s{_VL2L(gRpPlI8Xkyb9y*W4-hf$vFAxFYN0X_)x)H7<iK4 zE(1>!e1L(!D)<NkpCWjwfln9wbpwA#@Yx2wQ1FF}FJSdu$vD+_sj%P7_(Eo1$T-=5 zF6@sO_&0+8Vc;7CzhvM)30|ctoFd8XwNvm&1K%%rJp=z$@D>JsQgC|z6!(8#@LmS~ zm*9g8{2#$b8Mx(F-ES)6i-2UmqW4@;qI!J*Nj{ZvYR^#N=L5zUGyBgOC;JFtzn$?M zW`BTjvVU0E7aMp@!Ot0ZeZl`W@MeOWs=+Ce++J-2uVUbC!6OYkUhsMb-c#@v2Hs!r zI0GLlcsIsBL|n3+`!fC!<H?Lu`y>fJlNevZ?B8O1DdTe)CqHSz&u5JD^NMd7C;L~0 zeZGND5&T!iyRdTae-H~u)c*W@rUv8uyd{cpe%><dA<d0;c~M;2(Ez>cj1u`j2+8(L zXZ#T3uNeG{#X3rpm_7I7Wt{t&Vek{FdC}jwMzh9v7FFQqBZD80@I&uyqh$2+CF4Av z1=aobhcPSL;n9ch&EIC6Z}-iNFJpdoG0u;J^zJrFv`r{hc|SB!aAGth$#`1TzycE4 zQ@@hmWA#+P>78$sq`kg`_c;nqmrZHie6eD>;Kp`)mvP>14?U)5B>Rsc8E1XQdHXDW z+;7kO=PJgz{o$H^d(KZW&i9L^wfy#<uz1>1V<AzTzd|xjM_r;i{|!^g$5+75F@BWU zcdSQV{_Urr0{%yRzx^@H%5obvxHo^H0{%e-{37GLzBdGy+dWS&PPxPE`TlEf=#PhQ z_f?Jjycn}G{tb*DXZ!-=Cm0WIj0GgxF26(4&vT5QWc&dq7LdrEx7#Jgd40z>(abe_ zzI`iGXF?)B-2ZsSx&L#Fb3YxMX>R@%&&L(;i;VOA`oZS9AGux5=!;6E;1uU6NVZP{ z#{Xa(kK|~H>`ya}2gk}e`Idg-882b{Il*N-@_RP@m_6?&iH!4pGLiAK%>SDP|E)|~ zc#4nNbN}-g=l%~eehx0gFsm$Rq5GqD;N@;&oa|*gY%}m`dUoZkfm;MGZmG|Ze?E?t zGCl|Er2nRE{q}sk`jBp-Adw&55BIw@{4f44UDQS*d+L(Xzr6!do%7?%2aGSrdTIYL z<0}|%)sejDez<)M<J`W0@lTOY`fujZ+-Py~cIaOLKgl?6pQt#$A8LE)KcxablW|^d zpH6;1yq(uF&dWW>_-Cx#KN<g=@h6}0`{(_kJ>x5x{Y1vUV0;GSs~9hczqkL0&VJ70 z*~B<+hn*Gh(a-w*@c2JsoclS+_-YpCW7LR9)IYiXw{((<WaJNb_j6uuUB;WjL~i$X zjDN}aGmL-5_%g=1{~sCWajx#+kB6TJUSXX38Q;@y&;8tCoSz4V_VU{g!mO-U7si`1 zK9cdT8Go5^-k-gUb3d~g=l%RW#=l|ymodJE@ePc3Vf@kOuz*C{m;3L^IB$mmjPv$P zWBgnAlI_#HH+k3n^L7}^IB$o^jPrKzG0yAzKI1(8j~TzK9T?~B@OU48oZQb)#=nD! ztXD)|zdhf72QtpvZ5-pg-7YiE+sE;|-~U=xZW-h27?0}bxBs5;zKrv73mNC}|Hb%v z=I1u!JkIm|?_KVr1N@wq`zqsn`z~dixAR%Xc|WQ1g5N){Z$HL)xtWafcFSR$x5IMA z`F32xIFElb<9vJl!Z^1-$~Z5#!9ah#24PnAw^odEKbeegVD=8mjAR_Qg9qQ6zsxxI z|0d&nzgWpQZ=bLse*ZsUR>uD)<AWIYB>3&mGoHjak7r^9{KcVuKiuA&=;w2o{}9Ic z@w#mVJcDr;^Yb0!yxaxD{N?g?$QbVDgP5OTBmA8ENw0v<WSk#2S2520Y-jvOR_;E= zKW6+_#<`z}k@t?%GRn`7GCwae&iCK?Nq&3IR|+1C)gjOzlWzAFvp)zV`_%@<4>7)c zw4RUpKac<N7(buN?6rsXuxzwnl<c?Xan4Ke^IYcVW5)9s|C;f9#xF6xk?~cpV*!cc z*#yb@e$O~Bx0vxfW^bE>1tjvr%k9KCFSp)w&0Mp;fLU3ti*eqbA2ZI!hjonq#Qfan z^ZV!a4>8XDtBiB|j*N5r0>(G9a!)b7h4B_M{qYnqK8bN&?li`ExicC6ocUSBIPX98 zX8FtIaX!yDk8=d$+<u0E-xA-y_>1vnEFSZ0f4N&3U(5If#&<K$>wBB=^US`%+kXFD z8DGgb_a8sUZ_oYgs(_bPz&pI-_rvSEfN?%<=T*S>yyy4Bx8wNt{rnTm%KhR5<J^Ar z0>6DXX1|_s-k!fPzKz+}Ug-D3`_BZ%c|Ym1=-&3JjPw2RW5#(rUog(kD}MgK@1NWM z!Z^2oFvoAt`G61ooNup0#<#;nw(}asdAT<j=YFgo`TcW0SC;ts9Ol3FQa|VR{TS!% zzqkVa9pf(M|ECK0S;qPPa*gpF%uga!5{bt1laOqmg%$9I)LD_pp10dY#(%>)>8D^h zS?l&kFqQl?<L4N^Y2X&hj5KJ4KBaPtA?ar-<G(Y$`%^3+k^M19+B-fYs&gKvlW~eC zRI|eK2nHS@cz4E2z@+~dD&Q|xz+b9>&tklo`CrI5FSi~I7D&eW4riR#cU}d&r~)3d z((j*_>-fUYc{_KkfM-|0H!#loNsU#0|2+OSjPrP&uYeB|JQ(gmpw%Yb?<i)^&jZsL z=jVZM82r2`{7hr^+|O*rxu16pehvyh3z$9kvy5@>$M&Vaefa)ZnQ=Z2EN7e_H#6y? z1`_q3^N{S%$1C8~=tDJ<Y|mDd5owCxw0H`Vex@`22jg=XKh5}j#?LT5a2*zqXd6-) z@_n&h!HMmFWVv@3=l!!0eaJ^5`#&LRKbY}i#z!-Lobe3Cc|V+90iRz1Us?fQT>;-v z0pD5y-(LYQu7H2K9+gC*_TlYzhH<{1rqIC{iR}4tB<n{Fmv67UhxFxH1}@*P{AI4b zp8RnC2N~!6yl<Z0p7-Yx#(DpD=KJkAk7j%)Ok{uP$~Z6gMaFkA`zwOW{;9oS8|%vi zr~QTMCVA(Lw4gKIf07u#i1jj_4+JMawW0nHr6tUs?_ZxX&iAiXjPw2LJmcHpSC+e- zJ~Sc)K)fANe$ueUOED|$Yi;)PON@`KfX`z5GP5rbT-LXl?pE1n;13FZf%!Sb{M=xi zw~w+#&q(#+?PFz}x6eSvdH)&D_|L4|Mg_Wmil6#Ko>^Z`6`acDasI*VYh&Fw-CVJ5 z)n|<M-5LJ_CbIqeGS2Ju0^?_x{m+bFVSF`p0wgMTBP9LrVw}3R<i{DOT~_iE#`74z zMU91I^#9OqKj;1%GS2<CU_1|5Ww}fD=ziq>DBn}Q%E0A&&HoUb;`xjDsk>MAL!6Iq zeHp*X?6VmEoADKlUt|0d<Cht~e;*c*f+4Dd)=-$#V4V7iOmzjPIC;Nn!8q?HZ5ikN zq#fhDpG;@`I?9mkd_-`HlggIwdHBP?<#SC>6u}6IY@0&TPgll2VZ0yXI~Y%-lO!ag zpYH{i?N%y2NXYM38QbTPL%JWbr}h-5yGkd)jrQ*`PF+vN|6K*#epvT!j5CdK-u^E$ z&f9-8<9xjBLI+DE@_z}E@uXJ3XEV<Gn|vOY{H$eu<nyq`_=o)pBP8O3AX#oU<J`|~ z#&0nDV~q3u5J4yXNaVi@B>g|mcp>A>7^huX+P}c~O~!{Y&dZ(0_#9>*d=v{v6c6Wv z80Y@?Gwwnj8P6fcZ!!K4<1{2l`$vnhfJEi;{bENkQJwSnUB`7U`?E)1RJs}XG{MIR zPX770@vXsrfv`VYf&CLFbOTwgJYF|4@CSvTrvx{a+ktUDUUg=i?=RgM=ljbCjB`KV zGJXZI$aZc;7ZH#GpnZ_!UkfhBlWJD7Qj}kqJ#V*C#(BBd80Yc-!#Iz>E*)%;C>|Fi z<53ys{U?WU-XHQ9=jCo@oR=F!l|iC%_d~MWml)@MCNj?btY@6Jr;{25iTodcr2ip| zbNf#Om+e2+Lb(;?M`lk&Nk3Z{r&-B&G0x-P%Q%n!sNnMaL7uleDKiqqKL?WjTQN>U zwdB(Ur})i~9inuV+0&+w_B$vDB=XNc*Zd-Qc|4jGe#6<oX9*rkA1aW@5BEP?aJipm zkP*_m%$~Q~D`)lfWKX{2@qLPc%j5fA!O50?u4#SF?}zFj-~SpfIN9^<*pqP{Pd~<~ z31zztVw{>p^0yi1?Qm3Zs#gdUBl^|v%$}DULKjDnr2Tx_m`GuQQ~Y%5A<KP;aXK}S zyoSM#NBF79?75$YjB`KVGfsze>3=`t{5<oP;4=QPqFk+$A-^&HVCsB=^K#n?PHjec z<bJV_+4KFP9$jQXBHP=LjB^s>O&Om_CpSoBe+-iL-!e{{=wXObzJZ78SSc{@YJ#6M z@Cd;>)5#MOm3s%0<@OVt+O0OU4x%)j*_UBi+MDR43Q21llb=^&oVP;<!KMGrdUmBN zv*-IoAI5qA9LPA|FNQMC_lp-9=ka`N;P~-XEnPHlS>NBU=mArG`F8w*J`^Dtw__3G zd^?^naJe1N7`WVyLG<BD_$NPdJH|53_xH~k=iB#Z!Dai)?R$~g^X=P{b}A&}_8r7H zZ_inROaF5FzR&FW_Wg))zI|6P&bRLujPvdL4dXnXYX&a2Z=_Z$y<S?~#Iih(BSxAf zxJOJSk3?Um)L)-ywzMvT{vrLOPs+Kx9w>jOLHd!u^Cq9ykX-)G+jLQm<nnjhHW;|P zt|+gsOMCf440ZxYlFQ$1>to<K&2_t_1}?|FQUjOA$A`uED*emfd2<`M{GGQn1DC(& zCa)VwKRG@1c;xQ{NG^ZRElM26BrhJR+xIbWdAyeIf0y?1dWd}Ay5#cui9G+6T>j3R z$Euej`PdwNIm5u^b^8qlE`R6kyn)N#bEEfuQ<DDW`<{~wyikl&O2gEbN2d)Qf+^lx zsZB@7xs=4D!41>!nqsBl(7|bgm4-u7Q<a7($+SS`&W3o?DqqBVQT0VRZJ3an=C{ED zy{9!HdGzSSF>pF2IW4ha$7g#rz)Lt2Mj;QCmpEeJuoQYn=l`7)2{+W`MfJ;_#)!G9 z*UOPM6L$BaQXR|GC1MP`Q2zllWh;H?Myd=^Id)n=lH+e}%oCTV5wwodAW?1%oglCj z$>wRcK14o^`E$(rjx4$>nQF-xzY~-!o9L^{|I7SOiGCzk$oO^ddcE(J|F9U4#N`&5 zT`P+gWPWNMny3EAQ(lm6F-u(6kn1AljF|Sulq~Nv@UDO8`Og>{K*lepLo3K1b575{ z+Td5VpPZ(M{EZEEr6T`>2CjSc*MFkOZ!lAW&P&U?*BI$6k>A*UVIqHyp<~N>ORw3O zxmW+4KUnuzC>&G&rE>|HU-n;$$5=Lyvih<fX=7pN04suw`GdfWeHTb64%WS%GsJJK ze|QD?M-0{TzfaCsGUhLTWADI*$&Df-Bk{iFrg*t?^QJ8$Bbz&&P3eDQCwSw=Et)l> z^{pB=!89^*Q1GPK_znRkzef|^MCV`f7iv%Rw@{3RW0Y{bD9V#PZBQNjoV2g2$>W_z zv(CNCO=<TzYE03rJbSKZZZs`7rT?8Bn3eZ>FHgeW%rhpBZ+cM<9LD=Bo2fOOdFA%m z;hv`N1V%=|=Va}K{<6nWccaIvv&)XY)8-@NWk<Nh=E=;n$4BR-@3^vQn9LvVn;AuU zGygPsGVhe7B|B<lP#_h=8O-8yWNmxBfZ{7beABcDeD7#scJ^7emHP?yIPFxjXY$5U zIHmy3%Hq=JU)kiS5u*%iDC5bzS;;YlI!)%ykhJcZH-j8gXjI6&8R*C=rnr35wqn`i z?NH5=Fs&4`@!ouow*Vm0Qzt*ZPJySOgSMl3yxTqbH&xGLH_we?{#CQ?-&^EsSC(H^ z!&#JnriSUdXTHa=DnDzlb`Cq?0grd1Hs{Gdt9nd@s5Po!iua;npAGY%#5x<}>*VYH zw^Ial3ghc+(}M7Ji1MsOq?9r|k8Sk?6>j3?2c%CyCFop9R3ZbjB`xqtfm-6<VP#%_ z(lIjut4p58KV-e`uYV+Ey>+LotbBW7eU#sIS6Y9BuXpu!J?HA>>e<WVz1_o;dA^!E zd-w!*cJiz4?C&xVu_vLb%h&me%jd3n1r6fzJxdc`r#nGg9aEgx^E?Gw>{L4#UM0h; zx*<(`oo<t19~{9v1z8k{ZrJM@8D4X&+UW8<N0Y2P#}xWKBv?^>G^@<>fv(I8(4T>^ zj#a0iKVq{^rac53+UArznLkzQH^9~3HNf?PYv3k#cB10?f!5{Hn9(`mFSqx2C*Q+Y zGqB{^cgo{EdIocfhl;!T0QLiyqwY^0UqrP6ZLhuT2-D6{+xtRmV!jI5V)_V8eQ9wf z%(oS+l9)Eor+rI@IiiZOdmV(XUv~8Q1=@}ILTD@Ig|9v$U;o3{1-pj%3kmnwLHbma z#Ub18$hMzc!1d<Kj{f;rC$dX-;W1Hw+VL3%1>`f*8;nUOc$3EAov0j<GrSWOQN9q# z7s!`f^Hv5b<}o2m9cf<M!E67Y$vul)Hc9_I(iTDYG0n4>p^^%c4E^YHG7BD@ny z4{sNxl@gv(4WrpZRE)@sO@mtNIbFV<HOtD^$S7To@Uc`+QJC0XL@7LtI#zARHV*F- zMgPZA)ivz$+D(@<6dCJ_ujG#mR;#s8Y35DDjJCfTXF7<EciHhmX{<L2U<)=1TA?qt zvHqJ-<jG@4Rd>@|*D%Z#X>--+e@vvdKFTqJ2E1o{5#M@zp@rIbbfOK7DDLPJ-e26_ z6D~)`zg(IB*c{Ui-0yF#%$p|4uZ889x)W<MZw6?D;&V(rp%Jr2=v2Tlb&EzU8kw(= zPc>rINRCEkfM|=$v8e4WuIT+~-CcF|yS)3{-aq#I>GEEVHSJBS+sTI)-{JU-ifbLs zxfe$yPi8)9S;tixeL1DnZ7Pb5K9N>Mwyr0kj9h<nJp;Za#6a)yYCCScH>(i)D7Nhy z`bg>a`e@vic7%%!%V)6cnC8HR6142!abEwP;1+#hm>ZkLQ3Ip@&+BNEfwvA}!(5K2 z<HH<{wxm_U@~~>id>UJ^n0TSb_i`DAb#Yv}?5O(?Y}_}|pZflU9nZbpj(!;zjh(M2 zitD=xtT6Q;?TV;7MuPBRtvs1qVE)2JEOhAO$-H4re>2W>sB`pIM`jw0&Bnp$HN~|S zHBoZujK}T0;o4Umm$2L8dw5rd2HZ76J>JloY?MM(J=vi(-Pu^>m@*b;xM<kA1^Q^! z-WQ=F<|@dm#QJ*Q!MwKjdeJZSF$>cMv=-A^Vk-6(IWB4ARk443>RXC=F$PE*IoSMn zTpQ15V3Px<Hl~r6yT&!?j#kL|J{UVNbosMtD-U1*VS`E^8hN@#d3+YykF{!J!)*0p zXQy$JhbR5&qbiNFJg)MPq}jiUzt@-+zBWT^N*d1PdJ4yMP)4Ig!W&Nv%yMJM;^bK2 z=pzimJyGx>a+V(&!r#;jlq+Z;p{CSIgbylCtV5?jYleIL1Pjzk!e_XL+O~Xwm8KU0 zmws;^UmMC=9vk!1A48uUZuOilUq>34HP?<+r3j)U_KE&GG4q`se)xAZPRV@UmcF!i zP3?RUKLCP;ccIa8H%<Y*f38=rUIfa^Gi`A@R-s;fw!(ytA{`NUc$Y|z=@_Qt?cPAQ z7pujPo`18(wX?*j5wvdZuCtex$)D)<;p3?t$`_~|<bsISzf4hUCF#gp)pR-57Xjxe z8TsV46^%-xzzf@%KYtki>lkE<g?~rmIbw*-LK~xD-QGY<^%f%#DcXga42|QMafa-@ zTixC}p8R54ylE>&I8VMj%G|^OrpT39h6Bv=2wMi5d54BGt^SUwA7Dl1od5#V0FJ3^ zG+-v6A6?$pfQ5j5aG9h5D}fv>%TNGXT8^c4bRy=CzLVC~Rp*-bG9sfROKGerFRiXT zqIi7o6lUP$&zXmlYER}yI<mAYjV`4lOMYzh^|S~XswZI^9DlPr15PE2i@p)>_33B9 zKhOtJSgfIIl5X!@Iw6*Jgu@KW)v)ZC_V!i%z!LA>3S$J1Om`hv{O9W)@0S1J@g?5p zDvS4S=f{_JIKXT~-(d$BPjt~;2N*2<mj{?>*i${x1&+*A`UG(3FZu-V@BwO$T#B0= zIvi6P;KRBny9zKqCN=Y);%cX`9&cB>T<Pr^=AW(RpN;g-Mu}N8;*S|{SYV^=>hV73 zck-Oy$#Z@u&-tA^C!KgqNB^_@*g6eRtgICl#p!tX7a4@5Ul}EfuRN>wKZq0l^aB3h zuCKpFqN3jN_G5Ko?I<HFu+fznTGECsf1Lkez3=wR+7Yw={dO*oL-an=Q5i;o%}yJN z$EP=~%tBLb)bp1k8wI)k2mOlt!->{QX)4=;<~7G6CcppxxnCAHW@S6by4@pAs!ayl zFtjXcC-)1P8xGlaEwIr=Gm4pKr}E2P{D<`*zn<vQdshXNH*tAvdRel9|E^VeZ;dJs z&#Qgh_juPd*2diMA6j8rkVTguCTUeGKQ)#6@X8or>A}=7Ef-cezTI`YFVAPoM`uUW z9U7{&gE3t%>FnLAkIybgSPc6B;J|rv*q~}S^Y2}(eFShs6_tMia8pa)^Zefv{mWg$ zv;X`bpKk`Wio<m*?E?UP%F{mqOvNXF_~@S<nJE~caXkVTQ%2)r${N~?CFYB4yr#>k zca7J*Fr>;6_y7KQjpHld@35t1|21rM8G@ld{wMimhcO&HFiy)g1vZ0Uf0x(C_WvkO z=>(bo<KvSdu6xHJtAVxt{aNm_<rQH2wTw)!H!aEWsl1KKv;A+j&)t6ixAiWMgOAtR zZuwtqA3b!|0{@$M{q?6EqrCk854M+f0>PqY+s!ak`v*02Sh0EZ;}_zUw%YcCJN>-m z{~&(Daq-^$jrB9kYJ)AcpP}!_aLSt%;rk==2QPYBbg9h13YB?fh0A*-KR$?ZMJOvr zVBE$v9=ew8_qb+|7}dvOT9B22|1N!#ubhB+$F%RTMB_Zpd@mv!oyID3iARp{<>NaH z?)?92eD@^uQjBB#-)G9ooPRsFW$neSiYsMh-d{@QT&9cp8C0>Xza3dWVCvlKEGwCL zzN{>lE(n!m&>S7aN?xKl8hc8TXpZiSl?<Udw3SlQ2XpJR94p|HekffjSxj?Uj=40a z<;bQvEyrZc(UDX+L;tkW^tt~7=Dl1p@SJ{s!u4F7_iws^5a<1;R}beA+(HPWJ5`Pu zCsDw#S+49UHRmG`+_ZAMc?`(q)j_OtTWt0_HFK~oHhW>sh1zsV&E=TVaXc<zlPmL_ z$%UIqalZOf;u1ExGS8Y~%~Pg)4hy&UklVXA|3(db=FdD{E%QV*muZK~wAby;tCvLv zE^nSI|9XvB?`GHJQz+HsGHrHc-Y9c>SJLYA9J-9QIo2xz@QMHs8wHSyO<1P2l56tq zGTgRA&)Z5@G;ObU$=qa$!(~5L^uskBGauEj@`cG;5SwPjW>2q4&$qY=^lH-C78UHs zstj9n^S$Kf0XW1bLpM5l!W69yatpB<`&@iYJB6lKQwssR1VKlid@X{KiR7pJ{uuhx zj1+VTS8v))g7Hya+|TI|pYSBIK8TWVAE9qCrnn~4cL$vGq0i94jwy|i4-s9!719#N zw8yc84BF)oXWp~E`lsxOJ>ECYu3xlt`<}Z4%S)ZTSDy8S){XPMc0JyEs(j}}R_%b{ z_HJ@aqaKc1P^cf)zkuRiIF2)~MmJD+-+afk0<4Zc>X@+#Q;+Eku7+>Kg`9X(UT0sM zE%DxixQ+{V;dGY}Q_pq8y${!vaCIeITR=tn1Yse_W4aL^eLbDpG^~1T)?QSy_;Rcx z3@iKoes_)0>OpC)xXexV&Zd%h(<$msIDIow<;T~dig^+?QSejav<(%thk`A{b>&9e z9aEcwY4wp?+BHzWQyG2q_4D_x!W2|aYtbN4kFHdY9dw}@SEc&yN6X;irW;o@!4WY^ zLqqkUO3Hd|EO|mJm)#HT)x+c6hn)<!PhSb60@7kV+1(>O35`4nxS@*+^Nv+#p+b-8 zEUx3V^W>j4YuyO9ygXjq>kP+c#ud~v9&dZxhW*LjZ-92k)sx*W^7{+8zPzraGkVk7 z*2^Y7?pogfg9&bJx_v#BGT#)X_F<g9n)cFd&c_N}b#U*l-5z(HJ&sjdy<4#}x~`qc zzgfA?c9-w1YPeJnl9?ZHu7TEWlTV-~YOJ>q*Unva3SIlI$9nT!*AB%7<-1_m(dV|C zT)qg!TNvv-c<mteT`D2ZH)|g}(XQ-ztk8{R+$K-hn;kKis_u&3JL!}7guD)|BeH1u z_4l&_<MNBGdRdug0zC8MOnL1cx%#H?wr}i7*tq8=HIlb|6#RI+Jt9l;aXa*01Ek)6 zd&PNgdc3FPZPFgzD`<R=Cm|4RxcN~O>d7oF_0;((-Z!+SBQEn~DeaInsKw#_W?1H( zkT`EqoUdzGjALFwTy$Q{o3CwfIp%DMi{9^;v(Xjwi^tb3%oCmOn3JcYphEYQQpc3J z7Db7fQs$U49W#6Wbmlqt`r5QWKM6G<eCqBI*ufr%H`%dYJ<wCZy{G=$F<U3pg5DN} zn=<>NZ>2?e5^&WtEP_Uk{t<cjA0F|O%ln&a&jq*lj0yKZD<RU%TV}^p3uZ7D9KmsE zo8~?o8%pyXPDS*Mh@k6o?&y+Xjy{J|e!~U20eR5}y}0NZ)_E(s?T)mLo&>tp78XJI z`$p{abuvZopbq_d16;Ms+(@^qurhj|zFJ#zKQ@AfwVf@3F5;vAYZut*(1wT_VYuj~ zk4zeg_a2Y;-i-Gad5^|>JLh0z$&dHOF89W+j`#M;J9FV?Sy_B`?DF{RUU{Ab!0gUB zbeCRS0*yZG-Qzv%=(r>Emen!sD%zGx$Ne;F(!M6gR67bG6ld4(vGt|9vVHO$Qv>CS zu*{outF13xYNr+3g_F2ynK$W<TVJ~DPAj&F6`sg~*gT4zR>nor%IL$?)M+nyk9mKo zQ{;VZ`JRj38>VgE&a2a&r9*@#{|~csZ)e}bjh)-#O}Oh37Wx2f4s7rTw5<_(KW&ZZ z-Pjm=#usCt+n)W}>S2y5drhz9wSH|m%0M&r$)^s`i#B^$Xd#szikm5Y^3kZ9QXcpC z5)by1H_mAcm_iLsePEk&Z%Je96ew0Z7t45U17ZI?H%GTTv^#F=-@)(@JLPZ3l&hFQ z6nm)m40A+i+td;!dXPH|y|eE|>YWzZi&B1zKA0A&#YFLihyLWs);fr#W@qnh*Lphi zIQM!7<i&emoA2^&@y2eTOT+Wyy@{)FW!voW#^!i3&)6|t9_MQoNDshdQ2gY~5{^DZ zmy%n@lJgg0aWv_3&@qL6U)z&CV0BjBWn781RCmm{h8!O6<?`;a5#3{>qvO`h>lVkf z8|2OrRvEoRKLS#?II{H5Pm2M6mb!>*HAUSw4!s1p4q<c<i)*#kN8->&`sb(LN4T16 zwbni2&^`L+M;E5O?(!CRi(GYzV!bzAd(Oss_s5z}rahx?|I^t1xUl;)ZGSvP5Efch zZ2zj%mip#*NAJO2zb8f8{;?)Zs_c!8{s(oX&Ac(~5!@eajQY;+oPd1+$DFXxeV5xK zH@0Md>@|nu&7*TX=Je%mbNU84FqY(EtIPA$ZH}y1j0w)YvCh1bZrUM{j_1xiaa@Nt zZCD8v+mD`yiQY8nbjd=z?h0jTduw*D4Vcw>QG9mdYLvUllThmR^(n((fz6sdATQ4M z>R;DA`Nz%l3{V^nNO;`C<i?h#>n`!x*!th2@G`gWMH6mJUv>=C96R2mQw*FZxV@LL z0m33Kxg4twpbKIw3a^Uk;b@e!H_jJPgaGQIyJE<q6QLIlqHml)`xIlIPKb6PL-6a} zk$n@M`7xCuO94(sJU+M0gy)v<a7ahHem)Yw&qpxu;e?FNr*P$m4&b<BLJw$!2Y5`| z>6xaV-QH49=0zN1|3u(hTo|^gW{Bb^hqnXO2#w=L19bLv5ocJ=ytoAP#XrncuV{4G zJ~;OICYYjcy&jABHpY5?b=CO?x6Z<FVDp9I*&I}`XINRB&$2t-bR1|KRaigoLPQj= z$8=eX&=b8i{T!X|c(0#ZlC>>875xl@J%%Q<qk^b5m5jlL!!mYdrQ~^i9y^Ru@~l3O z;Y=xMr_ZBf;1MOv^ZhQ&l7|MNP7#h~)4Ri&lA5T4cYDd#+GN<Ql5C97v;60;9<<W; zpM9#Ox;;GC&JxJKuHqac0B0VKRrBa<+H^T<uiMv&j)y4Oojs3^u<q=|^r^v}Jx%}6 zkbzbFa|8CDY2tH3_B+$W#|AnnIbO|e+E{On_BjC`8@z>deu0k;wUFOr+UV8R(B}($ zxS&rKd+7u|eVN;<73B8n#d@_M?u!3k;o~HsI}KNLN;C7Sd9^3+`eCT$=X31j0w1Bg z*Lrv+pQjTxS9W|&i+7D3J;jrdkNY>9sd{uf&u59jfEDPea~TJLM?IM*aQ?C1l^s#j z<Lh73;XxPjE($|7S9brJF^*Mxs4HXdT1KoCXKy&~@mX+UNTX<0HNZGLT@dBY_E_9z zdlsIF$Wj2c2Nhh7xO{ZPnct#QczkQRg0G{qPAASKul;ky^I2@xHph%A*d;yLizpX; ztaW`)-A0Tf+3tN|K98D}hfidVxUJOEbe8JMKl4!j4O@J|p?2uVna5Rko&3(;!nl3K z-W$&bP5F&Vs*_*mIyTp1`KH~j=slCxIB{UgEHGg_!V@E*FwoCyv*%L5?(A2>+}`VO z56>=NXdryn$=533*;kDFr+7#Yx2jdtsK9w7|GEu3d)D;LR8D%IA1PpWw&wI)J8l1g zziJ2+cU+A=X^R^@-tEth&xr2m9qH>`nMpPOAJX0iKI-bq|7Xakp~ikE6_st>8n@Hk zq_qnv?3PqpGcY6Hu`?A{kfaMp8@0IAl}ZA1D^E@a`0m#M{=3rBZME$FYD>3uVSklw zYNbthN_;>PAE77)c`#!@;u8sq@PB{q{mvv%+wTAM&kJVme82bM+;h)8_ndRjJ-0R# z`%NX)r*aQf&{*$>E&oi0wkNB0G>-a}{LWI|n<?-0xEJ&&+q$^h&t66Dl>d+hi1jb4 z4m0hY4ci%@0T^`>&3d+6M?>bP>u=Ume^NN<oeK4N*|+)CTbc~*NLFnxw)0xbJAPI> z<Ec2Fb5Apr;8nkzm2UxXvf;j{9Ist}lPdN)KW$(Dx8>e7Vd?b|Ku2_4SqgQWqf1Yd z{-XvY>G*nSoG1;6v2AKcE8CjnrQmj&2bjHuR=~cRPD0<lDUoi-ON~i68+y{YaUU7P z+aK?b;1bj&Sykt65*Cu^<Z3ZD`E=C|!KMt1BCe{)6wZb<qsZ#T%fsmg=3L6(q?vMU zF1(X$!;)?L&r5qdL1ORu%-lbP&lqzljHB)ZFq*`^(JD098s#>`%rmvJ;4y*Qs^OTC z_;5smo8ss4Sxy?xxj@|d5Qq@PBty+n;f|k`!OuSXb4>7afS-Q0mS35H(@huVzebw{ zdCuD`!to6s@y!6Dpsc7hP?>q2YB=RK?2T=%ppulG;{NpAk(9T276n27W?@HYl{Y`G zmzpx<9p+_clS-G^AwO$;E(z#b^ya->82ZKglMRzfW1GiQ9H&dm(eP8iTQ;40I6R65 z{+IOx6C>@N>b=0s*I-=!P`l}d+oR#M|F9VkhW4m>kZe12-dW@Nhswv=&r^w5CeDPm zc>Fy9dWmwR8FSHE{%_tteHvCJre%z7)q4}wc7Ep%v2cEn#woj3Y+BMgk@VgwSaDbl z)|$b(v(oiaQP=hEjw1CoM)5kH5*_cS%lsK(xxJ<uno8Y<6S?bg2#9~~v|(w=Jj&}& zH*Blgg=_QWFSy@>f#RL#_OqxwBRA=)7hLaM?`7PiQR+P`Ixk<|=|1xHTkT)fR<FYf zMsjIxPgU)4+fLv@eF7g7*W0D_uI;p4s}Y&122xe6TD+4U>jQQ5GqCYccl`3!Sk*SK zFJ9Gc{5WCKmv?IFHLwfW;eOBUKgGJ1Vm+&BPd025BzS2jtDfg64DWfjs*4HHBJ{e> zb#3X;_so3o;?atjADflwF3AjF+4!|thNeVErI_2k(9|A}&N8K{@V1;1ovbD#TU?H< ziKgSxI)AySn$&F9pETaBL1%YX{<9j&wl;nuv$z6|gw(OtRK0kNA>^39xPo==xcQMX z4f#`|k!rj>2JosFAM?+Pl}rj7=C|dMC0aVY9TMwoX-txt_fIFhJ1d;#E`%yo759#r zmo5`H=}j8rG}q8#%%4=zTfzrV0rB?6D_pn>8(JEDe*xAEYHp0y!NPXv;rPOwGIjOu zb#sYGI=3hkt9j9z9v!C+S7KaSsiO!f|MqAkojvL_Pve){Fu-_Vy@g;RWQ)hWo1?WU z@2aR;tc-d4V!y2bE3$G-_OIBjrxAIgT*(+X_q95|Y;~)`QJ#)-5kz?5xMm=Fpa9qF z64p~yd3nEA;WE!q49@dy$*T6o!n{MXKU}~C%iw;~;mm>x#^4$uk`^YrA%@kJ9kyya z-s7RhNW7#GkZT$dcUFA~rWE&q-WwTBd2|vY5a`Ib(qD}D;^rPT>r-{BWSA6{Rx*s^ zs*lHvZQa<Pk)30HEkyi8ZZhJFlk8;bw7rYS^7QxGUi)aSEFuX5b+PKrsvYh#2M`vo z9r1%_wd`H~W~}C9Zrt$2kAQqP_poUz;01P=k<2PV^C$*kTyI3}WwtX+N1T=a7f9(_ zY25$z!0*c*A1u!lq>pWCym3?PH|lRHcYAb>*8e{)X9%NnM0QT|KNvp4yb;+u%^%{Y z&zPp76&UZ4^Rl}{DH$kaSkoLY97VVp6>_o@KsaO0c1QMy5<oyV=*r%!%=EJ~^X-b$ zjh}KG&UYJb2&=g|O-@&fJO6QS{n8l3*%Bn&HjA94+r;q(4XuHFl6GC@+2q0QO@_&c zxFE5r6Lw;M0Db-G{+C(;TPD;4UqE10ka%8epP?JKVOkh)xA6bI=n{k9Kq9Avo623$ zX~)sx+iBhcD*k|M_hSA*US_U{hD4flby$GDSu7d(M|qcOV1B~gS$zQ~?LCiGvn1_p z?;WxFPstya@tIyUT%sT24We^b!RPsrmqcNzzqwHTmvdKb2Zmw2WrprUe_}q0um0ic zXQAd9mRMwhFmM=a(1smg$$;W<%V{;v6umt^nHAAxQm!^nu<*V48-Y~aY6}E!g1Per zy)x<i1t^n(29Oq5=A8cqk3MK|HHi7m{dC`5+CGOB+SK5Mqxq{r`v;XU<F57i1ue!& zZ)f3@jIjYj#gi(vN?hniN+yT1PcQlq2c||is~!hBAMVXw9|l$<L5J>FV{UdY11_Nr zm=mL%mFx8|*AzzV(kdk8Iz|kARPSh*RkNyqGfy={S?gA9)kv~K@&eC9i=9-M&fWgp zuti^!TIlV;@ELKdeurG?db_oXrl_nm<wc|J<&URwDRJ~Xvn7RhDC9Lt3qq~y9Xma> z^b3E+z%~7go7*hZ7&ICDtj5^dGrJ#%Gu!HhOvyp`Y**V&hegZgXw8S{qv5+t)WgPT zh3lJ9JKdQ-27M3F|6|kK1{TNe5^W^zFej1N;dl?RN7(Vd6c*W5_*c6PZ#WxvxeYk& zjGO1?CZM~%?E2rAs1<t54XKJSW@fgMz6r%WC0S{V8=B4sJc!h8HwT|F9d2ObgVzvc znIU|NB7t^rrtUnWwD>W=t*><bZ<VI}uSQb-c-Nmzk?C+QfN={Bm#S@YvgR0`N_0G# zTfPE_)42`wnROX<g=}w~FQGEoRr&oH-VN*h_@MnG8G6YLT^dd15=-2g?an=oR2B0R zOCYR+qU?%fE*%lLv*Uhg43|<GorTS8duerRtfp-dR(DP)a6AYj*!1Uy!AZkz39Q3~ zZ%0_uWpcw*^%BYlHp+S(;Hl@JLmdyxV*}Knx+9B!Wfb`z0-P#Juvkvpf}PlGdM4PT z{|w{n`r&BrUli=Dn9XHhQbuE7Qf_DYIm*Y5TsJ0@(4xOHl>uoA4ri<a7=cGq-#u5G z`VhO!g4=s}k)FU2oBvyE)uU_soO`sj?RDj@N2Pweshe)ilFeZoWQ1L$`ZyM_?I_Sa zL*UBn2(fKUO&?V?Zss*QU0#Qgu6#mi%^QnfJPYTUd&P2*pBVNj@Ny5S1E~t}wdWLk zDdt~;Lg%b}3=JUF&?!DLh6OPNUDe7Kb8W8dIgM&ksD}z^_v@AETw}?YWNy-U8ogO` z!>Cz3rRErO7KX+2n4@A!EU<~@=n^IPbJ;x>HR(@j@kRYXYAma?aC3AHGgF(dcSjeP zHpb}3!_g(=QtIcXyiz|hr3?JT|9qCU{VHmSc_*moA4+3gdA`3ENf_tnuZ&8Bq?G<$ z1s~T|I?dm}DJ^sQJZIV0NI+@t@c*PXF=gz$Jvtt9|8WCAEh+6_Pmj8{CY+J2DX*KX zJF1T>^UEaP;{Ut6n#MNmNO^nos044Tm>voCFxXUL5R`=Ws+d4fOXZvTcvm0V(48Iy zuJS45aw?IzNkhG)%c2ZA5Ch@G;nGy7GhXwQ+TG1Z{Y#Xtd#m{KMg4rQ_;W7})@`*v zF<+{{@A#<e)bl6q`iYumdwK^yFM1k*!`bi#8<Dg{=fN-e$k3*@*y<0*YM?WQr&g~z z^r}^_TG^G>8I=gw;gb&NeJhZ+W41r7w-}<?=%-6{13ccr<KueFfs496=20EEt!s?3 zY=)RS<UQ97J(U><3GhCB^iX5{JNh`Hx`p6AC618*CJeJq{d@d>Q<=L}<A6TiP$RE6 z*}X6xvX|2Y09U@RT>biZ-Ow$kJeW+fmb4{9+c+8J);#BA{)?p(P*}HAv_Oh;^rJ|M z<wa5~x1=a}dzMy(1;(cZ4l3q2{|ov|dC<+fR5_D58@c$_)qG;%;!IJ!Ebg3Bo<i@{ z|N2^;ya5VqCmnNlBb-AFA5NMHzoRsB`kba8Q`ShEuxXO_Mwi%vOguVXUSeJ|c_MY9 zAhs5C&~h{zXOa8N<Z<qi_YIHt@c0?$p8vMLYDe*idf71<qk1OpPS?EUH2)`W)83K% z$5=?Q6R~MB14$(NSj>A0KD8*F&c(&2*vd8dq?M1ybM-nW7lD{Ziy!}`sv8w^CO(ny zm@K2ubtV`!S?(rPTa#>eu`6)*cA0}&FjJu(DjB7+ca@o~fcSHw3v=WU7GEwH_M8ah zS6*0x8Llzy(1+$mWhY~0of2A=dPyI0O#t1{4jYWn4g`X~X8j2zp3~zU09tpl=@X=x z?uK48u`A!uM~|v~HU9*p0UnC&mKb^zg;Lf|Mm6)ID%E_mkUXQGUHaKUi}C@he_W3Y zz=E)@y(voH0xEq^4Zf+5ygs_~Q%$SrdBt|a0r|fV`QX38oN(&jJ`;w$LtqFReR>ES zYQ70y8t8kBAUma|-qOcw`q-cEHbZXZwPL&HD67Hgb^~?*hPLMlV7xU1jG*1$4FN@% zpj~i`)Tr9TD=Uwy&0c-HlK;ACSY$oe-*c6zLx|gX2I4q#BJ2fVzzB+9h%smrt!|5f z2mI0`;*;7KP;HhCDAk>Rn-x)d0(l~$SC|bS2leryK14gPGMeA70%oN!qy1V?tAH9% zrha|Au8;2g1Jr8ub2a)bMgV>9^ak{`LtIpBhC$Dl6xz2mKoh5xr%xY-242ZuZ!0T| z$4#i1h6CIL2dS^E$bSK>xl6Z6z8oUa2J*wy6ym7$_rQ)WdGyP<=yqXPr{i7!>X`p! z1kE-iQOTpZakcCcpu7goAfe|afgzE~D+F=0iv7c~Z%P+;Q0De0Gl%-pB|nzb%5L4r zWW$tbX)-4PmA!v_!O3i72`WJ(eLR`F_hKWG=Dvl7Q;!^oHv?j+>nAH++y-2>N!=`A z2GSkQO4)JbbW&TrH|5>2HtD_OqNsR@7R+I3?{L~Xne^I`=MSg6)3MXvT_F*`|D4=a z9;0_i;p`o5b8DW#FU1Jcq20-vZTO{>ZgHA_$>NYXb)mEDArfA{+)=uY#dBp>Gvtx@ zHDdywlquKLGFBJIuNkkeDc87ATL%jn%lSy_8^Uay-ez8g5gl;~kUv7qxiB2&^OAU2 zks%^A@80#3IEUD3o?>TnTjM9w4Ub`k593&`=Hw|AiLpFryR{y|*FJ3dF!ol{xtrfE zO=3w&U3o``lP$N3*1EL!Hg;mRk~>^K&GOQp^6yyd`jc@4`;FawIn{F!UXn3?CiaOY zavV!Fyp_aYhaTFap+{Y7#bTJuoF4A1{FEegZ(o|@yIt(r91k6@b?$4=yvHu@Th4d3 zB-;*@jCdh;!|7CR<a4DIegs4h>%A$UFT5U&(Lc;Sx17%|j+e@#qb`2IFutnz(#h%s zXWxETv+v8Cbafk^YWzqtm)fZ*E;p4r66GO89POi}Y97ZrNdwuvi;m$i)c8YeuhozB zK2?zSKnu!X%6kQ4Y}>2o1`AsX>yN>;_PD56Ti6Dl6G#|@P8g6JzdQdEgyUprr4S`! zt-&B3QMl>#_q^P92G(R!#*$-DR%jp8t=E91qLr>cb)$lj)K*rvX7|d2WYH&AyX_N% zBznC?t7(KqQgQ|(t5KcMiA%wYzh`Mbd;fHbQ5ofVdUY;*HHKHFV?>o!ZSyCF-Q1L@ z6KXXZr9)p0x@@uI)lB~oK%O>(W3)7A_Z9xXY55X33L}b%hs;n^f-t13H7fG`6*L6$ zo?s#Fnvbi;^o*o+ej&nDcFY62#;<R`x>eJ@_?NtSMbcERaZ9PQtc-T4B@k+^KPdl- zO1A8E-kgK#?920gM7E^@KZ|5+i;*&cu!jaYlrs96`4>}7&~)+XzIk$mk?RAX0<+*G zQMMxh=D$&Pek1xso96i~Jw0WdQ1LSXR2T3@&|Rc&<Lh-xk8!SBjQd8(4f1D+gmI#P z#Tq}Zo5~PzX9z{e@)A0ypWs_jFyyh>f!*IIfsAJ#JJ5g6nVZ(w^clQvEBYS^AW$NJ zdX~IifW_Nln^l8q<E8+z8Ron9$AkJbaZHNNdP(oefG}LwYg+4n&h@6Qb{p`yyUKFe z+$6ToVbpTpYn1!mVdK8{W7<!J`rVonwa&k?F@jzfdOTV4Jj}4RwB2d$1i;Lxi=1Wc zB)opQ_~$}U*D>+MI20%_N5%uDn2Jk}xp+!k^Zepe9EnZ(%}AVgF2Wb9j&%K2&3zM) zCsOmmd=&e>#wcDpNW)^qsZckAPzxn#?gtSkCNiE(!s9|zKP#F)mH|wx7eCiN8U+j$ zr@ce$JGCc%BnaL1gxN(Q=N%gZx}FF|PuY3|wtS_^)2;Xkm4{FDJV3>&wqr<!(%{`a z=3QMvli-&1eArTDgdwO;Y-H?3z1s=`J0zNDxeM>9@<dDATlgb?Y%I4Jf1mA<B%*sw zzjN<huxn-@E+y2})Ix#&dDr{tAHg=(dS-s);v+(-hP*c%bzgXqBH|}j3v5h)R6PvP zBH`D0fXGyO7Td7>wRR|P;Cub2a+5;d)F1W!!0<!(WC3Mt)r3)AVgAWn<G2X*8e|pc zU+oaaSywB0Qr#^V!|ZE%IX@eQIY^JOX=$%rwymcmOQgLgA<*aWB2BR+WF0+-utRAK zb)f5Q*LyU&j*&`v%$jlqp{aYD#1En!8a|jSKiD_mldWYQk@%6-^d0mpF&>^YMk{+r z!Gos3W+P=7pGH41?^2SFnnL`%J6bvKe7<ePb1P{30Pj;61($A9VU67o>4=|rk^;wi z(}eXBw~=-zcAo){q23{xPokQkJ-#h)dWs)bK)Fu&rSz-*HD0qlNv)4YMU^Ce9_=)V zx^29}NWvpo0i0<;b>!S=bF!}>$q^P)sFeB;TOW;TF=RH;9{$yxrqbPdgwQOxl~<!5 zzw49KZ%9fxC7Bp?CkQEl>}sS~v_bTGK*yz#o;jnt=Q(`t(W57w%q!SKXd@Din&k|! zwvF{n#K^pCn36T?Sj|>duIW@4e!)zfXIam1lUN5#$YQ{EZ*&Q1)71rhvTMWVl;~`A zXG(OIzV43J@$6=)vBtb2JBiV_k@obSEt;OU28=2$9UP!|0;rO+nHsfpL<O9PwLYjK zUZ_^S)P_E18=TX4peZ}|v>1gK?Y<PDeR`KrCkbr&e!%#Vp#-6CKjZUBdY~?l)mi>4 zFsp1ZxXL3uw8N{c-9nvF_IA;7xvZj74oe|m1w+*!2aA4vP+8p|?HGfGKEO_;V77(? zWd6|yoXkI~Jsz?hMg60X&6}!bq;=5~Q5HX^?BM5gwOZdCHS|E)w!1#9OkpWJ)0^$o zP*&Bl%~?K)de!Hro#j_4Nu@grHFFjL@{^8Se}U;c3Gx^~>X3D$j!3_rvQI!h;babl zsey;P^iZa$(N8+d91xt)9<25@1xhrk26~j_%!hIvP!so>`9*5_F}>g0_#svGk}&s@ zQu{SNd3`85qpSg|JIY7>i>jn|-Uz;?nN<q1xYte+0Fn9yPT7f;-C0!~AR}YKV{5|- z;>J+Zt7=*{fcis)JdtsNcl0|>^FkFjxLS5TeW8&qXIZDEAB!OLQ8WLj#GHY6LnUn+ zTOJG1^b}(~cwIo~-BhXdH_D!cDalM~O1@+B@%AyjeacxTe?aooi{QcZo_UM-#ki}) zkmpa#yH(`%gkFk<oS7;>jgRqU`c4(i&o9>l4eWH)J~}_|BkGc9lj%Nz0hB$13T}=@ z64ghcY<39w&0G*y%Ktlh=W10U98yoh+0w0!p#;;rCwVyaeNs1`=zU~xec&ksmRSS- zRJ9?1(TDK8r8zzLBsCj;_JlD1Dih`@9@pP&?4a!EP=3l`;8O28@(*b3G3%Ki-{UNo zf4@N3t@k=@LhmDL)6f_!*2(;*8sJH<(`@Yj<oUVjkjXap8WsAvo$boi_&2r|L!I_{ z<6qc3mN&z23|43;KN%SzkTa+ycyVvAhzNZGt2JLmwm?6kQLRL<Id!d)^^0UhepS(~ z1HNsmv<c%Y%^#7v|JOzNn0BzDs;udvT`0`VhijPCOVdcmG#EXi)E<2t;=@iNW0N|X z-vU&tg}gs9C)Dw)%p`c9q=rQ;pWuU0Y5uwy4jHzY^3Le}b1}=AiLLdx0lL~5ym=Cy z6>yiwRe>hJw7=2N1Jq27xLt99X7n4*@}<FxH{g~9_7j9HVctKbCFimHzZl%pIQ8x9 z{b^x;gsQasmN#402>$a_U-!HG%b*y0D~y{n9+l7Lzl8bnR?+h`(?mXkDUsh4cs&2N z)Lm>l;aqQyd_0!FOpj^c_c<!m*zGKTNpOqE&8`nXU<Z$FM(&f4$x3hRrf9OC88V)% zr>HAK)>A1HXu)MBz*^a}i(g_psCkpEIj(8JF34*0vkvKVbf1%X!oEbf;bn6mV@!ui z=z_AaZ`EeAJZxks9=*+!w2#73oO2Q(O?PO?$W_#0*Cvk2SZ?dw)SZ_fgn59I8AUY# z@wqRDMLLy-oqui1%Mp*Y(qi-Bz>amMEO4_}lW8aVhFQ+-15F&$knu+#X`~`EPmrLf ze^)+n+~ntlL8W~-hKGNefCH+XayXx0$SwCM&L^u+85uS$88+!X7n@>FLDeC-Vuk9! z{M16DiFJ}s*_s{Hsp7aJ7mr4DV?VLSqn3}*);`_12t2VHYV3(cnQ?~B0+nA8c#toe zm~3c7mh#@<X`~Dz#(s<#YOrVnnm$5fIDa#b?38h4bgGJR1t)ag)SIS&aw<wyI~(AI zfxKfK29rWbX5(iB62I-Va_Zh89XzXlo$`0A4ft6w^Q<XjM!I!TrM0U_{@aFOuPFb? zk^#LU{sB|CbMZ?qmMFx3Dod~D?9#@b@#x$PVki6e8)+`R9_4B3I)E`i)48c@=by({ zy0vKq`36WXT<0wROEx51G<mXnIZCPZA^^Mk>Em0A+6)B{#HMjb=Z!$fFtrx>B|5mb z$7`?Z>VFwbuNjs(F&w@8W#_tf;H}@XI7|h*mAv#>2BC<4x*6?Lk9drt%c-tlKoH%h zU(Wg}yM<W@JKzYi2Ta>8PQ-khb_fH3O#3rXe=9lNG~<;woh?sb3<FXa=VSWd)zoMC zuPwA2C3@c2;jFrj&eDz*wAij;T*;>`oASg8Gq}!j39V>_!Z0Q(9xgOUb{ir^+Z0vs z&?4K6EiIF?5F)R9A!9rxASEo+MY3Y=!YOZBZO1u~Q-krp<&Ta3Ht<vzHZ&Q2zA*mU zG`%Gl|D$I7I|7iTOixb(g9dJp23F5MUx2sL;gd~ElqAdO0rmrt9h_y?N<_sT#D9z} zktSnet5Y%{{h2R<X|P@YytA?n-6gx%c#}ETZS~r^^4_ix`@*kKiF_%S?J>1YJIE;{ z?|BWdlw!^s!TrPIFjxRZUH5$L$Zo6A4(35^+SP4qtmT9yy^Tb-<t9La^#@Uac)qC8 zT^pPLjBXRHuw$Ud<<@Q#iDJ{SkAOG8{Pj%BI@!=rl4f>m(vWUXdv9PON_nq&`=F$w zJwLz%$#aoGVx7}m!Zgry_yX`#l^I=`)J${%whHYT<z7xj7wu^?0B6P#V-VZAXr`ID z>OtA_Sm;q&4R_I!${Dpr++XEiF;(p6a+(C4k*}1J3EWQq3*f{YH*^2||FpHyECSoK zm#JTNvEIf1LG}y8V7%XTy#~~~>Gk8@^C4(q`iymCF)y9wI~Y-OD)VL%)PPMyF@`Z9 zYW~&eC|zZ=jA1y)Fq|~Q&|d>SE;{Y?fwX=n`xy%6XY<j&+sta2+5#RL<$O)RLz&g# zXVtav;3TdubVrjI05L)`Z6!FHN&M2#NxbLmN!$^lSHC}rpBOrc|A9#y2oMF%T7HLS z?;Wie(Vdl7BSZwWiGmDyszrtqthH62?#kyz!tX23l_PUzhXlxJjBnL7eKou8dbMUt z<Htl&0h-x90P%7P(CJ0YL)f>Vs)%XMaEv=z^SfAy!Eb}+CxpleV?(!4Mcv!btquv8 zlZnx1Mazat-(JKCER!8>XP><3T#w<aK)YsdO?1oni!PT<Vkiu&Ksqvg0dv6`!vXnr zewppM8EuRH+O97}I=srPVl-AiV2lY777|7J)u=tcc(+|l#7x8!%5PagRpr>k_)M?m z!3>y5d75RV{0@kg<*(;)f*SxSArPF%R8Th>l8NYLMA;$~05r<-Nj*-4D#^Ws1FZ~! zh*s3sAp^c>7S1Lop&60@XYO7!)7t|tc`C$m^9#DH0bTZ=B#L8*VJ(Os+lpbQvbL`< zfVF)!kKc8eZ72?gj?%sltp=RS4B!@^SMwb5n|4&ah7*t_!S)VLx|SpKtUO}5!C9t1 zz_7e-WfxYGe7iN3d_got^P>mm{fwG40jF!Fo4LF9`y>Z=CPJ}LXi1^<Cy^c)^5?LJ z0#8Cr`el|DXa!Cy4qNxEwbISdxkC0kKt2@5Fc^U&yVpt^dKS@Jp_@*ubyl{Cz>COx zl3xaSTLoib0-S}sSq6FCQ2(sHny&e0A<ytWDz5-xthnWTR}SRQl~m7^;f(L~BzYgO z+w!K?{C?y`oCX$IwPp9<%fdu8Tq@8>wGqy6kjZeZ{70le7^{C_A+=TKW3)r9w=nN- zU5%cjh+Zr!XPN2WD!BZ84p_4~d&2ir@W17GcCZ$9(2kinx$xhT3``kQaC=;{fV?gv zG4+`t`#!fiH+Bv&>Z`8x&dQ5f9+J5mOH*DaR&k@m7rIuS({YyGPXv0BtkV?wkgU@% z-Uw@81S@rJ6XQYq7~?TDk330-fowXD6rG}eJJYG-uC3{Yoou`=iRBWZFXhHPCTa!F zIkr!CtkYrj+!b$4%r#!EHm0tI=*rWjlsA}+c}+46Qni?tv8vaFPa5Ol$)2)9bQW3! z23syM%Jogv#2MSDOe0VFV|dHaUfc*tq+9c&X*mnQMob^=@h;5UoG23Rz(jAfupa)Q ze#?$V1yFj>_e)RGXYD|-p){oLzy06#ecaV_ZpH_9UAU#k_CT%ORtTT$DL+{3x-Iv6 zUBC4AyMBd1y6w0zwK-Ts=!BvAWW#nyrj?%or<u9Q9D2&#y;aPzY00gtUGI17pV~cJ zLv+0(tcK)NzGz2i`h-!4X<))win>|F54g@m!qu=^XSTSB8V>BWFW#k%nPqT7VxPvk zdJ^8&L};(me2bXmsdJoV)5Ro%jU+bg3p`Sjc6K)(v-;w!`<OLZ<&Us?gdAN*x_<Xv z&+~L^tOkdni}uDnCT;yzr&&i>h^7&USJR&_g~aMEeV)aw#%wMwyxklG<!NNd%i+Px z>ptjZN$~QsAy!0OAf6^{)X?H;c;Q9tvznE0I+3x}Bx+8*mQ6#727zGv>tJje^Se&a z&R9W0+n5LVam#w}c+y#ZAMg|VU(+Mq3WJ-vv9TV<FgG{fO=ga{Zq>Vl;GiaA4QnCX zVYq9+qo-~(69Bru8b(&Idj#wQMs$#;6gAu=|5fP2%uhdO_(<-CQpM!kbb!Z1NHELB zkT40rlO0bH;T*cCmZ(uTO7d~0m8c+dL^e8FK3#_LnU`vjsM{T{dF}2O0$Ss6*47r6 z!|8;{q8?}YR^R{|2M6g2bWtbK4P5HsM|tf6Fw;sQ5Y;{JC7wJeGKIZ}M{=ss^yhxT zC35D!s<-S0^a3X}8rEVO8f)yZxG=F|_0bWAXnKcxWl*5p9p88*`D@3hOEe4<s_XVy ztfw8%yuw*Q6Wk$gDJuLt8EPTY(L0(R5>9%5p?okFwa#M+$aS!z=`S{-z0BMbyrD17 z@^zM_6xJy-BYP(n?0`<?dlWGH$JEm?{~ze8TT2@f^}FX?K*OJ;0_Jl0tXhk#y1Fq` zJpW5(L558Mit(>2(-hgS@~|&?IYeB6jB{II<D!0h(@OGa55HsHcc>bil-Jhw-q)T@ z(GgTiBA01>V3yLN)gq9oH|d$dZ~3NLlCV;MMi4AtxX#LPmK4|7AO?z75i_2O^)8yy zDeuk9VWQrQyQ>RwhLk=f9~|TT1jVlg?=CJsMof@D-;7q#dKtd^S`E#(h&qP%4D1sP zC)OJW3q*=my23`c8NTw`&O{Ai)yhBW+^aFs9PxEBVdY!&#cS_67V`#h`E{C~6)PHm z6+K~Dks%mXiR$CH*22j^S>@Nd`S?m-jrP3ZKo_9^j@$|-B3<7xU$KkZ;x#mX5l4v; z*ogJi?1M4R@45}gfj*KtZrDQE@!VY@g`KN!TXaY0`0u|Q9=x3VK`%>!mt#Z6Gh5(9 z$7_u2UaZ?xdvPxO5zC5FmKBwW6>0FBmOzD?e53;ss_%nvAP0ony2E6X%v<-MCf59F z+tq1%dkF(kJ4{^^0Tt#aKhBt+yEQ)}=IkuQ^q!OX9{q27P;@dp^N@&%BU6tcD!G>7 zRO1Y-b7_7_>{q-zZCJ@xSjhkf=DB4iH||6%(@o@)Nx5*0n$M-ZiLG!Hu=yzwM1A-a zpLLR#%g?>LMNEs>K4-8j%j%H$8i#VeH|-B|?3!L_gRCG6F-NFa#%V2Um`9D_h4%(s zhVSw26-vx}P-L&7mba6zODPF6p#gbzfj^R7FhEmgYp&K9m9)s$DrA=yiSpUqs_6@0 zOn7E~PBGSNs2vpvi1dp`5;9|sc8vre!m&1J<$*nQm#m#MF~wNm<u!hz+{<oM;IS?3 z@|B(fbxv*9vsR7VZh-?fRTFL{-Ojx_KL`|Ty93la`j7+r=(n8Z*BXSC-!I-vF<fHH zH;L!wzk`6w!Du}f==lbI7v!nHAI0mp2YS;DuLdqD<Nfpe`4I2(ZbJug^EtZtcX)o4 zuzu#QD#wKh9Ua;iJ8w9i%8gq@()u)cFJGG*_l_De-i6p$@hm)yg9{FXi4He&OGh7G zY^X<vQzgGJo`&8#oMBL~9iq^r%(W+xYbxnMmuDP(TtB1b)2+%3@Re-1CPLQf#52u> zCnGG6!6~t=C$3224gad+Ofhdu%>QtL8C)nCG9~?td=-fYHX%3evo$-Mm96|dXIMn` zxL*qpFa4-z^0;f`1Z%>VJORwX+O6<p8Rc@C@1tDM7C};4{q&<a!d2iCO$D)jgq*3Z zF@H`t;StB<l-JaPh0575bz{8hR64g{Ow5~u`^KqMj`M;I7jjev?@FvTMna$})fnT< zMVLm2(ubc2-}LD*f|22LsI$o(h;9Uvi+SOw)BKd)ay68=ZUSHKT)cGznBjt{#CrBC zk_`!j^;1BGFN@AA^D6TuN1G)Xl%@&C0uVwyPAgM8NR)p_&_FvTHj$iWobpmXBgDpY zvxt22f0Rr&9As2)*_bN%Kh{~4UKD$P1c|!}kP_vpqu3YPOPHRS4$+CW5dFXva=kjD zmWMmpG&E`(^P5_7lS5TIykJZlqd3Z)6%q=*#1IRB{69hbA9P5L3(4g2%5f~C&n3O* zwMXzidjz=4&W6Sphdm<kba;ui1S2EbS&6gZJudpGl?!_kCq|Irol5$f)rw*EQ1>+) z;li;AiViI#gxA!KsSwey{%MT-w~`HihiA{Y=RlGiVsMkiP3OLgtefmVaboLhr3A#| zsObEPlz&|%sv`o>)b(yiXNv6Bgvad2jeAnl$D6v25oMbKKUt<uOCM+Wut7aT<!>gP zPqlH5&XZloa5ql<=%5`FQ7HC|F_3^%OH$rL3&1OmydSBhqE>U>Kj9Hs=E<ao&3NYS z!Tl`m5n9xcZkReI<#CAq-L!`UCjPG_635SErnNL)wa@EgbgOr8uvqt7eCm1d0egxh z``qvG6&pzQpO7Tu)*v?<@tU_bK4k4c)5EEfCcGWdTd!Q$(X^7lOG^lsAPD`$TCM!w zLY`r<JE;B;g+ZM$Zii386OI(*Wk`0)Bt)o6Im?%i41>K=*Dkd8+wHaK&+wLpx4anw z3MnVZSyL5z3K7k0dSbo3v7_l>){vdfvPZ4rg}5sb>iWk9JuPwYqK*3O3iD>B*nPei zR~zAl7ZKYYi7;{o=L8(JJo?#rmk6>;WrBN7*|GsxGC-pe0C1>g%i`bQ^d?3GB{y{t z?TY=MSMXxR@-C?;y|(A0JLJSVL$1H;nB*<L@B6zBoTt~~0Gy(VB$s12EB}KEV;+vy zY~}cgmRMJB+}k(A6ZlQz3H(aI6S!=MC-9A?U-AQ%03ttN7AB|Q2aH>^Tmf-0lNa!N z^Iwz~@KtcKry9#KNP`>e1dQ?{Ct&!!oPghKjIeF`mK=b8jF&eKz|R<e=gh)Z_~|}? zl~H^>-$1*b%LXG{Y^1P+>`OAJxO|s(In93snlkTk)a&CU!1Nw(AAa7in~-jM6@CyT zk5p7Q!7a<{#Zwg8?P3$)jWb%<%qYcn0RD{fYm{HNvRy(3V?TLn{-ZT7H%5_D*DDA` zZX}xqk&jRYDw-Z1U?35v@T!4TaRw48b<tm*L8J1&0ET#=^%ZE6`vd*N3Tj<#-HZ9P zk&4|xKVza2q!EvsT9AtIGX{Kw!8%xPUARqjf*0~`kON%`0_%4C+*#~Ubfi4_Ul{2v zz1}E)a^tk%LzhMH!(AGenr9ZjWc%T)8prg@PvwJ&_gJy2*;Hku%Hn=2=V2c?@3z(F z>R&Mi2+<}v65Ft<jyoQ7vb3A^ZigG<>}H1vIn`kfzqh?xs^|*0ZBd|Q9Rk*>m3`Xt zZLxTih<#r@Up4Gz*?aL`2AS`k1N6x~M=^SDb&g?|V<O*aM7PW<4wsV+=ciH8+<t;5 z^25l0nf)bIsb~+;M!cuIomIC-U-YI#cQc}!o`jvGa+h9`%H4NKCoTgVtG(n&zBx9D z!Q@WENZXDL5AOeoc`s1#hzbe<Zih+b$}UXhnlD@plVa0pICsNbc(2k+w?^5u()s8< zoyG06{6XGRYd-|tzF*>GA1C405e}t-fE9$fTzZhcEs>736tmgs#Y@%KCH?ynBaSRR z{PM=q?~UC!jyhvqN8;6o<NmBtZwxn|CA>p}Mf&%}NAwmlk0*0iZ}mQ6AnazRyRH;b z!&w$Ht(FC?fzoYc8)hJ|4Gz|p7;%US{aFzraN0`a)vu4;cohX`HGq-^<NoZC-W-BY z9q#HirA<fr_Z0xCr9kz*xYz5=DT{lrFU4AMdNCQ}BM#Vj$8@r*H}>dD0AkBj?;E=@ zPAR``ls6~h?JE`;tkmUoY=nY?(zQ_l=FJ%y_rC!;ucVEH_j+vUt3`YsR*Q)dr$8nW z)@hDH6#8>K>20V}D^Vi|QD!dB+>;=H`MabKu{fTN=Q~;faLTZ~FJDt?rnxb9;1K ztm{~zx>I9+A+)QNQ?bnU;qjWI-dseLxux^21Uk@uSU~Ch`+ynXkV+FH-s#_W2A+Q* zJbQByALf=R9M3`c$y+h!&a#g}nD53i+u*}@vUcrdA>7N_^)Bq}PT1L<SFvBX7i-(z z_ilB1QA_UXBImI-Q}$y@-Rdk3{~2LBBHZ5hxp_ZZdUv#^8>rme0}B6=$o-^({yEL_ zAn`<Q!)5#+1`Jyxzh(}`{a-edDenJRdE?$&3FP&Fat{<JH|S;mUPw3Y|JMp~E<Io< z_<@H<1QdKA;l0f$d8SQhgEGQu<^ZU8JCXaJKj&BfUWmO=vW1fI>H{%E9zgs!ue}EZ z3Sg@NXW69|JWapikOAJ?0W{PMplSoCkjwr5(xfdmK-FU(c$79QTmd*1mXDdn)QSM@ zIzm<bdkb*2o&ndTCaYlqxd+sMv#c51g0}nq*Kn=<J-D`6xI9y%L6+eV23ho_*om<Z zbXaJ>&_@j<Y84Er%D6w*&JO69F&ms6rY`ZB_bnMK;4TwAm=h;M-q^-Fi15NhFvJVn zOL*^_iBK&0&Y2}O2OzHD(0=1*<9-8lZ<>Qe1Y=-G{-j7gU~cfVu?3RP9!(Jwr}Nih z`c88iIy4M(1JYRBUni{kYlULV{?2Aw0XYukg=54A{k1}dw^1bxzdN%F1tvQu3`{^{ z*rvD9aQ56r6?K*!2^$E6P1|aLe_BWeD}*!AzIUKFqiuGf6-Mc={{b~5yd$2e*DwM@ znN)BlQ>42;Qe&3?&nZ(c*73mGC>UUjX41q)ydxed&LR-HjuzNttoofZP#zyUJ5qQz z7JfP6fJ8w9O>DF5{nh)tjjG?xZB)B)e;y?BMKjHrN0wxU%%hW<M|X<@2Gi8cqDJ<_ zQ@LBik`?1M?|UDQ<z}3AmSxR6STsmR?<KsGLucjNsts;@W^D^>ZAhLwV5jeRGs9GO zYToDL{;h*##X@2cDE0wVXI62yt)k4ENl=Oz?^hpZFU`och<kUIjj{Z6`v>yVx8SFr z{Xl+7*<<1Ax8S9p)z*Hz=Ggp=Ko7%1c1V@n9PO)mi<{(}=4+wf+}zVr)s}@pYJv>m zgntFDdQ7BK0k1N&V@K2CSrhV|1T~fhb8GCwQDN53PG%shQOp}hEyo!d@inSo4##uf zet*bP5~G+<2<dT`UMQaX#;F)mNtn|j_|q;cVbBFoVP&$DyD-#6S;Q<)0_F@^Ky?eZ z0WcN{3&MM91d-r4-~v~H=u~3K8PJ?m#xg+@nfI*(%jw7>n_-bww_+oRIHsktNZ+p) zt79msvDv^t4T5l#L5N*U&R$p5{0iGVh<H~`k5tp#BfTi>e;j(WvnZe@<_C{rnS&w3 zll~WZszt0w<60HHkBc|XgQx=rrxj<AsI>%Ar-~V_!WyH&pyY4}S-eq19I(|hh?vRn z`$P-@D?&^+Y(YzvOHiwhkpF!NqXE|&A}ayC<SI)&lBmYOl@$@I<FvO?#hvW!TqQW< z+{|k1Te07YkL3TEC_1;U7JH*^ZmIrf=p=vCxPiuvByOKSx?h=_*@<_(t;)^MVX;R| z75}KG3`l43`DQWn{7<L_d6!M&d=@(mUb;i{39CiK{lA)u?coN0gR}u><v6JlITMkV z%AQp<92X|pr<Mx!D{jf|OgDN!&v2P$SuV)ekJU6#5xPsHG<a<&1JClm58&{iQIMJr z4@;}n9NJzVo-5m=qR9G0Rvwv^l7Jm0YqbumQh2H8+gLq^OL<UGnjSZ|N)mrTkw7sx z55?d-yL{YdlnR&MT6}29C>AQ$-TQUqI=5jb2Z7`M&sV7p!ZvPW4}-93UcN1Ve!My# zBb*cAADIJ7ZoK0DSoKc5+3zd``#X*m-XHx4De08P9*(+LK5-ykb8~c?lY1MXf9d;o zQum_!#Gg78aA&t2C!)<d&9g*7nbT+`QFJbUgAG;u6G7wA`q6;8GW!c6o}G=l5#h+v z{YJD~B{Uf#-yipXqL9a)=}p|*FCC>=62s+)qlGe^l<7KJorfwr(NQ+oVrt!4Hcgt! z1_e|OT4$V}1jWN*|MQXoD&Ppknx(Jop=||N*1~Jx0w-fvJxen~RhFZ1e}e)ld#g-n zW^X@CO4S^s_9gv$3efGQSam+`9racT43KU$GxEkqNCC3h3r(q|7b)Uz*l6k&97Bo> z*4s^{*odRRNSBotAiY&4=Cj|#f_sOA(4hLb_Xcno_P!tX&hm15^vV7`;tfIn_K(d; zdr9QJ4qt(aYG4Xp8j4L9m6$sUi!L$;y%<{I+gfseuR^QDd>tJ|i*BPTM2kt6YT3O7 zj%9kz$PTUP$k|XCMKSmF_q{YqOuDT4D9f(ZgN-iosXw;v^6n}!{2@K&(*-@|Q!a-x zVW(D)>FZ`h+}uyC9`p04Rb&={;Y9A?=w)D0>VvaPCbqc$E2$50-{g*KJuR-qhoFTs z*5a2~0OS6D8%^erA@`qJO$JH%s9pZNpdN|VX1ES%HBRInjT%)(n(ES^s8wZ-YCTTm zejYWt%ufXjpj%z$G7F%%MR9om!1oIavj8;0w-)A?fJ}U**a9$({i)SujFeDZm<5ed zW=u12)Bp(oP^kZ<0%TU1DMEHB9r1oDD1b~&6r{LcS#9R9CV)ZRABIeV>Y0#PZRUN? z)F>bV)lUecH^t0je`>Xvqe7BVXMSqcnV+i8xS1*onU!yt*<yuLGmC|Ov8I!Didd#( zXNg&})5ElAFDy(7?lzYsdPdQ=&n#*c8W!!eS+q3;g7yB4DRA<GrU2v*w}s{29_@}j zs<lgJKor(Aa{`9@eU>ShRwYx|-=HPLGR(7?Tah^p;htj8;-3D7D=6og1;}v5q1<)| zhZbM8$T0lYTct)>xK!F%cG@U6KarGR8!z(P-%2$&n~%f5v<G!a!(}*8z!by<4OjIy z7`B9#V;VSv@0`g#>ArY{t!Av@wd$0R?yV9$aMAr5)YyofVyL1zbrD4;;MHbH95NK~ zu^YsF3$Mpo<~rh#u97ieiQ%e#datJA{%!ExYS?3Ox@pZT&f|bfLYqhIREbv~8v9d; z<Cg8pa3n5S<>qdK>#hL8xX)cw7FOufkojPJ0UJN7K8c3Z7g&zO#&3h`-iGbSzpWr9 z#=IlU*Z{VE_|jnu5ar&-t`)0(JwEooC6rSTYuh(VWxGe)SprD%AHA~-Be?8Ge^}ok z!w2wPqwkE6zGKY&@tW7scaVa#emtA-UUf@ukM_i>cExMnaGF0WO3Ph$nz(w-vOGWR zY`w+K)}qBoQ_irl0P9Acz&a67LeA<tXyb?!x0JG|86rGv$lLH|6?i9+oBw{Hgpsag zzsOrd(Vc8|nw860_NEz>CJ<?sdBZovdw6W9slZT;5OIr9bczy0&Z;@@BxJxaE!%eA zV{&U5H1b1{+HzLKDS&X&OP8?#M&`|BX-B=W&HGJgDn+_}lC&XdR#DrRSoM?fu@6eM z0n(v8E_Br>GTtqO!aI`4F`~9!ELL`kd+Cuhie~dIDEo4lbdbSzlL=T*ZH^9AZ33z` zY_h8HA1x6Ftd8EleJ1Ulw6td$q-0UGxh>o{Htv75K(pc!C{e*s_rDk)Aqvnks*$3g zu<PAc>TeK7gBwgi-Zx^3#>N%{1Hg=8(7&g^aKvdk5T!Q5onRCyRQ*`~m+bu){24r> zKMc`uf_Wg$MoYtDzunJgei@pIu?Gx3H~P+DG!;q8-Fi+&@*552Df9gHsCFiT=Lb~J z7paFu+V%2*W-~SR$Y*(BwwnpfZIv6{nK25GefDw9Z4lf#EYA!!e<ie=F#6u(CWL4g zJM(70dhnbYipV?WCa;{X&#>`8+{^)7GVTt}uMr!h;A`P}o5z@%U*<*)r8w1gm<<Vg z%Rw%@$<&m2aFkvZDpPQg!3xav0@cS0H*!$68>Nk{oXmqt^y#V>FI!3lF@Jdvoeh~E zN)fTiQS{3zNant&eYh{^DNd?7!El`Yl9FIN*wmuupXd4)t`flIGh%L^V9!yvJS<$B z^5p+t{!k|kru@x97JJ0Q_#&nhXQK>^&dSk91%*azEPGjcbn4NlTR3KJ?xO~_O<PmG z=|(Sdr1ovuu+%ne>YQP00mQtKE6kBk>nK@TbBVKZ6>w`auWXV&iR#Bb8g}$Tc)vQ< zaI+sLr$?TT-ZKB^%9t{H(mYVyfe*^8up^_Nb(X!y+8e{qya-2Z>EqP61aOK_Bnogj ztG-Fsg_?ASx2cSD<E5rk-s?U8_CN9zvqYqCp)BsFI}|asdF@9Gg3Jb4^<E-Pk>idP z=$|pa><6I993U{bBJ`hXw5u-RL3gsdwLh#b#U1&?MJ{F!R9l}qT(m_?$rRM=sq8u^ zgw~C?CR%rJb~a6*w(@g(h8f7F8}g<tB8d4}ktAtVGE-Zb;oYdcp_&=S_2gn_)y=$* z;|G9yPy$~7BP-z&XyWql`?^l=`L5T!J~;$F#^7_=8L~YIvu)|$uj;D_IJS%ZX$~X3 z8YavpN5ZaT&$pF5-;VhQ1!oPLa~DA++(4G*Vi+@FIA6nHKZDOn4Sp~-CK9Jzn2wyU zsWA@iTu)VaesQ7LT9twZObjJDbUn?CHnia^f0-dp`DUtd%~fmK>tTPM{01TTSKz#u zCYUP$a{hL^!HSs!ASKZPlyYw~K90Z{d<TcA%?aqy+nwb<l<!i*h1gZ_77*7kbI{j0 zyhKZTVy(C&)tUC7hE-h>5`4{{rgiP+vJDY&+<#CM)t>0kFK(qnaLq+{!X(7I<qo1@ zbGz{Un)|p~ElmZnvURK$i;dH~f5;@H$a=1c^5lHBa0QqCEW_c1pl-()dNX_NH7WpT zh;FHFU0lpByMvp%)cD(Alj2dlyp+!i3seU?*kbVd2Pu!CFnjYQJ<A^!ItK}lXljYo zbV^K*I;T>XB|fvc9;=aW;)TvCIUn)bY%Zq=f#Wx==jTPj3K=%-1_6xAQ;MR5!@XaY zF_ECS0w`DZWxQaB;}^70ABF*p?j$~g{B_TxPzT<UHntRuj|LaFWx0O$C#*;yMqs5C zxi{TXeH<_HIL=71%#o0}1+J60y~Bfv!@Z^qHsDWS;&6{ch${xye^My)LQE1EbAmf< zl3Y?6Fk{3g=2F~y1t%psZMiXb4zAC|LUG+*#aK5yeQmDsLR`{zK|#Yai4L4OneXL6 zC2oV^?#Y_0>U37gEf=>gH<M@ybNHlG{dfmA0ctmc2;x{Vdc=f0Lsy`2BaHYVG2*-& zlnwt)H+03Aq7%K5-^nk-ACdXnitqbBLZKo#ZVM7txbXl#3s7b*`4ATx*UmMlMB)}% z$wdo)0LBK-7~I{0PIKjP?i(Slfn~ONtf%jSmz|l{hwG}*s(mT$nr>(_&N7?S1WqfQ zx9)RGbWva9ahzzE*a44Vki(@YgeMa>s3~?*uP6eCDr$w35@S!ZT4Cu~Pqh6kQw)Kg zHxO;ClX%?>#JCsm=3zYAlbLPyY`%ZK%@XH=51}~{Z!cvq0C7kB$~#&t>cj0#8)yqG z7=p49XA|qNiQ_EQp~!X*uFy<QtWJ16@lTsmGQpgc)e^RY-=Dl4?pIgvM#GQl?$Akt zA4=h1Gx8<#Cg6PpgQlanlC=j}?$`JwuYAA^dG2})gbc4?BWF9E5N|J_kOE_IuUx8P z0TJA-scdFcVG0GDKuc88dl^JBj8|d6y_yoOW{L@)seqTaRv(8Y|EiQ4b!Vn9Rzjd{ z$i*(ea-|yQ<WBP5jDs?aJm1{3i=&9m<gDDn>zMy}tsOD%9cRP41Wa(6JE+1eAiCLF z1c(P96FZr^wB0y=m6hm_3=Tx85_vt<+q+BSHEg|4Z=26~R;G0g=lw2fWlXi2h*ve% z6Jc#USH}<^P3MHljAwA!+qpUBXv_4rMdQivMWi9ED_hRWMGb9>E(x{cVB28N2I#ZC z3=TED&Fge=@FY+=7~v@$2NTY{BcNh)K}I8tSR_eTPWvB==O%`{8B5|`yR%`yZP+Eu zl;IpO`h=6YmYi{{;_a!1j{ZF~bzSa?Cy58jWsbOvK_8dy1Y^UvBP!)RxPbaqIDsSS z>xf_L+=dxT#6jbbdd&M>3{OMv{z`Ji`k$sh>4vAT1BGy&jxPs}kmPbUJQM5x9q(8o z)^c-hI(HXW$#AaVge2Y&7ppX_=5)aeRN8@*TuXJi$-^n7=$fGu*X73TLb5C5-89Dn zRi5Cy+{hPjK(++!t#M63yf~k+dG(t5CY#6Mvme))$LE~=c$Rs5?ir8Mp6Z#+8=bkr zEtE_5lHRjU^PBKAgvw@N%!rKVTO|LE=LimNZsq`U;F<v<o(gNu%75bp_tU|Tp!;K2 z$7|YS&ZL1@X5hS-bIpK^^Xd%qM4iN9Na+v5^6Sgs6vIUb9A32<geBf`)#vHqg&ZX| z$Nyt<2p!51!PH;K5mt`IxilcG=<TS?>2TrgIp*zD-U>N-TS2ty!dv|NDf>Cz3P*Zd zN%Zx?TfF|bPxQ}tD?I7#n8GU-^XYAL)oK1dkR`k=-n+3Xmb$4Mxm+~vy%0L>Eo^C= zj(7R<IKr*RgKSMDbwJBcr$QX8n)3WWHOG~>LR_ak+9S74a4s(UY%25$qTO|Uv6?q^ z*QlA4kK;$jq<k8`+)y9Wva5zuK-@R_m;Tfxs#-TwtPP=V$pyNM);1Xm2fy$tW?2Wp z`BNn`)@kymN^q<!S-6_9=Gc`c9k&ByFM&<rzla=VCWn?@a}X=r8h5U1)y2_W`Gog) zBJ_03xsQ9|iCFNR)>!FQC;R7Ep6C+JrSjCJ0TB|n9Kc>G!y}7QDxIoqOXxtIPO2c8 zBB@RYj)0fx2>4JLwThm=ORhvl)f88#0wdcl3=V;dc@)G`D|R8KcB4ulgO}d|gGg)? zyQ_N<bUY{_r#-QbAsSY_7brN(H|=R$%Tb@kGaM;DH_UuJ6fuKS`Jk5d-p>uvKP)dk zrqt>(z%xC}Dd?FJhk6L|MbIO}7w-x6yrzB8-+?KAO4jOG@|`8$6uzwhJ#UW{54kZi z=^ZEDZJ0M*^X@mNFUJhl-TNQtGsq6jh!Lx)WINruLvs1T6)ZAzvVJSPXrp((hM6h` zoXlUdM3NH^TYF?A(ag!3nZ5i!;AES5$!a==+!FOPT;vT)Ez>FxmRl#A|ExiE9d{k# z)t+Fa$O+BY?P;9GwVpu@8WNp-K_tXWpBsNW$gz9j-?&J4TZYH4G(Pu*9Ol(WnLTP7 zR>|Cn5SN2HaTO;(rxDBX|Fw56q62Fr)J??OH5v}mMp)&zIZ2~47=>fT3)1Y;UY@g` zgl)77Ip1bk#>2a({~=qE2qFOrM{|ap;4jXykU<5(g^@gnOYA)~$~04+tKb_W<JnP5 zh~>OlGoMvM>;cVP1qeG2&=$h-&2>ES?w@0Fy|sFxpL!5xh$v;~3#gh_@bTv&z(IW! z{{DnfM<K4#QsMLrZFC2Vw9!Ucng5_Rde?e&a(ZGt)tg8HfexxjqOT&KVb8rqGpHOb z^i~7B>8<22`eAzI2fZ@mV|6*x9j>i0v0Mm9fI?@)H3rHzo$UF_J%~~b7aRTB+GYxh zng9`<CRX#Y5agQ($7bB<PgXOFvEX>qVipYL6X-eV_hd!swpkzyD+&b>{%nz5T4M+c zO^K;2*7Z|Y`=zqX#85f>HIlQu4upqEU6~WyG~R7;n;TLy16pr5VOh^Q)NdP}SehAN z;UP{WAuXNek<>w+i4hpv;M2E*yrVdzSA3e);;6h8j|j-Z^P0BC+pF5RHgs3vd|zV% z3J^hSx*@Ul1@{mzpy!HB;%`$kP~eYu<$2u3CAs2{u^LS&{XfyjjZ#+4G`yXu6Tl3^ z17~$#5LNNae1oSKoaNii6XNaYJd*cbpbJC(n}z56>wSTp5FuAeGKzD~4S8v%TuutH zH*P81A183`noqRANu5<+c*}_9t*FeBqTMUk8Y%kTN3c?I3%Zu~duSBB%wC!**2Dth zwdG6k&7k|zgCbTXVvfOoDqqh34Ev+K))8dh0UcP=7>Xjz(`;|9_*P15`6fYMe4D== z(6d~CriR7S@{4(Gtt@mp(EKepF>hObfPha%Tg~4<zB4eBf01{<U{IKE;q@cPlEd<! zQVO~lmak9>zA-F+F{y%95Fj>xKgGRH6ECmuD*tVs738PE_{ipzPO9PX4cF!_Jw$al zvT$I>iF1Rjx9M&=6qCucE7{PR(2Ab>C%g%WcHh>04jvkxGr`1JGFXGfu3@Iez!`o{ z_Rs5bBfnyTFUSDOIi_cl{{1@NLl#*}QL(vcdj?}XV{J;;GKF4tLtFv5a0U8yOH$%) z)9M(TJ@!IlnPMAupi_yKu$r0sLX)}XbIh3^1_uC2F=nBnE^$^S$P>c_1sobC$M+{y zPC97YE9Y=s(8U$3XN=(}x4m|hUh$2gN0eJWi=CL(3XViH?c>0HR)eHjz2qEnaW({h zcj_}7M1loU(<Koup)>Vy;8>V|b<}d2R8ym)DG!TS3ux5rRxbLY;G&up)bSb9Fo*s~ zn{`5W*#%XOvGC2VpuRB_or8AV*>p7Nuh~ecwEy6G^R-zq8PYHtzVP!;c->C+AcP^i zUh@$iCL6Lk)e!R+;v6@FRRGmODEIDI4;E4FQKZ{BCui^)%S}Yw-ieouIS^E!mjvfZ z(pnI(vW%WM=B~y18b5ylr!88DZQ*doQEBgA4f-3=9U9`Cz~~8)yExIfB|<0I{u&({ zHGiU%{C(Nei#~5692E7*FmrJ9u(_plm0?;C;a6?xyb=7YE#)^yZO!@mikcS|ccw$f z(xF#ka0JIl$QU!$(<wTZSmGP9#Ta&aGJb0bPV_(<zFVqyDStBGwH4V`uf4G;maAp` z7fQCs+$QbU5=Z036$;=#*dLI&=!<}x@}4&E0t;|PCcrBTAiJJ>2FUydWKmIH6Y##9 z3hl`p3pH(G<h2@^nVs~reKZP@Ear&XmgJ|`h>6iy(pzI+5Vy=(`BiKBvr>nD%L?rG z?TK~FO~{bwGWkOkviA0*?uqkWPH^8ZG)rf!tx{)RG<xTvQ-PSC&Fr)xWQ~p!^Yxwq zN~>JbpU1}8fXI3Yb;Mv)L+eoaYd~I8i>(9}%5>lYy*a9E&`>~R%Sy1)Hvbz!zDk*6 zhXh)zU@bL8=&z#N-DH0t3z#5`Gg)g#r#G4rPj6&<0@a|M*x)-V5F5rMYT6er0>p@` z897pYr)t_#<Zc81#9aJp&Y~_{%?pBxg3x`ssZpmA*P`!Oqf1aIFS)5$j>`gy#VS6q zSbi@|meJDiBtvG<G7HzS#_R+|F+V-bUuY(ky%L0BFY&%z#_WPOjDumC>)#0<-^ajD zuH-|J2P!eC$(T`}ST8EFo7+J!m@ic@vNw$43Onyh5zSWrOUM<CAM;DHtxXgBtQhlI zHX{FgV)iX+pz_)XEk38Qq4V4?y(L+)MvghOGGWwRe@{JM_3u{=kODz2W^J`~dAo-k z7ms<Ots5#5A$@;|>xee&0+f8C8un$Fh!92rpSX#1r@mHGyKUZA#OK=8u;D%{r;u55 zi~=iQTY>?|YAs$;C1W^(G-wB$pxH8piM0UA;4nDnuh!`T?1T9Ws78`VUN%@7HjFpF zp0%4LWPO_J4rTe~IB?R>b*R@lP8CC^vC~ss9(D4F*7ZjD5Hx!}v(jvTAaPDzp9pp5 zJE<$_nPDC5LJO^Ns+)l)UXj^pOyxG$@{HZa-&9Z=q1<&FWYT-v9OhnnMAtWZYc3_r z;Jvo(XWj39s(8t-?sv}&R5Utg4Wyeft(<Or)xVIN58I6xOmoB9v*W1Rrp6ajR|P3U zdha?L9yjZAuJLmv+&^QlLPVyA&2t-K&WK8b7al?!n3#j}u)3rs9=#0vphRM}A@$XV zsAqn9h=)S0fyVVFR_5X#8D2QYZ4ROp%$h@vaQ_%RJk91sb~Xvu-Vy0?ry&HoNoaBl z_d&Y3iQKquq6pBwbQm|65jy#$Yv-+%gsMFA)LE(U(&%HZsbu1Kw`Pm8^6Lmj)Xw4K z#*gZ{S=awI_oTfDm(jGvu(?Uu{ms+)OnGz1XONM;UEwreMvmf5&bkDb?on_jk9A+I zZN;BkK`*;9r-1A#EQFg&sl{o2RGEBZ_u}>AXi%8?xopJ9N?}Y{)~wGJ+xBYqxK-}b z-aF<pn$7AQnIw|?S)s(U_FsSED4ht@%7n!1PmH9hUU934W!Y_S^t_uJJ#*>R?&WW$ z6bkWmbHVb<Kw@wwt9{N^#G&ugH`t3ko#v^+Xv2lj`06CX4UpVI_#BV8l2<>n2RRY_ z{9-R|mES<jk3Cu;^yN%!6M)qm7<%9Ow#HGx9k;I#5baF*W*D62Qxrd=l3pj6_vRkk zKURLAqNzL}jAZ8IX(#(8n;?IblKfwH&`UGo1RNL`lCFe43eW3`>CCss4{N+|kX{~# zvI@B*t=jaNXX018{=_lR21JoR3_z<32x~VZ34TuJf6K@g?KQ#Z+Z&eO(3pdA2vS4@ z<`F-v_|^N7U>y(bV1S(F9c29jxP3AIQ(gvmj6FKu3{lhS!u`D}|A)sV<(rrgU{)MK z_e1}Q{0$8PSDfJ5T=)=eana?$^JwFL*Ip1mpxp#GU`P<QO|S@6L{hSj{zw{hlT0<t zDjm|)xioccuK5#2*!SH^w<b;Wv^k}Xf6tx2cF%{6z14$RjO&7;n{h#`C*coe5($m( zbw)B{caHB0esAQvl5gZ1cMRXHe2?$>H%upZXCMbXS_wEkk8?E?ngtyZgiHoW5KIR1 z<(nSxYqlQxrfdA7iXhB_7i=CGQ?O^2@80tzfBZ?jn>Y}K;c_<o{~s^HYu5(tI?cD9 z{3G<0<Yho#{`p=<$;7aiGX%SqKm=%F_QGg8Kg9GkB}@jVxlK6Y<`i}iVVXlYCMBO_ z8$<j~d%wBxPI3+-u(YKkH?&pvz!&%lH%xKZ>sX<Q#ocK8rl@b&Z~iB&+va7!+w+(4 zfHCX2;s$1*&v|3>_SV(;(e&km0#^WGUW4{Q?>^{RfRBRyY%hny)0RLNOOLFeEB@!u zoQdb$>Nf1=5;=>gzjxaXpmW|mUV&W@M#Bq=+xxkRT-Hpa=<Q$zE$n99KXkAUCAK43 zvP}FZ`<NGrd$09B?M)6lD`ukELC)HvWPkE+`XrV9(kRtfk5TPfIK=43zX$}ca@AYf z>j%Pks0X7q^*@UrkpH3VV~Y~l-n|bc{b`j7kF4Y2PIDK0&;L-#wP9(x+r$LFK0ny; z(l6EE|BqT4QjxRb*Ssp35Jr~yLCl|4n|-?Jr@CjX-<$DptY$lF9I{_a+I!WTdT-J@ z=_P*PtSUF_YT{ux^d1`i`u4;|F$CngPl^=yHcD|^m)C(3FwxRGGIPhnp;Q&dzQn^d zgvnebXKq%p_3S6N_@(4oN6eO<%R-5b*~h+xw~r#qm`ww225z`f*g&2%W<~9hPiDZq zoMtCOu^rzX3CiaLZdxgXppqmfUEn@hLBwD#NqR(eNvyVnh;_<e_%I<9miVR;47MU6 z>7XTx!gL^LsM0nxFu}XZRFrJ^VpYck&+Z&+4MvJEK<Gv`9eIaMc?*}Max=$p_i?rK zlbHY6gg+t7X6V93e3(GUu2d+0>uNuQcE93Q7BQ(vH7~OLcK+N+NCyFZ0tAK}l+TRf z9Mny~4pA<dI#S!CpS$&wRAd6rjJ;787?sOnv334dwtiBf6SR5v+9Y~z8UyA%bLk+? z7l<(?$|U0WNsP_vwz(2^O9>cMNaS?@gMEKs?jmxdE~|dRgiT|U!^H6*0uIeiF2z0~ zeS`=eQ`ktT=XkXuXx0-bt{h!L>6t{*tb4MF-3UdpE_W#+mBYE7&>}N2NsfMk_uI^S z4FBaQJwbofhwo~1)T|`@Bzi@vCcWCp>|!_#95KJi7(_Tmn0rX$U%)LU3&Cmet5I_s zVi=&#G&&i4mnQw@b88{pxnGqY)Jb0l?FGPktpHXZpP2VydM5Z~J}o!TS%`|G!=*z` z{k0&<Ubt5rkpcAzo6pwy|7}MEV6zQioDf3{%1-B=zts=la0%D$kwK*E^ScK5cF%=J z>>SQs#ly1{4d{!_={;3j@vXUhPwvuC{<CBXSj)AW;GpZUhgy7Gj~7Z?Df{8x^#fH~ z_&h1P%y%LD;Cs8)Rfv(s3Az;%_VRhy3-sNp7%RDPhQp(RplrP1=2E5Tch*R@0P3uu z+q!J9ymqxw_VCVtMeGOh+^ooEbqoBX!)Rg&>23?x;{nopiH@o}@%QBlk_tVcGK;6j zz3#Xly)4#t@-mL*R_#DiZz9}cd%}ASdtwJur!7(SZnEKN1&-nutJ1jhlH7MGPm++e z4k#)VfV267V;`4z`YmF3z2AjB<15S_MT>H$@!>JoZpy6(cO;_0@HAeP_tN*q{O>4m zlMI=m_ITB6Y#Q?N1;aS}#J#c5GQG~<g&;*k9qJK&SiP|BruF$>^3>8F>&t*qIfr<* zqC&;}>t?|;#!CkFa&;O~Z_RG=wW-yN-LA~5CEj~@r<yG7er?!m^RnZV1^I_KxmjJt zV(fm_HsIzaxKuLBRFai{HBWBE;#>4ujYn@XX)n9hX6oU~KaXvN>=;tH@JiWYA%Rw{ zWYQr`e&QAz2cqnFTWTX;&PuzZzPuYGKn6cqXTN{AmhY55X%x@Ct5wvKuj+Mmzago7 zlP2p3qU-w0H}XJHQ21HP&-LbKJUZTA-b|9GWBlbyY^u_qbT<zw{7DP=8s++v=BOAV z;H23~l=_oy)=CwQwwyx=GelZcNwc;X`<zW9suM%y3yS~fEWhM$_0|l5e;HLTeQy{` zva{+-ycJKb=NlJ;#=p!AjA*<(GjKjpSk0pg8b6$ycq%h+ne*LN=a)D%W!@X!bX3v6 zod;SenH@p4Le1CR%__X&91iMbPMqg7SF45-Bb??+lQ@61)BGuuy1;2JBQdmMRi(=u z3stRJLVx<(Ag$Al6V9mh@Q9$+mrMdk?;E2h7u-tyI<RzhwMM~a2NBvzn6us~zr~C| zd#%(Dnp|SXr#&?SRqbU1#r?{j@_yDrhLrb<R^>w`Z_mh8TYn_S4<;uMCg%($R}3cC z2gx2c2^mgYaQ?)*&(AEO9%sdTP=TgpriZ`TP-}a(ljdzR*=~~KKV>MYwhr$G2){*E zjrQ7F<tSJrnIyZ($wcdfX2qN8uo+ikT5y`5`7;)W$zdPun-l-PtLa*FGt924i+zrc zQG@)SNK*K;kD}64?m<CN)R(tOzP%*S>2Sw6jI^r8seSQ&c0dJVn%%4HZ2)FD{X0ZJ z3wo7nnFB*I1u$V}*J(~Q|04ug$dFlpHv1Qu1z0~k0stR6Pp=jPLF2w%F=*!S&A6Z; z|9{h#{a<S+EX4k=HCTnThO>|s*DRzp?k4TuFL1Man^3lbF>2{HJwM%ekzY3}b0Fe0 z&jjG=y}jrB8ge!3)frYvg|C_mjmG`?H&?eNWC_;wOx0W&Q0e@zHNS};Oe-hbYo3~^ zl~-EVC}f`}(VHg;eP`$JBfp3bv%aASi)wl=4CE*7lw_Qo=5I4?K6tEN%HPC0qJ$x4 z<7AvB_##_eeW*K+vmr80N<A!kjt(@02p4$O82Lq7oXAAAot;g+#QH>kuFZ`+1SS|N z!&tDxAecsQ>*{m8<sG~ro*?GC<((v*=Jh~*<qvn8^rX>4N+E*&MCf)_uH~_}8&~LR zLd|2pM0z*w%euz2M6Tcl5~9#28<wl0bdKl{{&{3e=fVj3-(Al`Zh^iV4^WmtGhD{d z^jiCpQU+Ro@?$)>04$CIo*<9!-VBRr{vwmiubtI4P^vjoS_W4c7-gs8C`z_xp9R_U zo0MkSS54|gQZJj7=0KKK+Or3X&w7ffBgIr-G4*yaHBd~QET)DrQnu!BF;!Yjl@(Kw zVrpbDHL94pw3yP~tF13uOjQ<BR}@oYg4FyG?pnXua3VSQ09U4GRQ2)SPHp!tjCo7U zN$mC|Iz)I0{g1UT(J?>xuaY{rBb-^e!0YHgW};KJy<1kb<+d%;|N8Xl+n!E$5>K}6 zw#UBw15Sx_nfIUk8Scs<ysTt1=LAIa7@dM<e;>D+Q?r`>r?5JFw^Tf{efbLB>W}2= zAnA4X?;g=f1j7E#Px2<@E!WAv{P(3|<I~2V`<ut`iN7G~w|W(mptkr|(4MvPH@uL{ zJs`fo4(ad`--;pHmBAIbUz#xS?<dFn8yBEz9W||c*$!&#xqw@=lDS1_MTA}7EGbm_ z5o>e!CP};xbgPBz-o}wjt{moM{~Zl3*}hB<^+ycW1ym9wR|iSOSds}?aMF1-Lm4v- zRHp6KGJf`{5Pu{GY)Z*tD#~B1eOW}wNP)R&A{*)3X-;q!C%`F!&=^z?oWp`Z3EYn* z<%rOeHJx++jP)egAvV(emiZhAF|*!nn8seE5wfa}w=b8RsMgw-Yr-i-zD~eyuf57V zudU@7y{)Yf*4t|}pM>|JJ3pp>!Dvz3EQy243=%oFBiw!-f|aGp7Soi|9A=>X79+^| zE>hE0*EhPa+t817tCr^RP!lXHm17KxYegY3YS6r|((muD1C*49x)YgOhjxS8SL7R$ z`4AzYfk~#5ekxT!cQ#BxgR4gmyb0Gp1%8xDTJEmr0m@!^?M9w(_@lhGC0Vn5J}HY> zzAsRHlt&-@>yCMs0l^h$Q}(gIp`I<B=aND3C_8b?GJB|4kwgY5-v}P25FJ@z`qLpx z`uE)aQ~nKiXWqTQ#ScZ>RLwi1FtK-$kxrE>fh=}er4r{k*;Rj~v9arE!!P>44kg@k zI!q!n+x|{+vdh~jk;ZLbGK(+$C97cYZ^eG4v~GE>dcs_;HE^|i`R<^`d^yyub?*k& z)VP1=&APrIdkF{PimTp-_z{d?ajnmPY#>+)KWDPqrBG=@68V4UwQ7BfPQ?AMQ!BeP zqlVUcK0l7v&MImA&~F7^KuJTyV&)%0wIN;HxvL*D9xBzxd%96Mq5r2@Q$->ve~plx zt~q3^0e0x-eWG9wC}%_75JLIn6&m7o`dF)RJ`nRC5eXs;t^6+E$%fCuJvDK0P|obY z;&3>eEcw5ZHC9u*>#-HmJ^!-an+<)HyQ4gJjw+L?Emd<2mCl<4bwGV}SRu?sKoi)r zH<kyeu1-37!O)-$&G|UEj;<Xw?>DMu)R1cC|B6EusnCv^6HQqpVbiw*^X@289x-F@ zv9sj<R#BCo+bv9Z2Mh{kcIafwaoJ%B10g>!xn`D!IfR2^Op_CVL-$?*JCx5Bae27h zbtdf&ASe}fwkI=>bb}S-fxL){OFY!lZ$DFK{vf9{wLGBg8kg^wiAL*s;~6orL^GUh zb$M-!kIfh{8J%W@drLM<2)mC=oH`*!3mC;W_XKsdFx#oRl`k*XX&E!xB+ffqk`0{w z=&o>y=IgInLVnjfFX`W-mRxTV=8}8FUP(qsioKE?MRJ(H_a;@w{ChOq-lTD)#E85} z9KN|nEZ3V9_jVbOfmUt9eN5Zg9=_5IreM-HwBYSR4l`r|oE^OOa?kRa^0r`Q4ybtZ zEWq>4^J{Zcu1>n2UZaZ8>#Nv``6r7Vq;OhO4UEegbsWa1)v_Tg?K(9AAHC}UF6sYE zH*k}^g)cbpW(oX(>RP^LJq2ASj;9^)Y~+W9!R89!8Jtx(r5es;a;jYw&vc)PUp@e< z<yGwXgjvY4y|g6xx4GnPt%(1kijw}db6kvdtA6$gqvPN;82J+P9XMU!R6AiZgm%*e zShBdRor)s#d2um8yoAk!gSTtAVfKcFrgF77evZb-F-gI?i8$JsyfRkd<a9hZ>BTBy z?Xg;#ALh@Ulk#4G7nl(CfhS`5n%UGv*XQunv#p1Eaih>9EQx%nkIIo@Rm;CXXH5s$ z^ro+>)M>tm<t-?a_WxNOHMmV!azSO<XsRh+GmFwRG@CEqt@S5g70{V1+|u`p6sWtp z4d#JCxd}{-!P7?KHMJ!CuY_@Va#sG3*5cl#X4UK)6APOct4%u(tuSBD=;#J1oTktO z3jR{Ss~Ml*>@cUtju~I-!v^fQuE;B2(=C|sJ1*;Pk+>ztSW63Qg%G_>hKNZ2?eOA< zllbiTrnR^qKw?^Cfe<82P9cDfPv)2EuH)NQHpGgdYW0FHD_{P%;5Xsd*Csf>lDP67 zSx@5L{RerK@M5)``9*e3UO8d5bMGff6&9mYM6WXYNB;lqrbNI@)M%;d_SQuBGHt6p z^Q>WjCiOVK6)-`JRs(zrb1f2WTc9Ck|EWOl^18f>C8W0HKVIE+Th}e#dAEnQ;Cb+c zZ<4oZe*i|T<$y}%exVvNhlxwYv9tbt8IC<SPo%=kDQ3une*s1M5~}@wRlb<<n~eQx zKSjL`Z`aaS{$JMK1J0_NdHhat&P5i%U686EOBJMx1#Gaez^)Xrg9_4%(xlr#Sm3&@ zV!>WeQ9;E=@j<bmfCcQJBG^$Ml(k}|sPO+za&qt8ySu>e^S+zU-jn2HCT%jAOeQ&a zX7Eu3cZrK!`NS1Pn=^J7z98av6MGrWEV+AW!}smh$KQ<45-jnZ(IqrnbOyUqU+&nv z;rqOqYf~WP<|We4lALo3FANJayA|c2Ro$E$|HNe?dD;`1<o4!<?`=-)*0-N)uSzXC zLwEcreo$Uf53alTxB;c_!EF~(-x*@c4z4{M>R3JNYwgYu@AxD)0}Fn8=D)bzo9%Ct z%QtdCfiPKgE*H^F6&&YQ7RhS{(Ep<Ms2tyr0-v!i0^cTuu(yKr_=hP=`Y9*=>kE=M z0(y}&1-AqJk6SJ*ziQ6*U0uz+Tv{&p&7ZmYVG{E4SRQoFbz1KGMd7fDxK<L!vz|P$ z<Foe^86rYh%XpOTpK=cOQ+5G9<?`?!kmkno)z95>&oK7?6W5dIQ;t4Icdg20W2@z^ zRqT~lWzE`s{M4m0|K0-PyrQ}8f};5%5~D4n3v!C)*C#M*H}_@8Z7YR0%ntayO%mo7 z-X|MLam<3>Oprs4>l;rGxf$<wE1G`<C>%x1mFtNdMdb3uRGT54>pFv;&3IEtB1$Xw z5w%-S5$XXSpDQ_2M#<Bb=P$}!c*AuBqaG%wx{`7o<+1dbAeG#VPj+mkymD7i3dzV_ zM9>wzx#JVpi*bv-{cZNbq4;KdY&C;RpyyghC?tNH&9G?x;jUSxPAa@jZvUYYWPg}c zlw!?@Z*W!0;237qHecxt+x#UO?bfxQE7uJb-eB*`wAkb8%5DX@Y={vt*WEERR{#q0 z!on;+2Hl9t*d0fCtv7tX<I9=f2|2gh-G06u60}u3Yw|!$H(jH|H$@P;;+q7bI03P% z{XBP}&~6jY3n#ZI%&Y9m4(hL>fxhG8jNLQs{Uh|^o9*Y@+knL?)Jn1if7#1XdllU# zHwI<S?gYtLc9L6PDr+wjvae7==ez)YK|Kl5*|9n5cgrc>OJyv=R^&Dy&r1Y*310HD zT#S(<9m_t1jkueHW(jO=;UHSAS5e=v=t3CES1#YEo8BaXI?{a6H78Oxx#lIFl~Z&k zhax9U%Ps88#xYj2uNVgks)|JyVv)8wiDY#tBqCSxVKKI!CmlnB=FHq8^Z{(;q6_~O zLWN|mh5~alR`2*^L$M=6$=zN)(zjxcZPAGF=X14RPV?V|k8o8!<J+<l_&4A7z~1A< zibAHjMU9t}M}nE0T6A4SA=+}730Nv0#C@XwM_z&f>@T5`dv`1!>G<2kr*oTs!!}Yk z+20GVK~XXLe{@RGnT~sOfO!>8NA=5*I=aq{&#$>?XNxpIbhjwnc(t^%YX#Q>8yI!8 zF%2s_`D^GP%l#b@wx1{Mo3UxbFWkppvE8nstNw*_i~8*0L}KQg4YWexbgmm(1JbOB zmUsEyitlo{mg+KTd6%Q7hW7JBB9Hfl0M@wdGd7W7)`njs%fI7!m5ciPLzYvA6y{a8 zX{3`Gq4vr(8Jkgs(?_V>qf<D&cD!#^e78#sDP-(QQbPOr^GMR}&7wZL<9)d~r!P0> zbO{ShZv1u2Xxyzo8QTeSpD7$By579q_V(8Z{c_V$+%Wntqv)#~Yue*s;(JPgNNZvU z8}AZMKC1B4%C3P@Inyo%S+SdQ*R{XK(r6by`U`K9ky~hQyjeR}uE><X^3-FlMO<r^ z<oq&`$^|;{xpH?-@hBQmtWpG7e*D!UjtIoR;0Quv%?DoW&YAyMy4yXA7tE&?SYXOy zyU2MGjDMN0KeITZu_ThGyeNEfi<DAU12umlT(qDwQ@364+2pb#^e>C@zY6*juQO+F zClKMl#HnzFfJYKBOG1vOWX`U|J_i{K(QtC}b{?28#y@e{cicSXxQJh-EE0$I2&0uC zALZk<0Qm)BM>ere1*O%(<;K5rc-%rNFJrSkmL&29O1;$e6KW?Zn_E}eHIxG^XYmx3 ziCwvadt7nw+!=sgS|zXWSy^H3y-oC*;O9^T)i3__2ecH4`%xpoGOy_JW-f=qu5Q0) z7RK!;6h$KqHdU-79BIosAa3qLV;ld7?ZMT1>bLtyOi*5z8+bDRvs|dY;C-jtna)+F z+nv`Q!6(s%J;=GJmN=dNyU)G(_Wb5=VXeS%)t#MsHDBGU!DiG(z2b#~r~uZVdGV*M z0*Mc>+qDD*nvoYToX*?)2HW#9R$-;Rvo{+<D;JV^<~&p!YSs%gNT$~oEFuaYbJ|5{ zlzf(j%dK{`$ZqAJYt2JY=Yuptt+%tk_E%R~Z2kqF2w-i&c2WqQ-m)Km`GnlUr>&ka zzOorF3SW={Qj9(EorN~0xmdnh`dRrRB`BQGHm4)s!2F!~3_VSxBjP3#PW0vP__$a6 zEsUn}hgR@wcqF`_w=;x-mcm{dMdNpwbFN46hjjr;Bw4uF)h?1%<-^2$91!ehKDVa; zD)(g_(s^@!$4xHSZ`ww*xT0K;sk>LaU@>Jvv7EEEvqY+#y|+qR=MOy&Rg-(S#p{~T z_n>3)daEq#gDN+RG%|Ahx@vBNL1fm2%+|W#sA-!EZL`ZJ$khlzPDLf_CrOylOA*MM z@06Ywuq>~dHy;$!KFcYbBaNvGq}@<D$Rod_Ras|VHxzUj(DjbLp6l}9I|g#%r(iUD z#t831eOwgJV6P1a!WT^GnK#RB-a!E^4+Xk#={6FrwFcEpu9WV}oVDF6O2c3t({}I8 zx0Ad0gc#m>L-1A5vuywC!mfjaT?Zl>&F&>x4m}uzvJmCw1XOch(N!2sEMHGdZ@!p2 z=Nhu$!XRweqoKrUPR^bczfE@BRLpnYP)f+BhklpB%IDmOxL~_{gY9j(bGQcSXtw@; zNetTD{<KuTx7;P*i^I&>hf!EQ)5i4)=ql_I1hbpm%nPlCn9d*gYqG$HNEgp~eLCB# za=<yO`zn6<4h%{->&@ye$T^+MIWLK`C%(I{C+>9{UQb3<yR8@hm0RR@$~Ifaducl~ zpFa_mbxuF|?cSHtaCb$s-Bax6zpk`rCJH-CVclmfzXQO26LH)qDn+Qx&jL7b5J3M< zk#8GiML;slZDI@9=3A1pO}vKHxu|I@7ZA_W5pqna`oB^97_UVi>ThkP<OAi)Nd0#b z)qi#Id(nHc>21sQpk(t~FAzFBRhQSM!)DoTgI#g6MYCUlANWS$0_jQ1hgL9{C5x&B zSwykz*^CE-yfWK92mS%jw-H~p@7QOA=%d$JHita@rgXd%)MCk;T~JZ#+w66lMP7W< z3JT_O*)C)jUr;g1WhX&$TdoM(TzU;%2Z5r6v?&CmKuC^~)LwgJ6ElJ<LBz$|0gT4A zP*6poqp|Y6ZFfR`N_9(ES<)(ZJt@sYBl2ydHdc0(Zw=Z{7jBt+srWym3Io3spM2nu zFSpXzZ^@7Sl;8)zvbzDfy(2y$?F+UEwSR%HpCfWQ=2f|=;7@_#!(sh*@c)m%*x~S= zytBdIiwz~W{3KB{JhN;UQpU}a#izw$V;JdI?09WL!=@UzFieFLz#g{H!VLMV+7?aI z@s%rx%!yCsC`5fK4I7^>sS+CIoEN1-N~@G};;(UQn7opM5D6u+I~tIX5a1E1y5jtJ z1$LIC_wwU%%FG&6<ITb=x?;R+Hq26FiMN^icwJ7s`!R)<f8p!kK0JsoHzEQzF%?=% zcdUq+QkJiy21sC-CfhU!41<V42Yh@!DMb6*{OevtLmU~g4WBtXLo6t~#&=6*!9~zI zO<`GQLP^Q27R`e)x!uqd#Yb+iTxQB%C)z!`-tm7k=kx<r&gj>-!3m+o7`2k8RgK6e z2R0yB+#~!FR*v!H=B`EIUyS$vLC33zC2C!6d^>_>w4H!l){ppj!3^?&{_okzlL2F| zKY?0~f&&cX%Wzfi>0lH1gRu63gL^vLxYIYw``Y-6+X`VPbi(J#Va(N;bLBGzP+yUt z;5x-EZ2khVbf>kmF4|@v3%0x1hZKn@z-rsJaLWRhiRax}HUZUf>9ZUbl+A*rFv2~s zKuSaAwtX_^UgKKHvT<5NinVUq1d3$eQ=}Cx^QCfz3)ZvBJ{GKVu@7zL85PGBgY4xU zZD>;#M)0yZ$h906D$C*`3p*UGeF!EK(`8bx-V{wO`!Ano&bgKX0MoStYIu1SHe|l& z+Sz&=@S<m4=JirY3jCE6e9{Z}igvmt+Bj`#&dfbR37I#{g#{O`be-t?sQ<@ufc*!X zMb)LFY_U%NfwsjAd3j$cKjwcnw(3I@Y;eIK7hIZ64s=n`bQiv722a}pa&IdbY(*_h zVFZ(9GoVETBOM|5A$+(7)v)knI?tgicv8~Di{{(Mg4=n3Q#NOpE_5j#T5RK@!=Vw8 z-y@}>0J0^qz@jL$urxBOY8g=$BX2D@g>d<0MOgc9zN#%RZKYO-u#&KIK57;D@8V(> zq=gT1I?4v}POyG?HDgFV5GWt>z3_wL6KUiU0+oo7b021p6Df)Thai;{k&EkDHFvJ< z;DK4a<6FslL`8c^$=)B1Vm_6_v)$Te&Uv4raFs*m>}{b^b^{cdVtVh6zhur?%PU4< zR_{Ubdv-R(WGAoxhlDQZCSrkHbGRyV?hMjVOe+JN&CX1Ju0d(@k-$80yP(K)*AY&s z0fOJ<Ym~P}6Fj1*d}^^7rjq@Cvw4gHa?_OBGM%`Tb|PRp`c0+`uIK5`T|E8dxly*( zNxdd>j(q8smXTtJ{MeA7)M3_}TB<R(BjFN)W={M=5j1Dt#x)8sLSa~lt9;dqFwNwq zFys(73uO*mFY}X=lV6uU?7oGcyeBCHJN2^B?_}O5MdsaHoFiC=9xNZ6Wk)4{_15sz zqLYsDqGiY3nX~RD1$W-HBwzMovUzaviIoxZ;~UY+$p@O<4w1A;Z;p<Cw?brE32}`T zx7s__e>*l_y*mCd?L)Y(!@?!F7Olt*Ll3s%VsUG!mEf_$(JYz$5k+ikSG1WzZ|f{Y zGJjVsP!xx;u)Lxz-GbUKxH3zgHh-6Qp?$+GbRwHLm@EgQX_PFRzF0wod4)G`q3p~= zrS=xxo}$B7&U)BwCfeP@EpGQPnz@*-ihD9iML`k!shF$)c(d)xl}rbRv9HMV_#`E_ zc@)2Ci}SP;hxqwEzSqz##h+nJP;yyS8y-;JvP#|+E|BGD%F3#M6DSuD1*yRc=HX*R z7S56dkQ<j$KE|nA4HY-w_76{N#TSB*nuz`YqqA9C0=WsQ;QNozI?3nVdY!mbh*VO@ z<K;?cjh{St%%l^LTwd>75d+QX6{n8m49D%TC<sl`_Tppc@$V2609r-Z_II8fM~9lQ z1ZNY^Q5*w>VuXk$cE1mQ<=U1Sm@uMKX^ze;_GwRwh5~#M6<GPvweCrjma+T_oHkpk zgA8pS3)=D!?%IJTY{JfZgdghc;_u1hX;H{W56C}yk!1mx>;#?`wb%+R?yFjp(K;th z!`}tLe1wbj#Qu%$A-5y^b0C|P{aJwZTRjCn>L>6E))zlUYCa?FTY2^e@V!)7l7<k` zD53`GwBGS8_R`<yGYLQwLSZZ4WDGkR;0w!>&$lD2Vj?3MDb4bsLi=|$MRB}pma)05 z6!J(?g_z3ETGc79fNl1C3><e>$kRJ9k;uH^1)JO!NGSdRE<kY#4JX7Un_p-{s3*@J zetPmlX)-5V@lDNdxjydaP95LP?D6ZYT@^Ctu4De8A4T?}#I{51Z9Y}`WNN#LG9NG( zRqesnTOAu>&a2uZi(8&-D3nlb?rujIv{(34?U9{1XBHuO(d>CyN_FHDoh>Lt+TA_v zD5m5}N7-CCz<^bOsEfF^hjUHcx5GlWb6-zxNA9ls{sXCn1)!L2mX-T@s@7d!{4Vci zors-mj_3<x{os#zL!X`@55B%luVKJceCnqbfmO?4-9*N2C0003rj^3^PVMt$q&O5M z0YxuC48?0fpFeY##AnWq6DW8;*>Biu6T=m4Gk0xnLV|lSXcn$eJV**v*m**pOfyf> zAY6eZM?La3?3}U#G2OTN4xgjlxoNk`-V;j&?dOc#dXCHAQMxo=o%g}ldGTB9HZ8Qm z)v&K!iCk^rP*%zeetkV#?VUN#OKCZ#{fDpvE+dS|js%BD))q9Qa6-}f@zrQ9dKX@~ zQ`A-QpT%5zc4OYaHgaARnw_6Biw_M+aeEK_gO<sSFW3S)E>{bB#fvsu%x(q3D3CXp zTu5xUj$dDKMqz<u-7Wr2Zu2c%DEf-bXP9U8Dh#e_jtZ7tNAii}pT&A|Mqc63c^`b6 z-)=h@qW`LhJ^GaI`ozQb!h`ZU{yk+4W2~^q)o0ygd;T-;gKXNtCjBEK{#mYm?Bj}= z4)bJQ-cZ%iMrK}@Nu`)4EiFX$gZ6MNw)=ycOM}tzGuLJ}^LAouXC)0vXL*Ct;z8J{ z$_2P<*Dzt=`<ZsB4nxUb`?^H9wzE{k?LV}Pyes|*$<3N?k9&{M(I3mG6YG`JSF;{( zxlJUZck+w6A=<WC-7B-lw&G7|y?AMr?5sUUX5Mh|_uv@FPt<;LOOxo$Z=!4C+l!m< zu=4)PQX^ZE;v=MciXNLMG=K99sVMiWw0pzZx>AR2gKA0JSUqa5`1djn1|CB$cUvX9 zYck9Mhd!Mx!z;Gal38MqZQYa@WRbz8d?$TJ@dD<9{KD=N@>^JiUrymOcDUWaLAAUc zyTmFHE_}tTog4tMCqd+#i5Mqw>V!)P$cZy3nX~&66JN`9L#y}JZ?|^!_w~8rkt>>J z?LPAAkYh<33s%{RPOq64UvGU*JG~}v!)_?aX{TQrWJ|nB>>`_Ud9fHL?vzVK;<w7| zoL~4-UwOoD6|R7JkhZ51B3`gS^vN*&sC~BOwuiC{`&^Oa0^FZ|RZVV#o%xc$mtX`k z&oD0wxA&8JYbYWT2J;KA7YNIfqElC5V&x7C`)BIZRQxLvPt@-#fK<iJ-r2j?`PRNI z-SDgkS%{EH=%*J;y1$`Ym+mam**%QnPIgb{mAsf38F;Qa^y$7fw7Iwn{fD4f{NFE9 z&lVTYr3k&^dy1EU5&QY#1-$0+v7G0=k$m3yJT-B011Cw1$+*0sJ@}lp<zR7ZE6kpQ zwR+2gfC}9~F76ucSTKQ!EwjMxW4MhRP6X!_qGO5Al}^H&h1Z(q6{2H_&lPnGvCZ&` zx}~sthqyIC&Kuf2H$FFusAN`aT|Xxbp(mp(#$@~T#1>EUSBk5!Wg?e(ttk%pPD`)& z`flw$b)S1^!PaqEb;}=ms|=R>qB%RsO>C?sQ!$|36j7ZcMr^Z%IOQ**%i^)rHfPo; z!Q@j)(|vJ<dugV818SM{$Veu=D2E^Jwl-_USHg@)ARS8r>Cq@b@pQNpZ`MhvhTgh8 zS-9eXym<jmwYRtjMCE5FCa&TEbh*2ztqFMDHEv>@>#lLDDn6-0@j>{Qv}W7t<eZxy z-{j8z<;4FvJN~B}FJB?2D(uYPtMI>#N3{?g{^N}&@H~0wlp%vNXJ;|oZ3aaX{*_D9 zCNy8OdUyQ>zr|l~{!w#|qg>Z`2H11sn5I{q-FOv#KH%-kS`=1o{%&r3SmOyS$=1Zj zG@jgxZ;VgJ{=ZjzcH?;@2I{)T>+m$#j`x<vLMXW!R$TS&#ucdp$=17Mvm0B=nca9h zMdtmY#zHo{|B&~2g|i#)BtDPu<|wSFgoL*c=5<AagoL;VWx3FgE>zovgkX7>?LvPL z61>d_3ZB|zC*clJxEW!BZC&cT=xyidZFUsSlklt;8~5XB(O7-}T;C|6aJtOdJ)`83 zY*q*6{u^xs8D7_To}?_irSS|4@ns$zH9Z2p9i-bDy)KOA#m0k(%!zlCLiGX~gD-sj z@a2ml6ff^B?xUj21Uiq;qV(fwJ%hYwl=t+7{1B@Lg}Fht98W`Nxau_dL{VqHL^}B= z^+Gl&dts8;H|747wRz27iSAoq=)#+F{SipHpNNmZAuRoP^~+KwTLj83Wy7}Dks`PG zw9IqfwU#z*X^5>!VLPiCB;~s&og+rPcYWT>SA~vKJ{_~KW?SoW6`b3)y?Ovm=QnVF zxQ*)_FJ?em{sIXOYuq6>-m7tAycaZX+e_?0^Wv2ycvj<P{Pt>Gn_rHH3em}Fyu8B7 zje8Z6i~&M4za+`!qcy-}S(q#k;Rkc(>|X$C_t*241U4@By88TVPJ~G-`PpGfu&hiG zMOJaD*0$pRE%yc@zN~TLd3;|Ix$7v)BYagTsIR7!ky^t&EaPzXbnL@bzqx29XpG_~ znbwotEvE`?#foJOE%bJFe*EwJIG3+%P2pt1!xq!`t`LZmLQveCvzbT4!K7rKgK@{o z{EaMvQh8WTVIXToB$J|ryyG6++j-EQ1zUJxH^FaCp@|pVf+xR_z9?9XkE7PofsD*< z(#r+gh{KLY4oeq>wVLmN$u-!n*I^yN<yS6!cA<(F{Nen~@+_vEE<_s%UL`YpVYd#F zuA=jI7Jp^uClMD}Ie%aBw!JEG)m>aa;@IctHVAGj7XC%GiI=iv+ovt-C<!-9h9^k4 zt%a8obg;gH8J6Y>@@%Nvbjf3sdoxeo*ur*p5%XQr%~WLaF&rehs!jgTjWez|bZ<6? zzV}W(ym%JvFa0;;ia_G}A~{?w3@E-nXVy=8$~HN9v2r0;h$@-@QuKh9K@~`(WmqyR zN~Z4OH3Yv^ys;vny@HK$uORzvhpm?8vzJ$rbTMg2`Xmn+OTid0$Jys7m@efOj##je zR~G+tm!BY!lU_V{14k^Fk@U_>dMDs@d~pJNu`QA_eDSZV`ZG0S*xiq}`SG{8AGz+2 zIWK2}2&xm1#CcurMJjP#_b<QBmGio+lF*kd6)ac3NFi;Z3T*?WGDs-Kc7Jljz+WaG zwzgmpfR05j7jKeDmb`8%KfX4H6%IEZV>gs$FVssuR`u0(c4i&pim&eSde}h~p9Swr z^g(p_orvM9Tw_T|@u_V$y)5Z$Klqj>DE%RGlIsA}fC9yFj-sm~`<RjigxAU`O6*6Z zDJ;uno!bFFCKjEgX7Qpt`&izWhbw8pD!x7;>BS^nUKZLk7+wejD`J7qoc$45Cpl|L zv=NJlu!{-2K*lXrn@K85J)qp~f`LVx6q@zN1pJhkVo#sKNu#1h1y5AN6~<N3vs5pO z6}K<NK%=@8*WnGqUvVWGl&ZTwhNb<3_WwWqp=Ppw9*=+iUy&Z1hR2uB<3CV*c3Y3c zz8wCUkR%Qe5%w(h&%^uj_^^NO4;?0ICGdDSkMBV1*CY*(hxgBn=)HeN!BUSC%faKz z;oHySErlS8kR!SB=j-F2zMXx49`2Hr`+IWq#>4x3Jsuw~y54>L9Ur~)>HX8!%j2!L zFC@H+bWe$Tc{q>9Kkcs6K5%s{r#!w~zMru6vwyySqhR7OIP!ToUmpMT?d0jTK?1U* z=lnE0>G*uV`+oEFEQv*_vE|_L={+7#_r84Tct)n-Nv}_OIea)B&!jXwzFz+6@%nNd znT{X|&q~AN;XEEse;6*>zfRH9<Bfu9b>#7I{^{GnKYhF(9}PT$=owGL<I9u&^zH1+ z<=exfyD<%q&)4Je_44Dwhy6J4cy36;<KaC%-~T?|)AeZ{LG=8!96TQ0kBj<II$thd zKacL7G(5f>zI}bac)IcB^7uTS=hE=_bRM5CkH_oB{WOmtdOnhd$HS-N^X=lx*E0>z z)-*gG-ambPJl*(q%1^`dSQ;K*9^cOX>G_7IqtR)2Hm2e6<?!v{pT1pudwKjG-OFis ze0luS)1AlHE=qr*M-V;#-47m*&p#VP>2uQXyp@J0y<WaNp6+}*`FeVEAEe>&`TF|% z{__3p>Cflq@%)m8$G`V@e7pFt$9suK5IuLK;qm41@E)(PpRd=+X?SGwO8z{&hx1|o z^!@GWvA+XTzMPk&;qh=DpHJuM*q5tSgvXDU7HN1qynp&~_@}4miz7ToM$iAh9%BcO z88d!pcI!5iCJt>gZ1mLe<HikdbH<c0!&?t+c3j)$YG3b<ZhKsFUygmHYk%B<r8~B5 z$9>~FbMV*+wq!>i-9AcLBHy9o$BrF8u1(*;6RFkkF;wB`cGN-sCJE^1aU-*vj2Sa5 zd&2n9<0ena9zJ;JsO<6MvYQOc9y)&F@JW(x)Y!q3qvj}$?zm%p0r!({B4LSizJ1T6 zD3hgh9S#)V(H)`+@4I~M+Z}&k?UG1XsoTVf<0ocQ`N`uaO8ZQjJb3c(>=6^kkIil} zsig!bPL_BZGim6=!IOuMYK?ZvkxKUHaTBIY&YnPvj~zaF_{2#kRLagCH*7S(!^B4u zPKdlyhYz)lPxSB!lO_%ylig&b^A8>}$@xc&89WlNKu#Jye3<i%9X)RN)WM{t<9IQ4 z@buK+#ltUc=hERjI^k;{!4952Veq5~<&g0chYg?TastcHQKKha5`{*O8#a9E=)sdm z3o%Hk#*G|3bvS;P=eXh1Cr=#gL$-xRj2<&QyJ3?_4J~ycPnI=~90AeM$9QrrJ6-;` z$-_s|vNGt}wY3ymCcYBs+S$QUDW6u43O+2mSybERCuGwA^y)}zG^tXP<AvxUdC6tm zuxx3-DHdo__N4LIBL+`wnMjj8e!}F@V@F>meICK5yc|JG$(x~5Cd+71s#2fvle349 z8$V^_sBAmNhEK{KGknD4>=97a*ukU6`D~?ap_@v*)8eA>7iE<_ZS>?(wxJW)CeUZ@ zE#S(s09Q7_F1}<%Q=p>}UJ_W!dw!E)1L))I7OnVg)?{RJdYi^diI8fgrOVFF@Z^%+ zjQoa;Xs#-qVaE()T4KnwR?(1}G<d3%&b^#Gp3%gsGY3yi0Qk5wY%hU#MDy%c_Ms}l z!X}TFCKD7BMh%`c{Dib3flIiEvc;zcCBREnDWw8RE-yK!+ZkO>JF}Y_K5lAuN;vyu zTGQ6w|5Q;2t4b<R8OlV?`3_2iCB8xwDxJEPs;Vl3;}D$3u)k+zASzpkLsT`Mu?Y51 zb*QR?t7cu<Sn4Fo;vlQ3D%>3wBk#(*ahNMnqby>w>~AWbN{KRhUkz0g8K4I7)p0&; z&4kazQ~<Z6Dd{A(9%VjUW#g-u^0s11D1){YR}$98907c7%2_jls7YPY)0TuR8EUBN z(gJlU!{Ou*M!87MLtCT9{5A%sxW)<JL4*#%8P$mV8<2Mmb%ZT}U<ea<QuC^6aUV?o z988~k*96E$w8G)wIW)>WrZTNBlc&Twm&E1MNlYu%lJeI9UmHqb?0+()^Er6QG5w8{ zzou$Ji#4L}8%1q+v^v_R%%)$mRekVFe@Oq-<c;f%n)qu%C-rFk7PLz{3sI4p*TG*W z3JE1uidwH3z6Pop&QRM*q!D*Cw3@AsOi+ikowT!zhvb-Wt>x&k<eU2RT`T&i8l`Aq zd(zdhKIL}Kh2?E}?WMhrq>Y=?leO*JBW&qRR5n)&4<*zpZw&R3IQO<CdDjDri~(`- zrj`9Qw1amZN9kt=;A>LuYP5bMn}eeum$H@}gCQf-sD|no`<tXvdE1)Ss|vJGP_n*Z zL_wwVlbBkzU$aS*sZLQx(K1zutAdla?l%ePN4lZsz5mdN3Nln@%9TYQWU2O0po6MF zd5**-ag^l~USrg$>M$r+=%BVb4ww@tkKtc_OS%S7kHj3w_>t!cHg$JPlQqddBkGZo zQ2Ps=N}p8)vJu#&c9rOl>Z+r40^8B%mBf<XI;T_DN|dOLYN~oLl8pWL=?|lJhoxcg z@7(ivM(o+tHVc|>rMlX*xoHr&iFPjuE1}MmzBYNZqctn-x6M=GPmJ>FNZ&VAC-W~9 zkjjNqQ#*gIrK^_oSj(u41L^w{puQ@MicFxpMDf!9nNi4%97D*tB;GD+Ahpk61U9GL z>ft<(Dmi~9AyR$9llnu;Jyma<^vn@u@;^hnx|S^oeJHTqY4sCSC*D_5dARO&3^oQ= z_sE|LQ`$cqy6HvUt-v8~D@0t}@lN^8A+{6lVCy_L&#-Zw$fG}P*#xLo7T!>&O8g&( z>zi;!P3Eoq8{(QV)`sDvuX>Q~Ou|R0A@;4b$sx4D0LF!kZ)uSuY=5~Pb9{RWF|Isg z$-BL}gm!mhTR83UU^+g<xmtHrZE+GWVgK6`y2+&u2V3rB)ajN6o7yxEF7-Ec=5q0; ztFst;4H<I-fN}DNQG@Ugihfh!Q~e#3xKXrl2e@EwN+2AxHX)x&A6tr^iL$tGDh?^{ zNIUxL(pEC^lQN78U92unz?Xy+PFY1wgZhqwZck+t9mg1UTu){(>FIQc<I-Y|Q<GFa zJv9O>*TMtx;e#T1x%t<qg0%Fh_=F!eApf?Es`m7G%@U<I>ZDSzC1WI%qb_9x_NDyo zRX6J4=H1j>%J;jGI#XTF*gcIoq#<qZIJ3-P&h?}=;(A)={4#G2weRKa4C>Gb3KIG4 z6w2b@PQh;?iVmY^Hhtwr)evI58_rI}o%CHtM&99+U*MbId<ops_hISYyok|M+w#Au z>LOf8xc!F~sPXWR)6~__LUZbJICT=a;$;5w%Ecz_;c$;u7tnThLxaashe_o^lvk3W zl>ZdCR~PzlsC8vgd3n&M(RxQQ&MpMLIV0gLYBBQvREF`?GK=wFN1dalP==(;CV7^m zxUx!d5%BHk_v_$DgVjAzyM$2H<+dF1^!~EoCsFrPp^FxbnHu!}T>j7gKh)qhIOsjJ zfy_UB>Ah<EfSm-jdY4VQ89+=^=R-Y5(2Ff8MK9=BB(<_i>f>hGx9-<4{;oo9J4Q_> z|BmqB#}cr@%^KOzU|J^WT)Yb#br<d44lZ~uZP=MP<YdYt&gZtj=ORkbQaz0P(f}DY zll~Wo%MKWR1|=_G&gelM>cA_HN=U(iNBE%da<^K`po}HmAoa95gZA%5xf_x9dFnM% zcRRq`MaGziyM?*53vIUqI=)anNN?1|8T#~^2vg~`r)!tSY8K;X0`MY-9m_ZtXY9XA zk?KFh@)sxPJB;V6hu}&Vz=Jc?IA$+d-878y6ka2I$MYVK&p&0|(VQ}OQIFEQjhMHN zr!R%W`4plNkkyjoW=$-135ydRCvGlfzY6}*9m;K|Zh#9;;q6$Q$FlF|YIP#KKNput zImF$76UkhhlWF#a;YKx_lIJk{^`Zq_kB90e>kPm9f|XSB)l8(<A+&63Xz&>8&Pajs z@?dE^j>d0PeW2dQC`0wAv~FIMwL%{-dY6RnLwu4)z6`ZJ$;{mb&hto=?~6*DlO;uR zlop+0onUcujK}vp^j(kf(uU`wP_lDl)P1CU1?N@(sjGn5N}PwkO-)r_GhUCQ_oU3u z$+!t^Pe}L%MwU47rMvmS{=^tMo$_A`?TeGLinQ0#jt&_i9<PjS=UmJ@wUV}22IrUx z?^|ipNsY%v&O{?A32%^9QbP}^H<3SksVkuYS+mK?Kvt`@>~Ctyvi%#>+l-%{@a&u5 zVg?>m&C0cs`fWR&FT^KK#&**AxFt|-e`cW7v_S(^L08cKfggx-DfajKn0kN~XaWDJ z3Lg;u`wVT7?1`x*@Z44+B)C6-e@<iMo`-J`CHabeS_X}XllNmvLHH7_uy5{U{G3VN zS?Ybb!D)=+dx>}2D4(+A^Ntc2m%u@<0qz#{U;0_JK+||X4Yvem?0-r4lA&Lz@h!|i zkHfdRFkj!zOzcu5WfTwb5@%+dUnCsown8<}A~#Ki`p!@bREBmEaEA6N<ate$x(D-w zi+9f+@XvdYooYaVnarlwSeFX9FaN3F`W%S2kXz2g)uS(D-DFge&Be_%ZY(9WCX!+d z?VZJ3bd35I?onMW1agGBgP1I+KQ&K3&l)=eyWiwoJXkHK?c=m|AyQ;-+W+XpSWU%J zzW*2Xn_2~DZ;ljq1ysD6zF1wN1gWs4srnbFEuS&{3tap{=Ak~SUkZ0ig*EWn`4+Q0 z#V5bt!z*5=?{A<FPG$D^2R9^<|7*xLNgSfzDalXUKz-v#BRYU1X}fyxfGgn$vI?DP zd6<JvUw>Dmm0dgk#jLxMR;$K5^fc}uS~G6*9El_<PUciU>lx}Q&P4A<Qttv}p9^TS z%IaP9vvu`T%A72H*}j+6A5i^j^3UdX6m4)Nu1lF1<c+cK<>}m0K%55;eq4RZ{Bu?` zd%v1^@6(m{{Fjy&z1L+x_C!|r9!Re*DGw$!{xIF2G1ZURsupv=Xq>#2=d2Qvhs;It zMszG9!OXC;(<>^_li&c&823Hsk=i(iy|(SWkdTxp-JMFUU0g-|6EoLaY6oM=t@0#3 z8(OHyzqm!L2^QJZ$=Gb@#Oe4d>Wko-?J3pQ)ZhqxguYFAmzrx*x0xDSSFcf<;5)U{ zM*hdZNu*qFkpD8C^%6WN=}Uzc|Eua?{Woj4@2uA37{-ucJ$Wp@2j(j2uE_ku;U4z@ zb)n^SM=>8B7&KaB{SN)KO#Nu*<&$(T>az*xk}IcgO5r;^ipiw^bLh+2%wr>v|2wEB z>^yp)`LAP!cogn;7xU;WB%nU%f-bSRJD18ciF0Y<UADdfo?lV-K-=*hxMb$?WlN?{ z`r0QTUEJ}yh<S4<V`!S1L(eyY|Huqdw*J_c&Eva79k0KIi(kvUd!BwkZN{AsH-Cm- zpJw0BL-iw!g+I6{as`sh`^Zv-kt+*MI8RCUBqQfcr0~|PT*klwob>55Hyfc!aRpY7 zQ(z&TKZ)aTeI>KiD#pNaX3_P`0auW20xp?mU%m$VWybIA>SfySI95<Kpa5~DVLmG( z4jEau(;|-!WfgH88pcJIgE%fy8i$XmpBP!&nLk^?Iqy)tbtYK;;$KpUF2bi4-Xq+{ z{T`$b0@}qLr2kTDpr6y|zZ`haDYWDA2=0VL9uAL;iqdW?HK?as>l#SfwV9(kC+3Rp zphs~zK$V_1J*L0ak@|SGiymA`-TSDRjwSM)n3A8;*Q@JO!Vdm9j(XpL^mme#11?5- zs~4@=PhdurJqn-C$yOueenmTUG8Aw4|BE(nh3q>Pe>SsP0pq~K9LV!8M(a(K;sIpe zx0#(=sh)}Q9|-&?eJiupp}Gp~H$k^!B>VvtcRJuQ{6hOZ!3=x^|7Rofj<j-b%@SpJ za39!)>6W^uI!<4%TIqFg!e?32e!~BOlwHz{(C?|m>Q-D0M&i-X)uCEk68`T9*WW7L zNt!OqAm2lGKdPINCFbkBYA<rA%zFpsy6ftC4!Zao=!Z#2qgB+IU=(*?@TW8S4yV@+ zVfG$JPyDR5u#%8@`oQ2<!Cx+c=ijWSsB`o=`grZNMyc?_%fL3AS!=kesH^Ie^s$VZ zQ#G?N(!i&*go8aTr4@zaJFdT!r*~(nJ*tVmO;3e)G}8+iZ6a+CNXhLaOZNsX(bd-V zLsm(3XX`$yFC3wcUIfSJqnqi8R(Ii6vgwo~5?EvHocOO)L-o1pL)yPTyt_d4)6;3o zR?G*^rM5xY{%X1ip7SZIuDZG@vV6XJjuBje-tg(2EO5Gw@v+A;*E=^rx6#k)Lz(%v z(+e*H^#IPn9*7h$N}rFs@(!}sawOp1K(>rzTc7{Fo>!{F^_}pn^MSlseFN{F%#5gT zez#~}(4uLoue0@dT5p${2p`N+JFR5y^w4vdk;{j7J4to*A^I>adw0v3ciTZh_4HJ| z8@Q=F9kj^xjfjz_{}t&>+(_o1W8fLTLpui{#~Z7QYOhbB7X^9(^$}NIIkNRM_(fce zq4y3~SJ-qPAPXi}@P@fXoM1@$JiZ$GF1Y8hdZHeyFMtz$WSvm4OYuH*m2@5|`D_f= zJ)hOv6|9XfhMPF5lwZ-<oMN$vo=YH3vCo^-M4o<bIZVI8?0<*Oh5G+Z>_2?RoN_!6 zU3FJ_<@l(rN=mWPdR=u3eVHBomp}oX;C-%S*Q)CJ8`fptfa52dce2FJH%N;!>M;F< zs;tj}dyZ9u_3epvo@@8wHmhGtxi(OI8$Fj9b1s;t>VZ&?)^TRC=aHt9`MgfaQguzD zlTB)W{kv>^0qycQY41>9=`IocZnaxI6}ehE)d~Ju+P`~BWz%y-jNSKW#WlKX1plo1 z*t%z#Paa`C>f9p<4c{W>`o4r7Va3rzuSMFtSM}1rG4fpbZ`YOdiMB1q>VMUV_??rt zF5aax>Nb6*dRo5#|I9)T6<NbDgC0q5hz`c3nr1n(hcJZ1FA~Bub-kALdPf!Nw^&8B zKn550Hm(bl<+N?xv~x)eN#7i1-|k574>E4QV*JVOLqofQk~HJ_mtXfxLM451JyXT? z5=P7_=22PU8`S}sK=d=W+K}7J^1n$)=eu3cBdtgb_o*)!yUTG`KzAkgfzqLp;ilw$ z8aj}L?D8yA4fXR-Q3rK{ZJ}hU@_qN||DnOnMFPDH8oo$3U^RA;PFiiWhP%INovii5 z$uo)XK79=o{v37w4_sg^6k11%j>D&TSGCulCqf1p!Mk_SH@vIv*FVE~A7b@!DBNq2 zs-zp?T0{{2qk8n$-Y0ld{p<89wEoY)AD@6OMnt?OegO3sE`Kkj+e^MpRX2Sy)cY5@ z>`uBbBhpYSUx$4?pVW)#yE~EMTdObijcA0jnGwY83o7~UY)WwnlHZHmaDP9uz&OT~ z>_7c`K)GW_phxKr)FYqqbCKGhHtV*?@iG>C9^WIMi4H=3eXNU<-{tyM@*Tzs<}X#q zI85%E$&9mq_YC9b4C;Ls9P?pjtWdqD-_t{p!nz*-v{8@huaMWSq5TingY_WzX)V<v zYC9)KS4ToDzZ_5K;k0;DwGRH%O|Q0lo&8dBmKBU&k(Tvb#`^mhUBK*hF*WJLO8!cC ziR2e*_bipSFO7Y^hUEPQE6}a#OIq`1C{UchxZhIHDP=RP)t`ZWa*!h1>Qmt#{g~Hg zs~1Qk(q0l)q$j^7ZSV6Z?sTq!Sx)XVnXey1s%*rpH3fN~m2Q<tmBdn(Zx!?Ze~@72 zBK!Y_6m|<dP+V?G?ha0PV`+C9^5*f3_Xgx%pHccc+R%AcisSur2#OZD%}vE0RC z4u|$@q60Zl-Y59hp|yCCw!d9(V18T#?La+n!LsryD{iHpi_HEtI+S(#7i5=~=3eHq z!}ig7CD(_ebP*izaptiv^^v*?oMbKTyb|y??xQry%%k^4>;EF>SJN}p!x}3L{ZI*r zi&>i__s^sj7boz4p`X&<uzp|1oKY3n$8eLN!em{O7CAodW_@!4ek;7=b>x>1S%VK? z7T#d@?k)oUyA&KAvh;I~UIq2s2nDn-<MqkR^T(*A`f0rsm!5j7#pr$wBSzkTuY1CE zu4fH2MgOWlRgdUL^kq1s9xMf)j!(ju>09*#Xzp;+)P&|lRuS8oi%$afGK)VQCOMaj zrqZZS$ag1ew`QyYN7I5M=}E(Ulnz&3_!sg&8p?SbS@TE6P!psX!+PA0*7D$d{BQbY z%KxisW~R}DE7?8r&ZpS-a~JF1CF%iIu63EYTIt7CHFGlkkh=C{^;m9O7U?(|uqygp z^u`rgiMQ9nUu5-Ie!lmmyxXdOfbTA#wQp4aV;(tPi{A4Ty9W_ZNhjFml~IZ@<UC4W zt)GGGU5+F&)5`dFvlC|Qe`+b5<eZFIfVA+peudfNM!5H5>Kk1hSztZ6^tUtkVJZ19 z(M!t6-LT^M49&}B@V-9kJx0!js$C-83cW(F)FW^`aU<}Tc7G$??4Y*Kpns|hhHm<q z1iYb6+u-n0;#?>r-Q7?8zdC~%>?&sFbI?LAWKD5)RO-5LrU@4I_9&)X3TEF5Cz+9a z4|faepIT7=PUf*1HuYa<6#k0feA=>}_vvNGjg$3#dcMwQC*T6+ZrOeArdyVRE-U{h z&=vg%|2hf^o`A2&oXULmCi0J?q|`ifBKbZwZkaAbj$aNBeNMl~9%d)#NL<TAU6Vc! zccV_aBh0l>fica@o5*jksZ&f_%I$0)-Sgv8_3(HMYn+DWXN?7xZfZV76SRS`bc^l= z4V|+Os3bfZNb^4J|0b>W2b!;E)l2$bW01kSCd!|h+WUpWJNK}@N4GQMpubbpfAtr- z8moqZrk|PxmR*T5tSblGI$g;WA$|VK*gX~<(E#R<W6*%S#XRQo+V``c*`=oG7Um({ z1+H<HikX<H%%0NVGIFe3BCfR!wSem$2hBIsZOk!fqIa^AsHdN^x`}<~?B2F8E&2ZH zHTom;m_zkbtmJOfYgn-!2&|;ZHczqsIT|VYCU%0h>+6}#C$SDZQ23gr8v4f1R3~#f ztC4JTHsdeO4CY+FlydkrtUSfiInU-XpY_`Wu^iAf$iIt`b@{iredX_3&ZX!~%THqE z`!8}^Rdu6j!Dw8@h}f!=&ZWGM6{0w1|CGM%Y+C8-RX&n)bJbdBnX4#`tgBM<cVYMY zvVHq9nl^Fos>bFp^AGx_!_5fR5cQA-pMslgiRzv7rQ%EVk28murp$J~=_irmF4T3< zgMWg~B{j{y{4ePT)kgi5-mYq*Kb^vCQUw{XthxV5)@G$Kt<+y4X^(;SABM+%q`opc zX^TPB?9!CJD-Gv%$g<39`chR4-7nL-(4=-UAL_~aL)@9_!~MWJoJ*kE8T8j0c;_?7 zX_b`d4;s-67nf1m(&cy(xiL?_fR^MklL^(`s_Ps1ub<M#rJ<5BPwA$tfZt*6=#B;~ zmpOI`>+m_aWSX*kYopSwWA6P9{a{Dc)!c6?>h9(RcJfkB`~0cJm4!p%mczYf=!?z8 zdXXMsrod5ms0C1D>Ajw^F)X9Ke^LLy`3{2*?X{YhYt01q8p=+e9=lu@sL(uu7W6#U zFm;#<zS9-#K6rXcAKs()q}1j;eYSoS`C%Dcq@5mu?)hQ%k>(*kiSsb!KZlslDSK#6 z(JR;qe?-5;8t`Y}`s%(10L?z1`9S@kw;(?shu){M&cuCLZrw+g!r8~Xr{7@>^ne;? z9$_~D8y;3vJ<G+AUXw5MY(31}!nkW^{)<kpf<6Hqj-)y?C9m63@O41n&>?zvsGefJ zQeD+}bCm97hOqzD99<AP6zkIS^5Kfe$YQ7YH0y->%%OUoK8iBr>C^QlM$!qigQWbP zcn5K%dPBdFQW}p3O9fURS0OVlX68N%8GaD*l(=My{rT=Pf1x|eg>SqCmdU0yyV)Zm z_)F0Sq{6o~CBtHUe7X4$?ddSqFsD(I(aa?$>un|SAFL{Xr2^w36_@i@P{T~29);{z zQRnCk(@p=wzQ{7<XmMHUT<u+HSoh{z{kX2LH?yZxg!G3klNqv))oWcXt`8;l_=cGt z`a^ZBS)*s_H&mRF^aHcMf4l$ZySl6SQN65Bf&w37<(;p-HQ&O!-0%M3e?i9Xub$O8 z$j)!E3M@o>I{|pN6S05zjjRAfSKo!%C)C%l0>0DK|38#}j)}8__cJ=PD$K!Gvxj?< zbzXP7zY<I|uc95^K+gX`6LT*-aIPMpPeG%E4MU=p%g1t;(a27hv3qc^xsbW@FvieS z<meywTL-7*Dl$vhzp7!jv5T~kuY8`)+`R)$R!!Q_yQIIg?_SfwEM)C+fw{mOO%F`h z4a`YsBMwP{_jt;BUTywGYjlMkqgKJU_NXiM5zzW<BQ$>??izA`$()Dv&mJUz40Eli zfhO!IQ*!klGf$x3eWDDE51T#eCFK4qO*__sb!fZcxVyB-&--?DYzk%0hxQtpW$c4i zV+Fd<+)e*iP%j){4Q@2WNFPnnVIPYWxEMXu=eSzBvTjhK_e+MPWDRVJ-=Le1*+=ff z4)}O<5X)7^;7xtqe#)M#*)3**na=osNOeJPb&UQ|9~`t}HZ-d9ep^7WWFY^~W)JTJ z{U^JX$0OMacOQR1umXR(zCdqA>(*M|O-pt{4^qTxYO#7a!k`kE!l+I^qahGC1OBGW zJ;=Y`BD;L3dIvwL^Yty*ejOidj@oW^1mo*_HQJ7=?YpayTf{9l)l4C>SLI+KJE=AG zsrrAobqTn5G@E%0^88;)&nz^zqBR`HDDH{;JPoV56Z8q>a*}mNrKC*7ko2!Mt)aHn z=4t4-dC-hmZD?=;E}3HAzQ@g0_S##s>bXIm!5BDLi>03I-EK(KVP6<tF<tc?aJ~AB zpdZn^PYv$I9`A3}7D;4ZaQ@v}Cc|7|+Om3ji`n=@Gt|fquE>9W78Dy1pIV-x4{<T_ zRKXT@|Ci_w^v%d_v)~<KpX6K;Dhs}z40&G`Yt|M>y33f6&Iq1RHJCj^=Dkg<z`Lo% zC35vJ>Ca{6U3HQf8}u_X*#|fVE4rK6NBe?bZ-tQ#Q8HX7sD<_2apoWOiyjsHsK3@1 ztEO<!fw+<>Wxu#;<dSb*HjnAARA*L!ZO}h7GQS`J=Oa(#D%pcfrYp}^D>#(7Gp+{d z9zj?28Ipw9;I%jH6XT{lNEiRI>A>jkW&X!lx`r|MxgKo_n0;jKX_lyg$O@9)KSvwq zjC#%dtDiGBvJ<fenpwpz=6EySgy>-%{<R68w5r6(d*=)>Jy}6bVXd>!oP+H{2h+hc zWksS*ADea&Bh%rLyAQlC^|=-O$z^&j^4BcZwj1?{q&g8Ndmv@C-w}3X9T9kUINFEz z(AqXPt<+%CUB3q0De%!O%I~ZPQgbWq|Jl53o<aL^fjUiR>G$;+wEIfa(R`w3T1~7` ze<xb8G&J`=nD<3<tn-i!bI_g+v9)Yw>>teUJ^mxVeUpx(1>-+YpHF$)1mEbNSbrMI zaslH&Y&on$s=}%0*T>0|_+0vKgkGknntbN)aeACB?e*wE$QhaHI~)Gah9oR5!fX9+ z=!#~5dK)cX6*Ms`)DXt8b8@oGIiJ3)=cr&R#rQ<M#|-@%mb2%u|0}MZxyIDNwn1)l zkl(UbQ)j7v;r}z$QF>@FR(}Eg-^kkWJZPmRdtqOr50N}Sw{>v2e@(2h{}TRM<ph^O z`xVV4=s;?*2JL1cW+Kgw!=3?H8|E$v(+;2fmvlW%b2CaGZoX03K?n8%Yey+M+d0am z6}y|CY#GGLbp<OF7ypy~NpFLG3v_M0mD%%R^jBWyt8J?4+QzxXw1IOa^OjJ4@CEbs zM%MrA`s!cRo+y83<Mpf-R~jlA^R6y3UtqUU1)GCU^jh<ox`#Q{xjAT)y8*pbH83R| z(uWzOkLCS``U!n{@D$q9$8;;zkUbEOTWole&c&vOjT&Maz%93#g92p+nAe$mUCI|3 zOE;=%)MlDVcap-zofp&&mY}`s8T^Ip)r403CW3#+?m@^t#EK}!m#gHnJ!__S%pS9X zIk+KvvHy$8pH2Tct0A%Ea;Fl-j>w--l(TgbIy`tz4b&e%>2=ISYO!%VqYmpJagvwQ zeuxI7EG@{TW(oU#jm@v<v94q#-rwfmDd=Hl1WoZ@67{Fw#ZKSL-izkoEbMOAt6Ajt zD)taYU8lX9ft2Lxn}?RjxBhS&mxsKNr5Xk`%<$kU(-qF$B>0lKSkk|2wTN=7gKw?> zAZI$i_qlKtVDCis=&LvAe!-*cBDph&$uktI(a=oRtF03Z&ga8N2A6Vz;RUn^N3fGP zfYqa{>}BuV@1l=1;snyg%CC!)-^#&Ay~kW+nya&zL9Q_M^(*ETGl(7NDSEh>5|!E4 zVz?3KL-MR1{Hput0qlJ(K?hsc%wv9-8+3$&cQjdWbf5M_Q??stj@35?P0iQAd01if zGMvChqj`wguD9z{3Hlj!c%C6Y+Lj$V@19YugX_#XT_KoYMg)heZ_Ijf9HY9JF7TTp z6S@0Rlztu^)MoEsbnp<C5NEUU`BI;wH<`zAx8hRMmkjwgr<=R<bHQ8ecXd=%gCVRv z7vrQ2Uoj`ANTK%{aRMdpoosclS&aUstr=_nRF9cU%`f^$Ba(N0PJtBb$5|OZUZMm( z&(vo@@I5m4o%&ApFJCsNn>X0U?vAUFl6PwQRR06|0ez3jVV|q9S&965I=e`9gONdX zJ<c3q+d7##*W{X1jp{PyJaI$NK3vMowZx2I?NW#J!~1Za!<o+vy9!D8@_hFPqx1-M zWsr{q7nlZ|<><!#M<bPS0Oc2)=LdP_Q(bI!>)A;E!-E^p===xW*#>L>S6;5k_~U|Z zrkA>kvY)SC4RUpy_B)xK#PR0B11LQwTFt3Cm%ZDEvEn#^74r4$e*6%0Q6HL0Q4My$ zpOg8e`-TR`1g+3Ios8Z4Xf(%1GnbFm-I41T?zis+*Ld=O25R{b8;q^ydvtJj>juFR zv&1y8`HLM~(xD+r35oywpjWU*pC3$R72lN6cOPr9apo!{8~)SMmK7dmenNIS7JbK~ zX0m=H_}R|7=NfS)F`JhK>Ee0@pO_!8y=oi$qR%mN&^}#&EFcyL%@3&lcbOt~5DtNg zZ!vv?kIis;url*-2Cn>E*F-hTFpmY9LET`H3D8)KL?@8R>PPOa5lgx9;r*NG!M)~8 z(_3p@7~I1sI$QT(-7?I)7&)J={O7~$e?4nzG7GPSW1JLz#2nfu=o5U5Zu8`*2jpyM zNteVoHdv0{{xob}6#Abdk>n@oLOle?_WDUEpw)iH(Zt|>{VDwDcs<9Qhm?9Me4vjR zW^>Lx019~3Jdd@{^QJ#*fd82Hn1vVWg{<LR38(34g!ZM28XP=mss$a`ad-{;&kLC8 zenkttDbe<_<94gsf-6eI72)@;SMUdGpJG;T2kAqgqleL2S5)&#l)O#g9Noki^AeVe zTW&sL*W?j)?>Cw)Xo21~!;r>XB;fA|wx!UK*u@w-w=avH*92|Mb^2S=9{tf>`g3HR zKa4n6|CMHC0(v|3Q|$6~VXw`*F0B3P!a3*aMZvMOU_LungR#SN9Ahx{AjzIC+xJn> z)igHu(8?oK5A;}>;URYRlGO7Pd6$HpZ^X&_`Q}-3NpKoE{H6Lc9R_!qcY`79K(<4t zKeNodvw@R;=d#WD!D#xcquI-tt#AH|HHXNsqZ!ZQe7f?VtBncf(4vnAPX^bUe(3+} z1@(f{$l*pcDv^)CyEV1fOG>CHDA3oKKg|xM;XTKpMSLsB#E$f2wVRx8z^1MIeEplx zfOyb6s4ho?+7|205rORcRwKWy?B-^bD1nDbeGU#z3`SscvC%9wADWk_NtW&!yboNX zGTSc|R{VDbMf!d7JQf3;Ol_=JxxomH%ArAJ^f2jZ%L>11M$+@G>GQV8ppDpvJx4D# z8CbPs*xI|_l8{fNw99?LPx`Z94HEFrNRnO5XtW5gn5<xk$||GxCSt8_IBAi@H#=BM zd-XSi(HV7BuLX5j6N(0JQgBxp@JTrDn;QiB4lHLI=v#sT0lQb&+=vBv1$L%<nteT= z3P$LKSVW(}38IUzMVhY11{tO=n(U<Py)XFrL1@OH1v^?-W7qsOc49b-WY$xT=Td4} zK89b-Z)k2VhW`!3@^&ly?`&q^PUesUf;Q0o*J!WqG*zJABglKKYN&rRl}()5znMk> z6$4JD2jZkW?o7bV!TVTFUdoAvpWrVU$ddnIG*-8Jc>NEc1s9s@Ozq%b<i1<5;5tv; zialcsc&@Xqm`p9|?i0)B=2>0GG{IKvT60VAg8q&Y+!5SvZcl-F)EsP`l-l`{zaItt zbj#p)^E);eoCRdH{f_EqzA>Lf@F%CWL3&So6kLGK1^0lN8x41G1^2Vk-)LI0a!yal zeP_B#sa`3D=hW2$!ngGJuqFD--a${+GvefIsr>HSEe`Hr|DYpwPlZ@f{E0nBWmYHW zm}x+++7GN?{v`O7S*w-Wz&d&$8kk0^dFb4}^Yw3kH+6%t!A3^W8g+NLi5|Sku3Tib z()a-K-xy3ZpTfi5$A+p462PZO5#r9#4MU$t`OnQ}dGN4a8vLNUsA@r9vlOed%dukp zf<5^!_S<%XcT4brxy1a9^qkE~@O}NFnQi{3y9M)t&Ibg4Y`9&w56;r>2A6Sa<+-qZ zP))s~=b3rt+7j@obd-E^t^O`}fF0!fO)d6O-(}?WS3`pS=&r`8X({|mR&!;w!Yk&) zaF`y?j#nGA5xcR^bq}=AHG`4P4mzd%Z^g2tEDS#dAv4*k;7|Rgnacd%NB<qHGH<h& z{Ej*<I4-3ON$Av7;n(ITqk|#vukL6lx)`ik0&%&P`u4wz`dhFhSgk+d6y7@Y0H?5S zdr`keT`L9Rng$2sk~uqH(<r7sJKw(tm6^Yv3Z7->W~-@#9(xhiFrurLJ%Dt`(&2&O zW9X}IVZZKUb!QNmLsgBi29%c*G{Ux^bo&3K;p`sHF!Ry7bY<=qt@vkQj`}rtE_^O* z8O(~{b(wu<pqB5|`;1iVZgpUO)A4Ywo*W!$eztjZ44Oo6N0tLGrK=t6rmx?}^6gQ> z41guuH#m9o4ZT^q{OK`!;2#6jNWBTFtBo7QjPST^->Y<HVgz<7)dwC=5Z=Se<22SC zCs2~h(BZ{`V@y4>2wm(V^df(kDEsU{C>x!6A~p;^F-Hc|*zLLrtGVCwBG#bCM(wto zmQ9rve4eS#tw9yD*i2{Dzu9CnZcYfZ%}EyfZRi6VT1>wsa^qG~<DJ7&KP=RT2kp!k z%$rS_doD$T=X7{-w%}M>Z}*#;Ytp|J>1(^X%KUCRnTvuP-H+Ae9Z`OFsyo$QvzL(k zm+cw`N9l#=VMei%zMXmRGriMviPFkC<a;eH3G2ei-%(-p;0iR8?aYqgL49b@R*f;p zv=N4W>}eaY_!W(RN}Nk`Wbl;UV3wiX`wiX4sX+~9u4@wTP8TS8N2B@$;-=u7&xL+B z!>DnFzC@oJ+=~SCg|1*KSoqFpCo76B&^{}ws^Ooys--CRM(#H`ME@APXR3y8qj?I= zT(qCpu$Fs1%KrxAov%;n=PuT64+Q<gmgdmdM0H893~kKJ2wr%{NJ?H(iuO|V^}+S@ zZtLJ<G?&}WXY89V(jBo~Swx$=eCh-(t>a8FPl*%FV9UVUMo8#rv?o>d?a0h;1y=`s zpjeSDB<-tu2KH=dp&~ap8bcD7bjJj{RAap>*cIG>1lfeO&pLR4yzi!FMD<9f_P!2* zI0+pWW}4pS5Bly3X3>GBD2xRwEq*L2Q}Qut2a-`~H#is*K91Gj9(M9;o9Vh^Fqt*v zZ=tv(9r=7qKbwY?nLk>^&N0>XUtwGJVxPqpK-Or3O>&)98qUWw4`ZyKriMGz17;?t z&--G}JA`t-7>uzxJfE(-=jCPxdv<RzR=)^8M{|C4xJ-2czDm&3oKvFyWn(B{{J#X> zyC{6t+>Hh1cr`KjJkn36LnO7<PNOYW7N@X&S`-`v9bBTu>u0dsu4QVOd)aSIpD7%+ zd-WjOZ-WBo>ICoUeEo@;!w6UxT%h)13B6diHwzDN2l%k?C(}Im66=*e;eU^-v(5YL z-ade4bxsP`DBm9Rr0^!j+_7PGX5g0L!NFdAc5o)R{xq_C;a&Plz{URweRc`=s!aIq zed-7Hv3|tgCa4};h(2JU&EG#+59?Y%E$S}+&Pljocs~}8kE;%x;8?-FMO|#@cVL6C z!yK8&-KQ_>*&v*$4?^Qq5LDBf%vng%2kBP9h~T_nX-fUef^>0xLUdih$>Bfd3iS_K zl#7C4?58yd4orG9YEXEGIUWsKC!G=Q)y?&Jrb1XDe3Ln0`##G5T%rwH2Tk<fW&yLu zG*(?#poe-IjoxYDf&(hOQD=lm+SqzDihab%pM$VGn}<B!Bz6k$dkz4{GvP+GO?AT? z%tTHfZB#j&!sx6%MGlwtkv)jA_Z@tT4hrXnBlP*Yd+?qbt{-9kItG1MQ)EY<LY^DT zZHr^Vv)F-cU`|t;&;(t|PVf?SwV6PRiXDF{j<Wq1g->zo$NgrYwVA$<{j%qg872pl z$>05!4d-KD5AS9N^cC!PzQ+RLLi+MT`ru<VzeM?c>eA0+f_K<^xXRjvj9?94jlKM7 z=yPT7VUbys#=(<zN#2(iULS72`e$S~pEX1m{kXn1n1&wuu|(ZvEt|TUEm?-H;j&;k zmh+jWVQ{v&+VnI9W{*DAoSK$%NvOqGsyTN>m~Vy!CU&Q}Uw>}i3j@<juMAJej<6&| zd7;zb98WNJ6f*<85R8Eahv<Cz|Dk>6@3DQRZwSB8H-`1X_GS_qun<}DSA9b4%ixxB z;SW!=j9@t{T(0MZxq4Xegc+@G(A9!?7!O}DpW<#P7l+RuTZ^zK-2Y*Hc6hcv0WHAk ztcQ;?C#yjR04rFo2@Zi*tO#FKn}R{64t8Wy!Xhkh-ZF0;5Qd)NgRJ|vvuALRJ|}jW zS)o)A!xkbl*rGBIfClG;PX#UY`Qba*FFno7`vN;}6@s2PvGn!zED9d7PQpb&Q37uf z>)cyR5Npl(-7C<Xf5JI}H-nGEcJ}mEdmZYl5@|iIlFyN0bM|acVCQqFGU!eAn4?s# z`Bj}`&M}JvaZ`+QCE<K%YB-Tq+&w{iy*`}D{pVpUJ8VE{YTNyj3NfE9{drp8+~lxz zkYye+XQ{=M`bu+}eg%DGH{DykLCFjE+Xq!+{mg^<V|F}#Vjp2FYsO#D!tFM@v5W43 zbef)Tdib7jr1=^fjGvM6I_lkeh-w)71nrTy^t5G#?+AvQ$);j#Ji81pqlvlHoQWmC zdFVltS^@{>_5&}};(W}7dU4o-u^xiqbJLmAcVpm051|q7iA&Azxxl%KN~|W0x}T@S z%nL`GU3z&q6~0r8alA(CP;mKX^M30t_@54YhreP+vWIosdUP)rnhs%xzBCk<N`a|m zN%cP;vJ(&<5;P2+*GI;_Fo&@d{t(*00sM1k#(vB2N-)Q4F!AtHb(iTJZq@%a|24NE zfi>UHyk*oA<_UV}b!7JIRCB#j^$IREmDOp1Sg!xUPIAK%?U!2SRR7X|n-9Zd^-^Wv zU2V;|jHeCE-y8VdP%Z^Lk-)tYs-15(1=C`WhyOL71R30a^_w|{9+Ln4ySD=soE;vF zwN*p&c&whvidA9HO?KTjr;QzHSMNODY;$z%K6V*81vkaMWcPcC9)k_+#rl2VcbRY4 zlkq9bdoBt;R^5Z2*uQua`-A03qD$CC8wLERKz@@hv}?a)*!dm~kI<T#e-1P|3rX}R zbCfwJJjg8MRK~&-=yW(A{xTe_-(k11de}5}e%OgyVCLx0!mljkKl?2`w~+>I&1`jD zY=e0j>&5z5&(>63(1`ezug|Bv=cjPnhtYZ8$O(>KX0WOotDsH_Mn`pRwci@N5PTT? zioMGz>;SikwKV7Gxv|P&WoAX^lGcar436KEmGYd4q&P7+B>VuK$`irqx=!qkaDjOi zJESWUH9tS$b2aE^#QrDgR)pWOR@n##{cku|6{@>~N7cDuGM6{i8f?QZwoWjtF>A2H z@cXN4%n#wNU>)aoUO)njt8L~;(?>T}&qh7}f_c}Dfs(vrbC3+b7(NirL<4>-vhUTw z8EP53p<-j_N?WAol%OFOoBI0;^T%vX;athBGj+_<%mS^ni8YAet5!%&oAf8oCa(>j z!usJPG%#nV&#Bi{NP};o!8PjU;36zC1jhY3=vM>pWS?%U-VvORyf`D)9^1#YV0bY2 zEm(+?)Z>D2iPDQaVwC@NK8blXyi+d;2Qkww(;Ibj)>Es4)xl=lYNw|4U9$X1-!;LZ zXbm$M`KJUcklrVRXREQ{38Abmlc}7qMo@z|_v@c)!)5x+;C5_XH^p93Ma;xaREN-M z-NgQOhb>7ureyeY@?XIz_s(c9>S6~Y_fLF-KJ*HGg`S?qfs#;3-(x}RuwrbFdM7AA zdp4Fa_y)UYpHa?bL4^aT|3BdsrXwq$Zu&vS&e>Rvb~QPHa}^V1uV|9~WZvTYDENmJ z>qndyJ<qJtOU+CABvYkAMO7;lS2FFz`Y&6e9&ku`b1`eyim|CNTGiafuF)A49t{g) z&*|^6Tz({cMxR72`Um|>^+PJw?}Kx6jqp#iJ@^3Wf4h1i<Thb*IoQkF0Z)bI1X}DS zUBxufgV{5ARW}Px<^=oRU~e!Lw|Ad8J3Pg~Y*vknIJ@!~Hf$GS$+I^&6PdWDu0$F3 z?|u(H)xCr2=6LgLaGN=j-Os<nZ`cXB$UK&4{e5A%G`1BB^m;)X>^`=IU+d!7tYC|& zj8^~sMDCf`$drepRyZNJgwqQ%>A9<sglb?ri5?U^)-e%`+-Y4NG_zc|lG*Q&Sj!4= z^?<q$&C9`9UW*QFatWwdC~l|bh6UEw&PmMivH6?_zZ(t4mC&vVPf-2M^~jSmOwIw- ze`)OL;9K~}Yx+KYUHCYsmj{@K^|!$$vnhg~kVb_i>(U^6BD_geg@aazE#w4jPvn|; z=Em5u!M<039!uTudA&I3tY)hru@<rWkqhrf4?k-k)@$De&N&R%$GQjKb6#r;Yo~tt z5OWsNd#%_DoGMD*qv7)^>$x{vf~{>Uc6zGNii>Eut$LUFGl;XVSXTP<xJS{yA8cBg zYoOj`@a_6wn4~AcPlq2+`yU_c5?qG_R2wY6auQ=HmVZBU{vfpf6(bsGV^W=z!G+N+ zhu;Rd$P3f3Lv0;<LEo;HglC$*Sa69A*Zy72*ahL?`sd*CpgWS>6zs9r1$TybhJWJ5 z96$>M;izyTH+K!!_v^kvO{`Rk!!JyCu(iS>QEtfHcNyA-ADVYKKQo$9bWr%bSrCk_ zAnsVz#Q6QEePQ@C_%vJ$-#S)Z6}C2w^_k%*rgg9;wkFn+nSEc7=iAz4g^SpIoCpOj z0Qx4iK6p$&Wp-i(vXfnv^56$xt1$rh0YO$+$=u0^>!a4Q_jELSfkOj1zwk92I#l~w zc{<#m1}gS>SUq+xI-3rvAv;&gSW6zIwgn?&BM)HyY8m6)bF8m<C>9HMn5@`0=E2}% zy^2#gtBknvYT)A=hOg@y6<&thH%I3+F1DM!kh`#55$lyuHQGlDx_512Cz-?ao}e)J zC%gk2!o$K#Il(WEb8hVG`+Vftxs3UAQtTz9_u<g<<w(M9RAuvnc}?|ZPhmkY&AL<! zrTvp)Rn0r_-!<60U8br8<Kd!}k%>;<Z_OR9A+dVcP4*4W$NGE(GSsu&LR_e?QG=tl z7yG;WqFRKOVoH{wY4{<QLY>(69Uat+ofQs?ouw{}iF4_uaVMQoA4ZTLB5ixWdp|1H z#5|#^1j~Z)NFa9yThW6aqF&LB6D=pZ%=LAnz&QuyLydxh*d)^~mW$QfYuHWSudfU@ zA|d_|EZtB2-(l1Vu9L!B!<-7s*^62g{K5HwO0in18Zym?iTquT<^5h4JJd`xU$b*l zhjI6=`Xcy&HEhe^4Q{0q_tAdJab0YJxfs~HV>LNLekr>2V}j|}-d;tkU4H-?w60;D zAV0QV?bhd-KEV$5<9DbA*uWhYiXB|4)kE1e_&4@GnyS0iO~C_dsaY8QL+`D`PH_h1 zmjC^^zhnPpx1|Q>jn0of5_=RrK2|-cH;0=UIeW^Wmvnri!t2?WxGC%f|G8ZU`VaF9 z)~wBqe0TSsn7DL^lHsgy6{i=@38w0oV%5;BEM+gq>1dLAnvxJDLpR4h3x3nPVnaDG z+ak6A&DWz=lYN^0CRP@`mxRVfC>+54a3wvTo&R&qa_pb}F>}qRZ~!)Vxz?palnf8V zex<<lMQb}Yd?a`rJM`+DhvPP@*ezBHZCVD;NX5`6tQMY#-2ZbBa1tz6^)wHLM{04m z<5E+W?H|beb5v}BUaLl!PT`cGLF{C$(V^U8=7hDP{!c#zl8R|i7zW>&ZTdWHNVBlT z|4+bu@>;$U@J29z6G^FQnJ?19+%piX%gr@?XtDESU1<3UVMEg>CTGnvf(&NmlJH%P zbII8IW3_@}YYlu7mIKYW&Fq)(FEoN;f8GUq>}1MRUlk)xVhUonVsq5UTp#XM6*vn! z3OoFFuwZ$b9SM0qbw4BE9pulCV~eprT#VM~DCDk}%un1X)=d8hq}(I$WFU6frj$O> zm1kr)JZNodn3uyf>gx(waPEv?W_Y}HF2$*=PgpHls~8uP{5>>yI`(P!0rwA7(r3jE z3NH&Ti+!uFuW)^Z0ZMd8;@%IQ#>q1Ym-I~vn+M#QV_pdI!a?CnvB|9c>s6>%p%pS+ zGS$gJ>vG27)Npf9J?z8I->>Xe4d?u09a3JYrg4JP!I$LsNu1(C`j34X{u_=m8`QVl zd(n(rz&^$TUrr7^W#`^~ot+R2SA<8H*JIoDGr@Xz-w&*#{!8pa{g-)-{F9pY)O`OA z{!X;Trr4d~MZtZ#S2#g82;UBmHk+77>eHLzR+O6mlQAno@qZk<KI~oL^4P_yQSeo8 zID9;V`ftaM>oQZ_T%HC$g|el(DeCkJ4cNI{qJ|<dA7SkPuMPTfgIG)Uknd+dKvMTf zlr|OC`7fxj!OYjcsLiHBY;&+g=U@T6K9oCPXP5zclqqRLEiffdW?xX@2zYljb83Y* z(1moUki{(;hWiu_(nnV)2*tU4QhmM@68Cp(ta)Gk&WJk$-P_6fG438P=p!a`o+N4e z?jh2jE6qQ#PUiD)l-{NOA7f_$pSAJE@yK10_iZUKU@&C33~h_FXo|bTfB{2`wiF#O ztWezDrPy$X0RvXtbx3g^j4_4}*pUD4l1qCHE&Owz-<#z7KKJBux#Z1zxx4(J43h@Z znX0O>(Q9g0eP6l#C-%P<NvZxIHJ8rfI-UysQ2c3nY@Z#05qJjtMq$CdRdM|w{SAFr z-_uyFhqPP!jd;}b@>_&xVoK4Zk=lrF`!;^#%OQwy+45nUP8mm+p#6LUJh>UAv7U&G zf1%99om8as(n<{@c7Hr~{CD(As?qdHXS8J*rcIK(WB_dah#wh>K7CR0rH{6l(8E!> zN3Dp~H@|5;(Gz|Ho;^NBTW~hg;R*5w>8{?Pcak`BZ9ltd1N30rAkS5c<3EHiYQq*Q zI|&Po(K2=?c}TADkZ`-s+HtZ%*2oTJhKzR@D)ZDjq?NVD8um(~tiEO+VZn=3*h~9( zi7IK?`Dl}H#oMafBR8d`Y6SW*4d&O4@$?b;#r0ATS~+k~VWEIz&l#&Dv(NF`Z*orb z!EPb@t0_q>nf0J&X={cyJwtE@PjEf3gT!;v`r1l<B-%&$X~mUWXcsk6`;I&%(de_b zmm8!}7OJUG7m!M+PVJCNxrng=oISVaX|<DbJvFPGO{*+P%6DpBwR~J@C1eXiHar=~ zrm!VDV9c(#<t=16>7(vKo2Mu#6#pY0Ny*TM+}Xkrt)^O2{Tu1dMLrG~8J|4DHE1RN zxBHVX<kym+^-w(0(YW}`kDtuKbm<tpv$u@6LkBWSenwlOuD>FBqVz$#_w@<(a0*3@ zGO0ya|JORWPjQEhBt7aJXOVJbqw=-(r}9F55x4)vabKTDEiQ+W=46rD9G_ya_cF8g zl=PHaX`yKK`&@cX)1dF3{f$#c&encYAIN=GG1xYEW4d+$y?cg9{qW>q4l&g+iZ72J zf#0GC1a>t^y8YiXI-b5k3%=)gZh1v%OxTgOeSfQdtJaa3QgX6Ka)PsUjHyZr(`jn7 zHc8HoF>~rDEz}m){>NZk0~Q|3EHHa}iG4b)(37zxt)QxsrD%I{TY7<-{%2A<EB_~= z6{iRH(~1;I?0~Ui@Y~{{3D?SK<K!3`Lr0U=>R-}kHH~)5D(83`ff7mIDesh)yxgzC zGj%(l)l3{MqivKsqm)dQa?<i@KeRnOXPuwr@g!75{W+6Ui;m{G3CadrYo=YNUyx#I z9n?Pu(bedGyAnM&7N8E<9)WFz92pm@IE@dEr|-36N@Mzl+(J8?!E#pRIf=v*6$G?t zD`4gO9@NJ>fyH9W_M9!((9SBeQ2UrsHSz2H1C3BL`L1$TX@@pQ<E(ripboI?8__CQ zXA(m#tp<8PbVRwYp<YMp!PH6@HGl+=GSUdTMVUeEfHt;55aU<YZcu*`i=JO;P*%>N z_0tpN_s>dS?I+dg!T3ymhOK5pDhejpHuE!;Tv5kLtMw|l+BQ&kX@})?<RqTjq(z(l z_?B9@lN9bG>}NXc^CYhOsv4#&z`e^B)VO)cK&>LSGl2X;2M`v1;bm7$v$*`2lvm%O z2K^yfi+h;@XnlVSsmdxhLz`3<6g-!$VdWo2FCi?5u@&hx>8TEtTj@L11=yGRxPKdl zboH{HQGFoJGw`z??YHBF>Lb<F=yB6r-XLwp6M$aiI_hrQNC6}l=8^ElJ}0OwuqB&0 zu`z->>QA4jRp@hRk#q=SapqC}ROg~4VI*4ON1_F2yd|sAjm2+Ge83r{hG?Bo<KKi7 zK%cE%`1hU@Bat0ZzsD$0Kj6s%3-KNjTUv|%Z%5JAa;P$bbVOUyUnEr<i8c&)9;+)7 z8;8aYEH3+HVyz<LKaZ&6wH)*~{`);tr%UHZ4myfnmhNbGG<)oTvlJ&FpA;#v^KY`Y zN6v?9_(<tnH3vo@8lYrCTTbUly^>f+EZq(>=xps*<u%%i*F?Lc-g-{81xB+dFJ;lP zSkLa7DdRsAznnf(8mNAU7SzA1$D}vX-|BmEhMuAMaO_wJB!NV;mc>tJ`(?H5xKEym zevmy$7OjwUh5D*fNEx)FV=d_HATB%1nX9xINsHRk3CdiwgDtP-kbhOLk)M?6+GFd; zZBLMTb}!?^Wb<oenpRC)Mk|v0WQ7`oXR}_V1MVcRqDK^a2G&+@i=+6d@U>nOJ>XBE z*J5srBA$+H!5xJC4uS}&E@k0Uu`$XNsgBkH^U!j3p7I~vio5n}%3YO(ueGhJbL~#r zM;XdSz^bpTCq>Xlc!Z*3G%ohm(e{#zJZEx(xa=@R`d+(A#^d)f6+MM^LYuY4=zG(b zbS3@C0LntVCF>Vphj@k@(oU*r@x*6<T17ic=SnAO4~ezCX`#NuJ*8-w_;N1#8$qi_ zl3Du>Z6T&&9IKP~4;?GD#`U12^!Xl~`?ZH!75snxM$SU!;W^x7)IQ84L2@mn7M?|Y zyv+<s1|d)IJ&}~vWVHN{WTpS2#yv>Rqvg@gU^I@g(wRi!yFJ#SgHZGIkNgbv9!0dy z%5^dpb@25`SIHT_#Ey}83to&7McZoMslSkSxbMuZ&6Xz8LvjT@L@i7z;+M?5wU5__ zYnA8*B@kEtooI1AL>WT1%KOnOkA>?({x?og?&JN`)qhlHs-4i|b_^~s*YVu3hV&ZO z0~X51m7Pn(4)O8W5@VCKHfl|j_@1c09*<EN?x?GkJ!)YkD`g>}ePU}PwVPxOo<C`F zGmPJMllUtQX;=DGd5V?|k3LHC25CcFnrv?ow2amm^$(d)_f(A*lJ-y^T2J@Kn69Vf z>uB4Z*fvF0U(ch>RhOa;eYo_J*4OgmUu!<p;$6fqu=x8c#&MRJ#d9)JT}(=9@03;a zZ#k#-Gg|jGlAhv;a#Q+9$bTn}dtQf@CkN?y{A((w)Y1Ny$I}~9E42b?kCX=!6izFw zSJvP<#N-Yav>|wdKo#{Y(z{B_O|cKsm$amk4)N2;P7kE5ALXRu=Z^NTT3%m|F?`OV z|BN3^PYnG$>5LMEK48-MB;z^pThg(}yIUB6YdP+lK9FhX3mc18?CjSMZKz0*&v=-l zkHQ`CMzsYUA=fb~DZSATppMQ;AB(@9o>Wh&o6s`X{=^**mYi*~`5)R=)WAPcTS()y zPI6sxN!=h#)+TE&tepCdq_lz^gDs13+aZlFv}0OLI#mnQZlc%kL3NH+U#>4l;-5RS zWOHZ9i8;#JvwBv^swa1*n`k?EFdd{%!=1$qv_TBgU#R%o8MmdebS#|;VO$~Wlld7- zoqs|eI!3*V9!m?fL)ruR0$M&k)ym4FwIy+TS&JS(UM$m>>8v*{T2*6=1ZUn;ZcUdf z%}FEr3L__(czXUu?oKL_CKwaOPA_|sZ!cX^Sg@DliB}KT4#+{I8EVmM$&J)Z7{xdz zT5;61VmW<@zDN+yem}eI<3CbEn;->h|HxO=eCYqb)5xZ?5t!RqX-wGeJV5(6<fRgN zuCJHF(SstN-VIgmugEct{mz^qEQsl4%hBl9z=FfCYvt9<avybs+*!@56J;iyLRzC8 zWkLD0if5VDv2tt^n=hfG<(gVXb(k`c{(>G9lTnXa0xikD#~zo(9bsZ|L{^+e&`}t3 zW2w{#za^<La(WxIW-6sj$G^wvamP@Mk#IR5t%;hSR9ahYD)|=AJv~}+sfY4Fdw{#I zHfp1|{j_79i#rbIFxmiP`Dla|DHp(h{G3WP(ud?FK{$HJbk_P~gWBh_=`TbJlMKom zb-wz&T#NjL(X(HmMc~(RGU_AW`D|?5)6!{*qTNUD_k~7bWi)z#9nwzXKSVpahlhmw z>s}j1-{amth8Dm`UDuQnWF<y-dqGY~#R&^;>yOtf>Zj;pw7$u#e$bA}6s^&ED8;4u z@_d<SpT6_8eKpaKqs9O&evO^vzB*H`PdCcb=rr0@>#9BeKaSsF+L@FkGqnctUiFQf zP9KAs+e&nb+>svF(I)k?p@u$M`H{@lHmmuhr)WLfO#2cwf??80)JCxOX=2zeu^<w> zB}m^)QX%KQCY|uFr!(5EU&i%cHwr1bp&JQp6I=7AO_U}|N3{Api&02C+9KSw=2kP| z3BYqH1lO$ds8Re>Kb92wOWKi)RaTLz@(@}O&ypsf4}Lo37J9=5x=JtGekMHO&m`<u zZ@mN^q|_tds*xBwv?{HQJMT^kRWw60SS!%ag{*o#b+dGgwnSU%K)jEu6P`Xcqs{0} z!k!?0z717deY<=HSKzz20^Y#8p!%Y=BR9=WYa6wVReD4sdyp_i8TFJ}I;ApQf%E2$ zbW&R*H<NqOJjx(42&I=ji}-X{LsO&nwyYW;pQqQ<;pBqyUQ4Yce(htPR3Sx6u<T>h zQT{>;+)+|tIuhd*^ivMglLpa=9^d=mQz_U?FRKS|20T}S(eG@4+5@A)q&4!<2kOL+ zQvQmH0ks5bR<(q_pQb~9^OySXQeMpu|DaCLm59y4r?%^SH$-nw3*g`54KiC9qc<Y| z>b0en%1gN-9c^8^*+^E7ZDR8w`q#=atsDCNwWKP>t*M9qjc?@CYBoBF$IJG~yU@A% zzcfUtq!b{%rTWG<(rhwLW1%9RXo}nG3ols{<Va<Sg^@_}a+IDOv?Lj!H&x!F@0m&h zrN_#~xZj>|q@=ACS1gfVsVsD-k?JC)pr-{jwQ~9h{Qm!j{s?Q(hnS57m{@S0NZ8*I zEv>4d2Sq26pX8G}(bjah)KqP%R+bhaHcMe*KH^zP<A731osF?awn>%9V6Cv6OxqyE z>J25D#PQo6cRbkAc6~2-A%)8!Xa)2Jy)b$ylhhviWwkQO)o$g%XRqKFX&>E(W+Lz9 zFFfhUzjU3kP#LJ!Lmr6#{p=^&@u`kqdP3`?we3389`DzdC?&PC=nGOFJ!;DuHDngz zEfZhrrngmQqWw#t@<hKUeMJLEef5gMMz;;cTP56aw$tr2;nVP`G#7cTR!8fhP9zOZ z&(rc##b3Hd@6kmV`|3OVieLNW5$H)TDQmU5XfgLdE=?;ML#0}JL$x7(iGon)?%w{# z>%Zt3$QiYUG6Cn@TX`1RT|SkkD7i@_{{MXb-w)bo&~MdPeJk0dKGL#lx9B)EhW6Ha zYhQZ`(OLh;_QQ=5#xflDA93#0BsG+LXhD!#duLq1s4n@FC_&<0j4>Xf1<*+3drj2- zd`X6*HTbWjKkZMKsxNtb9Ec?Iu$55&Juna8_of#)qLoxT&}JHIA8(K}XqA$5Jm;GM zMjJW@Z;;KawN`rTQR;T31b$;1Dh-ueq)FVBBYw$==gf!EqFQ<Fs$pOhxRJD}S|9(1 zhv09U51oe|WsX(S^AIhwzDRpPB9zL?SbenSRZ=RIbeaAmT~q(TUNe0vq}6U><nFAr zt#XQ<q9^2E@$9d^Rv9_h0(JABifMoMg|SsTsQA%0I>r%2@BN{83Q<pE?bj}#9h=?H z+P18p$kF^mnP^Z_Os=ZcQ8dkik*F`|^>F1mfiz#zFX{F({7<DKn|6~9r@hH3eXRaU zeWl{PS!hpH8}VyPs=kG8i8}_i7e?%0ucy~msH^p#)Qa>+jG!JajYZilNmJt5E1^B- z&QInY^RPzWqGlzj$Y~?Hc2sR9SCsP8>FCGA#xUzB_5bW0)LXr#UP+xutCBhBMSo8U zqD$n5IR6!C9o~4?MYw`EBhhwKoF%sXZTc))M13tUl^>%Xy(H<U)RSIN_RJ3>y{nx* zoBo6PT)jK_PkV>ny1{ZEy`kJ#Bl0UPJIzkNRGnbwRbrn<^r}i_xf^|{j?k`abLjzn z4{1pDTe<!Pd7*sqiF1$nGmKoMqBcWcuI!S#p|$;JC5+zGPg${iDGLh5q;tZ@DY&RV z(xT->dNz7bnXkP;FQ&6vN|lYC#KJW^AA{m@ArrNOO)|mvkJ=Me!MNS4<U#~h7jjzC z!6>Jd<0U^corkfQ6{(}n0$X;6-;5S|ef=Gt+BHM#pQfmXyF!BTCJ$$uwPi&`kb09K z>zD*7EX?6)nj>E}>gYGropd5ug*KpN(F%GO`W|l(&b-BFDLX(;g|xC3vn<%HXYCfW zw~Tu<yL!*4hFa@zdJp}!Giu%NRKwYRCCbLUch*p&OIcv+_R>9rkQ_=c^gv%s+bQ)t zQ}sn^0VNGDw*}ERrhVML#CwTfDrFdI7VTSknem;zLh+?#wQ9-{+DRF$+o81)KOTz{ zYf4<|Fn*{p*yyQ^M1R}n81b}^a#60Yg`hWzZF^R;TN&GH?CCiRXSMinj_$_z10y7Z zE|iC$1{-6Ucy7yoT6z5^o~yL6g0tn1=gqWQ>P<QtZw#CyzeNAfLwK4>G#{jJu&$yj z?#D3_lJ9Y^*I2{<XEF}0ZGXVKBqm7ja7D$)(KHp_36{{hqjdy3;(3F^f6zJ;&A6@p zXyj0`s&7#Xa7Fq<jzRvPCWZ8``90v_ID03aGf!zep%W;@FV7_E(G9h<r-U?I*^2Gn zLp%R6){%B>#rZ%o&^ii|XRcmK&Q0*{H`JXa_lD8;>LBawT|c8u0t;fSkCz7<2bDg0 zN97x}7&#=3QWxS0!V!!ifM-{<0-Y_CyavK@yq~WO9d&0Z=pxTk<&a!Z>MhOJp6kKd zN%ZJB$xA`J^;Dtc*ffKY1?{hj8pZIxrzjmFr&rQxCk?d0L;Ktl7|;A*qFY73QU1+v z?TkvaZ<I#r9_=y4&4|HU2d<(XzXGX%{jo#*_CH?oH=@WHV}P_*e<^Jvt&PXVa%C8; ziubV$p+kh+XDu3seY8LDrzs@d*g#)vA3SI|hgOs+@hoe*GDK&eA8*f1N*Ik*nGD3U zs}%UXh*sXI7tw<y2mW)vm;ays2LrX1%36<C4y11|_OI92ubxvHC<n*^{3_>7EWIuk zqLrZg@q5*jb|<^k6;f7ZCh1J(dRA-p|8%>jl{?k(>yvT)y`}7wi>de3FN_TGaHWF& z1S5yBJ`_jgQ=ce(r!*EC7%!Bn<R^?~I7g0TZL*bc+E<AW@morKsh;OAB}}<4k3bKU z5VZelN`93}Nfq=8dN%ZFcH%rC<!CwKXgXYxY8rRd;-tUSlk`-EYJK$?QjEt3Ez*g+ zUm0((5O3Sx+MA~sA;AfXR8BiX2dRVPV2qoT)!412M<2fw7+EQkTF^R+;$u5YY<yEE zq|g@`-z&q^>`Ih0R4=8!B75-$g5elD#!xb-tRBjVmDGHn)<_A!F+ZvJ;eXH}PieYb zT`GI^bTl13iyF<O;yJvQmW|ZL`v)E=1pV#y(q2*%x(I=2JJA-_u}XS=KwGA~(R+F- z$v>%6$qc$j>MpbP69FXg_HNA63gIfy$9PL+)$2`5LuFZSr5(la^e3dfWVinI|2TW_ zrdMO7)>f{FXUI#{<yw?nmX@X2&=2c-jG)j?X{QuU;`-t2Q6H^<(ONDh2g)h6PSP=q z8WbcQMW2lKcoz`<waaZk6aNSN)}V#1@)O;zK9|Q!ujo142hXFPk7~{G>2`3oY|lfq z8}bI+?LW{vDK)gF#tP{i?j;M+SUonb{vctDglng@81(;ZW&DLY<P{_fovQw+`O$3X z$6sDZ`2p>KRd)B{(^)>C<yLYl_p~pyaJ?J7f~P=*)N!b}NNF@i4e}bghL^oNac5D& zE!%6gwddqAxj-k#Gn5J#Q7@;K0&O(blh+b!yYcxj9{(IF(|361)fr{6R9gERSMB=V zKso^bYgp`4pYXCAd$YheioRC=>95rQ#RnrfRYA+9WlAAAM6IdCs4NVogFkT=tuR{3 zG4f<}JqbW*siVD<Ul`w!@9^ZIh?EKAqGS@vs(WuTs2Nm`r@m5LTc8h<(&M>IGf#7J zTM9OO(CfuV$bWat_;tf`id4{kM<2K<q#y~w7^2hB+NB!q$ZmMpGl<WH0|wP{=*iXg z%4+nxZmZW(_mPF35;6-(#myI&ANlBIkA~4(p5W?NlHNqm*+QPuWQU%~Q<By|_*=O8 zCG>XNW3R`0x{|hNy?tAqLvoPP-XRz_d783>Rx|qJ{W#xQx#x@*nb3p1cGc5Pe<!6g zE|WHRic^nfly1uV<=tpWlofp<`hFt!?f4#V4b&dZmbYLGl)KbaZyJN-U0Qo(8DU|U z=W|!UdY*dZ0LC9pp)ORDYa2ZNa$Ccz?NFzATC1(C5_r+Lm}D-XhSwNFj_IS6Kh)(I z!8J(J)DOxbgwfO&pOf$u%GvAl`uPNBbQjtM$DxF0rB(zZXQZIdNhRr(`b7SM{-exB z`{gGXy>RwtkN+m^oDnJ)P?D>w$P?p)-jYm2i=TDUJ9127ExA4y{xO0*Rq0>K0(u)G zPx^WqlUEqYY9M}j4l8Yu`)rJZPx<&@{HvD22tIYRacV269Z61aqLpkh>79N-8D(8_ z?AShuj3dgv`PTDL-h<XAUe8fus8K`?#ke8tx4ImasPhJePi=p{mRw0oXDXF3dgN4j zni@zpOC`Kvp6&8J{erOlq<k#UbZl!L8A^L;Wz+}yE_It$OY4n3WGo~VE1qA~h-a@J zD(%APB~$f3)#37a(n4BDTcG}B&nI)v_A$>hlx9>Gkl&^J7(t;bZYL+pmG#QHzfzDU z)#oC9>x#5WJE3$z|G1`lAo?FQrI+R8+9vgTqq)9Gy{P}C{`HxCsNxM$29RT9DE>W1 zDFNCVv^z1;u5gDk4P!b_O;BRvx7#}IjCiE|ftsTR@?^a|#vg919Fpp&lRT3=|Kh*c zzyHVnM|mRk(ehF1l|wZ=Inrinw@7J(akvgUEpg+w`|;8@p6QAo`dQ^9!6aI*i>Du^ z(b-$T@G+_wJJe-ySGtd5+T^KrNIpe>B8Oy+{gd!)kvrmQ(pVi!=b~Npd+fn8{aF&Z zz&y0`t~Y)l6P1z}ap|&hRK6_@BEKsdeT95quiW}XOndvCypozyxvqZY8G^R#i#%me z2NWg0pdWDc{`d*t$9r+Wvzz=Qy+@nT-O3%kG2X$miIkU4(;U{8Sv$Os<A`LX=Y^48 zPiCa_d93s|R%^eIF<N(wz`oeJaxCU^F-F4WSS`2KS1pB+Lzd`=mFMzUIvp)2zVtk| zwqH;wh#dSaiK}=li6xgk{RwK1q|4|*npyck&*|uUDz}RJ?=p={Lu?<{ne3xYBR(3V zBfRU;Zn3=5N)6S@>J6kAd5*Nx(^THcb3Tf&fSy1)3klO6u7~R>^eNh9`4;Z|zC$ha zC8;tkr*%P#nze#0dmG93Xb~X(9?wwi(BFghLui9}RevH)AdB!XE{!(L7^bjRuuf=a zw6o5az_>BV>f%YI{p~VuGIf@=26q6e*C6NQ{1_4YS8`r)TFzn|AGrg@@^E~)=X3Sa zB!uQQ=Fo<ozP^vq^Yw)^M=7ZL@iWw`$G^+M9ha>S_AJ5Of1r9@zl{DC;i$cCihB5a z+9WIf-}>Lk2YWP<#A4(A%X3(HN%I>6eOhANfM?PWBfIC0+)XcUmAkSS86oj_4t?&K zsSd%YC)K3#c#~#wkD+Are4vk&Aa=y9nm5NX@%dCwMz3zn!XA|I&XfNl2h_8uIp2qW zlo)}T+`*CmBZ<;y`&+8(o?Ce1QBK+GV`40e1!^k2HJR@---mr)>ociG`)AKR^q(n- zdVf=`s82_4jm7#?sk6RYZf~?V_9S`SoV}@_m&d(BZf%IV63-nBl2hL6{TVgc#}IQJ zS@+4bGaq@q-8?Pzo1P)4>D09c7*BVt=a#gBuAn!i5!wjryjlE--+)&74bQju_aB90 z5UVYc{+05O9B74kR?dd8w4GEYJ>ThBL@Lob+Ai-(J*%`I<ER%<yU+)?3i--wq)z-U zG3ogGJ-M}I=z$iX^p`a`qZXxKCOM4jno5@%bI~6>@tE25?EL%;)DNTG)O|(OCTXjb zp>#A2mM?oRd$;Oa_3TN+7JV8%3&<?vOY~m+*$6_L4_^|fenYd+XG#II%Vj~d{&+b| zKkC`0W+#hLTfag%OJ0#BB(1SRTR=wQt?q97oyN|%UrzhGcHYG_t!F64JRU%DXn!bc z<Z$JVR@)PyUnl?1{YN+Na3ceKqMac*^c;Ev^rO2dy^^ERpQn;CU#)8-9u&MG<zKZn zsg39DVQA~;F%Ej0q909r@?M#zy_NEy_kq~T%Do@)>&1+2sQVnH?NLI}a%VkSjbD)d zL4V-KYBKcaiMLB?X{fiOcaM6IR*=`onQ0%nt2RW+ZluLn3XKqwiWSeR873*L4AVv^ zn|)?TvpxSx#pKGUyKEyLP(OH!(xP#{e=A)%Z~KVW*X!qu!9LNR%%q&RgpvcloH_KP z>QVI?dUVHcC#j`$#vJ{*_FmF_QfQ6T9BTh$N2RTJhJ&6k(m(&l`7=jftd*u1fks=d z8*-Fdf{fO#sNbR%|B1Q?A*t;;e4+k|cGhYuk7z&7X_89&+w)jntlab5^JMd_FJ<#} z?2?*q^X}G`8tK$GN|e@9&y3&CUoak1fDapik%gq<jZ#=pq($C=^a07OPB4!61kw-c zcS;Q-z4`@OBwfS15pI6={9lFkLtF5+)K<zUxu@s3&nEc}*{+Y&_R7okMf!5#S2*#M zl=Cj}eCbnD^))V|z3fEv64|0RL@!btM;v+kGx3-<UF(fOEu?~8&_gi#@(bw#siWmr zQ>ew&FLXPk)zZ4|K16>*jSEH(?YPv}x2mz!`&#X#<V7oxEI#R_^yrhzf@uBma$~PQ z{lYs;YDGIrTRcsT@^Tt7NqVDfAi>!8f+`Ci$BHLgecH+YN^NL6setD!O>gAI8*u*f z?k9QVJpaepgX@6zU-BI9uiB}tz%!(;(E2Q&_mnYBorW=y?X5gc#7}aslY(|eO(jgN zqqV?&*l;|0*&w%|Wt2XY1;+;cylGNluoj{pk%HBX=sU9q?YLXe8N}4s=<2U{*=?e% z&{yzs;LL5$Y;B@9#`uejmAV<%y#9I_CBV~2p6pv%DrNkm*TwhW=#fG?;#1@-4KTt` zPdv@=CR;DP(r%*f%}DYD!QUq@_CJr3=QGD|s&|lf-w0MKsAaUGMgwglsiZZgL1Y4+ zXlL<Zp(aM?tjVtg)48{sao3`K`c|6G(^_9lbD{RUwvSi&M*EZY)e3mo*a!2-JS%3^ zID04E&U}Cos`VhFRIlEe=E2)@?w~j06nX}~#3$vulm*99obNVv8=KH_c@v#){6l*x zrG2ug8N9!fKS^pb#aQc`N2=#j&u6*zEz;YHZ`+xReiUiA(MiEOEb#OozxK6v8b%Gx zYus0I;hi4M$!TSWbr+Q|M#8lRdNTbNx{F-UBlKWpiB_GqQeSC*tAAr$x`MceaI716 z8hBW5*qW}hVU*!V{`A>GuNx7@ulNt}K-%O<hBw-5L5<KB`Hi*xu142H^N;cD#&)zh zT!|hWF>)VVxo&Cs=^|;Tl+!1tPk-eEw&s2l_&0_VSlT-Kd@znlZ{>@4=S(Z#WO#Q# zb>9fj5{(71or1F;?)h7z8LrxYdMlHA>M4Dox(}mKR*>r%J-j`<d6jp(+&i)A87w$! zY#wAt>aU8gc9L#3zV>OZ&QdPXFUgnWxG`EDEr;vuzfWReH+rM7(Ag&vXL^*emHdnm zLsv<+m1Jl?d0iT-rZL!4WIyfWR#41eL+&@F&v`uxBUcA1=j77zP3e2-x?D-S?5U)k z(M`+7{!A<ljMX&OdCsHOe-fFb9h1jm43fo0O>M2R)R?7>w|+gseZoIcibnZl$Mb?T zzN0aMT3e$my+SWaGcXG4cuzI0W!!a}^#iw4fbp^tl%PSrGiY5!F>ZPPLyO_s<Tz4M z2LFFvYOP2J;)iG<8tajtRQS!<s4b9t$%FI)-YxhaFi?LYAEFWZw^B*6z$(4Dl8noI zUh;jSSC#u3sXV4emE~HHo&!(O^WYsyVqlgmHO^;zYI@;U=cUnA-lM$o`CD#}apQ{6 zby5aT72jUQ8vL)!8&_KD)B3m;6vG)UhPOsR(%1OQa~=IAC#s$3GUKL1X;+mP#7IM9 z(33~B{&;zxZz(+)?seNJx5;|Bp}K=^LSJ)5da74d3wiC}#Hy#)LwT-;XWb6Ln>{?# zn;z{Ik87pS?)9X6ME*xThH`Vn`wM;%-XN_<@n))cdvWw^Mz8y{@T{b7$w3l}YxQs? zGb!X*iyExAc!SdSzFzD68An)fe8jIYcHJk|bAfi2a(c6=X>lL9KpUw~)$?olwT9Ad zBe|95gFOD|qu_7lM720Sw!fP`snPB;T0caK_%^2p^%}}Qo_Db6r9^lG^_ku(>QC@7 z46^?bvslA4JFulEKAE*m$`vwBd5lrls;P_gn|yz#cz#mb`rb`;)-c$4;6-3Zj?L}B z)}#qOZ#+e5xVqER%6BjJ{BNE3Ec9i4uUM~e7MPVYKZ3Ou39c!XlI>T&$5?eMwBPh% z@=#@>RG!?i;>`6t!8@4Gd(L|Ttr)9?cw?=6VV<jdF8ll>6_iUE#YnVI1@xd8E@ig9 z{gblLRBvj<WAlW8#YSoH{6jXQu<gbF)hF_6L(=x4_n!S7Mh7LOjD%qc6@wxT^4w9j zc{<UST1g|Xx2X}UHJ7VfcMkFIzadf<elKR<joIJWqe9e7_Px<i>mr310Y+~1E=FHt z&vBgX@A9y~+U^XM>R>+#3wdDMH1s`5)+i6?3?+ybF&5Hn`tZ0`C-r^m`?RLTu$Ki9 zti7f6th{yn<Ndv!Vrn(NJ*cnhrw*2a)c-WJ7FNQ%PGD~a^ozUxJ;l>iJ2)N|csh7J zKHD(TM=v}9T8-zGjb!$e4?}4oY}D|Bge~vDvOV9S?%-!1TiT&c@D$OCV%&sbw1nph zO|3U3g^&&}@sjHLUP)8d(zECp#_Ca`tv#^oRGh6V(wDyNaKBPry+NDlM`$c;bJN?f zT%xq{EY<??Mub6VQQ+9y@62)5*u1FkIX%0w(x<&oth`x0i&1DQ;mJKa^6#v`Y*?>d zyWj3sue0R%_|m)7lScU!wUD>yM9*XW0a?Yyf!2;nw~|fPqm_NqJ}cdhy?b8G(_i^X zZ>HTRkBn&JJMEMb=~ITxrE}?4%`_$`HN7?Yy{^5)KJ9?tE-Y2>=)T<yRp~0%Ms7YJ zlk}2uC+}o^hjy3TC7tj_CfvovU4z|Q$9{Tzjm)rHM?33vNjhzpF~yU`*dpciY>{&6 zEU-AgQx@3V?cr^*5gOW$>jm+gv%Gx5CoM_kP34{GGt;M?)Y4lE;iu&8IO6(`zIn7# zq^WB9glOB*;viOTqt+$A(VVCe%W0hl2c?p6cl%;YdwBwmA5C_{IP2SAYh*-g!%)J@ zp$`WOm;G#;Ci+H<>gX&t(d~e-d9gIYZ<ME?F<4urW!Jw(`?ogeO*RDmcnVr0p4cOw ze7x0ovcWeKJxwmkhm?1oLsZ3orw4K?+SRA4&)#G#9LCsA_U|x@Q-rd>=GAddvCsLQ zmAWkNH`eOi^y88yXI4#&;1I1HQ;(?!{3g@MALV%bw%JmrWF>uj(}v03(XZr-zL!Z} zb%b=(bJTNE+lbbzsc}D@I<EAmCIxgSI9@Jz)|1|7u`^o_mnZtn!x$^Ml0TDXdrNtK zq(9OxKKuVUTe7SA4P3h$(&>`FZ>(HQTkD$wEqYj3?vv`X@rxykQY-l8_lY9@y5`eH zzJ&i{|Kh!aMesh(A{gDSR$S_x6epZ7_ZGvrdx5mOx0rXaderEl-lmgqA6AyUK<T-H z(clx>yVolxPmUUs#mWJ#GTx!S9{t(;eWKLPMgwBEz0IljH|ocwf%U9**6jHK@91Pv zXnom0KJ3jze3hb7UgH=^kI|OO@atTUxY!9(Vz0IH4p+<L8B|rWpFY9ZHFuMplM5!3 zytUDy1GTFdS)DxxvxDjDgm_N{d<M~Av>h95Y$r>kl-_P=K|M*y<jLe&YOoM*nfQ_{ zNs)yl31crw=<hCJ<ONB>NJ41+ETJ`|gm>XdQY)xE6b^NR20>BKC}<2c4VnSXgBC+; zpiR&gC<fXC9fHn6H=sMv@6ZG2G4vGr50a4>9ZCkJfigfjp~6rQR2(V|Rfp<AO`+yc zE2upb0ri6VL4%-S&^TxkGz(e`Err%W8=$Sw4rmW_1Udnog>FFip@-0O=oR!1LSe@H zV<q$<lcelW0jMxk94ZNwg{nh!p+-;>s09=Xb%Z)Yy`jNS6f^=F2Tg&dK?|X!&?;yX zv<o@_oq}SaYtS9&KJ*xR3B7@2Rgx%_3d#h11LcE?LP1bTs5Dd=Y6vxfnnEq0aHt#9 z1L_TpfhIsRpoP#1XbrRp+72CpjzMRjSm*}yJM<KK3H=AXgLH!Yf|5gDK^dT&P;RII zWJ2YkicnRkHq;Pm4z+<gLW7{e&=_b6G!I$~t$;Q_yP!SLA?O5j3OWznf*wNepbwBr zkrv1YN(rTb(n1-a+|V~rA*e3Y2x<<6LcO8E&;)1-G!2>sEr6CmtDrT|CMX6v0v&@+ zL1&=z&=u%D^c?yR(lwNCC?%8@$_!<P@<D~5(ok8bGE^0+3Dt)hLQSDis4p}Kih_ng z^Pq*$VrUJt9ohjMfKEVXp-a#W=qdCH`VV>sd32N;C^M8B3W6#^)uGx@U8o_{2x<j| zLp`9r&=_bOG!I$;ZGm<``=BGx3Fs7b7P<o6f*wMTpjQwzP(GkEP*x~AlpFd6Dh!!W zS*R{lA8G<Mhgv`#p>9wVGzVG$Err%VyPz0oA9M`50$qb{K@XtE&`anIL_IhrP$nol zloQGa6@rRF<)NxjO{g~15NZOofI36npx)3hXcRO7ngcC{RzPc@L(nDY4)hRu484S2 zLGPecUgSTN6$*fgL#3grP$Q@n)COt~ML@lve$XIjFf<Gr15JTuK(n9)&<bc3v<2D) z?SW1~m!RLF`_LokDfApteNZl;G*AX8JM;}y05YM<P+h1I)Eo+hBA|ZIC}<os1)2rT zfwn^1p?%OX=oEAfx&=LeUPAvtx-ZU6C?%8=Dg*^UWuc}}3#b(o4)uU~Ls8HuXc9CH zng?xywm{pV9nc}@4)i<p5PAx|g8qZ#WY}LQIg|>@3}uD#K?R`FkO|d>8bTeRzR+N3 z7&HPJ1C4_gL#v>z&@Si@bObs9orSJIzeCTVchCpO<A?Jf$^_+x3PB~I>QE!73Dg|w z4E2HrKqH`O&>Uz3v=!P8?Ssxh=b<amBj^pJCr7?Q$)L1QPAC8>4^@V0LQSCdP-kcm zG!0q^ErymsYoJZg4(JSY7P<sIfF48tL1=I+C5JLYIiY+|ama+~LLH$VP+zDYGz=O6 zO@S6e>!2Ob9_R>kA9@Nshu%RnCH4bK1LcMaK*gboP-UnI)CP)x218NMIA{*E6j}xC zgAPDvpjhZW^b-0HO7;bg1C$xc2L(Z8q54n@s2kJ+8URgzW<cwpP0$u-4|D>$0lkCt zRPYIX1?7ecKtWJ>s3KGwY7TXT`ay%CG0;3{0kjU<0quj%LpPvD&<7|(YLru`5L6f{ z2~~ueK%Joos24O2nguO{HbA?eW6*i%4s;*FV26?qlorYf1wo~us!$84Jv0D{f+j$7 zpe@i2=l~Q8y@K>FQJ$gX&{t4Ss4!F!stt97BA{N-6leyt0@?!YgU&*?phwUfD0y03 zd!XD<S*SVG2I>v<gT_JAprz0z=m>Nkx&=Ll^mI6<p-fOws65mVY7cdThCvgcWzZ(* z5EKjj4!wlZe1&|50-%aeU8pJ47a9yrffhqsphM6V=n?b|N|_#Mhl)Zqp}J6KXaF<? zS_W;0PC<8|=Mc?+I8Xpo8EOJ`hN7TJ&@w0niiI9Sub@;JQC6YSP(!E(G#Hu%ZGnzJ zx1cwWClmZbCR88l291IiKwF_$=q03ojbjIuhH69Ipb5|#=ooYdk~1T3pyE(_s2?;B z+5z2yK0ukWU_YRa&?smFbO-tX70n9YP!DJ!6bt<a<;#X+3{8S|L27p7Jro5UfYRo` z_Mih$>72L*<&;7sOyim~8vCYr9dpF%Ds5MG{m=C8voZG1H}B1Ld;YBObj(fjV42^e zJ4Z+%#VdS~ZC1O%=817De3pAI#w@*7=ewyxVq<>$<9>%0v&NZW-?h%&C1|X<_~?p1 za-GU*4$AW~*Yjli%%yuz<}WSHH`BaI8?x3nHm35g4|@mpx*bz2U-;(pBWIZHQr{n4 z@1IjKDgHfo^}qhRVv4+fTXueMteN%wvj!JZFE&HooC!Eyteg3|$cp@{o*py@gr}`k z$Y-Uw_*KuZQdAjW{<33lwucY;nL~4|-Tr2819L8^8kDSLm^sxbG3nfipUf@YmprdJ zcWcbNOuwY-TXT(hIm?4LLw?F<4jr)eSs}k(F}tSxGOm62jF=W5t~JX!XOh`tTaAZb z%FALFpYOLZL#at-t6%Ou8gk%Av;FkwZ>JoYXQuVEoBkr_FEQTD8CQ&WHpdM1%sIbg zb$)Yb<!r}qHL4gRcWt|_T}=BJzwRY}_<QF-Jd`@pYqc3<`p<3_Jo#djSt3RB{71j_ zjVW?=Prj8q=Em$fzr017TNBL@GiG)ulXjwcw{MAmJW&hGi~qg<dg!xJrlRj$bn5zQ zvvrBRn=_nPX+BS;_E<1>g?Zz^y}MtvA8c;Ser$E2MnA-)$a%VQ?<+H7n(YaXC^37S z+1h*VS()Imrdd;o-H^JuS*px{HGK~BFz2q#(S7-cY3AI;ud^QC(ZT%V)XG|(sqIZx z780AL^~pKqT+P8I`E6YG9+S?QuTCt_`_1(8W`}f5TD|V}XN)={|Bq+?x@#`?yqq_- z(M+>;^vL<e7aWXPu<VD8#P2}N2V=sYDHohIpQQ^*^H0{JF`Z*c&r})an=4;uK3(tB zM)T&=N70>jY%<d?lUHt;+{R2<_j2ta%?`$-_$OP#z@UC+@6_|>het1p$^T(O`Z+%? zjye0)nYzFE?}@pa#<$w2Z<d&m2b+~C5!TI&4nI<@(Y|SB`{Hj;KiWUtoO|f8;hFcd z8MwOL>^hVB$L-&=lBZjKw`s3g_jUJVPoD3M<IcY4?iZPhEbnTbEZjb<{O^;@Dm7YX zoUrq^GIJK4$+6O?W2$Q_t)5Z4pSf8M+3~d4LUTcxs9I+S?lmv<uQ_i>oqcAtBJU?$ zyuCZ-alyU|o)uqh-VA)4dE<v@Gx`PXd?R~S(>(M|Cx28@`KI4fC1vwSb8~Fh9Zhen zGJAe#wK&(cv1YbLf7H0Yu&h~4J>aSEcRBOo;51E?Bc08sGmbU*eZ>s(#)I~2vM6=T z$T?H%_OF-0lsnyt$W%Ln*<pJ0z$3?7o8)S{IUBByH*0j=W!$(l(5z78a+j+wzK!V< z`ADC7qEXEGV>|Et{@a+CfAd`{np|BM^G&P2tNq<(wwZs>qfy2BM4Ih`cKd8dHQ0Pp z`o*5ZbC;M?^G&L-chORwPZP~s!QTCy3+|1na;9~L<d^rxH2t&FZ<kMWF*7MyPJLBs zwktoIgw&mEPD+t+x0z{OnL($!T`*^Um8Ha=>#v)!7svkc&y^e8{<K-Q&TCojxY-;q z_TB2AS{^pL<!O3gc8c@ni65?{Yv;LYW;r*1{hX&a%v#H~M&@d8!+h{~-R2(;o-@l= zd37uD(G~OJ>YfAlJUVD*v!>t7$H@a5{4nzu?mtI}eSDwr_0%EtwtYS9Vcl(f{h~R0 z7Mm`av5UKw_Qu{YzubNx*`k*>%y+NGXPN!vqS+?u^o`vgZkQu-b;uc8^^$pT{MQk~ z3m!K&AF3aFar||2@z)z(Z=}b~&iV7C{{GMF=7Qv{n`Etig8NUww||qb8zDO$98z{R zY7_IKTB#-e#dn#rC*NvNDg16s*zP~|pP%11|9z8b{-fTFVv;ZGb>e>58Z$D(v~pF7 z?v2SaDDRUg>DHT*-yE3}T>Z4UWZbuVgX%ty>Ab1SiKZ+5;{Kn+Y`>Kz>!HT6F*C2{ zBeT_Tb8(p_-VxI`#?0G0HUCR(huN>+^kUCuwKDx~1T`EyEIQ_Pk^lbPd3cx^b~gH- zx@pFn0gZhpyl8gQj9$4yIvjS*wEZ12N4F1qa&-E2bIb+f+}JeBViwHZJ9K=<V`kSD zwSs(<xiR@(Hmgx8>uS?1cCJR)gkR0IMO)^{cJ8j(efF<~7u?uu7GBb$WbE4`=J&bt z#k?K0#`M`;c1E9v3!U|tb3<p48UFvosKZMXd9?JZnd<Q3*hOPc#@NSiw^{AT#XY@F zO)$G{JAMDclQ47Es=BkkTC|m?X9iElSZ5w%Z~t73o!%KdKbrIXuj|Ym&hz)Q$@4iz zZJNDg!x!hx%`a=dsdRgax&7+OAGck+6!S8S4qUnDu9+&=<k>XKNOQ6oJNQuALosP{ zy;N8I^0S#cf3B?=VpsEcQ8BeEL`1FF_LzTv(0tvc*Zs?jV@!`cW9I&VP0o4@As6<n z+H=eF_jn&&AN8}jB5J8mvgm2%?D-YuR{wTrOxeFjbiLYPeax-Pz3R2exWMtx)6vJ7 z$JpuZ!MAt8<mqy@AM?SQ9uL~FEB4Zj{#Q!d`MbW9&2QMV4>tzcyiS<{<ug9KT`YZ! zB1x}5e0a>tnJP)n`Sb@bcPVzKZQk=t#kAM>`Lx|UZcTp;vd^!o+)fHPVRI)QpWlq> zp7Bt(jEA1`^{(8{3X^Z2^CvvLPky!2_oR$H&tmpVy|(hLABXaIN4R~RU+o=w{K2;C zTHKlkPuR`ok$>$CVRK3HFK?%FRC#+nMew9Y{mr5$19u-UIjG(I=zC`PoN{$ylRe{p zZ7Y06I!ip`2080a`Elkpcdi4@JT5-><K*iTQ$_?)H`W`oL}7b_M8TZ-5G6@`KdpJ? z^5sip$y2{!{fb#?bnMcr&o^0$6bvp{6mhHxe`~Bs{;{4U_emjV@YRipNC5suO1Kra zrV)J3m_J`0BCra4xe-e^rnXRHYe|wy;s1eD&M(CTrJP^7@oG80EaONyzdU1USwH{b zS_Qx0D7}JT9c81}FBqh(UmjS%5;4m88D)L&rlBOhf!h#hH^inN*tQXCyi(CG-8i<L zv7~}up5bgeQCcOx5apTI@?Tc)U(QErfM|rL`wp8|V`;6HNLtIXv|@z6eQ<LS={ycc zCy>&UNa`s+qZ0dixHguKBjYi;aUQs8#{G6;^Rj*^hAU<L(nYD2{jw-kyng9G%K8}< zeJ}!@gtvj=0~4z|v~4RT)2dET$CGh%ELvIP1&3Z7nyRS&!HCzAw2j+8$Ffw*FGZB1 z-1S5K9P@RKf9H$(O50cYWLg!+S4}uuN13xKa8?5*c;I49tbWoyR#lSP|H^)+RrOio z#{_#KNmZZ*++RbM4(r(CnDAp?G2yYV>^D(nM<$VjU(JX4isrsXp}x)bRh9Xwn6MmK z$EKR!O<8T3s4oevb0q06?rSlwWN~?1f#pkOmdPw*qEzHd4t$-C*<iw>`S?66KUR$* z>Q0$uUQPSBg>bv!qFr2GSAa{8b>LWCAlsj=+<rsc{#bbvzdse?&Wjp;(TXx1`%^KI z6N4S+o!nO~=F2KyIL_rJs1?VPisNV{tJthHSYpfi6oJWK-2RU^`)WeDU};@OY-@ER zU$Dwk4uZ&-Zi@Se?Nqf3rxnrK$x3#fG~o8=6Uftr?O6GYWL2}0b<FW!0VYGaeFa~v zSmmWgTzQGVR@mp?1|R!07B3SxjV0#iIQMfh&X4Pw6Q8$gW#5neu=9cCYigEmOu?wD zvGcX6m9KT<PR27lS0y}i#kRS9!MJl5$DxvazEvEnvHXd#PPno@XrEvm4k;M%`tx`m z!`Y5~{E)9z#!)+_Qk@@>MJiihyK1Fz8;|>)c#b=HT+_<ql~x{Cu#d?f-2PRNvn^a- z>NwW~r0|1tMC@xqI_4MCPL`*xbJ#j2R$i887rn}UPa3L+l|)axvMjx9UpsJrm03Eh zvg*!Le`^PkMbSKqV3_p8E-gfQ%75Pz+NstrXhO!;RCWuK$i#;Kbx$naXq6L(o!>zA zd&&4j{>>0RM^%r-v+yX+Zy_sBmLHbyn5^p<=4{pSQ<hQGkMX3H$1>x)!z?UW=a9XK z)boSL*V(Kt#Ox#4xrxd8y~VsKBuly!a*<I<!h>yVYK>3ETVA%;{W<T5RcpJbUt^Q? zdy07vi1849GhqEjf{o|gpY1p%>o*SbMG*5Jd5lq%A9gNcS_3ieOwRY)0GR*i%=S0d z?;jR-agJ9bTa)!Who!>~XBTu#)^8l<Y&V&o6a^WzpS7|11IY5v?|7`=B(R5^hg8G@ zChIzn`7?;w*Qv~?gt2|>xq{;=3+2QqG0DN1{mrVjopoKuVtUS_*$oCJ>l%%DF3z8P zZ(+&07GtrH<A)sxOgH&<i*lZ#yUnd@Bo@nY-g2PLt!o|@YjN&B#^%;F42$1!-Zk3h z*0l<Y9XO9(W^?OWghkdifbG}%bvC!IGxj3NAwQY<I-B+8_9=e0p>>_X;$U!DIPXH( ziNz;XC=U)}a~1D-N^DXkPhuGMf>XglMeADkG#cr_*&sdP`Rjbo+B`7++QnybZn!QT z3pl^%vS;ljm>=i(u{AcW;(VsP8u!WCRWN%Yi>&YL`#VGW!{tAQ+dKCsj-!K|r*Nf{ zwb5Yy^SHQuk7!6)T>J{Ruj1mjIrn$*2b>4H_!G`UT%5HHVd=@@+Ar2#gz-8qd;8wh zkQ%!<YgdArdiIfEN@;OJYU#31$N5cbJMmGz=DdT;J}2kv<4vule4IP?an9F)oKJN5 zVQpR5e)Vzj5YA`1cxBEbUAz|OBVD{9=g}_SjPujh+)1S*wYJthQkHmREp>4GxOf+C z&;I*~Q%`R1K2!U0Ud5HqgE-IQ;=?%a;NoLAU+&_QIA{M+#c2lTbzFQN=l(9fnDfRi zzJl{$7hlJDOBdh5d5DYe;JmAg@8Nv6iyz{=kBgt+JkrI_az4_<FL6H8#cy!F-o=0C zJle${a=y*QpK^ZK#b0rL+Qr{-e$mBMtGwd+=HedCU%Pm6&Y!q=8qQN#+lem`88~<D zdz^2wa*iLj1XFI#?dwGRR|PoF<FYTzxpV*I#3;^ru*=@$+&=FeYdo{#yo$@dI_Gs< zye{W0UAz(Jja|Gs=l1y>zuh*R_i@>G<h-kkM{pkL;=MQ@>Eiu3pXlO)IiKm`BRG$C z@o}8*cJV2kA9nFsoG*9r1)Q&U@ui$^bMaM<pZF}ZmNszi)Pp%+|Lpj20H53c(G6+0 zi|^(3hh6+I=cir#B<K8gKJMFdoZpNi_QGY(|8Vh}oIi2#dz`;^al6g{S9#ZY_l(=8 zaPili8!rBy^K>pwtQ%=V%HrZ)&fUK|tbHW=Jx%9IXKKffi?g<r%s!8cf6aNYi)ZIN z#KrS)Ud6==a$d*9i*Vl9#Y=GB!No&3Z|UNdIPdD>H8}6%;`KO>bn(WVk96_xIiKj_ zZ8=|V9k=)|J9EC?#k+I9&Bgn2zT3qkIk(Guy#Emv_r%pRJKv1w_7`1#rg47S#piNv zmv_et{%3Rkhs%B?=TBUmwVP$-$1d0LeztKg{3W!$jN#m{=JECiIk(GEJZJ52t@7-$ zKgYShi(lb9*u`&iZkMBY{|`9N;<A6jc?uVQWvzRpka!o?(tB=S#br;eDhb@TyST5# zJ(BypNX6~#@)*C7^xVE>JhGOua_%nwc{q=B*|T=Z?0<o~JQuULA+>a+voz;@T->hH zGo-FAUY*-_aPfMaN4j_u&L_HfOU_5Scze!gx_B4Pqg}ig=i6M|u3N<Kj*CZe`}Hn9 znsZlnT5Y*m`8@5ipU&+sy7)ZKZ@Tyr&X>D5YZK1=A9nGL7WYWe?gU|7l~@IK!f89~ zQzS&z+U_Lyp(Ob6B>34R_~j({tt9xpB>3M+aMlh!vHg0J1ZPz<iP^Ju^oeoSwmvbQ zItiXJ37$0xo+k;;+U_T|-6BcwQs612XCJcgW9<B%S4_g5^#e%Ee}g1=vm|(%BzWf} zc(){Y?<DxZBslA*kXZW1CBY{r!Dl4FS^tN`{Qr~$Uzr5o3jPId4paPX9~kR-0T%Zr zVShXcejy2dEeU=XoNf0stFXmnJy&206*~S9(WOgh!8TI;h}IEdl|y^l3-vp9>?+l7 z72Y*0v`3AIh|ay7wR*k6Lira~48B}FqC4XMAhEB@hJ{76k$M*_78qR2nicbx>b2?; z)~gS5UoW&vMECGkVI6-AE#Dym?mPD_*s(|VRt52fS9^O_e47PJUAuP-4=q@%Xt4mP zO+;wBc5E?FDp#p;eeTmrX~jNW!y>we)@jwfRajVPm{cLc_Vp3K-i3#j@72?GAK))_ z3GLIfZO8C}#fldxF5!`XX#LPu-P?4KYDBbY6~>n<b?nj>ae7GgyM}e_Db)<^-Xj#5 zW^LJ7VY|lcYIf|>F}zo}#8Xs1w0p-^VN#=r?wv!sOI3S@c5l@)RI1vgXJ~tC3DyOR z1qAv_1#6TK@DH$Of%dEjn-veXK8v$Y$E>jZJ&#n(UMp(PEb{>WAZsmvd$M8&U~k!0 z0<5hB*-irZ%-U9<Z608`DrP$ju-pgQ8ws%82HNQiu(##JvNyuh7-;z|Zuux~yRahJ z+*&MR;Ud;Hi&{x5YB?-wMJi%#s)*&Lh{cOoX~a>&P86|hidue9GC+#jek}W<mSs`P ze^JZ6sO1gi5SA!D?9;L=W?2@qEQ?uNDP~y)Sw4eod&@(R6)VWH53;r%WW@@y?X9>$ zmSwONH`t0BY{d$;Vg*}U47TFp#6TK?t+>Hf++Ztiam%K-WnbL#P~7rX-0~A>Z<j?4 zw4w%DQ3I{0g)Q^KmU&^zys+i0u;r|<6}7On*}_(=!j^}^R@@?XT;|xawv6p0GG^I0 zrH27tt}I(#f~+WZVd163+Dd>OH_$fa#mG*4fSt+!JDCA?Is@z^2H5EhuoD?zr#Qe) zY=E8GfFjne2G|8Cz%ESzb|DF{OHY7Za02Yo6<`;d0J}^D*aa!TE<*uDt-K1bOHqJb zfCB6i6kr#g0K0Ss*aa%UE=vJ+F$%EDRDfL+1ME^2U>B<Zej?cgE5I&g0d@fhuuDLI zT_~)B5MZD10mZG13-q_4UCILNVi16`f{PQo$aW3w-aVqb6xs)ur5<3dyGXdSvTu5X zhK082DRmER^8-E{)}^h~qeFOG7<UM7(=&|C+T+57S*xB>cxZT=u6?B*xa4-}*-q-p zu6R9qwvFi3Q)<^PtXGc?QoHV<p;A~xm-d~)yGm_(wQkj}SC<wnUU<Y0p={m*&RXDu zec!7~SjR4%rSQ%@dWK@PclVCC^0f(z=n;wpb!inI3g_L!Lc2&UTJ-7B6WfpIiWQ`_ zt?e3@%ob9c*4=wbq21fTD6~)47VU7ogqN@|{<{SOq~eFr?yc>m-mN<JY$0KnLc9FH z-1m$KgK=B?N3Mk=wd3_B><O4vg~gvUFXWuvDKkE?EIu&V&!Hsi4w`Z2IdgaZzn8IC z=q+#9Hd)~8(W=Ae3%roPe-gOAz&8p!K;XX!JW$|v{g|Eh!UF$OuxD*Aob=fBQMNsM z)a!7S|F2;CRZQS%1kSR|u@4Y9s~d87ae=eOgbugsXYB2k5V&2hV)K#$x9d-AUP|E3 z|4)`q*4WYUKTO!JXg^utWd!@B0yhQD`u?(s`452{{|5xliipF{2)vxYFA2Q7z@G}d zg22DT{}eW{?N)>w|Na86B=BH?vq$ibeI<djIyi^d5;%JV@9<^<uO{#w0<SLcF#;F& zYp=j-2==TWGMm_b)r6ewt`m4Ifu9k$Xn#-OwFP@W9V?iaf3f_3EpXAkq`>PSj+34W z0%vVS9G=d=3MS@XJl`t_ydJ)D?CS`;zQDf|IBV+Q*tZtAnEp-zZz$Mz7x=dVA1&}k z0-r8$R>$gW_a}ij5%^kxe<$!?1<u;cIDQTayqUmb1>RiXj|9$|b~t`mziBqHe8%NE zj?4VfHRCM>{)NC>2|Sm;TMN9Tz}pC%^}l8l^WPS7(!=^<vx)Ig$l(zJZzu3bfwvd< zB!PDj_$+~o=h0GucNFZm3tYVZ91(aY!TzkkI}7}Vz**BNXTR<XJY3+cPdS@dK6HT` zd#7rN@d$w@<5f<Ki`Uy+0`Dr=mlJq5fj1C1YtrLvm-Sg^6Z78#a(EYki}tKPJDZq& zPsp*KDDYkapDXYm1kU=rvx)iX4LN>TA9yw~E*{4t0%y-29DCL;o=wcYFXZsAc+(ul ze-t>Hidqxn{RG}b;Qa;OQQ!jv{)4~=3Oq{SV)|Ksdp5D{ipTLMfe*rWPWpEUJW}AS zk3O52pTUr0e^%f_1b$QCQ38J?aB;i;3Vf(w&-(teiEUThuSkK5zb~xcKAV`m_<O|q z?X!t-(Vq3;XA|S%?@N1ui`Vns0vGM43S9g>nkR7a_o%*~wOMPs;_p!#fqw&&QWtGI z*2kYsES<w3C;uY_&g?62`!OzFgY)Sw-hlIkF5Zmu)h^za^8+p(#`$R%@5wnEcYsYS z{VbjRIlt%PLpguy;$u0d$(fgUKT|nR;o@^S&*0)qIM3zct2qx8_;75;$>-t%XX)R} z?aK<hqF^5?aAv=g+lLE$gkaxC;LLtMw~uo1<D8Fo@pGKda`CI2Z*lRvobPt=zc@eU z;x9PA;NovNzvbfO5_SU9OBeU$+^LLp%0p_-eNx!*9G;Q$R01Cf6X&>O5cnv8=Mp%} z&m7zj8+U?Dj{p3eH+S(OoQDd0G~zki?J98QzZAD;<5#fB@n3=S;Vxc-^GPn=fb%sj z-i-5YF5Z^&eJ&ox`AHY=$@wi8@6Y*P0w06@aQ2stv%w~3zlL)AEGZN6v7F}-_*j@Y zehLem<=a$lU&h7fa$eQNmvG+8#aDA4>EfF?ALHUXIiK$0`#E3e;>S7P;^OBx-|ga8 zIX^7$aY8<v7WjC9UlBOVpS#@8dl&zUbL|TlVPeN+0_5a#N`W&!FSvba7k|rn6&EL$ z5eZX$7x(4-dlyg5c}Ew|$a$oT=iq#di|6Njx{DX#e38H>B7M&Ot`N9&K63jF0-q$< z9})OufwS>h*u?U43gq~wsTj5SRLmWoSKxI79w_j_0xv1>x&p5vaPfbEni@u!SbD_! zgj51&``e7~Z%%<v19#HtFK}kxmfN%OVc6uH*I}Gja`B#=*LCs!oHujvp`5d^W<>vE zIgfPlshp2-@wuE&ckv~hv+-+0|EoFQ;^Lb*-|gZ%IcH<vh<^5Se!<0$bADUk(-G0h z=LZ63`FxJszZLil!9H0Uw$=Fjzsl`134A8Lcl_rOIP-s(+ZT56zc?@B;x9O7WB9Pi zIqq*c4|Q>J#kT9};=Y{sbMe%i4|nm5oKJG`9Gow8@%)^xckv>evoVI)<fOk8=lcXM z-oKp`ILo&R-2S@2XMsEU{6OH$z6Q5X_9a#@IooZ(c^ZMw#`lh&ECOeKnsNJlF5Z^& zVlE!Wd07|l$$4`Z@6UM$7az)b4;LTH`9K$+%K0Q0pUe4NfzJ{4ca6Z={x0G62LwJ> zus<zuX1|)-UvcrxoZoZtot!^)@%@~qNeic#oa1$z^DHiYj`MsjewFiLE`FDDHvW|8 z|1ZuPy7&vuTe|pL&O5s}xoZ3EA@F%XPPt;^T(ODm*L=v~!v)Ur)0g|1FYpC|{c3?T z`_$b2sKBEI`||>4_8GbTO&8C>`9l}a&-p(tUW9Ww9h_ovj#nwp)3|sA&a=394bJnq zcmvLhxp*_qtGakw&g%+%A=2gKa}$9t5_p8bS^k7^KZ69mSg;>0@FfDDCUEAbC-<{T z;NpG7&jM%m{ki=f7az*`Re{$QwwvlJtYBjKFW%2&7Pxrdl1Jd;eM`IamK&>jkyq_l zfQ@y=Cg%Sl<m6{BfnO5%k1ju5@g1863HG9&Q34nJjCc9TVtKL0Tw{yw^vp}b&mxzf zD%=knw~bA1KN|!tre{uuc>Bv(bn@ZrjEVEf0vC__0f8?S{G1TD_&dnPZetTWCM>Pa z^UzSv8Dp0uCq2QLv4V-&vvTG1W37?|XJfvx$+5TBFrFjltlE@)H<N!cmUDN$O&7SB zZ|Sqz5t;o@kdw~*0vGdVLAH2%v3#x*xM+VlN4&kre;2rTUKGw5Z@)}PPidA}m{>Zm zLQXo9=VjF9*D!Z@?<Dv`fnOKwE9YZgKK64c34Sksy!{O<I@>K+AaVYE5`2CV{IS5r z{e8o^bKG~^o0HxP_Tu?#6pT-gc-+?&isv`6=%jzAz;6lsk-%>Y-0P1OOzgPafgC^I z3jD6XzYM?%CT1_@+f#vy``bIvGPmr-<Lk!?6DH<I^xs?HqW^~i7yVQ&V!8P!JwGME z9}8SOufHm4`*DuTANH!0g>#n9-ytV|3JCn3z|kbfnwb54furGA9A~~AKQ#pYK;YkU z?xe@*XVX-$7t2Ygz{PUXPvCzF{ztm}2g_FSq;Z11=zoU5MgJEC{tzzsWmcL~%=X9f zLEP>>firt2AC9<qIy<`br;8KLZwA>5%)fXYdm`{D_|EZPxOBX|c)eQ49-?4ke#CNk zu7ZU>;?r5BHYR4zilpP;sKltv#ow3t0$+~r9s8dIzCz%^m6;dYk7yqvaMAvdz*i!k z<G)B1%Z-&zF&~;G!S4!O%%40}<NdI_cl>uxf=>{*xZTFp;{AyEyiMTZb}tHim9X8v z1-@F~xvR(f7t2F=fv*wl`w4ulz{d-Goxl&(NZfzwn(<sr&pv^R`EWc59$qWnkC^^N z0vG+<75I7~omp8XVq)b}wEvmiq+)XOjP>HVxZS)0FANjsxR(?727y->_(p**6}agC zSAmP^TwgyvJ>q@fbAgL~dN+u-7yY~!xOgAv+c4g~B^I6isx9!s0`DmBO#<&LaIrj( z61eDRlEB4sK1<;Lqwd|~qN?`){~19YuLET#Dyy-`piDtg!K`6)(2Wg+<ptBcgrMb( zxG0q=HH^9&N9|%+YI!QlE~ckrWu^h%P)ozRnJJbPcsY@!qLqAK@3q%r-fZEVQ=i}Y z<F_Ad_Fm8ZUhlQmd)?RCGqZ~6U&{E0jIU+<9>%X51P2bvU#>ruac+kP80YrPW&9)P zQugUOn6w-ExgD|?=XQ9Kac+kI<2=1DGtT4xCgXMNz&N+V4Qau6ay_FN{}>`FU2TR0 z<$3)b!8o_uBaCyqoo1Zd$9{iM|7sR)4db6M9yK&5zlQN4jPr2I80Yc-mGMuRo<A7p z@jN-K{&25*Ajo;RQyJ&^`v&9O&c_+&<s^D|P(M%aP{w(<UdFlImN3rku#9n@j~_D5 z<G+b<o?rVI=kkXc=i%NqBABj`xK-sXo^h_n%lKL*Zzs<<%<XpbQT6jj8Rz<EG0yA7 za>luR!X6CjUx!;2|9>$)l5s6PD1Vai@r?8MJl+6*cyv$?mk-GZ^5>ZT7L4=$`i=&8 z0pl*F=VQisxC=9b;c`0^j0y6QOi$+6Am@7W8sKvo=l$ji#<`wtjDN<$-Oc!$j2~j0 z>uK{){qYPP7vzVTo`)Id^|!<LpgiZxC2x+$EpU#s8gd^n`2#?zT&-pNE5?^iF#J*Z z=kY&1G00~ydGXR7+-CX3lY;U*o-bwxc@fj|Cga77|C8|&#(!pfJ>x5;!GVL~vjL|{ z?;6H=xaEu&Gx;Xd;lM$9c)0x-=i%NuTZjw!Q@B;(x)|s7e3NnBK77LXMyBVoKu|xI zznXEb-^n<a@5?xsFJ*ia3-^1*H#6RCZZJNjj8A8rhdYyT9`0Pm-(z}KFwV=*t@DE6 z@_63QIFIL8#<~0)6aP(q{^D20m$LYTJQECe3*)O9KgIZ$jPvyV!T3ogf7`P`{i%#E zXPoQzJQtMbdbT&fs~X^ao)7Bb>0QV;Z?}sZ;5%Om>f!k~<>erM3%9CXe9JhOU%4<S z-=E2U$~d>@H;iv(^6eJ|_3-kO&p0n9X^ZQZ&taU`$2S@0@p+$dKCamDN>D$S-^VzY zziLTPp7RI(9^^c~G8o?m5oPBO8Ry}iXPoP4{8~^y*YnHkLH-=m-~Npt=kh}t=k|ZK z0sb-LE~bBD1N=DSyuO@c{Bx!!gA$2@+Vf*Lm3<a9z&lc5#X<7iZa*>p4W21IrOQa# zkpCK2#eZb{1mhP>Jd`}+82PqwrEtq}Dm^n8|Bmr5-+==M$sfU~<n8YgH8_uFEaMcP zmO={eBbay_$?s*n5=`kI-T;5N0Y13_K9BKorhgIRJltEUvA|(Y?-<5;dS7gS?{9!7 zE)VMG;o9F1a&G6o4RC)0d@bX=oLs*msGrBbC*wRm_cy>ZC2tOOEpV>18hXbuc|H!z zW1NozpEBv0CH2f?@?6g|jB`CNnDiWwdKNNyu4gIZTu+mK1ntA?V{68FJFtv#-fwzo zQ3D5+pOZLMc|O_zkDy644rR}H@`$5Qa&mr;Q|Xz__z#Rf$M}zoFJQca@e!ZEfrIjp z!cgBAt4mJobDS#Ni;VN~*@-6kI7t3qIF<Y;#>*L>!1z(d3mE6+aCQTHK?D4a2KdSb z_}T{emInBq26%Y`{GCscNE~DzZnp}?c|Fah&KL*D^M1tlnZULAReZJKo@e6f`<4Gu zWIQK5T>k;ac{v|a9F*tfxsq{S{$opm@|-6y{slx-c}QiPhx;(&+nM|?lB@D5zF-^A zYb2-oLTOVxWj#3z#>>xm#(%<d6`xlmCq3<P4#P>u>r9^4uXh;d^=k#=yndZzd>izt zaJSK<5l17O+z#0r1s1#tw@Ut|O+o%M;}12!=P`bo$(Ks5(i>-}wd^+Wt0X_g^nB0s zoM)Wd$FkY*Na^DCY0Nmc&j`kO`I*A_4i;{wQbRw*pUOmWh~dtWoWkYt{DH~0$FoNa zaZBSZ#*JD2UdDfbh_e3>#(BDiGhV^ucQF17<148U;Gl5V<5c>$GfqWY@uQ4Wl~ufw z@nXh*BV*w(>%aQTAm{o!GS2mPW4st%Rk&~LH1w$YsJ^Fsg^8>0HUB|!iqEf1&n>$Q zJ;ZtYHiYprOy0-%S;pUH{2b#yGk%)!%Xh<pqd87WgD?~>*E3G#L>;$CPVwaBsvG0H zoZP`UFDJbi=jCKJ<JAa5+4*b9DV`Lz`ksd$OkBO!bmM*q;UL*AIF+7M#@}LmDC3_q zo<V~o9A-UhBv*E;k`oE_`6{!0uKmi;L-J%#Io!4MliV!-65~|#RQx|~fZGll`pxmo zWt`jpQO3FbH!;rJ+k2?9#6kLh#;M|y(*S>labDik`>>>EHPfTshc(AP^ALn^5Fd$C zh3jXW>-m!L^GyB-<Gehyp+P?m(ti(5rT+%T%NUPioT{>tAI|s%#xoh`;l9ZDb4<SZ zVK{J5d^jJ;IM=_2aTolk_<Y6qZ;b!WI5i1M{<?BFa8S6sUVL6o)Zje+uA>H5<ykYF zmi{I_Q}T(DlYZWAd}NYeDCLhgAb;bxhJXrJ_1B$D{3@xZhvepP`!LSis}#n0eYux$ zUSD2eoa_0B@m~-ZW#@QWM8MGq=Wd*e|5I|+o<uYzDT`$vljnA;Vw{J2j&UCU-x=re zzlAy*926fHP8A;~<GlPVVVswTV#ay6n;7TeHlxJgpm6u#RN+o$oa=d<ajxf6#<@LX z$tXBT|6ZI*|AUNk`L`rj_Rk6>-xkYfOrC;LdNwmow~B9PoX39`<2?R{C0FAIHExe3 z&p0Ul&*4=1;~A%>TJhPEQ~X14+HlfwhRIV_DEZGR5;#adpV#b@yf!{U3culO;`1bL zNs|g3q=)N&Msih83rGmZ3rwEd?Xly=bCM@rs(&vuan--?lAL7uyyo^3K|PcP_5H6N z$w{8);{e8ae1<YkCRBDC$vBxr@n;$5b~r3KrK<(bL|LxBWAZ%Q7PL5mL&-0o%)}8U zImMrb9xB|c8K<Fv;@6w>Xi`rkljnLmGS2m^VVt^jrGF3Oe4P24<SPDIGF(x};NKko z=2ZA3=i%NVIoXW-sCu!R$@6+~D=o6%AlW}~s(4OkybI%VX>fys<d5J~@*goyS=1IM z9VI5-(!iEd6OWMmn2EQMJcR~NI4InUI90eqB`3SJ$N33PI%YHZ8n~6bl?GKfgl()r z-imQ<hdz=k{hJK$mQ*Is>qQ#lynK#eoY#xdjPrW&FylNvADK9Qd{rDjnYc>tcfS}B zru6cBe4i#oIL!IDpK+d#-<r6}#|jfy`PhsmS5iOeQTdp}IIr*TG0yXMhvdrsDt~`s z@;rYBP^H3Q&fk%Yb9>H{T<KT&`!bW~`TH8<Jb&M2oagWRjPv|m#W;`8ITKg;>kz3j z(k0R+-D(_1jLvzIYx1hN17)3#Va7$s(z62khhw90spV=tQ2kDW(xZOoO}($7xcZ&9 z*)kl()$g{gHF34BsMgn&y!s&q8vz`OtKV%)Gw~%|4Y@Z=T(x^uCa(I&wz7Ry`ql5e zxlLUC&RedDtKV}|>qbh?k^x41)b9i+u71xgO7>%lmp^34r<u6wuhsXzD|xjZqP}lk zakYM;#=nZI-+9v-8{sIPwZw22n7CTEUu)v(civ8#xcWUe`rdCklz#Pn&*M$JOtw>& zjyaD`$Q|_{uK3bQaUHAfvNOhy>X?hKDYkSRJt}vUrQ?G+IhKyulgL5hu^sVEtK5n2 zMKzr2+A%#RHz)%KeNSupqzMx;CPL}NNx2yv``$h9Hhc+Z`Z)NZ@G{1Z$jqki==}fY za6k<ed71oLrHS(H%IaDqZo=w1E!V(JMIzC}%Zwi|vuvSBH;&dgDI6O)aH#gTJ?@FC zVFW#+W26i>kp>9taIky2?SPYXn*A>cF)Fewt|TfBbNpjLNwTx?xc0yD-$Rxo^+3hn z&~Bu=KK}=0gCv(*ly?ypIh21g58YFF<VSHcLt>s>*HF(K>PB7%<4Tg3nRx0ChW`qa z0aX0eb#w#%6HgfaSDN%H`>AWT^dDoAtCIe&GI2v|F#V59|0Xd@vy)1)?h`YeC;gl4 z7bg8LF%@i;Zl%?aoBGP{f>DOXGO3u#FO4OXe^q`dKIX82EGthNF^!RecCh_8&HkH# znaeJarM$VJ^(RyO&FK$s!2j6MhX0pI89U7Wd*_YK&geL)lS3Z(zU40Xa_6pHx;q?Q zV`IC}|Cm^ZBQ_?cTU?yO5f_IqN*1ysn@>;j^l4-bYP8~;=z^|bpxUzFeWJKcw1ne} zq6TXEANOhAlQu2AX%QJ%3$)!-Kv(^61<7f?VtXO|vWDirLbwBQ5v3xC)AlgYp=x@n zO+D08!-BUF!COc0HcH-}wugUI0F9+hDDO3WP*BOBpprpBC4+)W1}P<)_3&TwkI3I4 zl4GO_&fCa|NPSj-Ypq^@_XP;XFPQGX5Koor|9N^<0#(Wopt7Gzq!Pg+W>1x3!>;6- zMFt6`AGd!de^h9HHJ`#i6XDC!XFaUUe~CT>BnlK=$qP&QpNVfU-IVYD_w-*9&-(4B zGD9T~QkUkJVGAV+kth^YS)WRq*o^opBM7@OBmCw1MS2m|pYl(3Bm31>cB8FOQCE3H z(GO|{6}7K6(g{_#m5oeop;K9+bg6_JH5lp|YBKbsvGALhujzSNxLHT>EA>(D<-!TF zoQjQo=12ISX&-zlSua5tH^F5&?Y4)tQa55al4*}RW53>#qHp<xTKUs1dst#vrpq4n zRi?eurd&ILv<QH~2Tt3EAAtA{E%0cKrmweO@21dhxeUtP7i_2PLpGeYr@6P;H0wbv zVPB?wz(%n3U|Vv?U#aFTu|i#VT70s%81lnQ$d#C;dCxb_n~`k&%9F6e?#;&BUh{6W z4Siq(ZK_%-=%4tBUvX!@zJNfT_MTEyZ+rjv|FpfQ?v&*^ZvR~U{44%dVF{MUOWS+W zONFbTZv5cYTm=73A**etN}EW1qCWo5)2kAQt4J9FytMt0eO?3YJ&mm>{ZtG7dVHZl zRN~Smr0>t_A>ShWT01K98`YfYgQ#liWP2a}5mjc0sPd%z0yWeq)P|#)k-ADLJPJrC zma;+p|Gi$)Bg-Cc&GA#2$MpT1)CKdkwqUaUyR-=ncbRv?o<=%8`@f`v^lAxJ^(Tcz z9k&i;d0dU+XxNTLOXb=7GS8xz7cn%e^@?^|HraXkMteQoNTF!Kp;ETnpMjd&Z8^-V zZNI76CWmOl|9{wiy9T)iy4KMM-!&jv|9#+n{!T?SfAOTB(JT7}+MX$(N4vjg!*_IJ z_QFYMjL_$7GKTJf0k^>wCI<AlQa@nPcjE3^x>JV7)#&_W1BhO!4CfY{=+lOjqlc0j zhM=EL6Iy~Y>e+wd;i+M#?ZXZtFsUqDLye=5!qXyxQBvyYfx1sal*3aUL9gQBUZ|tA z$oQn~AfYHN5K7uqgtzDjHEmDbXe+%U2A9OEHcCqDlHiTzwQlgrq-3`6)dgf;Rs4*2 zSz${fS|Uo^ilUI>sjLnvT&c#6XwvusifbjLk8mx@uqh?NWxoX`2~UKbU{Q_23(vPv zV9Hx~ejNwdNd_67Pu8t<Kx?f-qy^f9A{lGrp+}f{*cT91@yTa8hi%4#u0}yKk`hR& zp%INn<EOz}>?^j2@r{lCuM`%ehonIS6UcqW8fddzC?E;yE?l}Tka7{ZxrI~|s{rgP z)~^{faNt0pFG_^rNQMF6Ez9Q8E!NtoP@pPp^pp%D;;4(rh{Tqhzh3yHn22ZRj@R)+ zrV>1Qn~)=G8R=BfMA$Ca3(kC-^)wy}`?vyAudu)&jW`@bzv0_z{ni^Rp&~+r!ZIir zTE0kZt?`77NO~nTwupuA6uA;@NxESb!}5YT3=85hOin^k_BpgG<IzuRCEqsjShs0< znO0KXQ!A-(CREt_Zu0)oL@&`R>@zo_T~hJ(R*NyKh=P4a37&YX8;K}Te%WVyB1niJ z6e;_RPX!4TWPu=03es4RC4vM%gmW33pV0s-VN-5u^d^_SL9g6d>C(3)S$E~$(l7A* z!2&ERptTnkjxF{UTQ%?cuuOY&ud0MC*;Q`qK3Br=+$&Ucwe+*3cU4sZbOMSZpOR3L zqI)98DxnnJ9hpU9QzP?T`r1f}x9}AyeBr^`NRhgk|G*P;MQ1%IKB^T}QwT)rVy6B2 zLWs~{WwSAVu!r@jojz>NZ4F<;>&za$q}hW<-zLZL4a^^s6Ur``KWq~72YdMNc+I=n zCZ-Se@IJ=uVHPTIaze4)n~T}Q&<9+@To1U0Z}4r+yFIoz_H5<r7i(%hqve^(`E&>4 zTPpo@M^m24C+UvtTRDa9XbG)y0`BxJm1qB`si|)kG7s~Q?_GnF^%~KUp$q%<KJCeq z70~SVck<tfWQz<tcO)hKOa&BLlKp+7RKJFX%V$FXnqI2uzInKF`Daol=)NW7u&>yZ zWId%VKwD1&F<|hH!2`K8!<B^~){ZEECs<;wm=xjRSUmLTRVdb>$pLq$P18$2N0L&1 z-%u^RjC5;(Huq|QxShH$o^%D=k&yc^5%*dGiAUiMJr~aKbz!)-&zO!XjbgAhc5Cb| zWVx94g(V^nh5>iN>~h2wd*5xEw>ZqZ-l`>t0H++%13gKne;vh2^NW~k3Dx$QE|^^l ztfnI72`r&B;3=5_X}SU~l%{pd;G`fCp915_ZS>^C4MzCM)<c?gF$q!p3lJs+Vt<O3 zs+0U6NxtITgGqjSa=;TArs;uvJWdKcQsdUEk^@sW+G2}c2_@4!FbT@>CY1iLwtLVn zglZx4qadpJ0~9Q(8xl$L+HX+$kl-P`=-<@<fZ?ucD1mYkoxUo`x79vpE+R?VLL(9T z^{|d;cS9rXGfOC8ejmm8#5G8%1@^L$5ELa=lcas-Vv<Ry&MS9$&s(SUAw|d?v}B#2 z;i+|DLIWj*njOoDYisKt=}Xqv8!9^`R%Jh+?+o;}x)ZkL9ZT|^wa@t+o|4ly$8Jpy zwAtv<%WLajm<7{vm-k;tXxP={U-KSE8pG47@voQ7m9S&_!O8%9i+qnQuH1-w-&U8t zT}v;SmXZ<(g}NVNi)+ipb?yMl4r1;=n#fA+;Rug#*?WJUq@Mt5V((QZ+Of?xSM-Kt zZ-vdBaA4{ts6)98@mR|dlL+#g-9k&>l^h7g@Fq;O;jnwS1yOJz3Mu|EjuhXq-0NKa zxJb(K&|ZPiCcffnt-R}&;CVCq-2K?$_KOzKSCbc`8NX*$Dk>(K4@<(iSC{&VA#5pt zGw>nZYKD)RGQUuRdK2NYP9It7E5k!Nd^Nf+6<7P5&7>p{Acv-l!k7}666*0UryA=C zEF~ZMZzvyWxJlNxp6FAXUw)y&<-ZcugG#=AMOpL)q*e>`-0$)a4n+-+*!MMXN?`n6 z%d~qvexXWVuOCVA_YI3a7+tC#D7kRGM~{s3=#}j*X#Nk$n@6vSE<;CWMATI?*mlQN zcsn9bPYx7Om-N|UL|HUTnqR~l<uVceWYx8M{kCB5foCI0XZm7lE|UD6P$NXU;PKCo zAx{W}E&-7wM3HJDASD`pHC&QQz6(i0Uu{o=S+e3i`iBvqsCY+^q3ayDM-drvwS5k4 zF^O`PlHNDeFWL`kaR%=~30N8ixqgATO-O(xS+sDWoli73${lpkSh-~kZZ^P(F$l|c zx|e+zjh2UC2$xnOT-T#p5d{F{3$-(93)-%2XuHsEd920mgyVT1BF>Z^T?<PN^ulB} zKq)|aL|XkKS)PQgS}8@tqLn7XRN{)tDXuiVB<`TAedcL2c8J+JDkU^z{&1wcSw0pw znQknM5nh)j@zN~gCj3KcDex$K`4Zg7`sz>c)z}L?(3z4xCDf%?yLMKP_eU@U+DJDK zg(X>!(an&Eet|Y;C=TT6@1Xz5QTD=K7;SiKn%ZY1;07%VI&u6vj>qA?d<2wS@<XUc zN2}OI1U^3t431MIAhI_0EbMlUJpF-T$ntr{b84(l;Xx@q_>Gb!T6B=_m8!*tXw)}= zdvR`u_jLv29bV3pm&5c=1Wh+a3%r>cCUi4@3k~yFt6T|H@L2^PLw?D$r|nRV({NzP z(RlJR9EXL&K7`^k1b)&gaQ-l5CGaM<{zInyic@;EW?yld>>?8GjxMKr5lfU8$VY92 z*fEcFpF814dL(RtN9B050gt{$sZBdcPlRFcgw{Dxtgb+LO<PLYhAYw&RRXpZ_oA}l zN}WR5e)_k?URaJok2E&Xtotz9q?DsEjjBGKWFNAb>ct-jAq^U+u%=zWwTvh&o(|bf z|F)4AG@5C<aehI<-`jokqn5;}7oRUm60(nCWYm{HUo5g>EQy&#vUR;?{VF+OtKItw zhC7rTQS?v`s0x!?ltA2siz-exs<?)$;v6oDGd&Uo7|j}0aV?<P#30LKGz2LLTTo86 zPD!NynqKYE(ffrBL4Ok#uErJEw8AV}EF8ngMs0;V5qks}<Dr(1z<RQmibZ%c&0C88 zs>J5K*f{TXC^3drMg@j5AnKZZh!Jh{9V8+u8oH+u`7k9+HUt^eiRLNusY2SHdK3dd zP+I@qZGUPUxnSg(1yqxu%0|gDLeRXTr9caVDTrbTq9wJ@ptmSx3klte9q>j?AXHs# zpL;F7%fe{hDg(I9oCgsj{~IAvRK8GTqbf-HJKWGrZwL+ShX@5QPujP@R1VUr2*WCA zKjHj}$ez4t%K6Ro?+?UnDP=!7zJ+5km4V7XkkQKCMz|r+N2PKImKls{MUFFYoKZ13 z0mn%=%IOJorPW65D>x43-AZAU&_B#z!<Va2zoRIKP-luz$&i#0M!2Ce9Ygj($4(WA z?Qn>?O+ozvM{Oi9RSibsC>-Az;jX7}&m$;NcFA#!A|b-H*As4I1SQOhjkvUfDiT;= z2u9*_IBFw-S#B^Am2jLi!reeYT|iI)mEP|u5+d9e(dP!oSw?!BAShwLAE2YwfZxDT z8wsk$wU!Xo9HldD6V4rZH&bvM>ECY%MpSHalv4ymm^X?rMVsF~Gl>cSnvp~FZx8+Z zmHzz>tD>>M-BG&RMsk}`b<=*Mf7rFD+hPzbuiQrEw4<8uQImbrqa)M8MBeHcEryBK zjh^hMe_JYVh8LNBiew2C8zOL!$%IdO@_praA)1JCF#=*E)>FREqzOXhEF=hnutaZp zh_^Z<*RBOJ4h%IWc&-r-Y@orC%ilB*np#rc1XCu=LA2<NsEko4=bpgm$Sae*$ExJO z#-o2X`3_oM#aMaM2^-c;g#&?wrC<(pWHrqP$(3YD_HGI@Mo0@Z>jqE4@{!Otr7S7- z6m%!zUa9ndNKbNl8tp21zT4*VZn8ohIhwfj<025DJK4KAf@>ACt|{9*`i}-R#-7G~ z-E@}vXfj1nuYBh;S;QUL((M<uS!|B!=Uo^U`lz?=6>vw?xTANv^<CcMR;>24+xgPD zo#)QG^{-rkHWt0?+<}tn>)VyNqKn-+%?OM2_0c8n=z|zZy7ZlE#$;w@y4r1Z>s#FV z)^o?9pyWa$y)1f5^v>uieVg^P@EyHbuhK<jbNO>4Z5WB3*Gs(>BD@m#6+s5tG^q^^ z9;)ptHoNpQuIQ50loEHsmr42#xBc!a%HSmHh>=Dn=ehi%Hfe!%Wk`>HI<{Dt&~3~G zrFq1&OU&l>i}|8o^wn;?qSUuq+AX?FpT83K?&#wp0d8xB%R9X-M)Rvcb6fg-RDlea zE0AP$ojc%85Ysh;>kyBqOQZQFCX}M(x6j$|D-`Nt{2+(Cr6PPv9_9oVco6L@x(ez{ zZT`jixVYAdJtd=ql~MJNtd7M1^cVZ{#nC<r$oI98z4qk!<kSx!0Xw6=Lfo~$VoFH6 zEz#?ZB%Q#X>xSg$O}P=D&?_w-{W#Xm-KtReil<{fiIn<%<jr1aM=`ewyLd%ptzMA; zYqYRH?qz=AG}3OL>q4(62lu6-d{Npw`Z`L8OmpVEPiXXuPCpGWw)pp7w0DsaWHhi; zVrNlUsfBcjnd?02xcz<6|9>7xb>h{W<T4kABPAD_c+z*hRC4_4K+7=iQD^i{l+4r7 zo3-8Fp=|bRwrDSnqT8KLO4tyH3!A<sFwKe?4~3b8bsj8Eh~nV(FAZiFCO8!Si7Soz z>GE#Gq*(Nb_BmftoV^=tZhuZS)&*eMl8UQcftF1u=#tf9j<~xV(`PKBxB`8gE_?Fk zl4@#Ye6u%EOmbJciYO;Nf#t;%NH_v1gqzkTHzh}x*5=0rkNz*We$FVZlplUE?etb7 zH+CT$Sc%L@nPe{<3m{AJhgn1`teC<3l8|eD(a2++!S^`=F{*=ic?5*4cAo<=^3N}T z!?(-sdl*;0$S;_{0*A*4gWiK`g%+f;>Sr++G~$a^ped$q^B|Xknf(H+eT#XPN8fOw z1=>lZM~mJd)1&DJMS5hTWu#{%yo&j(7(in_D`vB8ccT`N)=ED*VT^~U48#_%A=_4l zSJn0p#$?+sDyUIAJb`tjQm;m#FN;1;RhE_aWNT@i^6t?u*0C=dX<^WOGU$s4%qaUt zsW-}b<p!vyskVPz4DK)z_M{j4eOqvUcc7<8Js6pyL+OdjWj|)*tG#d-q-0$)=k1|N zCmwp2Q$|>g8bhfK=1duSw8~L<3cF%W&xjdJLuNuYr0DyD_D?}SW!V2erB@UnLl<9F zkZTHZJ)!b9gkcn$V0;oOK0A>;^Md_5);Fug5~s1gNsF5{OjF$cdlKFLv9vr91rJy@ zTmsKn;g}~b^B3Ua)<5@t7os207q<~28<NvEVR@LEOcDx&7SQq}W(E;J%LsXkW2nzY z!`ca|Rtr>){aIfH-Riyw=<$b$?#<9JnHGxhAja^0o#utO(m?lUu;B--c%zc?romBx z2m#N%HP&Piqm@uFElu<HPQ&o!u6X?G9pm=*j&SRhqQ~**=QJ#qNBDbta0&DGCYR0M z+pUL2iVj`WXh_x54~+{&_%(ObU>;zfskfm@zL<>W_TT72L@wTOQ9OARPbl1Ygn^Nd zSe)=yx5DtKcf7rD28`~lZecHc7`vn1>Sp%BS%NgR`^MoWCH;4|e$*vaw6VJUM*#|2 z5p5^9cK^V(PVI%yVO<r&ky~KpHm3I;dk0!ZA_8LJ6<4ud7RXJ;{7UWl)o!1*f@VaP z=F^y**oR=yC$>;eVr)v|_b=ft!$}iWsZVX2Ua}1-HYd|)M~`oh(qt?Oi-yB63RD|O zN)@(n0EL0zE7hSl$E6?59c8@2dqofl;{;y9`#FN7*8kH5NQ;<iD(}NeN#iiuXQfqM zLy<B|S0m|sM^<ei4#RB4csl@|?nM-oE$ajv{wxKEc`prvdtowrkn&?Q8rrKxLb56D zYe>cw7!XMdV&U`1C2nTXjnr#jvF)xvn<C<4DKHT;EP283MvSnDNDs4Y)}Pg5S0D~s zF~bjN`gwYUeNqx|XeCE`y7h0#F)|9<X<A98)17cMNsn>a`+ni_{@w(cx!cH*A=e@f zl=(&mz)PwKCM^tU!en`{*et~EES?}o@n4Iw&uo3Uh`3RzFNm$Qf&%EV&p3V=3iJiB zl~zE>v(MNeh}cRipxqGrj1L46TWJNxRvP{0qxXW?N-J0*WF7;d&<d8p`H3j|343w} zC+Xk1^nI@AT}k>**Uri${qrR2*SWX$3#>gyFG(X!B2KZpXve}^ibO>Bt-^A7_D^o> zS4j!G#g>|=3tIYC(!X{~0Rlj0L3J2*m1WK-Po9Kgyq=)xeaCwAzFEk~d-CybCi&1m zrnJB{SEO?0O1NOHQ#9`>#?-1-(M@<jnJfZD{LXmvFV&t}->_tzR(_6PQDT$WRU098 z)iCjv@8s2eA1@R$M)o?Mc{}YZnx7TZewwj>a$Xqp{&=yehP3t?nfEl_$HQuk-8&hh z3ccz?3`#>Id*L}WI=Bn57e0m8&}EB;sZPbMhtWoRDXD1R-2QRsRz+*4uTQd`Jhv;h z#%*6w9&(>MIsI3y<cAP_=ee)M%p@?tX4UU=uPH#LRFDNQCenMiwHH1J1IO-)J*$@r ztbuEKZ!BQmD+2b3{s*h_$PMzQmHNtYJCX)dy6*sPHGiT*y!G7`9{j1Hew!ySHtgKN zgq_pw_f}f<&!cyH0=WkwlKdH#PifH>BM#E0`dia@2jdGi-a+apIL-I9-ACmK(?wfK z!kN4eXy!=|0;{ROim3aFbzd$z8oRF>B(-#37Ij<x#iI8@SLg|h55e-$V(RTYdIkEn z=3*ZP$q<63esfp|-T@PVc>E*NXba?WS3%E6i{1Am#-dnwPE+=PZ+Tm#ZvE>>r(sba z%Irpa;XxQ$7HhevogBb~4q;G)P*kySX_Rs;{mRn5sWg}=O>9XQF&A=`qDvIv(DoS? z6BEjEE<<_8!dx+$V(e{c3G1i)%j5r$4C5;8Gm?a<&;0mXOsCS(#?*E&qK!e2yJ(1z z92gLaH_VJtfVVh8OW1&{jfaxS!{DbMHqU4kB&-nvN<~207Ho}EE2^zV=|`-?6U*se zG5uSKz7^X5;i(n$uZsRvqqt+mXh<m>`DOT*cmP36c>@Dwim69m8iPx+e%N)kZ(@ku z_ZS)%M28}foUqwG<C><T<p~=TpM-+C3ynnBh#162bQ!^QAF9)M!zH+qiSBI#7FmX4 zDU{Y7N9=Ul`|hGNpecglDOh(h?2YH^?cR?OEat}}T?u_P`<!dBr$r-HL;^*IMn;+s z>l|Zj{-G`Hg-;+?lGABTRYbxQXq%`Xrrj6c*=fni=}oo3V6qx*)mq8K9<=!ZPgCrM zo@gfKsq_%Otq7V{oMDv_J3aQk-$LGFt@K!rCsgHqt@)h@6!S=g_8EQT<-`(cGd4~x zMg6fC9zzil<76>ss8fdyRhHtR$G<cJ7tOnFBrcZRzhN!pMCd#;DVqO!Sx&#st3p~S zPrQ%Qcs>DRA<h4Ilz8laye%~ohN!H3{`|4Vv&B^Jd|&5XCu@x6&rd_tb6fk<620Gr z*$drJ75g=<Dd}}ql|&QwDr_y9J>TV6o{~|Z#%|7bQ)5@zTCQI``5W28UidRI&6ECh zptm)}zTz91Q=X8;qC}<Jk%Kfqb?fuPaM63WbooOglLJF-9;_Kqo|YU9g~?G7TVh=* zU;}bt$m!C1+mf*}hCy5+HmgHKB0ZSikr%%Z6LmK^@Hmzzwi%DpMHn(fY}MWs2)$QJ zcbA4?m(ZwYEklvzE)03nTw%2xygl3<LZcv8ScUxv)a!>KUlEF1Do0dyZvRkJ1=La- z3Q>s7KBEu?!sVZyNZp#~UNJkTbjn(TihY)P9@I*sm-GHeA>T&rL9o8i!1I2JOe0d0 zjJq%`jMgAgFNQTix7mr7sJF<9i<hlr&6<3RQDD<(S$z0T{KK7n2o}r3N!^hC_!mz9 z4DAP~1K#7K{gL~rP8_1-lZcC4@EJyfz_dg(D8u^D9c>o^hZCVu?g)%sheLZ9y}5_w zRJVONwtX-zg&b`w(3*T|6p<*zWymfHZyTP04@-@K0EEKQ;voekhIAsNK_HEeJv<f8 zVGs&W)$*E?-Dn)rAC;SS8_-<fH5f!CTw6)a9y;>~YL#ZL!3@vkMKhi3ot}o0=oCfQ zS5B48zm7Tr?bF-R#DSjDSdFAUcZ2Tx9S_CwjJ@zG(U72|t?50mmkarm2+yLm(JvzN zW6;hU#lWFi%QXLdF=^AAqMb_B``W0v())&?rcl<xr<mpiMqGt90cC+IfyXa)?+1AF z<+BhhwuB3CNzuPYdy6)KdMW>6ijc8xgY^cF{;gD);-6qivHp-8y*b5qD({#_{{?&Q zLW^H$K@b#GtOJn(ltB?-y4Dh1II81zynf`-16%M+Rv>YYhy4OATWHZG8iog`b!AEb zRg3O5th*ErF}iRuwQYvYyYpC;N%jv$tFm>qNUSl45VJ?<C?<b)cU5e$VG84^G>aJN ziF?0KDD(??Z~4V`TST9u3yfLdc}m9Ol~CsL-!l^LuJ{M1iXf6=k5Pj}A$!u15k~K1 zJ&2;9=^G~B2lM8`SBj1eS9))UG6==)J`Mlw!aDUvs%;@2{ilG2*63TIb2XAk>td-! zG#AjCN5bJL8)0P9h3uq=T#^PAI2FS0@fm(}ilW=Py|3Fo+ldq)TSZ17yY!{h+H1Ej zrWV9L<Dy8P7}Fp+qUFF<m<OT}5KW3D?<DO{Omzpcu!xZe?0RT(1!9YOam&6WEG+ND ze%CD(y#t|VamDg=mABlg``nO3MOi*pT=B6JIp{`Z#0)7skR~|2@G>0RJmKp!L;k~f zaqV9P_Mrp!m9*$4#_kvtp@%$f_bwEq(|kj9m{4V(=>v5=d6A-KpW{STQmLZR6!q#; zGC_QX{vqpyDbWu2jDXdQV7QM0g}5-tlrHchdUdI!Y)U({8{(N%pgfAkQOr+}C-a~q z*}E|nuRnyh#3ye`ZJvbh&{QLb@N@~DVu2F|#2ZT_5*iP>0F)30b_OHIfJn_g_aa&s zWxf-CFBRnziM3Q7I4erV0r*6(R*j2MKzzk+zi`?M*P>@cDW)=zggzI`H@HI+Bo<mL z4<JIx{wY|D5sj4LJAF&#T&VKPEK~~;Lk`j^<|>4H+TI_p6yXIf>{(eT*4SdQ8Q0}e zDiSX5MGR=7P+LzL(N`kAFo?jMa@ZNQK^ao`g|`r-H9$hJwCJXw277fw4or*26A|Jk zR9jHmXt;F2Tha(^_UG;dl&j$=PeYDOJw^awK*fkJE5{)M5X2BLd~r2eW;_Vypv(J* zh^J649*fo(%4s|B7fjdO3D|n1LW(y7&<Ey0xmtM`RtcHyC*}uhS*e(Hp!8v|E$UmP zA1SFFI92WtStiC+{*aK~q4pJG{zmT|8q1$52gSV0Hw%l#^}P!z+7%&Mxe6LFe#5$^ zaAS=vkcc7856OW+)|B+KVj-^XVx8`*qBwb%(xnQcNV;O6kz&1Qgf3?~`iJEr?pbJP z&)N&)eu1aJ{6rL>;77wyCVbc6!CBuBaI3wrHAxu?V$aghPqxD7?p*q2dtnW1gCJK6 z%^z0aqL+H~3nE|-UR3mzK>+2EMxMcr5KXR21gg<U%;*d8sbk2I1_03|CN#Ad-U{!v ztJ3MBu6UYN+Y5h3mdJRe_z=U?G<)GXVyy4@4;@BjXXFO09~<Lh>H{jbm<OegVtu{7 z9Qzc7u%@!<nVOnUaf7!3u!&WloKhZm+#xfgw=tu>5?cpy!i{KKDqlfBe<JcoyD$~a z>5K_oB^55b(T2X7jGYuyqxTu<?`zZhq@HMRzdjKqI377gtqYctVN;b&SSiQrl6_P3 zA7OubY(!K{ZS%I(m#Et86HD+x*H9Qm<{>&8Eq!pyWc!M}n9RED^Ghqc;%R-_KB3xM z`Sd9aoY1;iDhue2T7=5UbVvKimE-A-s$u0A+~K9<YcXNjT6sSl^{LdiRc<>;nVV<{ zuE)Cuy9OoeXYrw#0WSRu@#)7;#U7&f<XC+`WCyGvM5fl=e=@CKVE>7&UwErqVk_Od zajbe-+BIT>cWPv6P44j&+HA^4%;gJ{^qORA4NC$YYF~}i0!g9%VUej6Y78xjhhZIL zP9vnzpJee5h#cVY=S5))$ooWFSQ4*rw%n)T1@s7e;ZBkn5SgYAi*#Uj#lB)-sJ0*_ z5Vu+EQ-tmmtL@3y6mds(fZiB?QiNz<u=tN*VG_OaxLLmP*dfw`cY71to%ZPGJ^I<` zGEM(UgYGc+ORO1ayz*!-6tM#F545P4ED_#5|3I{NW%A|9p8Kc2f)E|>nJUcc3BVR7 zE(_Wp`%NZ$)|tzeQ%dcHZz7ZbqW|iad9BE#-rulJ^u8#IqGPDf`u-=3>8&uY{|T&# z#lWma$*-HG81xk)PWb**QPJDtzcCI(YE#h++6z;F>?@M+Za7wdzY96h#(1t-vFjmb z@EstaVTa$?TE;Y<m!kuft%Uy#DX5a^#ds?-<U~s<xnh5=IQIs;;3c=o$X*^8ST-fT zVh>q-`aX(@$3HbPf}T}|BIW)k+IkVG!X_|4aB45s|B{eaAFw~kgFO<gU7^y6?U5DY zrdjT_-s+}qOb>FqqBF&M<vZZG!+PZf+@XY2Jhc@qUOO~0_1P;W{SR#Y{1^KvC!vi- zo%AyOCHpC!I-g3rmh3M#RPLaAHGT^A-C{$foW>P6F>Lrxn<?}$GqIskyVF3QHLJUk z@*ULR#c8pjg5lAB+)x=t%V70ws?^y}=@$`<eckPiewga20cf~+b4BcM(0p3#u0W$& zAb=lZOly4Hsm}IFSHoD?EP=l-$l4h67_$OIl{Q+!KPV9PL`=j^j<J7&;fvT(ksl)p zddZG(1qRX(ae7!#k&+6ZP7`;`A5<b}{1!gNhV2$yM?~p%>(5Dnme@v7MmK!I6D&7` zw!Ze02SiJ5k*H5i*~34U(foK8qN`bth<BmG?@=Fn3m+^#w^ZiVyF<fZN?2b9{@sI* zELFk>ZTH{<8+eZQI)0{28)KuU61z0pQM#MhXGWvFR%!BLpT!<tL}A)zT!#m=%>qDy z+h;@xfPrmzk+I3rN&qaxgo}5>?K64_(3rpy;pJukaxH^P?y&65z0VcB*QM`H(kt)^ zauO}`@1pIMRfp@@UfE3BD}AuNvYxhAb|&EyOKntaX?q2`D_<5sIhe?Fd;~%h-*RB& zwx&Ok1)02jH#VAunDM0tU>}M^&Fqf}B!<#w>-(w$WYER>zusVTeP3^Y4=6o?K?YWP z`1c!}M%iT>Dq6yREIVxk!*Y!Legot4N!UH9_xlZe;`<H0w0j>xgIW1^Om@&!(hF@F z_&izWJiBist<#`=>ih|kGOuzvB&Z>)j01;gND}%h@g)!SjnC08`YJBeKb{cjAkAAo zL&!HnuW#$TyvxNHBp%JJF*J$B9Y!9j(J&h07ka707{9c}U3~+U`j{~uIz(E~LRu<! z;g0$P`mEG`<6Qz5KJKfZp*ISa(O^LIavuMx$S{;LkN>^M2wd+-&wFr`y)YKHYiKkT z$ofMI42w*RUXS;H+MU)nNAHVXPeY1SyrSmTM@J@lkA~>uBi$Z-Y9wAU2#?<3Mt_oq z5`vGq;oTA3cp~%L;q!9XBv>0MzGq1<j4Xg|e_>=fA_7;T;i6A*!9^tt&#Da9Y`8Qy ztKrn}ly-OQh26*nO8UI<=(F+#0Gk~d1E%?(kE9BR@wtX1I>fCza%9D#!_=#;jim4V zbLki~6^c*c=}mF71gc$nlRA2@5PIQL!){9q1T475%WDjZ6bj48P<M!f_PCOK$EJB= zPm$e|{JE!sLz0*i_S*MY>KV_l_mecd!RSgjIlV|j|2&dnN=eiZKapP;5@IwcZjH~= zP)um3@;5}wVJUzE14c)1!1&}w%4{~+{C5_Dj*+CWV)8ft*-C11a$+Gq7*wc=svBja zt;lpV^(X^2Dh`-!w2Z7E&4{YzZyD)E;?UZPbq;%&Co;_Khc|oSClHA}y9UeuNOCFD zCA1g{NtY;-LSgJK?DB2ag+>0IW)1a0UoTe&kElsr?Lw&-9|(npaYf-5kwPp*{Awdi zp`cpSsS%Zxm;nVdga%I{ij_OTF<T6dX9p(hza`_7u*RntWzD2INsBQ?*qZ-=c(g$I zvM%mG{;Rs^35XZd>V)m`)6RVuEu7MuPx1vp*h;=unFZ+bH^Nq^xWUV7vv8wfOpm0Y zq9jqbCtkPo+w?EJKZXQCuZ+G(uYFaa&icOA#mkG3bNJzxUfINb6y2{j?(wycx^FG+ zb9<nFoz^uueQ&|k%WE83pjS<9yUM|6M}p}um>NP)QZd*bKvfIx!Fo?w^D1JuYThRj z;SSJyVD`ePqTVGXipou&3)cMjOUcswc_ZoNApgLzn8MPVTNPUmQk0&+0#=HK$Em0* z;w3-b>KC6KqZ%z0r3*#E8>Z1C;hPF&srU?|aYxLk)mf<3F?d@FwfgL|p?Lq;t$(QD zX|nzWa<sR<?Md|xqIePcL@UwWCtEku`-fKs-%&fO3K?G4JBsaUtR*ccJ=51>I!*~d z+!J{PkEyqU;{$W45H_m#hjbgP<aOUz#w?Crqs2@edq<|FA5SDEpGT`S{Y#@d8a6NK zwK+7t*7iQC%!aK8;<XCcIuEU%h$`8rV#rs9y_KC2e~P}aHSS^m<iIpJ+o&5eG!)eF z;UzXQfau1s9}tCm4;CfGlYk*0-p^Jo1~%GA9&hR;l8j%-;DasX1Mg0fe|zCRL@n5K z)Kx314GI@&_vk_ocKk@|C9TMR71~VHYuTK@Lb5rbt#z`H%ouUcniCmS8S&a=7?ClO zcuBi*{Uz;+OiN{BJVDo98ICke7&U(Uq;yBePC41>ozm&s06X2AH$J0ddQ`Wr(U#`- zW{i1g(nLqpO_|Y-+r-7v++iGb*wC9sKj64&jN{hZ@ZZurDLZ>owj*cM<cB7Xap3Dq zb2A*dlN>kYbhI?TZ`9<B(I$3pMo#Xe>{^_eJ!ygvrhTkIN%!`;=e{IM#>B}E=62lS zxM?(5%wlOc37unOqyOFWF5T&Q&Zr4l<0+yyjdo;BdT3&9jw54K`dA0j4U&$C<%n>^ zcO^O=nwXWB>&O~KU&5N3k)6{6_Lw;OAw+mI-Qn9?v*hjMjCA8JBP$2r-3r4%0QaLF z%rWjW$B!C=Tk<#Ip@|ujM?pq7M&$<`<1!vKs4!#ZL*p|XH{6tS!@o^;*Vs5p*VqZ8 za_i)5^2FSXG1<rs%H9Nsh@&3+)hqZP<l<3Y{u_M>O0Ib_>^CZx%GXV!dpPh9#uX8q zINCu5$P*89966I5nWM5T&Fd60hof2g*oSf+p;8wGucI^n%k;!{k1-@=DMj|8@C6I1 zEPWlQjArK&7bGVgaZMlF(PUSAS?{EYol;R8#*fb!54(1bkFVDb|3=U-+a>=4Lk7=2 zpOEUDS*?wJC+jz7O#TP^kDtHjTv2k|{j<N^x%tlTmyDZaNlb8GcEd}VPdc{;-fpq1 z*@2>^-=yCE{8Rgjc2)d1cEn2o=lJ^{ym?~x+0NIuy<O4%%XZG`QD@r!(rSZq>G~ZV z?y$V#yyD!IiSM`EU)1-r6H_|peOuJ+)(NZj&U(?A+2+Tm?>+lvQP_n&hkl#7t|;!} z@2*$k_dDBNJUw7vo7bI*=Xb__(d`jub==z>-u-#A^N9&p_UY8(9p~%ka<2;0o^Y=D zbo~t{Dj#<iM!x^a`Sk;wi$asTx4M12^Lbm3XZCD=)A?cc8^0tk`nYKEwQC|CO<C?d z=%_sZ)SI_D3!ixZbf?yNMeCkh6Bsk$#i9{4-weBH;WN&h)t(c7v%XdI`rgMsxTfbb z&QWWQoqB51W6m)zEE)9N*2T^%n`OT6>rHElny+g6_RP}@o$<{U?tSCE4$i{9H+*q) za8i*qYxIiDqA^9Svu~gLueH;Ptod8>-g9<$#=JZ%{@DXwXOFNYubkTTXi?nml3U;T zbWu^s-en`MI6BWc^Th>Y@4RxJ^Vp+3&NlPD>OAn<#p?=B>&`|^*S_}U;rE;m_E^8_ zn(gm6e`ytx^XlxkokuqPaO|ovPdY!i@$>gO4W3*Sc2im3DPJ!r8dfr4QjeDd&Ig<C zIelmRY^O7&(f)t5dBEB8&L@`VZ_05ldOtFIS<QUsqSve2eevm7XT_KA+}-T?G0sa0 zh6MBTZ+dP|%9GB}U4a{Op4sC(w|&_y(J$<Ej*S>Hs``=RMIkSCcx?B{W6ovG&Mcli zc!BetC9_^hcy)8pt8Y#IAhh+Sq8i)W<KeIFcAk#te#O~#+lt2R56!*&npd3fR9|0q z@0TAq%YQz#<l#^M>Ad<a>pLGlo9+znfAF5ChHWkiJA1>x&fOn(PHFSXD-)KyR@9+p z?$rw)d%bA)RXh9diYX~Nc16p6dh{F4g3ZJ3>@ofk=aLCq`wiYO-#I4X_p(zPUvMre z{mIsB@kh?i?`6K6`pneY^v%D$Y~=m_T<`2(o!zSHm-V$=rT^x~3)+V+%X04MGG=`5 z@1JpMo(J2`UAybfg|F?5e8-mR40*rLdoSMexO0^?@zbBX{oVQMo!+~5Ph0Q&YHG^j zr&2dK`^8<Hd*IvRqMtfG`s(R~_nhUOf4csInkCL9zcwCs<i>VRXKD1qG1rGUTV7qF zg+EZ>T(v*z)1gP+b>`NLdcFNOvz<2#uJHW$cbBtY$fjoQfAw-6c=C!Njkb<+{`}(S z1HOOzMdy*qG0Po|Qk?}0pYK2Q-fNuJhrgS2?LF5x$G)&++SV@~bcP<vT=<VebDW;6 zb+#j4O>?^A4o*Du>!70if>TYO-#)l#@8@fO_<ona=)$evbhU@9D2g8SuYUhZf7#h# z`YF9zet~mL_u>}+xco`y`8$3s*|O*j=kvEd<6i&TQfa4o&ZF_oH;(JLzDV2o;5GJx z>x+gSe|Xoy?Gv5XHgbG<RnM2D+>pfn&pMw8Yg_ERcEz33%O2V1TyT}6$MKbio%;{W zUUT;ABT}x+**~?~YJF&x^NHDiy!YnFEzU=xhHiQ}Y_D_s<gX(#n;mjG_Pnxk;m=2$ zcfa*<LHhwmoRvSVSoPTEJ<i_RxuXTAzIGmXFLzqWsm;zC#IeiylfCnR$qUv<{gH`A zzE(+ho5XupU*|i~f3<WUaK8K!9bY;3zn*nR^ZiGhfBR%ptJlsPasF{`j^pL31I~1B z*^%O!BhH!a$KJF*`77t<IoC~^(eVrCs?z)RADDC4`TBMLsQ#ew7tV1VqS_2Ue%Se{ z{lOva?%FQ(hsp5ErQ4SHX=Q1nwS&`(e(l%ujhKXW&X=D(I-t*lV@2bOk2n43mmi%M z&R_e=sVRet>~H05|8e|sXTde|dud(Q7e!6KrRuqemCk3+Z(SIFSDEvTz@YWr`~Olj z?w=F44}JTj)L&Kf$<Zs?m8R`4T5$N*(3e9dIA6bWNb{L5d{DG_{qr5pH2Ku|_~S2h zJN?oqXX_)~2R`XrQuJ-yZx_~X@j1uuUUIho6?2@iX)WjeI;`Be<ej%ITgHFmH1w4^ zpB^*5YTFBko&J5cJ+rTPtLW85>kH>R^tm%@#NFLnG+I=2>zQGmp6%XqI=k)hjGz0N z^Zl+Pqi)!9%$fc2XI)-BvfkO{jhx%}|Gw2Z{N`JWe%F^fTNJxq%s=sW<u2M&_+sdb zF=vZHX7q?Vwe*nl@-46Le{J@TA|wBbo&B~RD9QVBuJe)AWk2q#8t;7R-Tp6M_1ecW zJ}=66%vRSTBm6x@MtonC_IN<1zrVUFF6~?9ly)u(8G7UG1ApD?G-g{r)rfe+&n-6M zla;XQOv?E_-#+L3<j^~htv>Ko(V6j$r@iyqG3Vv&pMANpW0vz-=l&;4uPiOPvi+Hm zch`L6ytzaBkFVMPp40H>ExN}&$@})|pXBq+&gzMIKOTI&$l1*L;)0E_|5Wax(9nG) z@0J{O#x!ew>ahNi^KI|a7Oj@dcfS0Jd(mBk3X5F-nwfQI?8>5}2lMVtZ~Lm!FXNG~ zu0=+;IWoL`P8ly1zO=I?@tIRoon3cyF8<>7>6x!A`N271VXxHvtxn7GWuzYe3)G!q zpPK2)t?Z_*mcG4v_i#krH}JkBhv%V*dHK<fxQ_81#cD43!G~PLVSVggi#0#YdQHow zwt1KZM}fAL&njv4#ML@%Mk9CY2yckHwIgI}<L0d+fLyI@t`;P#Nm;SZSXcHXF544w zxl&eqAf{LAusMx-wT=jcXssQyL*1>TW;AxSj`21L@ib}PI?C1Bfrk+4MIl)%aqvs; zm(a17A}_+~-Kt5ixgp7OLIaIwH@VB(G-P6{=17REMWY{$tN0Cplfsw9^3;{eU!PV@ zQs;&k-r(!U=2F^XnF^7%umc@yZTN>M%%ynF2}x@02!!@(9W}eLyLHTrChpep-loZ| zmsp=@-Z~yJceRe{RVUIRTdegy>DMBpZT(M>P!ED!B*XX8N~;JziNc3=9)52Mzi;dE zkdRXiYBTJnzHWbDDD(-tB@4UtuQfnYBWbpmY7GI=`VNX(sO4v)UYZ0#=(Dc%93iv= zQO^+qP4yii7O`ws=TS4b8ZrH%Y=T{Z(`spIp_N=ZXpvVPA(#B}g;BOiPn8Tplv{Y9 zvP^o^p?>?N69CDtL>Z(*lwDkV;3S@fPrJ||$|SBXoWxUaCMwGuu6N-iUVbN0S+<N@ zSSJ{+MB)-+p#pg65n>^0TzZ6vUn#4P)0+u(k9&pFc1Z~In-la)24UhF{5MS8+G>B> zLp>QKxkCYY&6J$%%8zlvVY7%ObM_!ha<PQYc%I~mjM44m!fmT<f7IhAB~MjAUS~?4 zX5s<KN1FI^l8-g<mn1jh8+`bx<oQ7)?v_ekVB+seKFh@E3;xLd^Gy6>$rqUTI^k}1 zNq%jR@+NW17AbG$JEZ&)(}O*dFEjCjlCL!Ja>-Yl_z#j7o4C<7+hn|g4^K<^vLF(7 z)si1D@r#m|n|P>bl5CbL6K^hgg^7nrZiEwj_&3Q>h3gzfUx9jL;x|ZnLtoHKl;ja6 z`Hqq&ns}V#4ioPo`A8Et{M#%`OuUbjpJn16$u$$dS8^l1!T6_1o@$aGE_sZJkCxo< z7u55x<nbo?EXl{3_+-gfn>g(UP<=7{1@%8AdA>>BNWaZeVB&M6{5%tXUh-uo{<7o? zOx&=$&9c(O-<0yjCjOq}TTJ`|$;(XKNWaZ;z{JHTj$wy#6Q?Z_@yj%<UnH_k@+y<O z5uVLbVdDFwyy_Q82OWnbr%hshd@FgiNspn|R@+}IKmU^QwCT)`UnQqaTYg-SocH(Q zxsbD2;!W~RBu_N)mXeP&@yjIFOx#GP&5~x~^jZhmIn~4?B_C_zw@994;zoLGmV6WM zCglrEyr<-|Oq|{sq4+E?aU(tGUrhXNDZkpp2S{FQ;`d9w#Ka9d+APaVJX6ZAH1YA0 zZ!z&~;cjMeP%_wI*ahX>BtKp1F%LCoNNzI?K?9OknDjg^d4x%Rq2vw|e@*f#lb*LF z4>QRd>9<*`P4XX0`6!dT__8+SW4wuPlJYSo{)Ob4iSL#?(Zml*o@(MpB~LSP!(KMa zNE81_%8xbivy$hV_#cvInRuvhqkNip3(1$5_+^q8nD|wa&oXg`<O@vvX33YCct^=s zns`^q%S1YY1+=H+t4;E~B`-Gdev)r7@&1w@FzGk)!)7Tn$x{qM#4isA<3e{MAQx5_ z30GzVd_n^}y8-?vIKIZO#v#LqlGmpikbk-X{%iyM#Rm8*4e+H6@OK*E|7d`J)Bs=C z0N>C6|GWXds{y{h0sc(`{8$70L<9Vn2Ke~~IDK16edQ+<Q}_BfeJM?S+};3h+W^0@ z0e(vZymJG*djq^@13U@*GK<x+q_0ts#TpE5?`lAv)>P_C@9+kAMgx32IE5QS3k5jD zS`FP8KjN2ep^f|4E-u>8w@m5SEv8Es1H}eW*93tQ407Kn?0jcfYIl1rgC}K=%gDBL z^z`mR|KjLhSNezFCH3^~PXF+GrJmji^e;9>{Kv1F;=Z%^FMP!cZ?VE3{h%qH3ZJpU zYpn3wS@`WN{B|~ckzi+`rnB(cS$OR%yml5|I}5K}gx4;@YZoDpbi!{J;j4=Xyo>PL zMfmL^{B{w3<AmQh@ib2O?J7uDA=6c8h!eiz3<C%rCv?Uc8iY(&5qdZAzpJ4~$agg? zCiKJ9h*ejit(yp?n~>}#B)bX8ZbDl(A>ZAQ5g~RHzPbzj-3@u6t-J8mUFhj9{B}3| z8uG$#yzx}X#|sVdLUX*(6E8Hx3%~KgZ@lmuZ^#P`2|_YKNG1rs2|`bT(3~LrCJ4W= zF~%iUJdc&7AVz43mE}MdgcuP3eo|5t2vv5Zcj-aIB-SV!u|`3OHOfe=Q8Hp>S?Mg| z7HbrdSfjke8pR{lC>gOv!HG3WPOMRAVvX_=YZMs#u%(DgoV<wC#TpqO8)JlktWU?z zJ}OjJ2EEf_$;f{w*OCMF;6w|(@S2%7afD_3q={o5o{(k9$-;XCxtSKcA(CUs$sIi@ zFV~WpIX*9EtR*L7;%NLEpOKzx$<9chOmAn5$$%<)Ny9QCCnJ{>7_V4ZGP5%>=*ejD zJUw^3WkSY;^sGlM6UOD_W<YLA_CvWDmh|zHa`6Ab>|9Gmb|%zLq#p(zF(M;BYeeQl z6G<d*BHnBnhqz>q&zOiu`SccvWl|O#*%_lo8%aQ=H`);4oSc#U;0SRyWfaniNaEES z(vUl8JTTr6qBaM|wZ_Fl!w*^u!&^n-5FfgPn>fD4#nM)ePt-;QIca%b$@jxO9ZKGq z521ZCa4qj3^^7#}ILVE5!=N5x-ea*$Hp#oC{9F_FNdB^k8}l2B#aO2c>K`WMSDNHU zOa7^e8}k^8<x3OKmGZ`VSy2B}$-g(r7fN1b;<F|HopD<GR(6&@iCk+>V;*C%v=H-T zBiz3+`A&>eJ}#2_yE9JPB}#uU#!3DSDW78E?@69!;;SU5H!bNPC+S%$`E(QCDEZSS z{)Oc8O?;2!OHBNb<nNmJG0DXTM_GJMN^Y!=1mpRu<a<qeewX|k#v`Cl+3kDAuVP%S zyO4LXgE8;Hjnqe%t8pqlEf^>HmKc}O(aFTyNZ!N5)o;zymsZk27t#|c<x@?(gXBX^ zJWlc{CT`4ou-{?gZYgifw}at&Bwt{XA0YX=CO%B^j~KrO@mKaKWt`GATFM_`ye*SI z&N#`Bm-1&!JXdl|uEar)Nq(wy8}rg&x(X%lWRjmP-91eFdFf6v@kP>|YT|E5_fQjm zPr4_W_$ujs%*5A9x6i~kN_T*9>I;;e=QDmC<4YJP`+OnYY935>yPnB!Hp%ai?qiHQ znEX$Slm0`}eZj<)|Hc?k)1mU~q?8LY@n0ps#>9V@ypxI3yoZh+Cf-uIY5qWm3b&1P zr<yp;d+10v@kr^WFO#H$^t8jN?4QH<4UFrIlYKf!_e+f5$mHK(Jd$zx+$J3={&CV> z#Q05kuHv(u@%D@#V4UJZ^DR2QGjX?c-`LoAPT|tlsnXwpaavnYyes4MN~YrbB&Uyx z$Xnc5EMGJE=iyfJ-!nd+@m5X9mthA!{<)TMN|(~piSb()@4-09%j8;;OkC~IrkXg7 zrRW%H;?$PWk!j+Q2DVH$@eYzdZQ^l~&o}X&k}olFx8(1dxJPoeKd#Ep0LizR<cCSV z*ThFlUT)&!B|phH?`MBuoa~${<$q)RRxp)c*UK$;70;<s{$|F>W=g&@<D|b(%HLt) zvnAI|{CUamGx0@|Pcrd0B!A4r-;>;D;;ST|XX0xmUufbRC0}9UUr4^j#P>+P$;1yy zzMXNJBPhG=WgM?p*Ya}4$)3lgo+`#WG5OyZC;5|7{(75nqw?`r$!{_7-zD#A;>P~4 z#gb^^;_DRQ=Pna(Bgb=NOx)N9wpg-FJW|R(Vd5PmpJn34ey_!{(8PO6`8OGlLHv}R zKW3cl<CgLVP2AY;wOGDoJeKJ>#W?91AoWz6_%O*s<f|yk{-Y)DWa8r`?_uJ(k|&w? zRLN6KyioF?CO%v8Nhbch<d2#7BFUd(yfd@I(~Ngvd_Lo3pEsnQ)h7O)<i(7~F+HC% zPI^{J`Ew?|R`N#Fq2W+=-Y9u16aPZ;2ov8U`Hd!iNb(*geoXQt6F(_=s)_$9`7p-2 zBEG78j%K_Y<Kq}7JNz#7%w@bglYf!%c*g0gA?YCdB;Zuxe$DvJjDN@YO^lypJc{x2 zj7Ky6LJK%>&|_IegnOan6rbmDs`xBroR2pSG0w*u7a8xt^oSophnw`@&Ujc$IB*c} ziBp9e!8lK^gK_$>tCEjmoL*T|Jdtr)^HJQxcp~G&7<Vx~n(<zY=Q7@#@u`fv84oa? z#Q5us_hI~9#``k<G2<HJTNqDf{1D^)82_2^yBH5?1qTkw7Y|NlH#_4gjNiog-Hdl* z{2s>pGM>u#J&gBfd?@4eE})7}I^*{-p3gWh|Fak$z~rB0d?4emFg}R!HyNjQ5LJBM zXFQGZEsPIgyo~Yt8Lwe{DB~?#!-0eHWf)Es?p2IGz<7JcxqKJKhckJN@ez!tGCq>= zk&KUGd;;SSGX5yzJbza(p3dYCGCrE|P-=W}kR38`Dm&O2=lZW@Jd?>MFg}Ly-i(iB zyg%a)F+PfMULFb<f0)S!7$3*@V#dcazLfC^jQ^8y9?w$7Co=gj8RzyH7zQC6WY0-B zl|8>@Jd5$ra5!+7<*#DAJ)SE)(Twx<Jd<(W-%VmXis>148HF0`zZ}A4v5b<O;=}u| zag6i+>p8}Gd=@kQ0(7bPZ@b(Gi1hRJ<QU_;f4_znuW^w4i#Xeo14nxkSNc1cIL#I5 zNHOtH16$&*G;T=$0-Q?EV8(g6Zj%a0p4<6rT9m|L<{caYi*Z6@+|t?^9SII`spXvw zr)7}jq=())R`Gd7avE=t9_riZc+Vj&B3v%Np7EC<qV#NKd?DjI7+=Kr(ROg)P~)6L z;j&mxNp6nkdB%CTmKzL@B+tWb%s3DCN?NqSLGp`ns`%R?i5mPBTor$d@mCq2LYard ztfwhes(QGWajxea<2*k1QKiD6>_cq_9gj**;qrWWl5uXIS&Vc01Q_S`*~a)I2t(Q7 zN~%;iC|o|C?9O;Lo+<g>jOQ?Z7vs5%4`w`%@ezzqW_%3eQy71a@qES?GX5yz?=k)u z<Lepc^>iQOk2Cqhj8A3!1mjOIUc>k_#=~!c0|(i8I!<NJ8yO$W_^pf=Fn%ZFPcnW# z<4-aEAmd)fCo*2h_+-X!W&A0|eT>g#yg%cM7$=jc^!~{B490(Fd?w>IiUba_+bo<) z&ozwejE`pgX~xGh?q_@n<GlZk>i{7f6fW<72Q$v)a~P+puj2VQ<Gj4BWt`h*Bjdck z_=0h&%1Zy{+u*=K@mzva@oyOaJL7*y-U5vLsLvUV=?Di7V!XXt!1!x;ru28}MAC-* z>$oaDigBLaV#ay<vxRXkABYj^MSNy6{Yx3=_Swle*K=8H{d(SIoTqm`<8QEV&oaK0 z@kX*ECcC}K_+^Z9J?9vIi^>133miB|59cY2$K#o@^K*>z^nSoN4Ly|nI>sMiyoPaZ z&mLVNgoEO<45!kwfbq8(uWW$h^&)YQ9xgwG@pqUWpXANK8snt8N5?ZJKG49H*O?yP zZ?0gR_nRLv&il<z8Rz}xuaZ-IY&ch2jeu*IJP%jvZai1=>hlqUBquv?`5eZ1JRf76 z$8$R4Jf7Pb4<HPcUwawX7{_~f;-L8O^7A_5T+e5WzsvOOV4UkY%s6ikD;S@{^ju(k zF5@+fzsGpf1UPV*<9|8h<W<=ri}87kKhHRC$96HkoXJ-(&h=l_141|`K0KaI#(6uh zG5$XMsCbTM{29jAGS2msFwXV-&N$DPPPaoT4vHslmj*G;?J!nyRh|=N`Jce#`Mhrm z<MR=QO4pN&uVDNc##b`FhjHE>ip5IEQT+eG<fD7SfrI!5I90eQjQ^AI#f-nh_;$%v zdgDnUjy+8NCAgLTa>id~{71$YGJcZrMT}p42OKz5xbvi)ua}&n!R;K)IJa{zlb#5v zr!SM|dipcY^^9VC6~b2OeVXZ~_L;_xbUef4xqTKh&h7IC<J>-PGtTYvE8{#Lo8M`K zPxj&E_Dac>J;zErv}N+#4(%D|cE~X436tgFVJ6S@<TB3ntTySXHll4=$K<)5QpUNS zo1MY*^7-aq#$SYp%CE5|9xB6~k{Hypn8|<4IM=_Ianj!sCmlZ|ii@as#M>B7%g>DS zb|%ynlwXQl70*eG^Z2~SIFHXajQ^eKiR%^A&%+(V_;XBtCga(RKhJm$<BJ&2V|*Fo zxs0!5d<x^M8RzYDIpg_EzJl>b89&eXV~n@x4F`@!I49#&cD|YM#~JU$_*BMwGG4&= z0LG^=K8o=t7@x@abjBZNoXgK*d@z$=$oP|tuVS3{k82r!ipg(hypZv|jQ3~!1miSi zRQCLv8x9;~XD?30uVZ``<8h4ZjQ3=GCgUlL^ZD{b#-C>LlNt9hK9_Mn<1aGK(`!qD z5DrS$B%CT;&oNG8bHzVmoXc-xoR0&)V*Dnir*$7Va8S5>K5`}FQFx}pJ<Is(jNAIc zfkU<b>iyAHl9PVk-d@Q#Z*NDL^r&__lgV>ES&VZ%c_uws6agHMF?p`1ka4c(Q^r4n ze`SZh$wHm58*e|yF;4AsTSLq;*~C?QKGnn{r2I=J-bV6^jDHNK;?uI9Awc$TjFaL- z$E}i6@>k<j@>3cAgz;I7^YpHeyg6h^|Jyj}_=L&xaYzZ{d>pccaXt>&&Nv^3>}H(D zr`26X_>?Z<__lU&++*S@z3o$i@;tvhjPv{&Y~m`v9x!p0U(-xn<<}a<-$E2re6GGb z7$2UGJtc3B$2=b&VDda4*E7!ZaR=kvZWm4ZRX*D83C4%#V;JK+AFpJb=VM#Oc|P92 zIFC<;iK~2c7|{{+OIBS$JSMKbFDT!{)%OCCt>_>fbgJ(Ksv?L(arM1G4r^Vm*6aA^ z7s!wL93ua`0CDv>K}*M+M<?WtdJtE9h(}z<syloy?Wm5q8Tq-Ej-yBAj<R%oFek^- zF?$j@NIbS9J{-lJ_@tKMRM(E_Ik~lv9Q2Vtd<*V`jEPV>aT304w(s2oZ^P$~(#OFM zg_kjQL?(TGu93X|^M404kg1xOG$l&6Pv)z79HwsM^%`75aVAQ4?IqW^tB~t<t>L6_ zXf22iRo~j<o_GjBc5E_*s~*X0RZj8!W2E!1`j3TQ(kY`^t5=2pSuHVcRQT$e2wb24 zS*eD+`uvUI3Z`HAr)1JSl{tQlyw7l{_uADnhq{s1!MKwD%S?PFJ-~6mWEf?CbsY_v z`uxuuD!gCvJyI(F)s@En<Uhs`ul-*v{a;l}j2n`rLtP(d_u_&4_m%X|8Qm*?iqDhG zY`=2p-(h;7(yjc{n6AF^Tk)nLQ7i?i{8Hbc{HyXy@i7Hq_!w?nW`!G9J1#VTGW%}^ zX38SrVb&yZv1C)^*kMjTsjtufGU}voP+QLrvw!jN=Mfzzb&_999^17`m)I`dyLO3p zIJ)8kr}RH2*5QbaiRl&>=WxWu#dgCZ93z`gPxAC>WDRPxTJF3ge<*BiSuh5P;x-ZA zX%J=+zv`xWPulQnf<<ItEzovT0bTXO6(pz8uU@{3?o;z$A>4sD({E2{dMbXn-FT>{ z;^*|#Eq*dy-8zD|QSuhQyzo&0G?q3Y^J@B_pprpBC4+)W1_hN2Qc5)I;lJh|zyEND zNRAOjIBz2-BK27TuC;mr-WMPkKgf242u1nN$5W;Hf1X~IK$S8CsO+Z_sYLLI*;A$1 zuq(M{8HxRi`J+PntN9fEnFwDNCF@~j{!8>BAW@*`N?usX|584QeE+|v|B`stUv5-p zsN~g~UxqD|sK__#VOgI_o7hC6YmFf6#*FY6^Uu(Wu>O>PvReU_o7(y%>WqrI$|KY> zrWsV!zS>A9RN>ZK*;JM&T`J*54Tidgnhf#lUid{XP0ypB_F6~r!*6@wzY8bGaw<0V znKY)x4||=e?}xo=e?$(y@O1{ig;M{Id~K@lN4|Dwfk){_zUutO*9G%$eC@mBH@-^o zGwW9T%uW5j@ijyI#@7zJHyd*{{J5rV=mQ&ykN`^s{SzPk6?gJCnCi6mtsqfvd;j?V zw7sWsF3WY?{<-@3SNyBO5-g9Gw)do$3Rgkh_|;Pc|4kvQZKq0`NPVJF`k$v)B@kDU zG6eW%+j|;Ysmk@&;|mR<5|@hC_y4RO@=di+<`dcnW&TUrA&8pV`|yvbG9yS;o|Ipp zh8hKyUp6ECb(B*4DIlR($_DlS_j*Z>N>k9kiXX1VXe1cVf0MdkzSg#lQA#(BhiF{P zyc_m3((&2<B^{(!OTZ5()t3~LDOk#k;;8z8OY-b}nP>RHO(QwV7`V!koP^)I5>0kq zzR_OODm+psT5w$dA9ddzA4QS1JwpNv2=qi@iHbUC)I?cGxMmRT3{0R0CmIwaQRHGE z;L0UJ0#Om7lL6Xc09RS@g0idZdShW-P*gApmn5KIxFaG&Ma^*0hynqXe9t*uovAco z_uYMe?;l_PGTl{AojP^u)V-=ZNA%mYPPF#hrXfz){%nh2geRVA=)?a%?7!KZ;d+|y zdxrX8)bQ?5w-Q>v_;XI_k-_0kr-~?O*EiDi9mAMXJO!N*Y`Sl*;MGBRXd`Q}tQma= z6n+(AgU*}`JFgdhF?eTJ!TMw+e*5vOh84;VMtC;H=`7{~T+o<d{|;xHvSeJ=G;tb7 zc4di6BiphjI|?w}Sr8fKW1~?ya1SiEQeK2SS=)&y5e6E`>YgcZrS1eD*s7JqGx@Rv z7s%Bhl1X+!@}`|wIeAm1q_()VMWo)S9a@sh4qX~zu}HEOF$!~OaNiKkwqT<`%v_kT z1!FVeED<A4ON0`H!Cu&~g-YVmpeJaQ(~B!~P-14ZxWYyr(vwIsu8_3b-~rbL59bBk zn30g$2=ue6VLexIn(`D%JV%g4T~VQotc26+X?~-zMcPVbWhMF29CTmB8lynsz{!O3 zpSFkFuVCE}1q~M--4V_>4;59CMoP^DVD0;Zdxi}g#{3dF4VMoJN3=YLN4MD<M4?2@ zyiq7Agk{uO7|v|j*=sl^Ny1@gjy8%zs$x88E7Os-jC`76B5e=!1#h9leiFf~A5VB@ z2OB&>i6dd&btLTninvWm#Vq1E6{&!tsTFc&8<fX7BI;Gt*+Poo3G$^m(se^ChUOV_ z85%?|R8B-N2z(5&{IJ|u_EihNeJczXYGu{12VA4NYm`BoVGLL=(`%Hu^ueYncc6~v ztSo{urwk#mIm;qYc`0+q0xV3?GD1Qrb3SAwmXRflJi$nFMwT%W2EyLg;r)mvSnkdF znMs>H`bIsnBjVAwl1bp328W+LP=sv-^!BXbl+r+{T?=d=lfeCJ-IY^elXb5L7J)mM z;%YgkiSO##BJc#rRX)RAmI0fd6HKBE*z?RIvY82m9(`Q`$<476I2HodC2;QM{sSRo z8`zKPqljKq8iLL@*hts(ayEDis)1ApiJ#>v-OBUH;`7LODvAB54EvD}m<WCZ=KHpa zc|7{^OF`qctRH;tsteW+hK*n)Ze*$!D0hHe89IW2Sz6$1^MZM3z&>}W63EBu!L*dR zF}S7RmXy+z(~(zUVDBT^o{20b7nE;{gvdqPZILI)Mf#1*AQx?cMJB<eS4K|5<Y-f? zkVRO3d_#75>kYfSKK*Ah07`EfdPChpw;@YhU}p|z<eaJjLz^!&DA63(Aa~G#1YjRk z7{K&|=29W(Z12;ftlXS#KS8#NV~K!lBqBN{59A|*hw$YgiFKoj5DA)CcMUlZI01ov zy%yCv)))51IyAiuC>g}`ga*M*eHHPB+4Z|%5_^XpBvXo@O8^~PYt-CCo(L2p7a99r z?}S^KGaF4B)nH4?mXw{QZD%JsHf03hZYYOQmCB&4TA<V!*kIS(oZyUudbl5AYoYZd z6%1vP<giYy%=JL+T6is0F@Ja&i*A_FM4mbTL{8Sf4q{3Y@)W^|kl$0tv1^U=efEQz zeJK%<{6$EU5>cM~7A24l%d|!5FsOSVJ*4=;F#QUvk%b6OhjnVNUh50b+~i0p^|;Gs z`Job2%FU?#&Q810FT`pwixWW#(~guZnj12?5gqauSiK^{*<^@4`w9R6<2-d>B8;}q zUY#D?qAXYlA&FaT0;Go_>~7re#wI9p%P3<Zw$gg+O611|eL08-jMD0eQklDyXxw!L z)t<mv`>cV)2&IGe(+wP+T<>HKlod8See9}+_DB4D`UZn#x3t=+_v<^tLtv+LYrzp1 zKUEfdj7Ywm@{}#UaQjVuy}F_OIc->$djj7hqs}WRz7{x&JjP|!;nv^bac`e}AQDDw zUhl*F=O(y=TRi$UEvIZ&Mn*Um?7mGYZKxMld&8(Zklcklk(O?NCobNj4EQ)*KL)IY z(!YxPv2uqeX`?St<M6uo&)f`lsJAhGdo?79r?^uu(Q<bB!m*g%IJpmp-s5Z#!2=O8 zLgQT-!6W%sdqO=EsK{gchhtj=OJ}tWtY3!kR?5PCtznOsd%$3QL2@ILtkeZyOE@1U zSxZ4|D}pz?hMWy1SwqYQ?Izx1pFO&QZKKk8a<E<xX5y(VC?_Ui7{Wy?ohxHTct)&0 zw1TaghL=}?o&F2zM;07Deao?d4doSL7M@T?G>=6HRaRCdZA5OhaKC+?(C}Ea009R- z2b>X}xW_i@E|?!BR{940a7Jj5GwDE5g}xtFz5RMZf?tnxKBtA&P&B_@pHzi`&Jfg7 zKiqNa<v3+7(0yUHQ~%LYh|JxR7Gk+kFVhfDG+iYSazsZDgpDSiIZIRVNDp;Gi{O3% z#$1yr5>lZ@n6m^CsU-p=Nkyyom3<upyTWKS_5N^Ps$X9dk3clM!zj@8F1S%evae7U z)S#2*dX|whC^p3X2lY6^ccKO?cY<zkxaVeQ-R9#SF1Guz)<(SpFPba2Nrq!1l$eaP z94GrLBWSjqjVWAK8T+omu);kv>K9sPVkP>nt?0YZZ~5(|UiZ<0HISL|qiarIxIY%V zVGTayhw~cZZ28?=v<ec#rd6atRs2Nb<R>5J0C$mJnR^nQ9VA;%wS=b3YeoyliV1M! zdX>Zqg4bsWczK@Th+FeI>BWm>;W9WxdkwjRFqG>D&y1WIu^zq7v!jNhKa45RCUQLJ zOt&8)M|S++aQjmv1Nnxy=<Z8Yiu+@>5vXse%yGj(BlUT@9Yt_lun-CP%D#>D>*y8R zbK;BhfWdQu2)JldPD5{JDAI43hOAg*gi~jI0s$2i@C#*&tqlYD#$>hBAWi%N;2!+8 zA^Q3vijF8}Das+banj^4df;;Em@v%zF4pO{*LvKwh*^sm*+1nfS=&v|NqDg3XoUO- z&ms0G*(6Uk;$+p}_w9^TfH!;fZ*!FnC-gc^S$UH5!Ws7_Rg;^gM128$;wF$C@!R)$ z-QQ6V>jFX52-=9C&rxf$j#CIL1|c-VLAC0D`kJ+ziVaWXC$S9J7Pz^w;You+);_vb zD#g{P^vGii&Au12P0Bes)5N-y=}LAvwTs`7LKZksWz9N=XBDAkblXL@trP{FX4WqJ zJ|W_7lpy^RMZ#$mU(7WL#YYku?Ik=2o2-~iVrAj8Z_w<Y`P^HSz{{BKP<FWLp&d{Y zCO_9eIO4d8lf$g8ab|Un<LXR7T!GQ8Q4@#lZ3j=XU@@7RQHHw`^<>M8G`eegonOc3 z=gh`<<BSvg$ru;ySn*{eAPY)1S}Xi%w8Zqe(aJ|vPTL=#Y7y5;3shjdDsu$RH!pY< zOpIxj(SYF%b6Zog4Y4tH5D7Ol3{Rs9p-QMM8wJ#j)+vjrK`Kwuzexv56WCqKlMj&( zN}gLpEeWg~lr19#Ex<hmdKfH0Ow7$asWL}HMA1Wn_fi+4Q5OhSS11dw`lY_!=-wh> zICB?)#3=t}5Q^#-s%&BnQGX2wt@N^KVxP?npq{L+08>54swEg&$@&4m&j{IFkVGY4 zPPgA6+j1&?@_Yr)QmO-y-%!w|zKwKaz>jKWHntgzW<{P;@SHLwIR?*hc&aG`ys{cZ z`wX4~1vgU~Wpu*|Hg1KP>enO!r#hEYB}Gy}80p4}d}Qwhj~%8E+u-50O-cO(PlFIx zsz!zQ5}vP(bT?4CXOR@wUGf|uAvj&7iFBJIDOM{sX0r~MLSTa-D#XX|GzfuJZd8Z} zJjac6H&RmPkW|>r?>8g_r~4en+~_>Z$ZrcI#R~iuJQ@`E1w0KxP&01O1UGZk&aBP& zZ7;ZylG{YLUyuwpZ1Pl-0G#G^oF@1AH{_;M1wc1)kZ!x__A}jng;vp7!1X1$wh~=A znr_xFblYSyHhB_Q9ob6tw5xJWF%=&V9LN1S3eCx7t7Eq4<lc=s^L=!yjNFJQBL5_0 z85kNQ@Q}(lCWU+xnaHGRs28I^HfjTv`&?QeMCKtwn1rPTs$;Ou&R4X?_ULJ{<O#J5 z$7YsQx4@DKYY;7I6B=V8>bXBWHld?0aHLjDZ2bDy({JV1aD4jaV-D<_vImJdGq46a zyq4C3<V&~t0-K%23~7mG-{^O*7!7_is?t+VfOi_)Cd<$o3Ypf==vOK79S%=mvmNZn z)55DC<wTgbFHjyYbLCanjIDnCI|DUltA@LAJ}ZK>m?G6j-aJVf@g}tKhPXBJ;h28b zgK1%qM(h4zZ+yKsX@^(e88~XkZcpbO&!5?G=B!u$%oA>J)2q(xFRQzzbCoBl)T`5q zuvFiWROU@OfSII6-|@lt+}vDG=Ph2n(yMPda}*59&Nb7kk}8vSB-QF$?I$^QQn_BM zb7S*_@)I1GiJsLf0yUgo8RBx1;r1;Wl0$?#Wo5ZXKjld(TT40dx<5_Vw|kX4YN>$J z?W0B;g<RkXack1T>#L9-{bWihtI%t#1%-Mz>;koUL%d!L@mTHEYbt_kh2D~?^u?>- z_9h+W40!D|p1|x*n9Z*Sn%^cAqy}X8JmGY^=gfYuo0n@y*Tq3Jq|tg43rg<!l?5Ar z21A|a4`Rw&!Rb@>uqLn}0{62RDrhiugq9ZK;aN{-RH#UV2~k6%>ryZQ{YiPYG$}|4 z1wS{6SMe<-uf87{*pc)ZWY@w=DI=XLlQtMxI_5wf^(Af2kAI)`#r^tG?3;VdN);@f zjrAmQ8VXW0rC32Vx3gXXEUZ1i8L%g@2J$ZrvDe7Eve1K3QB3YDxPDRI{Q7#zh{$v9 zqW5X`i$R|<lv4WZPug232vQobOu|m1vQiJ};g#zm8n{D)F#dlW&Q$Sgj<3pt=}6hR z7XF-_&zBv&BHYFq_)<;Uftq<Tsa)IjHR|TzRxj<LS#;-<>F$l;p3d1HglE~Y;-NIt zvCo6e39b&_(DG<;VSz*GAM0qePfuVI7R5XwDhoa(nFAXg-q5r<><d7%Wi?lL!fjem z(q;UaskW;c%V%t(c)|l!kK!vYtD{~fIDa!qlE2DRLM7=BuPCKN;*f~ZKl<#OeMuD! z<#EohfA7`L7`2tkBgD(jKpjeBCrS)jB6U(BDaG`il&HmP@(8W5V+9|ie+M1nP9FOV z!H<!w(HsIR;z49rf-XoDT3iHAaHkUd1D+u+FQ~u<kKagx-h*n39wbuxBTohmdC?2B z#L{gM=rXXfUxK}FUT69BjmIuQKZ*QkNgG9eH2nbQM|4_7epVqWuV;AzjrA<AW;^Xd zD<H0s5C&n)ho}yulzxCL+9Gka4da8c*bZ?6HCl&1yq;L<b*S`JNoT3aO7-1muV_@? z{rdSv`bFDfg%*-R=_PKX?i;n<sOOQ5U{6c!(E4P!FcbFYl!k(paNiN`$GHbas_0U2 z>@qQq8Re=Jj{ucuYu2(o7*P=zSV0A0H(CtkHd-=O7||kQ5DL9wPtTAHsv$L@7&7#I zQT=CNoHF$P@AAtP$lxXKDu_J=v7Zq61!)-7CMr)F$+H8+vnV>gV}G-bw>XXcP1@Wf zb1~k~ooU|C1lpcRL<DRbE<<GOa4h1-;w5-^^^XHz$LNRkrR|wyqc3MOwuh<9B%*L^ z5p7RmWe^YOb%Fw=$uwr8W9<f3YZ<D>`E0O;oO&=Gd_pliycry((?$^jl8x9`YXOj( z9LS9h8*$K!H!G`d8J!hy3J4F>+kGt2DlnLprG*A$Vfu1=DsBUky`cf|UOmDij$c2c zVY56wG{BFCGc<sFj?e(F9-F`eI=5(0H8Bo76pQrhZzZcd%3QrYHS(pTG;ioS4+J@X z>v;}&1R<1eD$>Brhc_nzb!{;{8jz|K&w<hdb(bi`f57QzpstltJdcr<N|65TbVkmv zUj0iC?`UIp`L`leH2$}~o?YKcN2f~hGuT(fbmS&zxxMAR#{uCs2@rrcUh(ApvT(i+ z>nrojui^N#E!aa?T2EtfqGV&z$498gF*l|8`={_%;YSNq!OuLGyx<s;4=1zeL@z5o zniMU@60vDG0<%E#AjxEfBOHLNAjHaa>8<e?OlwCWS6qK^iW}^d5k!d_?1~}{@t-1H z@lw-_KB9s+j-Yc^+T}GEnQG}}WWCXmD60xFuv#%sn&a-G%!o*h5{~;LC5Uw|O@sSm zF?)c@qZ}RW6`YZ&B>M+M;|UK<pbfFOMdV}0JaP!W%F3;`hufDBK7kTr$*|=G#T$i( zLqrP9bJ%}0gFWG%IEop$U(?T05Y9=7z@?Ra+0UzgMV`@#I8M{bBC6N@WxAg1Q3ieD z3H;gug}KWpk?gA=0~Nke0Em*w$z(Z^CoGnS^I;)QXAy!D#a&BO=C-?x1vhH-IX+4& zDgqy6&e2Ozq0jMAS`lSWnX{b{K1wU1(-39OJB;vAT9I*-_9sU8D6ME2(>w}<QY(5L z-uLM!&EwvkKRjLk%A@b~B<)PscX)P0()Ewi?Vso0JUG1W487!xJh4nEJL$wCP=QP& z4XVX<`P3i0_RrGYyZA_r3s}q9Lj2cN7J)Yg3u?pAtEh8Eee%0Y@p^)$51QcD>1ZbI z&O+SgQVjh)$_so8IhS)+!3S-fpmk3vmR1dnu15eBGA9c8PWkmu%`>$@PM=OYKZmg? zv6)ZRM)9c{7T$cSw%zhRUMyCO*=R;t-mRD#9<Uy#eMalEQhFcH*g!eU3cWX#57m&@ z{-X<?!uxpGtx*EgF{{vPk0qlvG*gPtpwodXMk#($Y3R|g)Tz1o5c=o<WflFKH}nvO zRqpNd4e9pdXLhF4dzF>dF?V}?IX`P<-^S=W&V0rzlkiZ7UBBD=K@ke2hBSaVkv^c4 zQv3iEoU$|Jv|hom23*qzU<30mPB_Tp4|e5I8Wc^d2v);6nkG|va6g<{D9y!hefL6y zP-bk%;SW!6o;l#&G3(wy#IApww96mP-yfeI8fW{EHf=HEAa3S(Ynkt0ej&|wkUL6F z3x2KysXk%3=*V!NDtL!ho)i#XOBI$y50>h|d<-;7us0~RoM0XeTcM>qdSNK^hbP8h z`)DbRc7DAEV_R!Jhe0-&&@yh0h`~ExoQOX(I*X1#F7p)iORy=yComVq#&edb55yME zTGJU?Pdp8c22p1>Da8k%Xi=@jrnWDP1s&2LflyVkacR_YEvI9}piG*~RHU_`2d{-Z z6&MmZ9XdY4W}>@l8qRd%urXJPt{7)qntQ{H@BN`Qq!>@dz|llZW9EBb(U}zbn1%s{ z`xqp-lcos1@X%Pi0cXqt0;Tbqdn1ZA6-=g&K%BuiJfmF@XEP*}iG;LD9F0>is;x!s zhtzRt)pRSR+bWE$I0lHztf5;i-Re-?v16270Z(BSZfX0G#EjQ4Q6@?K`toEveEK2J z=|O2RO7Ky1E)a(V@VU#CIajvip2s;pH60aoCprn|sAR~)y?=DyhuSpWaEb0@qFs){ zCd)`{h0?y`s2yHq&`!z&x*{;1fqf@K-w5BJ1l~ikSRaq}xCd#<f~#<*MKe|ifht2Y zBQ1!1j`5DreQlKD$5AT29NJT5A^hP^Y5E~LeF>hP<@4pV)WX9_Yjjj=Cl&kA=ZF0* zaT<E86|Yk%5V7q@ns%I_l~FtV%Al`6@3%+%_M`6Fg3q;(ibS!FL~0+=CojjA37tvv z<O;MOrT7S{5YLl&&CsX~9gI{U&>vbJkB1gmKN=5P{_n6Cax8Wcx)d#Rji{%e7t|uJ zR3?GPXg=@8Tu2K&mdL@O$2w6rVUUW(7b=`!ge|3Z7yP{7YSCh}P+=BC&u<sXN(+4L zREoV|mGU|5De3#~^NjG^?-}VCb^k`Ai=%&3&D~z`GHg!?5va3Uu+7rhMcRq|t0#UT zeJI60qR{*~pN9w7GnAEIh?4ThEae)Nqo4$7g6h>5JMqv5wDE*u6MW(O9DeK>P??r} z84H!8A-2K3RM-K?gDIy+AK>ueWDJwIG#pmPa3=j&-cghglX2Vig&)Hf#a1IYhtm)# z;;8oaaO_=Lj<>>zQ$nMewTVTMdobn6@;Dm?cqPsoL$e@{vqm`#_WB{v*Tlj}^@!@u zEo-<bpp`mMiDDeeoMKc6PiS@;4Qo8SVs%dW6s-mg`!tO_XqCn&7x<1+{yp^v(e^?U z&wELjX2iw^ms4}n9wgeuh!z+&yU`YPrD(W#*-Esm={Fe_HjB2!NAAE4E+reA<#EI= zdkAiEbThc`rvZ3(kj_W$r8aSpvQH!)@*$>^CV^RL=uk!sBo`eQ0*)huX1Sv<cO41t zPI_|>+o@h<B#wPBF9jVPE6|>NW+EYpkR^L3rMDGfz(-^zg8)R%tW;2ei9wwPY9OG- zz#f+g?+6gZWoiYjNpCa{8G^=5rw!;X@EQz6iPKh5w}-(zo_eLZA7F*&380(y1!iZV zCaPR@gVof?LhETD&_4Wq7GD@CjonBZb2sY2UlGXLGfMI0+>xNBeK25He-Fwh4UxIG z(a)pslhMx`)xf3MtF+K!UbN{g(NAUSgB;Xd>4ThTDO9wG$;-U(sLRnOpe|4&@Q3*H zeyCqxF%QY&NVo`(4E-DQx9AgSlnN~+fsB0{>^J!JuLQ%4&?H-i{aasBc}DO=!4bdy z6VBY3ONhB32@)0iK*RubkQ2<&+F%GrbKHj4kNkSL5@DhNu^WMd!)-3nlFBqp576qW zOae45a%<RkDb6;Aa9-NB!r|Rn?8^8;!_lj3S<9I<CK0@P1dmdRr+8~qN)1&Qp+YS@ z(_?oi$P7bFAE-Xxxst~monfp3&r&v)t^zYp=+4o2cO^7DlaokKIYJ#0rR>i^K^UVG z&G@k3-Z=eksJ9TYGISicUgPC~Boo!{ZVk8Fu}{5;T3d`?{~@fQH~NZsvK=Vwi)9*O zE}=aS_n{e^pk(5O;v_*X$b*?URl;xZ%{B%_9=2{7<W=UY$N`F#3j)QZFQ?vKyJac$ zAj+KcoIjq^KpgHl@MQIXG#;esDHNTkLur}ba2_@>(g1rNEU!U<pk3UwHys<xJ8<50 zQ_X;I>}fo)eO()<w(CJJDA7<>OyDQIH)c$_(HOBpiVJ5kPA|NS#4%6Ydd;9;lgiH_ zwZPW6;EvFy8_(S_DZ&VOR0+JuNVmlXYbUc(<_3X!o;XjUDGO9IB{Nqvo1#&DMlO(` z!9RNgs}lV{&`8)^5sVB{q9A95%;<qAJgN&ORWmxH-{3I8z>LV9Bd<?TCX2ws7ub}E z*B|2Ar24S$>UV#Qt{NqT&}9h41}7AVH<pMbHWla+pafxJXJF(RnxH8Q&!cxS)pzXA z6<j}&SzBcPX|5Uj5fh_Y9Uevn36^?8>{W`_VPr%traF+0F&Eo6aG?w0jn>G12;>XR zz-A10Qbz2Y%E&^n3W*{#HzcwT&@Sd`q<c~sf>(<00v8U$Y$P>~m>kA)MWQK$CvYAU znnbkL<A(SqNze%rs8dWk6E~WQ<hY0ygS>``2%6?$3T$vzm%V>h5<)n|_fg0Y<0hIe zoePvTL!bSz*Nu8L67?zj@XR9wAPuk>^=afG2mnG%0ppg|p=U-wv;;kY-&js&&cWOp zgE<`s{)FY4*Nvk`s-$=`0ApYQn43EfBO;*Lc5HF9l~wSn1GNv6ZEkOo5OUHmaf)o` zBI9{gC?;k=tg@2VZ}i@wvHfY5Ag{ZE^RQ{$)Vq+}uP|w3H8^7ahJ8);V~;JIhAGXr zzVJQvjGWWF5!ZOLP7l_SOo8R}sKqRjo|tH4*v}iOi<OSPrkZ8XLq~gBDen0bB83;H zp#nue4MUv>UWtIy!EE4mrMMkY84OZR)6`G&!Wiy6dbv_u58WWiwaj@<4IX-hUq8nQ z`|+Y;unGjIk2Ld)4ut4(J)EdUGcjW<#8=0lBMty~NOZSUif=~rhF$3#ZY%y)bxQHC zC=wx8Mi3HaW+}z%36sW-e=}f2x}!8`|Jaxp(-;t`v`$JN!Tx$vCH5gIVSS|Ksrvd4 z;lSGfIK*m-&SV~b%q0qAfU%<Ph@%6s;D*??$jeCRKM)>yXI0Uf&REbzsB+<rHjLGz z?DXV%ec<TOAcsCM^Vki_HEF29sVFJxU9go5otnjjopQV`IVeN_4*I8HLr`AY7Hn-Q zQw_z(TkuieeNc)hLku=r&hR!qW#t|$W<AQ{ibyYnHpT6IYQ2%CPGI7M-pv*%A{X@t zk?G{3^W?}xa#1skjE4&^C0~UF%a+K!@HE9z-x}F^oC-J17Tu5c4ENmQ(@%Sbd4_uQ zPx$M{5BUr+aD0M3G@%Rj5E3#QpFdglFL3@O?Oz1y+TbWXuxWz%vb1N^#=y*k%=-MJ z8FbiG2+73@lk}QoI}KX`T^e4E)WYepp%Dq0lxi|<i94|mvY;9A7)rN=h9(U4hYAvL z1Qd9@6EuleINR*i@B(_gQoMs`h9+d`BNALVT~SsJi`AB7gnO3rIYsOa-fj2cP{f<i z1$>i3>G9mZVDlf-!gPA&v0S|J*d@V_cYD)1pY-cz{rc&oDoy`E18*ndrPU8JUU^iC zSt=l*VK(z6OQg3qGz|S+m3X<b-@e%|BSjZtX0lrSVd&!6rBVIkyvd@^Mr+w>%BfQP zR}}Jp8NaSgL0eL3;1}!@{hjL~4-8FdKlHe<yk+%<9><<oGSq6+{KiF!NnbH!!vA^V zhTaKxV;+dyW}+KZiZcKyE7S3AICg)(jycxe2-oa5_23nJ7Z7MT;Wv(!v5c4N(f&wV zj=wPjO){qxZ)L_DYeO}c&*w_>uf+>q;+Tx|<%fbrR}w7slg4N7B}x3DnF;X}7Kug9 zLyva~K&avtP(XBP&-;Jr$ZHUADBX`U66{@}(ed#J*}}x}Nd8rUx|Uun5Au6qFvWi5 zo5111e&sp1P(x~-+=3pjGdh{3^p%nG8;*Yd2j?lr!Hs5}^fLVg=PCY1U!`3|`WFW( zx02hOKSjrGK2WKqc?Eu$HvGH86!ViPF(Jfcg1$9te30@r*x<!!K2X8*=-(cwjG%3> zrVdpaou>?rk4oS8cw;b@y5<Bl&U(1QCmgh%=F=5$G&cwk$C%R^pF1@=Ug>2h3x_3$ z_X%kmlOAJL08#0nCGMRf)+Z$4lN{sx1k)EjQn7q^q{K~)_k@Sh6mhmQ%E+XOn@tOM ztRKuw(EKfKh6Befc#cZc75k6r;Wju%F(k&51w<rhE}M?N_E7|gC5}iMzI=*%Pl);6 zJcz5=5A(awad(=Zy~PdZ@0O~(dLM8YP8l2I!tG9cvJ^oKI_|*-8wkgH9Y4~cjd4&D z!70r))b19_+$8kZW}X5#XHnuxC{1O~)d-+t766pEGAEG%Ol;#yj6;^T3}7QBj^7Pe z=JaQvIRVQ!%8dZX_d0yygk?|u-JYa99(`B3UV~SV(`lQ3CmpY>KGekVN;w^`48-xu z20C8Zk&Z8x+MCkS@d{2?J}m-sQ>XX@LgW8(V3f9|Kb{Agf<iA2nwhNOli4+#skuY2 zfW%b#bW{K800nfu>3?rf-qgQ0zz0eXW0Ha09$GJB?v1@{r}rf4u5_THx%Xk)X%jGP z$7JDsR3u`2pM=wsEUdChL63zdd}+oPN<ser2A?W{htXk1{*1*AhDv&&Z5+NQ%Uz@d zN7FtH`ls&iBP)v{vq3=}S)?a$kjA8AyyAcI(A4}K{bI1@T+{Oj&IfU>{0J%E2)@BB ziwZ8|IY=tHTVraH1Q%u=Ytb<p^A~!l#F)RdgR7~DN>i9IA38`}&_miHJK>`7fWDR5 zXS_?`!RNmEDSD&eb(#$DDCZBYPN0A5>kqx15Rd1rIRy`lQHoRG{D5Xt;k@6p@Q8%8 zqz!lvsPjp^JZW#z2AWc2;uSToJ~kmO@MVlXF~RHCXC~kkgSe#aUW_MMs5SW14eyS? z;ZG>+jPK=eNU$z}|Id<MoKOVbq2h#U2m)WR;iIp(;G>#_uv)`6A3hD<I(RjN(&>&; z+?#wriC-WUV^$#pz~(0;1Jgp!CQyUJ{9Hp8UF`HGjIMd<5RIzq5*$E0IwnoU{1u+w z5{_kH?a^B_;@g4wBBqAZmShmv@JtoYWK=0smeH}^7#E#!r3a79@~502y{CurPei9A z$;Xt2_gI>k&q(hlX?TOt<32vSM8o(znk1zxYLJi13sXYO2H9D`cansrD!+qRE?W^i zm@vAc6UHYtQDIAy&3~mK@EA=DYo>qk@3mwuPL92Z4}*%$s_I4E=){GNt{!#3LDd1P zjW!82#2KP$p*9I#WDdP8?{g?le}dB+LNulLeUPM_{s7zm$a00mi@6vKi5J&NW|*=Q zr+no)>*8N=*3cgG4Ptlju(`-<*eK=s0W&m|%axynf|M*@gTRyunnj})5s6?06fF>% zJh6z89l)_#jLv6=`Sf3W_!8Fmicz#oYLm1XW2CKx?oUMzR4Cfwc9g%_7X4v<F|ASB zo)DefJ89#T-h2`-2trrlwaPqzo=`I!g|Y)Lug!x)!<-&jLqkcYVUJ(83_0{q1K-7j zV>>3Dr`Nt}(Po36>-_Q}=v*PhrB^oLP9*nQ!<|g-b#UkR#rQg_moH~e(ag*0U0S$* zeSYW2aP%Y5{1?rPp^!{Wwue&F!h5iR6ZV3dlr37|@ih3u^d6W}Jd@j9dKx!w`Yu=t z;V&ak3l)r}mxDsXCSVCmZ*J9WIY1&kjt#5~4Z)dcEBun5ZV&OdW7MJrqa0?$(Xfmj zjo4HvEBG5m!$p|Us`JpQlkv6`TJ`B!_u>6xuf9e@s89a{B|0F~>A3k0BEN`ytS$HV zK6^R6f7mhlj@oInlHql|FL7Lry`&YyXZAWQ$0-AlJxy-l$xSwJd@z>@Vxx(#A!oFa zH-2Lot2la%7Atj}9a*-1{0Ufmep##OpBl~4(0N(^^4Qb{-3O^L8@e8b*D9dv0`z_? zD(R>u`!hq|rk)``iO;%*8~XQ!XNlEDW697_(7=b6*hm39jNv>W5pF*=B{?K)5b*oi zW{-h`HloLydTB%xVj6tdLNV~}B*j;X_d>L2*U^}*Xf~)^#NDqmADs9R*9&@)|50jl z(XK^z0u71ogpSrpL!w~VEp;bCR3UgnHVk2mEMCyBTysIcBJvVxjt~s(kvQaG(wK=8 zr{uW0cAGXer&~_JgsJ1Y-BmDgT-Th$-o27+t?wE){=q4eU5VG{Cb@pk4_j-OaW%s3 zyMFBbuItCUZvH*)w$|xWr%svbnl@(ogOkU*@b63W$GP&SxUQep)z<p%G1JG5wP1IR zo0dOiY6F}*b;=|rrgN-&((mej=iTYHag(RJB){uc*Y#sbV>a8xv(P;yCFx&<_vl06 z)5c87n@ECQKh~8u<-y7M(_G`m<V<iO-#~I8*fdUu|5u{x!O3|A`L4V%^iNpx$4#Bq z7y6hy_CW|dmR$Jnt$D&ZeO!*=8kaW>|GO260Rh}&9++mhb0>}&4=2T&^x))i)5m~@ zJ!1-^o`=RgVxX+X+y^I)b6tD=v}^xmzI&zgq<l@7G$y}M$@(Vej~hP~r9s8(1_@tH z=&wn_e?ymw`tm>F=QinD`=Gxu`BcBIAKTZ38<fieP9Ezb1r%`LG}p8#uG}$GZLJ$s zGMB4W&V&c2JxsMO5mCqH{txq$(kI!V6txt^i^><RsG|0Dp*lJ>pKwN|<v`Y)30*CE z#XswvGPzqOs>8&I<0e9{-BVMW)Wg3ZG}Ly%J)Av!{#kdXI=4<6`)1xRYI5N_`;MMH zudXaR>iscPt(M>R&9aB4*wWnIORs%C_X%}d_>D_mZ?(T<`4^e@KKtaplASf*O&Ilj zSe<z912<0YGhcmm>l-yUeA-!^op|bopW1Fzmv7kK<yPCvYKJo&)BfIOU&)}4j?L&^ z@Ks6gn<uT_Gw(SyxBYid-F5oY66d+y2Y;ElzNF{*Up+6U?o&ITKRI-7`&ZSpvpZ5g z>HV-;*Yk}oZ~a)VK0c}Az;2hkslIw9|8l4Hxcb3|8?HSTc}y)%`1|{3Hw;x@iuLtr zd&@-iSx4WecW?Wvx@PKYKlxsIuVm>}AH+YBu|hrIikyA&uQ#j3kN^E-w{`_3>!0}` zJbu!1C8O%U7;*iJPpi|``j7q2{<o4>_dNE_mHnPp$9!<)#FLvJRmcBn**(u}S*mty zmHVfkum7N=_3BP<%su&{n%e5cJ+HmpMJ*n5?I&LjPcO0Oja`{rGQOnU)LW*1ziw8E zy>Lsx+iD**`Gpawf7~BX`#P7sd}8M#B|UeQ-TdZ<FO`(-d3{ueFBhqEpIb8FwvLO` zBaiew-74^ky8oB+R~Mhu)n+Z%{pHg`Z>taV-LU$~ZEvbSwT+qf%KSIf!<)Z7a{2ft z)OW7?`0Z}Pr<XXduNpMt^CcxC$|g<e`$AZKp!M#Px24Wk)r@BQ{?Yz^wcl-zuPEF+ zO?~O_2~%IMU#!0LYF+0~KAfP|eEQ}ct)3mPUQjUvu(<I0XLe^ip~mhEUpMXP-RhZb zuiupPr#<R~`0O!t4<9Xwd9KT&yN(}GUvG74>HOhK)H|2Wd)fU;dC4n(oBmF0yUiu_ zj)h0#UfHFdjPKLobmy%l5ABQ1zwFAF)i>*|sk-aachu@1Pb~YxhyPTs_?!LBHGj-e z<Axl#^T`qACC<~=4(s0MF?B}!mtUT=>@Ou<>K9(|;-jyY?7Do%ke$h8B}Y268LTJ0 zrWTctxUKKRht*}1whSJ=aj`ny{cF{UO@C5fs`$atYU#Ub_qTIj$b5QcL;e=uQZ@SC ze{N8R)J<($`_qO7+|2)tj}_ez`+A<by~p^81HO4$)%*{1TDWfKZ7=?1N5Y$qOf}~3 z1K)n`&d1c%_OuUw?EPo;mD>V$?3%Sf{cL8&(kC-Fs)Ku;U%3CP(vly#KJv;*_uFc9 z_aCl#r+%5b?C0hW9lox!s#YZZA^DmZwapb}THO6b>gs)YAKrKPEj7P>%&RwiF<-rQ zc#Z$NKYP@{F`HX?zwfW^f1*Qnvn>y)KR);I&~M&&PCXnMzrxilQ!RS&*&#FUx>B|O z;p-_^-Fc-t;ZMtEZTaK@HTGcci~l&dK=tRXcO3p~mg?<!VDiDA?<pxPI??jkZNp3U ze7x@4Z+3=C&fWY)FC}JWNz$0_2Y;XQg4$*F3B7k=kvhIl=_UWT><RVktv{DlzVw>< z?9ESmH~eL}(9<II%hcAJ9_qTGMBDMemCAt)CHEcu!_EWSCaYI9bA5VwzZV2ucG{3X zs!uyRm8w^*ylr;X!+X^wm%I8NU3Ey^w}1Wzr$0X|=&IBqnRRyigR9lY=l}NhUq@G} z4=3KY`32`5b=&mM<8xabR9(AYUiIRSht)g&_FmBqLl3KwA6Bk@w0yTZKs)ng(TUI1 z{cq>bDmziGUdz``^#`T<(CJG)5d0I;jB>3N{`P5it-U&UY{**S-><&#JYAou`(Dkv zwe`Nk>hIp)-1aZ04y(VNS>Sr1cE6evs5)F)e^{M+!-VVi`94$27hFAMPS;P=)fIQ| z+rQwD`s&sHsC%dRC+b6865EeFdPsdmc_6#<?b`%@r%1nA_#J5<Mk<=E8=h10^Wc83 zCA-(FFZ}V#p#vu!DVbP$wB@@$eW#u~d)3P)W(+S;{#LN<yNN5*qAM5o*LrOzNt}IC z?KAPK)IXlx@?z@kRqAWudp7hL@>9t}|D3$-zBi5w{<S6Vf7zjPMb^HOC5LW~eIaI& z`s!`jt>^yfosy*+p6zm~#fR!+kNv6l$>+zY?GE=D_C#=5$yYspIk&Dds7~Cq?DUWh z3)GaXHVc0qQLQd}^9@_l8XUxoVA_=&Y!|8z(V?RD&)-{Eg1ue`LOc)^1ot9hgD z=yOT4mr8CvHNxMo^V_Q0d$)h$!jIIy_Zppe?d~J$)E7SL@yg*1YLC~Z-Lmi3E$YY{ zZ!Y;&U!h)7>Upm4*q=>*$?oFkVxLPsT@o{=Z_g9U52}|{zPj%(^S756<yWc>-m<@} z;M0Zb!)vR)+gm$Peg3T>FI@hY_k=vp2|4DQ&k`g3-6e*+&k23pFY-Uce44n>Z<Q+a zToQBNb+-)rd5>zWwtlE*IZ_vv8uH}1SD(r_JMgP#)b|g*`RLmHpOu`N*nHNTe>tLF zcEcZEXzrS){!!icL`BDnl8!f=ih1jUchwua-0<F&``%WKc!82Ty;A~jto=cRm#cM? z3%)z>YKhv){@jvHDgQM6C9$!4%ib#cQcZ5v`otmqUG<H?@=Mw-TdcnDviGIi?<p?v zd_Onu;Dl8rUmhs9E2q;dCVwGEq4_K^(w!#K+p7w>%=CqxZD~)Rn5p*K-o5mbTW06J zyzE<b(u@5w_q9DK>X(sw+>1<?p`ZHMrr*??`LqohFrcq1@$O-Fr@Q<QPA(`+a`o(* z+Ld?6DGokz;miK$T{e56(|%=}mX1YO1t$XSB*G%Jd*W&5oYTzPE<O<BZRd*F(!6!M zctD<Z4$mb-s|i}(XKYOSyiD5<boqjoKZxny&bgpj|90`=7_FUaeyq1$;+*E5cFBPj zG5!{<+a-G1xey4V{*;o<))R5*{SvzNkno(=fVM6AFO2amhz&QN-{ST_%b3Y+TO%W$ zOPYOWJlTf8agJrPJ=xKWH?VDs%!M&VG{pL@wV<}yW`d*>^g!1-2W}8yA<4NQCcT|2 z9NWKL;{4{`cFA*Ec-y50TKd{8vp?RtT`DB^v`g&YNa&bKdy^r9FNx{YbO<u)N0Kjz z^aHfh%IT+5`rt07KY-F7)UG-v=EOz08G1V|_zjB%Kh~R%^){qI0qM<z+MaJv1W22@ zh*hlZN26U@2x914*CwtQI)P~7iUFslt{Aqe(m13Qyv-#3TsMJrz|U@LX``K7x@eQv zykah}d|}jW;#12zgE&4BPpZqr$Gm7Cn67U45xr@vgzGM_z5+LGm2jN|<`KAQtAy(u zu-gT0+A86?1&pp3DP03G?lCs1fEQjdHqyq0SBwn}rHL!1!7^Pm@Gf>bE=a*JE#bg_ z@NayL5cKhlVcQsiyDWIFz)7$2^$>d;7ub}@6F6_7OA!hLo+e@Be2o2$hW^J4enQ}x zCLo@31)gQW!vY^|!O5NjS#+3S!JiknA#XJB6@eE<A$Bbnc##EvOW^Y?IQ@e^N_UY3 ze^1~`Eckl%x4NLbHVS$Rxvf&rTk-9Jewig;x4>Vw;0FZ0%7Rx5e60olR^X);+~}Jf zLau1wNkLx~h1gXm@ckD2yuhn1cr15G4qL4SZ!Pc|3+@!Skxn%5cLGOO(C9M83bZ2& zeyyN4_(h{63OwFI-&Npg7QCmxT^78rz(-qfBfi77%z_UT^z$sZU*MVrzf0hTyixhH z1fFT3A1Ux;3qDrhM!YDWKL|Y4LZ2t_2^M_1z}H%EIuD@sV#JH`e^TIu7J4K94qK50 zUm)lgS@35C{<;N!LEuX)xS@B4ZIuQ8tDrBn;BO1O(t^Ju@G1*#<lkZ2Z^8MCW9XsU zg3}QRTc(l5MMAa;yw*Z*r01~JSn$1q-W(T+2VDmRPKU(u^_9TuEPM>Uj)w8tjPt#q zr$cA?`dQ#~Xe(dm1TK&F9L{tOTdIY=g}~D+cpHI_w&0fvT(jUtJ{`6!3r??fke)Lw zc!IzuSn!(!o@c?0{5Wid7QDBhFS6kM1U}D#(>o(1&k_r6<Ok!61;0bkueIPq1zu{w z?-lqm3vTGqVSC+z=L-5&7JQ<>D=qj`_P4URC>zpc=mquMLO)yZu}(GT2;5<rf`$cN zW8w3xz~e3SFACgc!T%!gS__{y1n#uZ8~JzG>MZo{3Hn3}J^!;dlw+y|-z?~pE%+w_ z*DUxhfu~vU0|L*q;9m+n%YqyFa@a;&@E-*I1Pgvz;Dr|aH-YC_@L2Yvep>KL1is9I zUn=k-3x2u4=UH%<z?WF?8wLKl1@9{GRTjLLz^gbP(F)p6;A<`P0|Z`b!3PVx(t-~W z_<jq2qdXk8DhoYH5W|*Tqq2}|6zH6dA@=271fO&feCkE;M}Xts_|>~a8j0fh<VEP8 zx(NQqi{Q^)1b_J=`0|V3Z(aod$3^gWFM_YX2)^+m_{SH)cU}bFcM<%Hi{M8tf*-pG z{?kS9vlqeXzoj%)e`2w8ZwjY>O4AgsTm<iQ5&XJ~;5S_a?|u=y&qeTl7r_Stztm=L zupP>KFsRcR7oi`15q!)=@Cg^ervRsPP1~frS3_-y52m~3*y!LsrH6+O^ldY`_D=56 z!+=tvP%k$_ZUeb{3{Jks*&0rJZNsNbeQ4ZNTUY;p9(3zTw_bFET~hymK6Hb<QvU!q z-BObI4kM><cjr6DO5tcJ9FGi|B9vpMaMToz+nwWf=eXUCSVY*J*>vZq-8pJ^j@q50 zcIT))IBE}$+JotlPsHuPv3hXgJveR;j@yId_TacZIc`r5?a6U_G17}^dNGHd9IL0H z0LFVV&z=Scrs>70_vU*qgAdd9GBn2gp=wCgi@EjYRC+UIZ>H?cl)af-Z>H~K&~S>q zIaVL$-^ZY5ZhbgbALi4C<MuJ)8uT1D)d*$!ROXP%oKu-kDsxEXxTzdBmE)!w^vuD{ zly0VUb6hv`aWiK($8~eulw{+P!r>{R79=y56j2XEMM&lZU{aDRgjsh)bP<6iNiph1 zicwKgj5?BH)Ql8SSGu!oDMl4ZG3rZ-Q9V+Onvr5uoD`$xq!^VZ#i%bSMumZ4OO~al zcyR7gjDk-|Hc~**=ip=?4JvOOz0+bFSNLGQZ5pr#Cfn$R*W7~1qihqWOdkJ-NqM$u zd3cW?Ki7sgM5fuM<&T|GkZ;S)omen!f^FKk$zySwI4&pOHg#Oibb32u{5Y_pmo#jn zrj5%d2F5EEw%n=X#!<*v4$sM-Xqz-{Qcm6@wn-07%O3~28B-t3A7{&%IAt2{4@}Ls zjhmVawv)*)@TgJa3iC$gJ~)|33MS*tmWLqA)QRIJBdCzxBC$=$gJ<fvF=LG^pwW*q zI+0NfOdmJ(0mC(8%!B!(Y>*Rg-w>1hDHB0~mxM;4+qsJR9$Ym2puI4>Rm2y6bSZHB z8y8zAF+Wk^ri;9^J#W$vCJ-0lL~pEzY_?$p;xh3rg3oA1qj*n&8~cV)+*tS6Y|}0D zUO~Umg8K#jf(19$H#VEGPZ#AsLeQ_W(2o`PhZfve$JlJ2TJU^9Z|s*v`Og&iHx~M0 zf!A8_`2zn{!fEf@)N>54hok(Bb&Sn+iG=@7qVFc*R4y+G{(U5zj!R7b{Uw~}Ula5h z7W{32XIb#o0;e}E=^`)jStsz>7JQSypR(Ye2z;>x-!1TE7W|;V-?HFG1kN9hO7a{R zxUoMHmGftT@3HXtRp4Jpcs%%-dizGgFPCt0--V)+9*lJl9D*M`uE5XabBTl#eH+Zn z=;~&{+Y7v}1@9zq`lpq2(S!IT2t3n*cM<q~7QCmxXIOA!-GehW3+@&4#(F!Nu3z9w zEc8PK{+0zFA@Fx4{7T4g>Zd}&DPLm+{b333B+(z0aH5|m=ucVje1T(e#TNw={Y>FE z)}_&W6$`wZg?_&9_qE{93V*r<e@XZ=E%<A~f1d?^Tll9~@YTZqs0Cjq{6P!8N%+GO zPGf<o=fx6!wS+H|aMI5w!f&pFNpIIk^yL=%-NJuF!d(*m4-!uN4+{S|3vR}5j`=iQ zW_cYKbWRKYv%s&k;J*sIn+2zJ4_$pNcpKqQx8UuC-?a5^%0ufOx^gV^3BphROp-35 z?~I?R|7j9_t%U0mPWtI0{Lf4HbrSt+5}qL8D<z!x^c4OQ3BO*V-zMQVNcesUCqA^^ zqU&o5?iK#)nj7Ji-y88W^V>zjX>Y;Adr3IGl4;_51x}xe2q#=N+vgJfv+$er-$?jk z32)niVj23E=Ra3TIOWUa(@nx}lJLF~PV^$XwsZ^L24Qq%T5y_6(RH5%r@oA?TnnCH zz_!^Iyo<n}vfw=hzSx5I6ZkR<?iKi37M$K&pvycTH|zOO1Ga6o(2o%K9t%EJ;MEp< zqQH+!xIE7OB;lmzd_n(<gx?IzEU#<CQNJnYOhJF6gp<xp`tA}={EG$strmQ~z%>j0 ztibQK;4cY$iUog7;E!7Hw*?-w;Hw3`$bzpE_=^^NlfYM6@J|H(fd$_!@XZ$dpuo3D zIIR&(z3q{3yk6aaS4%kQ^N8S6E8*QF`d=iR=#LBfYaE8dEXSV(ev<|NRp7lWxN$yg zv!z*Z{&$LqbGrp^FXnUOEx2(GY_m<Z;0c2MaSPr>;PWiFao%gQy=cMv3HrZEcrxTO z_57ZMlYYE{{(uEH&U<aPuOvK0;&Vd6iO*2Mr_O?p5O|Du6~)y5Sb=x5;1dPj*MjE@ zJl%rN6nLfuFBbTH7JR<Ir&#c31^%c7e@Wm^N_clk4^K&W4+&o^;iR9}1fR7Q{B41k zN_bC+&&Lu@d{ztkGZuWEz?;#4hRf9RCV{uL;GYOQ-h%HI_;nWipuqcD@FN0Gx8TPG zo@v2<7WfDW?*)0y`Z-p@drSC35>9&fRq$CT;e90f=OjE;!s%Z_(nb1l<7cM(xrE;+ z;a^Mm^%8zu!V@L@tb`{?_@6F;2Nwm4Cc^#~1y1rji=QdaatW8`8wVv^o^PC&@V*is zHi8a6@xMjFoo(R3MR-5_%yi==T+Xjc!s%mIlRi<xZ<Fve38y_Dlin}kX%ap{!aWi` zR>J#Bc)o-Wknouj?v?Pcgr`gRs}ep?!rzkcK@$F+gliIBDd9c|KPcgYCHzMTzg@y( z+QNg2%EgbLsW(N!GbH?a3BN<adrSD85<W=6GbQ{^2_GWi_enUt3uwxdBjI;Tc%g*L z^?#m(50&WuDB;5-{ACHhN5cOq;q(roDbL>}JWIkWB|KZgt0eqh39py%`y{+gJ9uzW zxs1TiO!smLzhA;{kZ_s4hlG!m=rswaeN~fxri71{@X-=JM#3ja_yZFDh=j}KyHdh) zB>DpqK32kGsq@7}dKibFDW@XgGXJY2JXfN3OZa#RA0XiqBz%a3KPcg2BwVf!MH2o8 zi9Rgh4@vk^37;t8%O!l0g#S~*WjQM(e6mFUsf5e=8Ri5LF4E@|{7ij*CE<Az9vcS_ zE-U@z5`F{1O+HByF8AlT5-yK-QzSf5;xpn>N;Nuux!7m3jS)D>BadGXNw_?IJtN_= zJWD0~PvB+Bzx6UBA>uFhCr2b)9^bE|&1+ml{~Ugu$b;(!3vTl7V!>&xNLPjhk2PRh z&yI$J_%FfF<TG5t<$V2KFeG|e&!5w#BrYr7#l<ks6Pm+GduMdHUHoXkyBl8HJpv~_ z^v<y<&&vX*`3CW!v5l^`UHss5W%>;g{sKr$K3gRGMG4<7;V((}m!09kWzKWb*k`ky z5V%#&vl1?+YrEEnNc3{L%_Uq;w<B#@;UfB__?hxM5(qW$m+>_5ze)Hj5<Y_p50{ls zOKMb2-~kDj`J9n(S)RM8QQ<Q6LwyHbj|iO7mCNM`377RVPr_yWge6?o&sGV47-^V# z=tzwU7o{uDC;LeFRD_xI10;N!gx@aV`4T={!V4sPl!Q;0@bMBpL&Bet@IncHQNkaQ z@V6!WQ3>B5;c`3OE8&kx^oJyTri34p@W&;*UczTdc-&3!;37TG#?RE}brL>Y!f%%F zA_>1u!k>`vdnNoy34cJs0}?)2!iyz*x`f{>;ZI6<P{J2V_z($yNy14bW`4hu@HrCx ztAx*$a0dy2i}W@RKa<au60S@5SP6eh!Y4|2NWzy%xIF&$>;fWOl&(Df4wrD5ewu_+ z(>LXOOv2^*wobxj{cMtOdA#^U!l@~n{L6n24=$2(8Ga`Ig@pfE!haL^CBP_-`JK`D zuJGU@Ozy9iNcdk6X7caWji?R!SMfCQF%mB4w^YLA{-;vHW%_V3vuAncOZ=BhxU8QY z5-#((G^J@iZ%MeE-+dDPnw0Ko312SZ&BQ=Vdi$${Un=1;pEDBvH;MjtJ>bDbd}KUB z!c!4u>iHQ7m-G9Mgwxc+q+c)L4@-Exgv<Ku+Y3avNS@d6Gx;o$@HZqpauFP_7x6`W zWcq9ge^cTU6nJZ3&GDnQN7vI9e3${-UX}RB<K{{Um&eU_C0rgiKa_BJ-27SKB##5X zwRR)ndWl|6SL<VhoAl=Q5%&n3^dQqulW<wiM<raAbGC%ba&D9GFw!u~YmbC$5{~!q z_#%1a`tz!U%X~hP@V6vB+a+A)b4bGF{;)>E7f5{0N%%quub1$*CA_5@9$Z%WFOzVJ zYU&|R!WT*Svl1@%V>=~$g+yN?;WGcr`+^7;$s^0DO1Rw5YZCr<#4+U@E8$N|_&N!f z`IJex%;#4Lm&>KwEntd^<dplRdn8=e!vukw^*K${|49<PyzZMJ;fs-mnXe}#e5Hgx zE#a#qe7A(l{UL8wf{x_>heV&$4<1~Ezk{EdZia;aQ^J=@_?r^GP2gsJQ;8w2-4gxt z@SFUrCHw^m|4zbRl<?yc{*r`WaVtEy%ybtCJzpbm5<}K=l7!28?r-4}FZc|S=w&`b zBwXe*M#5JkZ8N`5N&KmQrnw_sPfPT&ewIqOte@8;T-MJU5-#iKX9<_fvGr|6`lKJZ z-gXqYsm}>Q51k}>Sr0czxU7e97Cuf<AO0ZG%Y5=BT;{XZ!l%v<+qPb!m-$pkxXkB9 zHJV>}y*XUMp96_mUK1>MtVnl8T9nUHiT*tam-+9JaN^$vKf1n6;|I4p!rL2O+m8}1 z_cO7cDE)FcO*yAXxGc}x5-!X0g@pfE;?uK#l)s$rcnN<-qMs|_QziUa37;n6FG+ZT zgugD~`4YZL!e>bMS_zl?=V}Qrl;~?D{1FL1E8&ky_$342!PN}E>G+v?zEQ#-lkjd5 zK2yT`NqCWj50&s)5<W)4AD8gS5<XkPACqvIex8I6m*`)V@FygEwS>##<2ng{Qlj4` z;l&cZN5Y3l_%R8mC8Md&-+AG|MS2e4XW~~&_&f>kDdD<=_ml9s5}qO9@_Ko)gg+(G zPnYnZgfEovkc2-c;c|W*=^(;I`I>^CnXhLgoaW{x{;q_}^jjrdo(Fy=;nz!i+6{yU z7o{t&M><M)BErmcPfPf#67CoT4=%I+H{Ty^D{$g3_qQD-T<&kjSooOzcCJJ(^U0HN znNNX*PaX+?>rshb=2I-;GM^76{9VL1^)SfC>{xGd|M`%FQ~%t_AhS)k;AVe5(}Kqf z`sXcpdx4*q@b`e3^0XOj5Rm?x<3}>lb+f=J`)lzt>1Rs#`w~7+!sYy~6nJaU68|^w zqw9T%UY>`PNw_=@sg!Ve9<ois<$1_1376$*d%KZ7<%@9qw|2hnwBTlbZ^($!%jM;l zaJjsOTX3_y?ziA(dCjumW_f)e;eUe&raV{N5tT<S$9@8DjbOPP@0aN1a@-){ayf37 za9MBXE&R=Lble%0M=nRFgv;gFQNrbN>?GlGIbJK_vOMD~xLJ-aLmX~jqUkc?x8Uag z3o5kW=KlpEUC~86=x6?4pjrZPnYj6Xfn4^+xVc{^f4@L+mWh5r{$7A^^E*LX*J+PT z${+Ipp7?@?pA$?M{x9vAuKD8%^KD(nj>#Wm>-xa7X|}FYr;vxpQ@Y~gDA|iIwG6NM z?3yzzzX2o<ee#F@f;(y4WH6mP1^;Yz&>h2mkME9h9zq;SZ`_1Yx%BUIjqLre?=Em4 zRkg5iN)!H|C|5JsX*$I7N<3rnOB4QvN50{z5&L%S;H7kEFNiL)z1;ve;V}eC*Jew) zW{@aW)64&VjClUH@lz0&cnUEa_?qc|)PNWcGkx=!2DqvC^D+&3^ZOga7tOyJpR!4A zs&n!+`fkH#zSnMsxlD(64#$(?UuwZuQ2?&}7R8wQH=koc(^ULL_i^+K{*RPd{^pbB z{uDpiAaA&riuji|Acliz=`x>>Np21hx6ed;86&qD&%_rA%&Na?5#MDAF!OE3r#W3y z^|$7)21ThLr20!^hZ*0jza)<(2_wcx<1sJJcq(|%`pFu<6);N?afEqO_+gt)!bz7k z|HQtj_^;C-g^T)n`Lf2JIMMh3dP+CrACsr_>d_;mN1t9j+%8uyd~izl<P?`HB{{iw z&z>$<&z?Pd^=8u1t!JnE2R5@uIofTvT~I!h_5^cqf;)`>+~e>SJ6m<r0>>S&CRjoW z*20}O7tvEcRD%autx$^piQ!WVbzpzEr^WV^rf0%%yAh~o!knJzgvof*>54iNg%g$+ z-Yo*hiWa0^O}{6~<en&#d!kJ4i88szWTM#*{de(U|KV27jv*qvzb7w*`ltxc2EG9P z&OlT?(DnieiTt0-Y3BO>JilfJ&72`YQ-5YAO%eo2`ZRNF=#_l)jLiO*<zuGy-<DI{ zN1VQ>O7=sh`Y+&zgt$V{lcGpD|F6o4%l&_!{|n@7y55+DVP>z%@-lQ`l5)A(4~h0v z(Za!*Zcqa2O;W;tS$+mzr1c-gC%qL>y=iD)+-6MC%`!qelQ;wA*4H4kyB1DsV>64y z<Yi{uXu)82u`WYTFGO6n-lf6xx1p`|G<sD8m*MWg4+JZg;Hk`|*)Gg`ooLFuSA!`z znBY3awojTi_O-bwV_(~~@FQgGi{qKLzRp=~eeJ!#)>j40t=q}ESCh8B=CG}=?Mh%O z)^0Ge>A3IyjU~u}t%h#=2{5}j)u>IHM*V+VP&V2B2mVj{f13A7wE)iltiAp>@y*H; zt)Cb6|HPLnTTx^Any8ZhqS7_=TNNz?KklUd&+}_$5Kqn-68um5f0}EVjqSge7aX`z zSMcln|0y4eO`W+YC-fJl`Y-60Kx*m#<KCsljU>(bWX1(_u}(rNFH3*Qg9^z{2{B_q z8|D8$=SzIdJVoQ1^5JRBPNH)Di`+%awV|&}G<nnfh~~*sbVHv;K0f;2<b(KXZWvT* zDk~OMNI5gAqd6{IP-cG@WtJ#KVP(KCYI1sEwEyPr+~~h)Zyx#N9vx57kCy_q_T#2S zPgn$Pi(rH&o@(gR|G)0f+1%lJS`T=J`e5|%?ohW9THp9{PU(@s;ZCQDC}`I=()1n! zoKidmofF2Q%@w?Q2oG&!O_p_}??3@uh1j4oC(F+3g<lNr*;TMkS&83%{HkH4vV#$x zjd47Sxd0b5X4t>O<1(Ev#d-jV3TA9~mbf&sJ!`U~0MnfXkzrmo8kGb0fF0#U$dk35 zh!SDIk*xBW0$1utm2BC{;+cF6%ePj!8bmV5E=b<ABP%Cws+80gx3-AX8?{qQa@nCv zLo60a)*?n_E)CH<%yb1CGSHg~6SrV&CY&W=#A#?<ra@oWxP?mM(x4}3l+%kVbWmbu zw79}X9@3LYGOm!c+u#A$1`p>2+?bJ&+6eTss$pGMahmcJN<2r9#a&UMjI4yy>uKJj zvBla-Wo0GXICao{6>E$Fi32AS&VSk-Zoh(cLliW8cyvcN<2*{Uk~C6kCID;TAKWu+ z*f8do$Z5EIP&lIHIXt?}-XIDkYUYhXNg*tw&cbkJ%g$cIF-Z~*J9D&A98wkINn4qY zv}NSe6ccHCpf7j}9rlw5X8m}=GdtMe5lS2h^RFXeA6Ud~QYvN<cS6iuy=Guxm% z))7&!qRtmm1W%AJ&5^DfS}`=wn9I;0f}wIEg2CWph~<Z6$Fi?l`0ZO^*ib90hP~h# z)m@_u+6-gCdYN9M%%u-HO}PVgJeOq=lsRPxflXQ#fyzsnLl$CTs+JKFN}2N^Be9I| z6n)MUj5KFt8PkM;u=jO%KcWejdvktf(q@moQIG71c=WAgGWe#!;b#vNVcP-yK5ICo zG*D{S0vpI=aQ|9&<y6>g-RptH;0~s^TFz<WySlarJOOf*&v2Jzz~*P6Nt7Y1yAtKP z1f$-qOISuRC~gAf!w6&f=e`9$SrGQ45-FlDm4>AAu(hb^<!lfa;RC4<5<kmTx|QdX zMd*?7R1*798ORbaOb9;$^L|@}t<{UHD}3&%3)U5e4Phm2WU3Y@cd!XzC2pW$L3kb- zu+Lqp1oE+}FfFNW3~nj7C8adwbmUbS;QNTSZz7Ay1?Af!A#%}nT;vIIk$xjH$VFRZ zkx6jrm66jhN!rxvWD(XQ-;mwjdc$t7Pyd+=ggU^_8|oIi4cX=bJ99WA=Tr?C+I*ow z$>z9*4lGy$&aj^f1DQog$`hKq3`9EHyYwh4H>cZAkS*g_B5;BL(J`4IADL40h2|E4 z9I31uWjIEzyM`PHXETg?EoyeGFYJwVXnGk?vdZWQ4T35ADq;`I?03Ox_6|K5Pwc`l z0*k4N3vSI#<Tki41d=`Q^|g>xne!4_HR`~Ylr1ScQQk;84P`I_Shup1%BV_Z&{i!_ z>I`hKYi>?$#z8&Yi5Q01k|YdilH{;nt<3d6O<H&@RXl%q8Ot4FHGpdefXK%Bc_60r zAWR+$V~pj;t~G2=`|Jlb`%)qz;fs(a<y(33Ta>LQG&7+nSfBrSdPwnwVHp-iC9@Ek z4&&8cz1A0=xyg}I>T#FN@<Sb{lbcc5ot<{0TZq+S7E|6~`H@mZYeOD4qCfrui(2G2 zo9wh_UjYDMoTm;<z??{DuTBqcQ5J}%<BUy!@UWBJjl1301ZD09%2$XDyB_Pb2syPu zUk;)Ir?fgERpu@wB6nRuwI^`aK5HP!g`z?G=>`^0j=&BsSWsTrF!iykpp0Tt7?p?3 zr*AM=c1x?BdcVFSJOp-3w-y|Maa3i&$B5+1DNotr3%B3o*Q*=apVNlrx+m~Ga_YQ- z;%kAU$Yfkr9d7*{9{2Xy2O?p_=J_VfgKmU7xW%Jy({jpYWn_e7!S36XQqv~5^J;Gx z6$g^LkS9{p4b+#!dz1kmr|ZXnwNUz3aX(h>@FZ>Y1!^2#_x_oi!48!+#&55NB=Hn? z>LpsvPG2|{(;FxE;ZS^>4I)r&)^fP9WQ4{iW(1EIZG#FT|4L7&XF@uR7031u$F>WW z&T6d%>RTxbBduY*m&dW->4M}&23)B_zy@+Y47jcW3tJJq;Wgxp8gLD*C+=v6@jm<P zyb3m@O2^My5bZda374{98}SLlaxP$<YiCAyMyx-y!ilK<@bW6+sQ)62oci=F#|D@- zr*k@@WI1AJeG!o*ZPb*NRa&^;K3~r8ShNU62?~Cm5uUimHtRlED@|pNF!y~pBQ(gV zB^}U`&`Ipq%Fd~NJt4ubN3_o8w9p!g?AO7yipD=fUQhjS$E}y+bh_XPU$}%vqNR|W zyDKfk;zK4ErC>B^CGd=cs~V3g2umZbIZLSzNe^{HQ{m16MqnwwNF|vbVa^t0r4|a1 zMK*c^U)k3&ut$vM1nuOd`t>z+=xop;52K*hJ3x=BlYIpSZgk$pdM9U4Y>4}nl$~fh zJ5e*1QwKFT+;cOOZ}V}t7u)?<Yok7b7tNvDB*U>0%1lODj+6bB5j2a=#?&sWjD6Q& zxZxff^$yK8u@ZgSR`hA;&;0gMuls1h8swMqqiarIxIY%fY}6L{;k<@8TYmQzt%Ag` zX%%Tu6+fNgNy|{eUG!Auo<t`I$<|Yu(^PuRXyI5f0gha+l2}3T`YZu2&odm@7$m)T zv2dh974;|N4#L2$A3QU1X2g2*I?s+8ivBRBMw`g-pflZmgdExNgTw7lkqqP;;-b4R zQ7ImbSxBJ1r836@2aVw8>2?&saopqh%D#>D>*y}qbK;9LkvKdjh=7YW<uvqmh9doj z>B)*bBb++%69}lFfL|zE+@Aya#$>hBAWi%N;2!+8A^Q5!6dh5{Qj|k<<D|(Erm#Rc zbyygFei!TX+iSh<a>T4fjO?Fsm8|Wi=OjGXqBKH&gy#@@lx&hGyB0tVe&0@A1$eVp z|29|Ya6+#`%R5PW;f#Bes>#h#qP~DWaTCan`0abW?(Zmwb%CI21Z_mn=cu(=$0>vr zgAkhepjvf6ea%`<#fB&HlUN393*6k;@TAcqYaiVzmEsyydgQT%X5WihDCHcTY+~KX zbS1l-+Qn~3AqyO+vSyvbvx?9%y6vLdR*HhoG;0@rpAhjkO7NfP>j<ZzeKFT06dy@s zw3qN8Y|3Jei4}*>zCp8p=5udR0xzS5QFgfMp&d{YCO_9eIO4d8lf$g8ab|Un<LXR7 zT!Aqgpe7ER-4337!P0Ufm}R&tQBStaNTa)^*ZFmfiq33|L(VvE_f*!J9johX1Y|+U zMr(yXjh3E1H(L3q%4z$#TEw-|0u>m?${d07%?n;dTw}UrG+=nc+}4zALu`yGM8XXX z!`3VF&^Dk=Xe}FM)Qy%fi>Xa2PtL;J5Gc)UcPUTikq>&F%Y#0+@tn>`L<?|dfldai z6VY>^7j+@8%A5>D6rCh^FQtBtdO@(dLRomlFZK0C4;Og~&geL8)PrV_jOrPxZek5Z z`5F#d31-v8KbyHgO<7+7ruvXoOE9#P^#gvN5wg1=iE2PO-F}0B%c&ZW=PP)YQeB9g zLK&HQH`0v(KdPPC*oH8g7kN&>bIO$D7(B<}siqL{%4!hpGk6XZ+)Qbd(G4ryxD{rq zUy}%&>TFK6i2Ek9-p7i3WbXx!9i|Z5;Ndn-N&N&*gAiECMuqqip0AB`H&D7~krdZq z@*E){INg>_q}v=xv0AZ_n{~hx0vixfAwGtuK?tmZqe4XBIc}u8k&-%xq{3!?zab$w z-Gvx?t>xPSNwEUI1&;;=egRK|5Y(I-G{MasRWxfee%lLfq~tcy?H44&4V*ma1&mf6 zxsuc5zW;{YbgBU8P7cy-H{E`w+po|nIt{qKB-d7=D@PN~`h{+rOvWZp0;?k%P+6nr zHPm$<_v<J$Czq{`*`$+uISScFx5~&h(fUn7mVu!`0uQN-V^YXBk+DpghSoO<WTQ4v zxzDB5X(WIQVP&HQs$;MY&sVg@_Ut{O;jx}j%W!OFS#=96sjx=Tk~X15+ECB^;jsxF zeSssjVuIt>zn*?8zsBR!Hy?9gox>g^=FGqX>F`>Nuhit7={8?rv(uO<Ez#^7{q7ZM z;5VZxJ>>*=yWloihSpHXw0>fKjL3I5Jb}%2up>?_y!ug2gn9b{<?%9CUXsn&>es(B z&=AkO40q#vRs?CWMNKF2)Jf8aKcNl!7#dnLawcMVms1uVg6S76A+rDu4tqP+^KlzZ z7LqDGWp&qhI#+4Wd(i!7<dpi()cJCD`1Fmwq+NdfK)U`h=IS)9^y>RNV-mU3lT@Zx zVl7#gu5b6}Y=>&G&`jFkPuiiComI8YJG2kR=Ngx$SNily?aWbMS)B?V&9L+0Pb&2% zRcZjRuj|)KF*C&|-nlZVT(3*24c}9*pMgX=x7N<QT*$!=ex>%jcILca{~qU({-mQM zkCs%f<y2^$Px_Mf`1PYaX@(5$%C)2nO}Voy!#+Gu%sZnMr65^9tA*EBK^2I_C6H1o z6wBy^3J)zN#rgFbts=M#F6N(9rRj?o5l-SDdr*$O#uJ$BqPgx81mw3vji7Q6eqT7< z?m2VF>*l<9^)=N0BP<gSTFhd(%43JJVAjvPW}`Z#FWpbWrXHlx(-R(O*Mrq?p;8&^ zKXZr)@ifKr5luF|`ijxuIWUw^gJ6mX$+TN|^j4lNRo;ctIn_{*MF{ac#tRxn<E+v` zg7UXROZtrS7G6p@)jC(AphdQiwdHXFZNQgQo*(}{?aT8L<B->^w87HZSkFQsN^vhV zAjm>oLQ6?F&CaSsYqCQa(o*;_yUw$}{7Yk&QXbvhCnyUq#}JHV3G2aFQ&h0@R1AK7 zJ(UgglgbZ{sQf?b-aI~vB8?lLArXc{I#FEXJ-ES5l!b&dQM5B;LV9qr1_enpl3+OE z$`MHdQ4oTY0oq{zT~S2Qtjewz!n&{`f=Rd%P$3)&0&*y7hGUH=5D?-0K2KL?Doxny z{k?zu`jhGI`qooVJ@wS})X}M%QfwcR^$nwg;KZtPKWXo{&D5?*AncUe80olpL><;A z42VEF?2u1_nJTsxdFrTMRG)3_&ENiF^^t3X9in`P)c9@s+V~SFfIGgaK6}%^wl9B9 z)_ms^Y02w?y`rYA3Qo0S>_u^>VIB%ICtRr9fyJb6BQKF6lH=&rM*HCMt;e99dt_zK zHj>@9&fyLeHDcld^`W}{T34_`Yl^y>Ka<sV9K`S*RS#uCbt#^W)s583`Dbq+Ns5=b zDybxRgG-iCB+*Uj^Vm0d;%l1n>ny62TR&}-dCD(j5{1xwjmWj#$W!Q$G;Cz!;{XCY z{0;;&39Ywd^247>x$EO`vQ6=CLd3>|mTw6aKD*+-5i$klQ@;DRD@J(ELMVZ9+H1r? zJGp#6!U`FMo9G`i^4nkpS%#2aWhs}R41Eg*dl6oJ9maa|Job$kF^lwQ`W~--s#*E- z@c4Qj!XqwXV+^jZ-+`J%&d^wnpF7ONs#QpzEi~Z=ir%bWoGdNCb=|eb(CQjyi17kd zkvc8@jL`zf)uW@4uO54iCw@bdzK?kI^HzPcdP}L6%%yxcYKf>HqHcuVC&_6#0QNb4 z^Q++Y2K({Q7a^k9*|qLy2P1!#^80~^I%&=0eW7G{`nZj-8&!#t9nPOB^sJ!=L4$tK zn@<*NbN%lk{b!(~Wc~lU^cfXYq>6GQJfVR(4l%zG>VOhr6q>LcNhHS(<j=gYeS!H` zXdP3q#{4T!zGArK4&0-;0|hi)5{Ceo)2u*X%(u+r$NU9&xb;tb-$dvK^hKSRWSu8} z1E#O31ty|kWEst!VuTU{=uLurRS9G>pl$9BRx24g*Z|*pdc_<n_yi*KwV0|jI83C8 zEO;asp>Kq7($K_#-gUndVO+tqR@DdFgsl>e0sg)Vb`MLm3=F2`Xo1uMm```7;Fg-? z4W!1n^$>SiUj4MDyJKSlsd;!{`#@?IxiR8M&D8YBST-uSR)g}Q9?cziG!imgxRXv6 zQfAKYM8$3qDb5}Etqa1Ozw<o%_~Aowryw3!Up!IbYrGsLT55_?{xlTtYizHSPs9qY zud%ICKAVv?ihn#_GV;&4^+PV6b;k_&uVpA?{I7{!JHC^aca`#2G4~6T=vHXDlV$H_ zYOq5r1mMYGJlP5g7JFz4;0CZG;kt;YSbd_gJqAchHVjW*<~;`cn8pxWX;_CJ4Vnc% zbM3U{CEP4pb<Dy@&Wwsig>jhJ%z-6pE_Ru$u*?LI6@*ZkPQ4u-107+)=>9Y&92g}d z2ogQe8Ah7IKV61I@vzs7C#Qxu=FnO&O+_1wOtthjRM2eMmQ{ri7%`cv;nDX}Vnm>3 z5l25u5n>EZrg(o0toKlUY{Ww7wVaR%B>O6&aRmp*(&Sw9JaX~NEP4@qm8F~S4tA;} zynrHO$uRu}#T%K2g--G;bl871y<NdxSS}j2Thq^w7uIr#z^PRq>gU$KCP!Wzmi)Bp zkm^o8l%^-Rl=M$szH_aSnLCUe$rgnn+sFU}$>eCVqL3zx+K2LjCRUK)gB-<Oi&JJ^ zdnF5Ql<Kp*+*d}aQf8dG0tNakFZY#E@{}2S7~$o<G8*<PGd^a7m;1^VF!CBByxdn- z!N?3C6kFMwaDGV3eXiu4#Y5BduU+~VuK4X~`Zm|L5Nzx;``+T)1_oE3rj6Q26U&si zomN$RHAqB!I%c{yPx!%Y|1vFk2QT|^25b47i2v%^GVn&zN_7}|6?MTVPu}DznA)12 zUh36n5*_k#u90ccJcXfuP$5uG$ISQOg3gZ92&@W&ye4*C;6Yi<QA5g;UVW>%`j;N% z(P=K~0Om+G@cLgaum52RfY<-F@Qy-+zV!-lh{VV>8&xUGz1e}%W?lCClE#Tuw4czJ z&^g0OeISV!|B&APc_p*4pAfT0im#M<j)tQNC=soc@(XBq@D_pA3ESyKtA-(0z3(fu z)xHWO0BsyKfWj}R+0*RD+{)5}iRfWBX@Md%pqsV$6I%Qh9%f*Gk^i%XRpaXK(6rx| zxvC6VR8N|KjijeKmGV5OJ8^sBDZPeavYj+NH9;xQWD)$_BVpkHc|*Z4iXfw>kc=zc z&t`1^lUZc_^hAI_W@NzO4HiV5-jlp-YL+i#*FV8fELgldCM_`1_K~nah}+S&uzzYS z_7Cg}F=#aGIkvE{cA)sFY{B4mWF(&~Sq`g#<qEE(vdMz`t8{-cIv&N}2b5T6;a&}P zD)naQ8oj|W5$ItSQSV2iq3VNJVZpi)5<wJL#-K-2KbjMPJ!~9_H;`9=wVL89U1j}Z zVIfY(&OJ<s7ns^WF!9=8z6RD1PeY%6l;8DA`5vfQ6mc=x?g<uCm&e^P3M?j6jS{cr zUtN<vf{dD)ln(UZ;gzcf9VEv?>wTEyOs*?JS&YVnVHKKXti@@`YbX8F8(2Y#@ze|` zBx346+k8#qF|;>Loej4)h;lpW#S<JHi7wc%3Vc;DTJk#RBneC=<{->K2dV{TWujUk zqD(}j)nX~1T2yT%Y5}B<PB}=oD!MI0Ka1sw=*)V$HPEdQ#U3+Q*)?#K*5Q`28&OPp z17<Tx>eUw~kihzW*Qs<ZLh(O=h6du00G{NH%8cvUa4QrwIwcLobUPZ1s9aPfqbCT@ zLs8Afj-2oeE9z%1CVhrsik2orbGNyb^zD=eG)rJS3G-lvzTv-C@qK`3u}oIzNlwpF z=G=f)H{=#ch9X0j5*Ez7!O@PugB_IeCy^_je46X!?#LUwK1JV8t3v)$Q$3#iHd=5f zX^oba?OgQG{s+BnuzY*8Ess0N6QS*hnr6bGmE3J!CH-sAd+i~w{YY{{$zCm>B2uMX zL2Mt>Cp<?hgwBp$Dbj7!AEo>-N*mkDJcejihxUbP;OPx4j==-NoIE^i#lOMa%+bhs zXj-(uO`@FcEol&~if=O6^U1J_w7}#9_6|&TQX^rIipm!#Ej9cWQN8o;ExA$D7%fm* z0MUy(2C&cJn<%B+4OWSJX^u<Z{h%wy^^j|rEBB#wMpH-sc$=F)e|t=q2@$B#`}k8! zqZeu|=F_JCLi$k3e?+Ev^Y;c*?HS6_uS8CHBNlOq%2$wsWU#vR`B8Z2sU2K_$XHMC zL5EjgWTQN-J`@R+qat=dI}mgLa>4v`>8TD6R_tKVrC@bEf)nWt7(oI|#&y>doE(ML z*6_~fI7EzCTE06Nd9Rl5u8E@cORi=eB9Y}Tm_J#rDAWh;BvBpQ5o8g$qUv+^Ln3`Y z=<5gLmC6w{TX(GBs(@PRKp~27C^O1YAY6fI8g*{W1*3IJr>Hfk*r%umLaj9VI^Xvc z^Y5uW2-g=fLLVSuS`ix$-lDW9niEC6$Z3tvvpY?h*NTdZ&0(TuO}y18uvs)sKWrOr zcvG@5c^^&evIpT7O*e!4Zt8}2`f1(f0jd-GDEUO<A{RnNkwKW1f(9jL0KL&NCg5m7 z$l}d~9Xkx%qiClgrgz=SFf2#GMg<+Mb<i3?W*i}LkR^LN#kU!Lz;iMaKmeksEHoHd zU}8|GfEoy>(Y;4!!kGi2=uEAo9qEm1l0m54v;>0Y0^4>VO0>3&nmu&tG1Mx}T!jIq z%ZFy#<C|81lBjag^&g~47Fa_af%ehwv-m<kY0QpNkGoFypMxh)+bHGNa6^KUwkmZ< ze;4v61%bJ>(a$6E6VT2Z#lWfA>oAJvL7d(O^MNDubO$w8FpQ#5RVZ%}l*fI++-qnV z9xFO16W)N6`mX!D`jT0Q7i-mJcx33`qQOO@K;2Ye5lO`D66RC9`qzSAMqsQh!~Pv6 z$TIxLOAdSWpRgr>nP6caArJ$Jig_Ulk21*d<!c?#g`+xthV4>bJy;7rQGxg!o&$p& z+H3LE8jJ(fx;m2pYt!_uVNRwz+vvi1sM{8cif1rK;|UB!tFmb&rxkOch?_@~;88{4 z6nBF(7YbjY6}I>IJ>X}C0jBpIJm0yN`y8ENrF_O2O2(pPVCD(jQ;5wrfuSQfinK&* z)iAW|%|}KUy%Sk}7=W*vNZKt$s0<wo!8f_7cBYR&vAa*h?QYDQucz9ENuM8r8d{^T znJ1rXg?X|}L(By<_mRAR(t0SFcp*1Qkc-k_MoxwBTYQ6#PLaE<JJK_i*(y?iT;+^F zcIk`rh|?X5s0C4GoagkhO#^X6`(rc_AdLZOS|SA}>Ojf}cd!tX8YzHXk8G?*hM->D z`bC<4(zOliZ@1Q`1|v`5S&KP7-$Bgmx<QGGvZR2Y!<vSfsEimbMF+DOrwuy8u<R7Q zMl<MFB=K`l1F#iNyoWwP4zmRhqX<3Z5ykfsBi-j4tfQEfGSd&#HT^t^rp!@MmCRI; zHATJpq)|Zp2LJ4}tV*;4ej{RYTrkW}k%F8RGN~tmaIY?y)J^J)c7y!{12Z5uj<D+3 zT$u+R9^d**Y|Du5kmSKUtT*`^G}Xu<<X8oKG2saXVv7}#L?!`U0F)pYb_Pa{!Lgb$ z_dHq`$id8y{<((BCq)$6eTqxQZiGay)`*8uK>Sti06UfP)#w>fim42wq0hy14&KlN z@x*IrHw5woCKZTA$_Slb8=^(MfXKq88G}7!)h|c9CzL_h0)-uCSe&zw)L8Oz7|$hf zrVuXQc^EWtsIA8g@l6tc6iA>>VRpu?GZo2U5i9~}4H6MF&D|8(VC^t__tbd!aEu=! zlOe{fWG<ccRkuQ${fRpn<!TtpQ}%%=hY3I&V3E5u^e6-XAxyyNMU7~g;StV3m+x1W zlbN$Ox5i*j%acE0*yc{gQYaNt>{vh_SOVteEJRKSG@l)vAFgFJJnBH{gR#x^EfhdX znhdAV7S1xBp9(}oq(&-Bc^rr7Gcf~d<{*!{{Im>K31%&RS;nNH<=_bW4fC7q#++L) z1t!gRp5Xmh13SeNbIm93bbkZM<XcRS23V2wgrSjPKX1e?MmqY6gDiU?8roAzd9R-k zC^$a_1t|Q98_I<LI(VG&X9Kq@<sFI2V32r<Oh3^Iqq}qI8!@PbZV=^4=DeaF552~# zpXG?X*jVYW0|Ck-59pdYLNvK9j#MK{%;*d86*cIH0|4$4liMiew;_1btaLut6>r-{ zrTiR}DCEk(Znr>Yfl|JPFsbkOHyuW(2XX^?mW<N)TB}j|SVPM>_7Mu<g;1N57cP8+ zmkXg^u`bq9&YH}FljB5Yq#EPttFe$EhTBviLKTSUzYrd2XI0Ud&KS^zW+6Em?YJ{W ziD?OF7zPvu(jEGM5l3T3&GYJ*r{%FLrk0^oGn=#p$f%O^4E=lPpBf)SP#)TrY;Gx0 zP1zS34mE^bG%+vo5S<Mc1v+??rJrLk>r&>|gnGlbC2k*5?F~&m4#Nqpn=MpKZ`2}$ z{zz}Mz8%V=H>!rA2l0kY)Hh(jvMKZjI9g(<Zw`HYj50UH7M`D{iFuEH$~D9_*rk8U zUvKh^1wP>~)d$CR#T-IxX7lwZ%lrk_qonx@Ut<iG_I>M1&CT7e+;y67N^ItZ;!p-^ znEypyS>(2fc5-&qFelJ8yn8d4hKZh>*i4Eyfu_h|hLe3k6C!h>soLbHp>APcC^pe5 zO9#hh`JQxQIkv+W8g|adDCGyaY7LIf)AXEJC#}C^1bboS8GL!0X5==Wi1+9<0e5Uy zM3A5b(y)uwTt5O^vJ=y=`v7}1VeE)Knq6bP*rJ?*^=q$w2CG)Q;QE6W7)<NH?%0$I zLySF|u-uR%TK*7JA;4spB3{Vw1u#Pf+85ey*R<z|z)68K#Uv5bbTqsUWzlo9G44T1 zwNm~HqLRWI>pTBCTw_cLMv2g{=KBRRM{jWHykvF+o-_u$6rC1$5_4oJ(63P!nrE^Y zXK6K6T=l!)P9=@fh^T0F@;*R92W#o8V90JedX*W@j@1!Ju9SBrvOsaHu|$pGy<EO_ zhb|{?W$C&M)YV|5!Q_f?dFJ)Is^XimF-<I|k>0#eveT@=UQ+wCFIX}!wxFY}01!Hk zwmtBq(+9cB9Z*Pk@XzyuX-GSLwj4;y!-|Shz7N%s7gJX7OWWcbe2s0~7(f*FMt6&u z&G&%g4KtgKc+>PB>X)G*4bdpPCH-aO|BA(;|6ujy2)L15O5X-twEE(0_MIJ@A7c6C zPExmNVTF5lUVb@9mIr<?EdJfni}{h4Fd1QPXc)sbUv~KhY_JuamtSB&{oCc29GWO= zX$hv;>dU~Gu=LFrLk40nY?`Ri)}<I;51|n^uf>3)IfZ~QhSh6)z}0LqhL=GgRDW>B zcV)D;0&<~3UY3b|zl`+>NqF7ISZ#rU!wWE$PpOpX2{EqV5HcdCMTHreRMFFDXpa$w znFzA*q9-}9ID=<yoUYh^Obd3vqKhFho-7~&L37!(P_~N#KtbjlOB3r4gqR=9g1DOf z0Po_CzQ_EKFM23{iB;#;`+~zzaEMNK;&u-{!U`b-Ee_%P6Zjv|^dD)7$5_@0VNK^V zl<wBb%-^9wH`C<9s*Dm{NpUJOu7?LL$^f9ql^M4%0Mj?R(pZwA1G;@@F;x>?X{^Yk zFmM?G6&$1s0CK$vmspSay!bv>{O2xxN19%b&C_Z6TKWVFi!sahx3CzqkrrbHU@>Mb zEyiq1!#7x+OlfH`25T`}%fQ^!DL(4Z`2RW>xlPO6>}&j+2e%%qFr4N`!7Gd<m|HQ> zgvouXrGM^#Y&zfazjN5w(!X=ShgXlmNWrWS^?R_<G3OoSK7kS}Ex>5WyD&Yq9vG%= zvap{Pkr>}yVYQ{j|L5T6|L3q(@jZqHH1q@pMS(OlU=hU+;X66SpF^`bXrubAgl`Uf zsVNKf01C2*G}!QdN_k5*JX%KocV}C+Ipz`1`ZeI`08js>c_mk}jdDA>9m90F4R5ea zR-sum?3-)J3)yZ9(JqOW44IZN!(Q4?T+lw+LObzB{SSTnwaeIh;KJw2`bpY>K>K6@ zXv@h;Umi<^&Kr0)R>Sko{E~-<V<8BytH|047XGRQb7J%2*J9sL=M(zI_%GsNAb4X7 z-TEfCJ|Z^HcPK(16Fb7IPl+uEMn=bPp}wXR<*GcEiU#%q;eB>&1>QU3D?ltItd32f z<l);sD%Dz`JeK~EvIh4u;f@h*n)rdY6HfS63Ew#3TMM^Rp3e48IrH=-q3@zk7PSEW zX2<3cW#GBkEDmu%Lt-gq6xA#QHs)Ugt7DS@y7V-PYdvrsV~+CJI=p%G*7Qp9GVfbN zWE5J%@{EQjzhs&(DJWeiJ9&}r2q!IyrTGs}9h`^{3xs`@7AQU*Hd#`RD$VBg<$Xcu zx8;3K*m&kjJ~pkA<l*QcH_4^xZH%mhF$p`8bG3%=EE3S)K+ptR8AxGj!rJ3z{6d{J zeLa-}*-rfzDyuPKC7$(hUy+6KZ`5XvZH~Tx@1Vw;CE1Ol(-j568|%a!CJ&Vs7?9pr zN4=0&!;Vk~*(lUgfC6_=yMcDaR0oI>Pp!iG0TNy#abrFPOXkL<mRTll$2#FgomKKL zd3QmT(btLz#slU!v1zK6)y5nRC3F2?u?z_%kvSSvoo2Nrv;m{2aL$l<#X^Rb0B<TE zLp=H~9vxpk@mHIo<~FahTHv81v`(d>uI@%5Fzc!}xFQd#ZWgaAK)V2<XyUaHe%OIn zfCp5?n?A*toPk!le*|C;Dvs_i#T!NilmVzeY1Aw7?#F;b-|G85A{cpf{CQOD&JC!} z{=L|IWY9aQ+UdrAyg*u<;aX|<B?Pd?j&^|+_eK{yHNlhrdD)aJFF3Ve{|m*}hjM5} zkJ|gPDG>x_!ZgpJ%BEvK<8gaQec~p~_hbs(!CEj;%4tOeqNQ-P+`<mHGYYjpNgi!B z3JfWLD6>FY|M(tC&68R1*5I9q3gcf74;_0R`Rh21YPn$bD6`^#7>H{i<6;@!!3i`4 zs8P)eQOy&u0}Ivs)YM$;f5k4@IQV+>Per{>4P1ZB+}p?-ti?W5>;t5IjaP^Fyqz*j z8kWHi(LPgm@)F`TZ8gNCgdhzma&1RdZlSj0)4&7}8})q!y@qRi^PSij0%B8@9V32> z_$*UM-dGG`4>f4|R-;-Py07lPF*2zs5ByV@Iq7^z0qeXZ585G7NoV!;FAcq$`iA@v z-_&{F$xOIB!Kq>jq`7QpGrAFXY>&f(J3Oo`IPmTjAF}De7$)GI=Vsf1B|D<W4nQY) z2ABq)?odyPZJ88aDgOe(h1-zkY()h^F(d9?o%vwxkhosdn*2wxJ&D>aS{3L>v?{bn z&*e(mCoi=sLR2AmQ!)%;j3i#vx?FWp>mt$;`UOS|jDV1WG>jcSX3Y3}XSeP}6Y{&~ zmlRAG+5O&<F(bR>$MxwQZ)<n&$kC6CALoqgGAiErdw$s3@jpg%Hpd?9GU6d;m(kAK zeviAYUD|{R<0m+ahEIHC+-N8Mv1{>2XYqJvm!fXAcJ~dRIC6vqyLV(!@%RZ%@Tdvn z$1*Xkh~1xdZ~uGlOS6p}H_<7%op(CBj3A9&IsrWr6XXAtf6u<;Uo?Dd;TRIL%a}1E zoQ2~b8CP87963C{z=?Es8R5)_U`2?B|AVCSk#U73#m>Uv^v`LFM@}fZ9oiT-;t_~D zg5L07Z41Tg#F6>T67a~vBK%idD8_gn{&11;K5ESH(RihhV;>nea^i5%KnQXUFO{8- zj(pr8V^xlNWXwqC&0UIarsV&N^!HBeMd>RTJG{7A{(8n0j~qP#c|w_-3=+Ot&|`~) z|AsCJrRG23mu%9t^FWWoi>Z`#8F9PQ$OdEri8yYAlhjbc-bK!$@y=1hCm8H)?V1%i zr?YK-!6QYFQ5lRwu8kP=AEqm@Z-PN7$}BP)MKN4#MOo}hC3ZqF;fxgJL+1Q~ZWjIG zpBj%J*F6)(W6YS5W1!z2Nl7j0<6jVp^qG%f_R!g9k~7trjoOH}3x81)O5fjg<ji?> zY4s8JkAZ{g#=E|)cyzoiCE0z&%`c9cu6`DLtNoj8cULa{D)WKop4wHpz5e@x+!urD zm<JyI-MGH9)z>$_Re#IY&g!(dleheI`8sv++AUr0w7sHUb^7X*_d4vVO#k@kq#h+- zSN6GW?DEfNy`YZj^!?NKp4wU&b#~{zU#6_7>~;Q}>y@NkYUlGO27l4%bv5P8w!}~S zJf=4GdaLU@KW<c?9DDVE?(N@JUq4-ZO_cVey6U5~Hy;g6R?B1G`|!-#!RpJAp1zmg zF-CpPar-knKl_WiV!|6gd0zgYa?uT|Vjj;}qV92q&OG&(+tl(W-#gL0V@c(jKdlOm z9{WON?uD;%y1ev^TC~!8^f&guR=)oE<oB=Z_l!Dx)#2k$ZFoW*{d~p!f7-N2y}IqF z=YQ_9s<Pek>))Dr;w3ey?Mt7(@orbOJpJZR4-HMLv=@$8I;wJXWycA3O#J8Ssg?H9 zO(pNDebt18IZ4m%_Nli=RlIV1`{R|pc2wW?_D3&QR)79x?p258sWV?#P;l4P^VGwS z-+rpC?^Sj8FXwM8KcTCw+N^$U>;8Auhi_lI{JPKHR)4xYqUhDxZ>a}1e0TVo(bLuU zfBVV1-G@%BjOtRCK56fQ%AD%4<8NOWR3C1)^Tb_AvsE>t)vmvFdPwbe*ON<1Hx#Ka zzZW~<%?tC@mtSw}{OLypYW>!?|Iqfi(W+S<tk3zSUH-H)W4ao-J^0(AXLhQmKYR1m z_~$=Y3u3Z|H$HZxGUA1<PwY5$SbekY$wjk=E>Q2OnDt8Xs~am{{p-Z{BRg)Wyx^F7 zB>L4I>WP@XSDos-x$@Cnk;PYD_lo*<<4tw<Zhc=p_~Y@4KYsLg_1eGM-(K--z8XDf z&pl7&Y^;nrb@PxOeJ87vI=%AB*oxOGyIz=k?MqL*Ub*9%ZG*NaR97Cps>47%{tdNk zW6oW-k9kb37`tiU&~@|G(aGoPj<0`SeYxfbN83gJP<y;PYGLLxQ<~B@|Bkx62mZcR z9n?7C@`j(*HsNNve>b`8mdG~?)h#_ok4gRZ8CCN>eEr<j+wXemwQaF)J2KUX_XfQC z!abAK<@S`1e(dvS_0_w4f7mf~t@`DZj73jnu2Tp0IzM;!*Hx82bbI{O6UpzY2YdW* z)B6`H)QX=kd-T9>JF99<{2vo;icmXTTdhSuRHiQ9Rrt|^2i{SOFARVEmak^3HxI4% ze*b5eIxu2GTlYWvtGlOPmECI7qw0?@d@}gkw_Z>WghnrMw#rn?UV3iOlzXpJ?SK4c z{0;Y9rxrY4F?G|Y537;;M!od6eREWA;Tp$*FQ=;RUVFyv`}zLL(z4@ip8ITQ<>#NQ z{_flDfy%SDebrluSXvoB{GS8=nZHo&I_<dLr?gBR-M6a!->#glp1Jeq>e`pzP@lW) z8TZ=P77IPiQx7GzTmNXcwUyeohp$uitgU?T$RD@w`D~neLo4UjYx*q|blE9`o>iZT zy1q)iVd-7d>K^+-U2u)__9M&otGjm3UUh2k0YO)%4$5q_+aFo3J~{i>cmI-Ct3DR@ z;D&`!pR1ou+#55h?LO7H^Oa>U{dhqA!(TrryJheJHT1*M<xgzfsitbD50xF?tL}cc zcxv_Wjq1&OZC8I#dJLYpV3pt>n_}c^gK&3Bxp(D_{-c9d3iobx;fr*AsqT8c@XmI- z4yeERaKq)VojjoadU}p?VZ&}U-&c2_>cRna<}C$Xc6q*3H_o|n{ETj&s>^Hc+qHYn ze)aVm|JL~aWuK~#c8%*a?8tugRpsIA&Ub$%_(zHO4+^&<<)ctdtJOpED}Nr??~R1y zHR{4=4-FnL_HgBxsv~Xw@zeL}*)uo1a(vRzO69L5pM5`OiCT8u{Qg?+wUu$xZf*Ee z%rf=aGn-yYy1Pz&BY6MXzJq?MeDv?*K6~)3V}gG}<%fr^>Rgkxt8&5q+aec6j8$L1 zE4$sy=ijefwD!5KCtH7{PM-XHpA#<*S34f)J7l`QqVnrrznooN>sQC@s5mv~syS+6 zR)@Ji=Nwck-hRtgJLW6Z;8&wQJ$g*T=I8gTfiE08XJ7T#%2!`rTR!KJPt?NPKlE+i z>gCGYPUd*~b$(Y>`|R|NnftN&UhllPn|B^oCoKH9=c@<Ssy*K*x?|V5P3o}U-Bx){ zU!u0Ja=lP`^v|Zda%cGqkuM~is*IR%d#~e*_o-LbzP{_V*;^`&{Hsz2ZrWX4vURTd z*vh)^zi1evzWC0dh1b0Hfsp3~A;)a<S!u+-v(k|F1)-0JMEVDrPZJmVty6`bD<dBK z?HxmY{#-RiUO!x5Ig;j98S)e+FF%=aX292fQa{}H_7f|2e_45Q%w<#Ge(kV&<t@)H zyv#XEeOBEyz2@qg%BycV8S&1lf2hCfddmmb?Rr-=!ucxiagX=Cweknyzfo-*SMvRy z*DKYw_7@hcPyD;-u8fTQqWYccLux|XcE|VY|4`rZEpC5##e8+)EAE%?zQ4TE_0O4w z`wEs-9@<lKZ~pbKn*4<vrRKBJh_^_@_k}9tGUFF|wxv9Ce2Ut8OOL8g@0d2~m5T4w zu`l({+;#a0QNE1S<6dUI8Tz>}&2*c3GoQBf)YRLZarX_mFU{$FWL!yUyt7xgq;5Q) zPGRr?4PW*r?zP!VqwLppXycfNF>xHw>xJKsH0*SBjGEEP-7&@&;qK^+*mhaFjxm5- z9UZRrM5_tf>WgXrEYtP_U9q6$k8S#QjGEJ`f5(_$gx1kHJJQ`TZpLM<jtRcj5#HAA zI>xy=I^hYT{uGnV)(c^2zY1L?SK-ETrC#2;|J(@AoXFs1vs>ToYZEc&@^(mwt9`5Q zjVGV6aEwFQY|mb8h8u8s>&&?kMlggr-A+*3Y*RpTJ@i1=J_l|PVJ^uzCnBw*GZ@*w zW8Cb^+#M5Uw03t)^0o1FTxNf=UB@Iy?&=uVznRbxd+aUxXze4qwd{k0dJ*NzBL2V9 z%q+*BM)8BY9DgdspWbm^WQ3zti}8@!SZ~J!zuZUwtTzwqZBUZ}GFl0>z0{-#khXLY zt4Q0AM!mEUM9{akEnE?_UeUr8L0f%WxFYz}ndTmC;cO-G=duZmih|wN#zu3;bkS6) zc|}}wGKf*OnGg0C)5YZ$Pb$mA$Gqr2r_t3NKccTAW#Zzpi|6h55k3!J($K|a5>FR? zghvrWTwLbxyc<8lmx&t9Ws3-KMM&`)h;fgwQ31U8im;J3F1{jcLP(2OMAONAVUK(H z)p1b_#?c!NoN&<m$`SN2&0*VcfjceuD1i$#H2FR%@PsDBcqtTkk_9gjc!~v|EO5<& zPZu~()JuLd1)e2g^coa+9zVl3I`4u`yeJ4m{PrT>9ZhExo8GSqywn85bFsk7EciPD zpJl=SCh&O{`~!h6u;6Rh-S(pVS|{i&<hEKtZ^gF=`U;E3PJzE^!S@J!nFT*6@Rb() zJAqeOaHDN@2)V+ZCj@<67~;1^f$z59=LLSyf=6<b<ghhZ@OA>Px8P9%H{uC<{zl-a z!p$zDuRuMr;5Q3;gI_pEoWNr&^xXuWV!?X}+-bpY7kHipH^Mt?6&8Gepr2*Iy#m)P z_`L!*<PFQ8CGboO{V;(iSaAN@3H8Vb7v}RvL7!xyFBEuz1)nJJl@@%8z>RQW{!a<K z)Ix8h-(f4W;By51JPZDuz~8js3kANwf*X2w*p^xFzX<v&3;wRaYc2Tu0<W{+M*1DL z-4>j`W`>>*TJZIP4?3S_*Jgn?Sm=%T9GKN_MsE8;(3}0D>AO$hw3I7fUkkj^!pGq2 zXzH)cF#i<vQ5HTw3!D~%<?F1#<^G=ina*LOrC#}JE$|cz-a+7b7W@i<YZlx{C(5%0 zzfsU<TJTtb7g+FH1zu>ujr2Hdr53!8pf9uF{RBSCg7+8r0t;@W$6=di!T%uWS6cAF z0<W^*4+y-%f*X2t*xt0@qXhjj3qD5RwHAB=yW85Fawg*4&<o1Bg?^ggV>LBr2;5;Y zL4yLXxA1vR;4v2Zmjv##;I9e1!NTV)fk#>Bjr2QgjTZV31bv)^p8qKw>UEL@-yrA{ zEcmAa*DUxBfu~sTJp#|P;D-dBWx)-7Ic#|r{0Bi_V8KrbywrmKDscLrb@CO-Zj?_8 z-d^Ap7W@i<ms#*@1U}1xI|aVLg8xq7Z(8tf0$*mqdkegd(-BTVKY_2b(5DK#%7PCR zc&!B=B=Fr9{ziT{Y;_iTk|2Ulz75MlZ@Hk0Y7Vh$)Ftq-m%t}n0)HGh{$1e(r-&m? zJfFG*{nMAgpS=YB!X@xmE`cw;1pf9V@V{LG|HmcpHJ8BGT>}5)68QE@;JYq?e{~7` z@Fno0m%x9z1b*fcIQ=J<mdZ~ghVCulj!WRmCGhJnf&car_^p?~dt3tVdkMVXCGa%h zSJ*JF*NlS9b1-<#xCH&sOW=8zz(-#K9|xS`O`!=OTs&7pFUApv`8Ha<PweTUWqsSE zZhaDZ_B5cxFw{Glp=1NOZ#Y)KN7|ZJdu>C<Pk40X1Y0+6YEQcLqFZme;oMelYG1nH zJXddOGTjmr_>Mzh@!o^)94e86C2}}A@D;usGLeHOa@Zamwg-ppVT2;W9?Yf(2kpT@ zdvMSm9JB`q?a4uVa?qYkk8~nzPY%_SBk##!dve&G9JVKi?Zshxv2QO9+nbTzOw*e= z^x{yx3<WUWi+T1kI516bj=c}xdmDV1zPF(<<_}dvs@}}4569AnDf=*GAExZX-1;zm zUxS8Y?8Bk@GXK5?J#*{Jq53kPz8to%5!RsRut|n5(<d>9B<7sNe3F<$5{FIVut^*? z$)INr$xNBdl*t@6nfW9$=VT6>%wZD~j7K8-CyG*#z+4hVIS>UQfg`|?n_M8wvLk|v z04zzOQ8p5df|6*Ikwl|pB#N@qgJnxJib$eSUJ{Msk!X~RM5Ev&8YL&uC^U&ic}X-1 z3=aNeS$c^Fr!LXR_{0Pw24sCcR`gM!3P;k;7Td_uM~ZDlz#blFqYbj7O2*~d#*7~~ z`j2A^ZAFFHKTtf%hMgiswxZ$@<4cNdqehJ>DJrlPjT|=uw=pC0i)|A|=1-*E8KXyn z6>ZY6<ra-BCI-e93)`p(BS(_Y2=>n}9%CCja%_I#<F>Jn78Q>K-J}VR6pys!j~QQt z`@<88Z6ha)0^4zPaB^<$$kM{xQICuxl9F-Q;qoYCnJ{MLICz!PJ`&sbLO3Rj96rKG z0xG>t9F)qy#E}yo&gHjB!;xBui7hz9qj>xn5b|CjG&?s?+k=bD51I?Zt|PwqBTj+i zpTgK^^E+K)T9fHJ!EMqHWM6|1(Hr9-n{9{%?<)A@S@2#0H|7n)e2j6A%{I|O?-ulP zEx1?U3oW=YzOmVidAczF96`U#LO(*_A6al?9AmR>wcy2q-k2{7^PeK{Z!PrY0&lS3 zvju)m!fEc?)N=%nhr|4hag5E@Uc!GP(RY_{%9ob~|GpAV%OxiN{t`~~ZwUGf3;wRa zvn=>>f#+NB)dHVp!Pg7?X$$_Tz~@`=odU10;QIvrjs-s~aQ+Y#=^-bj>zKfe`H?XG zv%o*M@Hr>&uOvJMd`!K4E8*8jxH<1)#%qjwKp^<h<64QHJ|UsYr0)Q`jIQn$ypzCh zx8T<cJk5f~3Ov(-cNO@97QC0hCs}Y~++(vnWx?Ho-WYF(<@XAFfrWmsz~8apv~ifO ze@OUsaGQFrk#Ne#5rY1JgkLYwACYjPA0y~bTJU0lV{pY6c@zB<;Woyl;dGS?yt{>d zws7BW!JiZEGz<Q+aA#WZH-!5^3;wQfkGJ5<h5HE$zFN5b7JR*M2PK^P0#ncPCHzJS zuaI!k&!@s|j)O^WH%asxE%ZBu`>=#NCHfyEocQk(?z0x$41XEyX}Zk(Iwt6%Ecnj? zzs`c66L@zEPU9ZBZnxkagqy|>beZvX67Eb3PU9ZB@-29*a6c;Hok3^nzevJwmT+Cd zNk3hM`$Y-=twjHZgvUzwQVAzMy@b0`!n;WHpGo*F624o)i4Tpp==#QjyM;UcGQ*$r z_B;H{^!AW&np-gOJ0zU8Vw(7Vfzy{G;uUX*SE7FoZj=7FgwL1o8^roB$<xgKk#I_v z$w!s&TP2)MF`>&W4<fm?Ar`!YL1xRd;ABhD^{54>wv4Wc7ChE~ZF4PnSAj3I;JpOC z*n;;H_%aLb7WhXNTnt-nTP^rtLBGd>=Lq~;3qC^N4HkTiz|Tpz+|NdcrF&D)#e%-Q zgx?0t%&+bePWd=R(D#*a(wRx$U&4vLT+nA&@Yw>-vf$4NJl}%9EbwU-{0)IWZNc9a z_<Re#T;LTJe6_&evEb_kUTMKU75HWgzEj|zTkw4X|4PDXj9}{RTM5Uu>L$EF!bzWp z1s_ax^F{gC9Y2##dkH7{V@w4a3;wgfZ@1v*1fFKWjrC!hEz^SYzh^|42Q7FfVb4vn z;Kn*I>>mprE9iq3ysN+$Sa4&#*JgXig7*{j|B&zm$Y<)OM#4!yZb5&<f*b3-_}*5+ z6D2;sN;vTuEciIYmJ_pn<p}&r3qC^Nss$e-@PQV*Sl~k}_!NQXS@3d!KWf2e3w)Xd ze@@^}Tkw|!{;Y)eko2%n!h1^iVhJbxydn71TJU!TUMJzbBtCm3ocJsk^lhl)!e#1t zwZN~i;OhlW|ISjT|5V^{7JR3`ds^^)0v~9>4-0&V1wSV6JPZD_z{f~<ZwO|V&teJh zBjJ-Job+%`@S%SlNf+s%FMcMUze;$LgfErwWC{OK!ha{>XC%CfgtuxB2QG>?4nH$q zMZ)7H{5^paJ5hD;X0!cWqJIu<lg}Cnm+g&n5-!^tH+EolEYIx{pIapS4hc_?@O~1W zB;j&;QzV?ed^P3NB>XN3&y#SP^D*hiNO+2bPmyq!gqKTre+hq1!c!&uWeImn_!0?E zlkjyCK0v}hk??d0-zDLigx5>BN5aoZ_&^Ddz8nr*RDSNp&(zOvCEP3F-6cFj!qX)D z4-$UAgx@3Kqa{33!pBSaAPJu=;j|afl+!2S_euBy375<Nn-V@)qJLk)he-Ix5`Mpg zZ<KJ_gJ{aLMZ&Wryk5eyCA>kxACT~yI>LdA^5sGNO#WRZJV(NlCHx@?A0Xi}{e2QX zOrkH4@LUNml<+(WFO%@$5+0QBhb8<)377MCtAyuE^k*e}goMXZ<BN;*GZH^jKiwr< z=6|PzkCN!KC497m=Sz5jgg++Xk4X4*375-5g@pf6qF*B6k4pF&2_GZj8zg+Jgzu1W zS<deze4Ir8gM`caDTx9RF4E_C{7ikeiYC;+3-L7ZSP7TulO_BXiQXgOa(g~o!sY&M zzJ$j~e5PCh2QIV!a<a>2n=WvYU+%vG5-#^&f0uAso;4EwJb0PuJ#wWH5%HJXlgLhC zT<+gJG<l7S=wHC^dUD_zY{5<b4_I&-E7CRDf=3##ZOqli3-MoopUG#ggv;p~DHsyH ztmi9*U{-vL6NI=(&zIpxb7yot?&L=k-otR(o)<Xrp*_c@Jo^Q1@}a(su47JquzqCv zR-ME6LcE%M+DiCK65dh5UzYH^n+-l@IY}{`w$TE&$|*i$W_jdzpOEO~c&ACY9PbA- zX@!gUFT&51zc!Xo1Ahfi6CX{Pgp253#m~h1Qsu#A<+JM&_}!GLf?nqHfrQKQTuFr( zm#H6WJLtMo;1sW%FKH4k>&GkMvVI0hxU8Q!68;$CFw?tN!ex8%7YUyr(YLu34qPN> z5q>5gMZ$|E{5lCQk?`M2_(Tc6O~NNh_)rNimGE2%e_X-~CHx5qpCRFLJzXf_lO_7s zBz%g5FO~2oC48NPPnGb`C48EMe=p%fCHw~oFO%?Ax50sn^gkUxQ~x(g_)`*oi-h|m zyoZFBOZe>)POm2a0TS+)@cSfukc8(+I29$6&pQ%6L&B>he5QndD&eyv{D6e(5+2tT z4qT+4r|~o6O_1<_gpZJLxj$``aJm1z?)M0ci}=g*eI=Zl3Nv0+!sYTdL&9bK%#m=p zzj$84<$ifVH<HGXrvgti-lY=$X9?db@b)5%`JGYU?f?WPw^s!c{u=yE{ud<tbqU9w z4!%e~a(d@UxZM6MkZ_s)p~Nts*?2YMEs=0pKYx~Rna|e}F7ufzI#7~RPVZkO{0%AI zjS{|C!naHKUnKl%377fQ^aK$uiubShnd$oO68H_hh}xh}!qcSBmvA|~Pf0kL9wvQI z!XK0Htr9Nlvt1t$;UYQT#LwjOh=ji-;U8WCck~4jF5)B8$4mIz@H6=j5qLXbm*Gcs zkFMbsoW_cD6-j*Lesh|H%l+mI377lLfP~Ba=6ZpXJP!P->=Y~ZZ%FiVyfKtXxJ-KU zyM|i?PI{2(v6YT5!eu!JO1LcNJrXX<xk$o;;AQG_v4m?9ZcpZDIbY=RQzYRspE(l# zj>P8`377f2C*g8?xKhIBNPIR+_*@C!D&g-+_$~>T<NZd$De0yjQf`L>7wLH(ekMLb z!sT}CH3?rL(XW(nnSV&aWjU2Q5EvK5E4TA868;|iOnG`q_%jkdTf${N&q%n;=Tixn z^>abO<#y?oeuxYg$tmk0N#JIA)<pTgQ=)$kVNChcC0ri&4U+Js68&%qUnb#iNVwci z)=Bu^B>FQF{=S6Ya3>tNC|!TY&y;hlgugA}iv-@3UJ8io4T=6mxJ^FGBz&QSe<0y6 zN%(3Be_6th2;7W!fzb0061}YFGZHTA`HH*16qm`zDfnD1a7vEMr?Z61d=e#mIl`Ff zeL&)W8E~>4=^8H4%la8B;j(^;C0y3e;}S0GXT5~W`M5{I<#PMIz)d|A3OyW?=w&^e zl5klMy;UQ9CLgCL54Q{4s!z9s%Y0^8_+Se+UqOjpmgfZtm-(EQ@K?dX%$K+ngCEKB zf`lhq@JNHqmg_QJh<*`%CZ881T;~6QgcJV`MsQoL1@9#A9TG0LGv7)0VkzFC{f&TD zd0v)qS)Q#D{%48LEvaEXa=h6R{wIn4aS5Lw;WH$>NW$kxc!`8Bl<;B+e@((CN%-3m zF1OFyCA?Ik-y`9VOZZU<e?r24m2i1{eT^GLxJb{F@iX(ivxHBP@NN=bCgB4le5!=s zC*e;@c%Fn$lkl+;F4I3D;X@_*poCAC@V`j7+&{i2;ZI5Ql@eYq;WZLINW#C8a2k4= zdUK?~fs6F%!_UN{Bz%^H-y-3<gm;thnG&u_xIA9Ylkle{`T_~}OZapNm&d=lgv;qY zE8*iMKK=o4;G*=BZEmLbO$nFjS4;RU68$F<-bKP&r^A7Z_{-xFMZ)9YXU2O(!e5v0 za{@QpZSy-*I~l>ah`-$4wwG|Zy&WWQlaJYM-!IY2eDWk*<}=d5r;G%^^+$<b=2I-; zGM{%O{2vH!>fxS&%#PC~x91ZjoZ9W{4Kmww3vRaOGc9<Gpnt=HcM|yJcN;I1oDc9b z<+)Da?SNf|AIU`59TNRYxJ~*w68@otFO+aOy=yJ}-y-I?K9%TYJ7lMX%XY|K3774V zgAy*=A>T>3EKg^z5kKjHaQt_7zH%+Nnclnp5T=*&YlMW$`8D2xoB35@!Oi@7-h!L? zwOzvh3K2|sdfgM2N6yFl1#Zp9NfN!BkNYHC&c}KQm-QBtX~b*tH}mmkfs;Pve7se{ z<$O$(a5*3QNVuGj{UltLXPN~!^U-OD$@NQAT}DLqhVj-0VX1}Q{J%h?E4qjW{mlOh z)IcCE6F2`akZHf0xH(@}VQ)@veupT3FF;|;?*wh#iXI<ZJp5ri@d*z<3(PnCciQ3I zibs|f+q#VyUOe2^?ct&#Tek`0$wB0a-SBag?8KK^hSPj@%P%T!0?9$2{NcahjvYA; zOvjDKKbuYe!;s(OyQBO^5r*O$S&%!5{*A7YjQ{Jq6C6k-Lj6trQpDS<B4169DDy=; zufsDEzZBs%A5JpzaMg?XypDLMcpL=cGV2@lZG=Y<C|w6E@tR&D`%EYQ|1skEzlKjl zSmG(fY~pLi|8WyyyqNKu&lJEdg|8r^0GIhajo}KX-waRHo8GC+$yeE6!)5MkH~pOE zi+B#jlfqwN!RxXNV7EmvrvA<6h)aZDmScoZu<$kW-+YqoPw`vn4vO&CSi+m>HlJim zo9{B|84+H_=-o;?PheL4*&Z@NIxQY%x(#0(i-DJx%CF;1gQ7|hQu(F6!whehUy{cX z1&46v^20VO+IT8>(D=z3zAZ3I7IA<#3;AK2NWw{%HT}fCrSP>veroIG%NkyMx|rK- ze0Tl_<%zv}_Dt;Aw|B1ur?WRcIHh|+qSKj}kkF@BFQ>CtuU>udz?Ii-TAFu2D|?uu z-FDYS`9pCRnw=BgQwYF48eg~bDRDR;&VkbjD@nn0npYV;_5JmD;IKBFqWO22L0aG{ zb_aV|PO8%MOdJGnc<Px^;a40%Z=yI(!F<J83jB(L82(WPjy0`Gy_$Z1n92QNCijP# z+#hCgzsW?i@BiPz<2Z;rIXR{<<`J3EACpi`d?Dp~420!F(B2$W{~zQuQ~m!uy=DUO z<mER+XzC9#a3W0-cuD#+Q*7v!T(d|a;q>G6zsVmnw*NJsqCe*NMftJsH`RX;KSaa@ zik=iiO8I{yZ#dnQ@BjDdzevuO^=D>=nLJQkoL`16Oj3}<p`eQTRMXmF$ZINr^(HCd zf39D|7jgYp;Yn|#zoyD=o?_N?@*3w6i67>SKxV--%4{-@RlcaQnOS10!Ay8lIloks z!DoRPhkt1}NgUFF6(9ap<FA0rWgtry;Hk`9i93z~JKoYUU`+?l;i#^YeAY|Lhk|Wr z=}@pOTJUi?6s*~qU}vpof_-t(nP4?IzTJ-FZ(2SRYzChRwngzxz}O9kb~+w>Xk8_e zV5_Gae*(;J9BcTD#b)jQ<)Cb_{inkc%@+Ls`}UvgUa1t|^}nmH|4VqY@Px}JmpHQo za{Etwsj!tbm#>8)36U>V=$hKCn%06J*U$gw=`|CG=l|ONldWY|w*OsTQ>8VniQj+A zheFSya7}tN)o)aLi62PKrcbp0(f=UR6eMPOGQ$G;5AuuJJu6d+k1%E|WD4{D&-oG` zGfm;}rhIrB)=5}Ss~}B6$o)i9TPgMDHLb}`mVz7lG}7_$|4llGua=C1m0C)QMHN!Y zjN)kMP7=$^v-d=v;kZs~pJA5dw9;_<y@E=I(SFn1JQ$kCIf{0?3aGUmH_!jX`JvS2 z!9VU~Q=9((>-L<FM_fbW0oPy;4oSQ((7lqzH{Se{dT3zq`jchkwc}gKyhjJ8l#fT_ zg!3sk)bQvbIJnu_v#cY18#3euga)0F5qNeHZZ?Q<f@K|kwfODE?;uXI6qbHA`tdC0 z5~eZz{v95jiL=}2s9N*DR6eDaVrq6$t;vo&%=avajKgTdLD}<ju%omHd9t<;QJfZx zq~rNafopZdN+;jS;+cGnb8@Y6HHl=BT@<}(`^eFoDkZf=uPh_=hEKI6x$MxTAr^}y zYZ1LN=LWYG;baRobe!)f9Ec0XX2e+{M6`z5Wgh>F6LF!E=oIJ)8s+$+OC1!M87#WA znS=BsqKqyj?KU~UwaLM00XJqOq&7Tp)-zb(EM6tbl&4hUnM3FEiUMUMC75=B>>iEJ zx2;u{){-m5LHA{>G4do198IwJ8GEqP64nh-Py^x89l?zAP*E*uq{@r{CyKASf5?y_ z%rB1PaC)F{1S@p7bep|N6pGYL8~Kt#SVo<N;lx&-xrsxPB<y$kNV71cD#qhCGaYHm zNT(?#;&wq_aF#mkC*aNcaRsMbWrIT~aTtz?9fs3{Mc5XlViqwRi<Cj(*h)FEP0C{( z5%n@^d?AJZIJr_BX}X~mL-UL|4GqE@DkmZwFMJfCyg2Ex`s>zS`(_+;s8t`t>B9AD za=nti0Y?k#)q1@$lRoG)<@PnQEz2S(GpgZ(vujxd$}eRGohXYVZ5bh<lo=l}63Gag z=rg7>av38POhX5zvhz(iKPH1Kc|&n#{05i4P7iGhx%AC+!0@dDgU{_L!?Xk1eb#Vd zm9NUK`PR|_!~GkQYbW4z*DqW+U-&9hTrK|;@m=0f2A%-9$Y&&1XW+QcQj;hHhq1Ch zC|AcC<!*Is1%;rnv6K#aTg}JGDl^}Kn@$?`q7a#FsnjK%S8jswvXKwah5rD`gt#w9 zDcv^~)A`ZEVkjqeqcG5k!8mI8aUAluS)A2qo;7S4S9p@^E*e)DXALXS!;&=LMhDnc zqahfOrTNZWRx%3}*ppnP_=+*AFppPV=igLvM`BgtsnF{<hVNsVz6s5zHz?m03eX!( z$AzZT8|gPRiQZ_6EHoBxdTr<w&L?eYbTSX)5k4*Sf^p8TNB@})40V8?JJ3CF7n02x zcKSd@{>geUw0Q#Q31+_rx&8IvjN?>sU}hPjas_5qfJmGSsw~}*W<O5n9!C-Zour81 zFeb=F$0B+HGs{4ZSXSp6FT+;fL@)5y;P2HNP_iREL3gA>)2o5f`I)XjdZd<L=K_12 z<9;vB*xsi5>C8pY#e$BHb<~oH+y)d~ARSq{rU8;FGhRlmMj6<YxG8Zv@*7d3VN-H| zbw@tr)+*_nHD6VfZ>?QR=GZ3f(}UN8jTTr#BH;{5k{oAUD>GeClNMY_1<xC-V7UXV z25`L!Ad<0W7KkZ62vdkx`23!Hj^1pXQSGts)9j0gh=eagoD_-j)OW~RS71tPng2rZ z-n4+?33}<Q+h7)a({RYOTW|0Lr>u7*R=JX^r+T3dl*tV!>`~Y6M6(d7Ma-wP<NQa8 z6}1g%T!;4fD-3Fp-fTM6J^NY!0Ha-vU?R?Vowhv9ze$-Rs!mj7EQH5-+TFR?jf_=h zuBCJtr-~lEejd_egT5R@1x_iAM5@eOL`2DrB?n!;Gxn(iNG@az>Q8sDcq#`oxL`qP z;e)J?-q3W0E%Ec{YYmp&QyL~bq;Crj!g;2fOAh0pRAtU52;|A%n7GLk?6lsiA8e|B zQ8o<MUA})JrBT;Xc+GbNiHy!_#I3)>mAqxzo=^~>+1|t<q3iJO-{jIi)AFmQW@H2- z!S1`nDkERO<VJT81qYHlktR~pE!398xRlgS()6RiS}XnQxE<T*aK*3l`05?*<lR#? zfE@~Lgx7u$OkybPg!Wqgc26)8=1mm0;ZS_E4I)r!*7E&%cw_`d$7T2r8+C*7toS-t zpjT`f&MuDZAB^niubSFU^Id4G%nf1vGr;|r|5Qmrvx8izLBIrZF%EKF1{St5ID;$b zHGGh3U=49cJ&f_#rxn)lDYmrytoc!o{h4@E=6ptcf;dSRu+F73BRDD28(0#Bpx)r( zI^wARf+CYdy!1^+Q_Zue^RGtEa=^fvG9rs#rzuP8v|ztop8TPabSONb1o`)71jl@C zoBANmEG0geqtWyO8G-aDEq;#{k49p*R()3W>anq2J*0I$s|8k2V6P6Yb=3bE^13bz zb=-LkR;Np*dxDkR6D@+|++1k^79TP>DF&lTE51KD!o3RoQiyB*q8L2V0^LznxUs-d zu#{fJl0c6jCkwJt4F$*|8?Aw-`kM$GO^oUU?Gz??^%ae1Y)~T)AfwkfK#!u6eJwg} zG~UK|CqF$h!0k%ncGR8iC>e{Xff^X>wE@bvdAQk&>~XZ6Q69mIZ0HUNcv%N!CLk`y ziT+9snReMQ?Xs%bbrZT9Zn07BP;KLC(WY%in}+txYp-%AA1PUZ^iq0sEy@$@k3n%T z&PWfZHNeU8CU4SeNDLfMo&r_zGfF&Z7)rR4p32M<XaphI8p?ArrB~#Mmn8*w8Rb^u zY6xDFCE&${#tS9}NiS|CdI@E!C_jN@KaSb;f@enlq)3<E=-O6K!5@QZw4PobiAu8{ zrkCuPfx%8ENd|Haa?;%sr<BuwNAg{0qs(yOg?jMwbUOm?Xl`*l)!#*Wbu^cqIP&?K zh#ZdNM8H{_cnW$uO@V%ed9tL?@TW!`N3qA%kjF2SEN;(%d~32=WRS*v1@LqHK11*| zc@!K$&QOs3bmOS$B}jh0jnrVF`}s{|l-J(iPTq)+4G59_(<miti|IH42c{?upC94a z&kiM<<jHOTP><ht6P5wq;MTtzrCfDfZ$vdaL3-hYyW<biJ4=c30{Xc1AUo`}f8kF4 zp1fEW@Hz;ub@1AYQk!**d{{B?A<GBF>ME4iti_aVcp^P<)xb94ohuuj)LUfjqFb#} zUXMbLG`804U%(2bl%tW2Ydn#rWN)N;@hf7;0tYIrS!eOABea@sJLtBVf}k<Y+JWDv zMEtGd|2x_`!l`SY&m{@jM-mzJC76y$S=g8uad_-&HT##I<V}k271S_F4i`Pt1FFL0 z<`RgPXs+V)ViwnEvp7d{aV9S=z_13WisSrl2OD2FZ<(r5Msh96$)-subl3DouZ~_Z zDjWS!R5aIn%4^Mz(RDUFvY=$6w!)o4Lr+gKYI$yL(QYml(QP$f4f?TahwuDlC9fl_ zVQv`}7|tNqH6_~+8+{6qa79D6_3A9t4QLZu%SIk`ry<OIs*}o7Q(+qdCEIp~@>C(Y zpy!#~>4O{FbVekaj~fd#G8mnRmIJM*6KPduWFVkuB*A-;10c16V0EoB_gWksZM1Nq zr|}x@r;T#Z3X)MdL(z?^ry$?pg+_weWcX(@7pN)gYrs?<vKk16cCvoJ?@K~<mc&yD z*hsfuA>d*v2ITk}jzv@!LMM?&rrwQsBfyVJXEvrGjOs;>lW?3gB{>SmF*pvA4|ruY ziS{KNdrEGjII8J}5pMJnGuCfN1deqY$6Cg1lUeQ~MLM#-0FP~^5TC)pb)2I5363Tq zFq91oaR`oYjCj{lyk`&<mtk@oCLuW9HZ8<^8KPpfVj(YUk0}HuAi_d?0!Nb&7zKxg z2*Gj8h<6=Dbrw+t&GddtLU6ou(f3;Ow>6?-1%3w}O$z)9jwT_fIyY&8t2>Hl)&~5x zl>CmOTTi!N5Diywa-bD3YI*27j+5K|TSlc(0YG!Ik8V5Z_A}kiL91vq@OFsaHWS@O zRN<^&=(gTuZ1N=VU}!B0Yk0ken(kv>9hnxzd8@;kjN(>~e0I^THgr?Ce3OvXU}%uQ zK`P^r<nwK41e2zq_T_>scP-`nOd4H>d`J*RHk$8X1jgaTiq`y8dskp+q$|)S7@1jp zur-EM7^7(M>ro?ZDCgebh}f$=zQYZ|!13zeOuUn~@p$wNM;#dFumh1rWnh4GU?uuj zs`A)*?D1`gGAyM9nth!&c}WWRO{z;vJPzJYyqhcoE6As)pRkV+_zw=3Z-X7|h*N8~ zeuN`o-X7n^7?~>%$tG>~>falvbauTZoi%<MY*Ez-J$-^S;*ITqHio*^jQlYe-sM*Z z2f_TJA!HW7fkF4x7kIgijD`4GS9Rk}uFiGZi!L<(8TnP7(~X||Z61A{Cw_-l-;<_) z0$ZKTO1HkdGmOaXuJ~%b7GufkG<}OVe+yKLfoA+#Z~Qi``i!b|-lnY@J<7N=z1E}G zYNwBQsvA}CXoZ;<Z+w+EzE%T(d0nqw1<Mq@c<0*qje28zL-76!`e{g{b8YR+!-agz z;MZy|YNyY8^?$<V^~N6|d9?VAT7Hez`GhC_bFY4cEo8`$T)UE#p(*!NXV`}p3cE90 zP)ZW?Gg@#>9aMo(oCAqfhLR2RVuc6hlj6L3y;kF|z#H?AuhaDT^9Uz#kUS{IUhncv zbCRvQ03O91Q6eZGgxeELv%603cPDe&-1-V?|KXR32MuO1T;;w)nKSig9<x!I(iiQf zZd3PD@97E-u<QPVctfEoCoyPPm_Td-Y^JzACS%jBFUbQoAP`#*Zwd&>v^%)>R-UU; z{sE<PtN}lZ5MVpT4H`w`q|!iw(zi{E|B}-dTtq3=I@cnjMY4}x&iw@HfG2)qam<G_ zFV91a{cf|+`m3g4JPU;=<-JjXAPaE`EF$4FJF614$qr!(fdnVpb+-PBuZUPgX-wue zL796Ex?rS_^<a!CYFK(ozE@vEc?10<@q+^@H>KD<B<mYS2f>L|=YG=Oahs`KLkdeg z<u*n-E*?>b^$7zakPbWKlVGNbtwo+Xsu$H~TYK}jzgT_b+F*w$-yt=Ao4z*w1Pb7e zZ>rDUG_dW<pOZD;`9xasx?r!UX{&-$?HGGe+-aDH!psR5DtBNp>D$Olq=@7=dbQC$ zxP0p|Xy+bTnX`>#_pNid14WIPxIlfVuD{k5?9iH`u3pKb)*S~iyhqhTnNVGdXJd6E zwQ~O18%UDkWv)sp3Etq6WfVztQ~Esi4W9U#ru;gKD&^Ks8)csI3z<YAG+!ffZ8u_q z4oSmCHa-p@z{BrAFq6=FJ0?H;sg%1u9w*xr|0YCiOlbL*P~o#H{u?1vU_Rx$f4gFY z=PZO0D5t$f9JG_m_am&3QMifzF(bbXMv!F)=~b3;`N`0?V6YeA)z@LHH_v0=h!L|$ zkEZYO>Zh8OKM#+u=OH}eA~xJk1h3zLnnljgSdO1N%*3iyq}tGgA1HdWesQw20M~Wb z8bhmVm?6dsR7L8v_%lWeAXkr$M!tINHJ<nlP5M6K)z4e?&FU?sS~8dN-KZs^eu%me zdY>ex=>XX0_|30^+Z*i1Ltli5VrSR7qaBR=Rm$%NBI=|ykN1U=;pyWx!fsS0N_IGZ zs?f8B9s~{gL2o`;tj+bmi}as?j*|8N@6u;fP?0Lijqrp9<~YRsMyLZyh*4<5awL%) zJCHx~!uAE`U!iqO!5Z_gJo$>@k~?sZ<_;9lbV(cnU{13Ffid4Qk00|F;NjLk@qH7a zAJ7+dVv=>9{0*4CrWTlpf{|r3cZv~844^j&@>L~}&49MKJ6Nq`=wJhU>**D9sNfTb z(AQ$B(%>+WCbHm>V1&LA#z{jH2YT22PK0p<(^^#@Y!kLhI0pFpF4#RR(K0ZYnxh3$ z3t&Fooq}6xk~feV<JLpmWqI|}n(mH`38d!Xf$amSS>(ouBQ;agBV*a9;93pJi+VJ7 z;L%9PaN$lmSxA{VzY`U^MWi@);I}RabN<fr?Bj<I#hrq9V14mKiLdc;m}sdfO8L`J zysxpnQa%wYxW2}=O8IO?+9>|<c*)2==hhFoc-9>=;J=okknz#It{vY=%ezYXtC;(R zNpveT-N~|dGd0*D76S0(FrK`s5iIu56u=E&N5XXxPs~%3o5uDSASu}}Jb9V-80=#j zLu`e+4nG<+3x4L>Y0FEvS+weyg^`>Y6^#nxFtM2fOVnKKGFf4n2_P#7p)#F%J3IzD z!i3TNX-qgUN=6VQdZ06mG=+b<3~AwEuNhBH4ROq&wP2cxHW-;|>1`yv*|IIG3L!9J zGFQW+@1?|uK+PhKewHG{7@SP;{uo&Aq5Rm0h0tp`ArnaURYc<o4vwYCx#)T1;+I+U zBKRsxH{TuXR7rRNMaGh0`VERVG7k%#<XPyj|7d!<g1xX@G;Ft~pCK=-<r0BYt3K4v zt$$69yf`fRY1JXsoqQ-wPjD&epSpbKS|c-e7&($H3PZM$0SJ=G(PTv-O&GNg<poWw zAj1bain|u4%)ItW7ThS+XL-4=j8dh{ICTXI^jTi+E2HEoGxjjT%Y9`u>{n)d%m^>{ zl`UZ8HAZ;3udITR89*quvNz%Uke2&g$vcaOrs-e1^e<fT+tc)Iu5BUM*lG5?#kUO% zu0Bm0wUH*4DRDcks`zS<i1>8ObZwsSgWLXPTJjEF_TvoJ@;4Fx)wN~dji#0AF!U<w zf>EBl$yG45H9fu5tIs4l<mFr=)1r9_L;s*cpq!4G@4*F~9j6gk6$W`t?7F~%vYMlY zlqbFVR&(_)J<6lgT+{)~k!;}gzg%Ab!xR9o|83zNg$RA?72ptwk!v=pQkHwO1EtNn z?Dr*&6RT)Hp)sLzhL!q25-<KCz5Vk_W@A4gW{(tKDfJu;M-xyYS}Elh(D2|b0<9Ca z(~DLOL#}$?S7@t!6-WTuIBEceUr@8B*^jxEr3Vwy!*0?7MQA`bYw;(v_$@rlzyKrv zXAP^y)!(6Mzb|uD8M3IJGyxk)PjxEgc~E!a_QX?q4Z~zRX?kjcQl7~o__;^I!U6Jz zf?*UvMh|^8kN$wo+5jfA$olDt0D;WNfWsRsh&sI|dE3-1U&yY1f}vQjcy~-%V5IFM zVSy00qitdT)L85v*cW2ZXxMXXVPWk+@l)A?!R^RMK3TFHRs+iwTuEh<1@~9!{$g}I zioXvivChK18thc+&CoS^gJUAl!z`lSk48h)2eHC}bt5E#D6ot{kEVV!CjxueI1+Cl zuK;T`#aFt@`o+RRoQ|D#m=G^8wSi#bwZVK1tRbF;KK&@a>y`37P_roFVzS*6ET%4x zyJHksOsE<qUdz9_CVd1MH8m+6=)uD)R}DHyj)&I!Fv*!*SA?<{jS0glG|O0v(~{Rt z`lmOrf)wMa8Bj>X)PJ`5n#N;jZ<;zAZf_9fcG8O{I5-kruwfPWs$#U{b<jx?m`uz; zn1K#d3(U$ywL(Ohh)Ao&Qa-h)+Dg;{NFAMWkZx6UTZVoX%M;O=^>k~XTO*1+X0Wnr z;3%!bEoC>NnDhqBW|GvaFHRtV_5H3>=~{&1e*z5+#32DZ$s3g!*R|nRC~9;{8j9(5 zG#F92s7gjp5T1vknvESf;Tcxc&s<FU48s&HO@`)fb1UiFDGg|rz<3ho!3=%Ff34#C z0MTNZtk9F3o~6v8e~OLVBFRu>$Wp?BnKwAv5qPkJQvM`z#gk8Sz1$sngV(3%`)O6k ze`>17lix-Q4kfM8(z2b49@_t)w+)tWkGAD;CwU^Y9Z}OvIJA<x&8wt;4SKIV<h373 zZYbHS1yn?;lq-nsWBP>WXob+((JMu|jryaMA4X|odzr@&&Fav;Pz^l2fyFU+V3?DK zhpqTGn438oIS);X7Pv{2)4e4PqE+!tCVM^^c99mCoWS0J$xdn{3{p|~0;Q#f-y*7a z{=FqPiW;K@N(&%*amN7mIeZhPl)J$yaWBpN=(`_u<+vVl4Rhr_w9aVi=pS`+^XG4m z=`tY#HF_U^YH9RBt;KxW^j}CHO8Jk-G;jXiV5&VsS^Aa8DR0CgE>Zaka*zyGw?01# z4?VSmD-ap$2|noX>WgfYr`3ldp>kBj4rm904nQuLpDsPs;lYX>47wDou19bpy#XUg zfXTS-dV-Uq(ApZ_`5cFc5lhQ=2P5y*^4&F2w0_CetV1NS+y(O|%N2$Cz?~$jgFAvO zB3D#>?tVz5?+1PTV7yW}qGs!k6<ifiOC2ag5e{WWISPa;FioS*jk#d7PU#f21{M1h z^+2eVMqlUqo?`wzwFlw)LPqEVBupz}<H1{$7DaQSs24e{(Rp^KDf3!Uaj`i})U1iO z8U;3srs;=m!wqjrHYV?*iCy*}+@k4baNkYc@J>Ii+dM#ZVjm@+NL=JX$S5)hvr^EY z<P4xUTE+w%O$b@Mxv*o0fqN9~G{p3-TN#GsDA=f=qqPoNBgl*+Bo4A<Z>RV+!w+~) zW&#L66qSVrBMVFn>J(4|0X4e!=u9|sKop&+m9!(hkxeoPm7A78&|F~K4n&F8mQk~Z zPCbTNrJ1WRz;yZ0OnZFO3Q!VNF1r4MRLKHss3Xum`h6B(=qHWYQR;Em>Hc%@<Y^nF z{2FdZP|{YV4(abg{-hu<w>J8DWPSqLd7~IOHG3UK@jQsr+h9I$gr4r8<_d;U6sij4 zErRm6FPM7`EyH7K4Q0X`a8loOpI2Wp3-MyDx(tsD{aZA+XcVZM3M?XtxLv}0idX+y z@XH8{wPo19!vtA||9Ht^ul^IZ1TYgU%p(M1AW<<dMBz~eIlg?Y1G;cj$Iq}`%Bu%! z;U_8(zr%B2utR$-zFLEEfLd2)5@2nb-Zjk0lxG`VI1hE(Vo~u7=4d>Dp=eb$t>m;~ zwi9vlXc9cCD4gPMkmf?+E40G)9=`|t%rL<8zJupG*K(huGpv-)I77);v<%EVfqM$E z*(NY_1V@pUh^-oimc9AN2%~o*%MSzabrVUur3jUwV<Gq^H`UJc5h!-|X}H~udGqyD z+c4?#Lr_C&^fmM3bFDB>mT8E&faX4u_fJ|6B@-{?CJAy;8qCP45Ppkq(9tP!w{=H) zrZQVa3XrRu5y&omaUOBHV-d9=%8c`zKDKEfj%a_3CIX}}AWci8;6xor8Q~5VVp1ao zu<MbH^~ey^i(9`)(@(m#Vg2pa`qW_LDLiX2$LBkUnO!$1QBjr@@RRnr8KyTXBSuTn z!7RpUgU&E4J4LV24EhyG{2bH(Y=sl=p-+&*Y{A1QLJxUF@x8=I_xT3vC}yS1^aFKG zKTo15b5v9%GgV|wQLjE}6cE3`KYJ~!677KBh}aw#4D(Z@AZLY4>WLuSs|zM|lRBf_ zU_ZgY49JZmtU5MV=7ERDw>}fwGNL;qc`y&_P5uT=HF5|!Rsmm3ctU~LVnrm8NkA6> zB?yL{fstcytftI8kJiOh-_bwUaQUQ&Lc33K$=HpM=+zqWFbasj${k>*Qob5JBT6xq zfi(2Fn9ji)njoHd4ef?Np1`C6(MTDg^J_!2s231f*fe9XhphVLi1&mt2wR}A;|z;) zHj)}kUJm2AB+eAV<vS09CJwdrm?6GN;*SCe)G5r)xOJu?IV^%jAgw_nf~L8f0voIy zX78RF4<C;4Lu4|<xRuPMv%cz9XtO_YC!<^qLwU+RFy$}-hyyHgw}u{t03d`37`><w zEi*jAIq35J%5pMu_U6_Y%xQV@Ck)%%$yf@dLW&&==mSf@+?<8T34!Lbqw~YHtcFJ& zD19)txxR%0NJ*376xzaB#`9Bwh=|lkWhsy2FnuOwK+PQFQJ0^V!79P5#V^a4G_)KX zVZUL1liiqe3#P!N`OXu(A8TNzcw(;k<elzsAenrN>CpfylAbU$GVJG#*u_XkUvZFS zFGNFoN-6L469NV2r=S3ZKXF5u@LvayQ~#&EbAhX>SR4LAF!2UhcC@tG8X6`C*$4vO z7AWY}F!7dJb^y7EiGZ+C%o_%pJ4CH4O-(7SOs%XeP3>&&m$Ed|@R)h⪼dtRHkM5 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 I_#3$YFFtAaRR910 literal 0 HcmV?d00001 diff --git a/Cuba/makefile b/Cuba/makefile new file mode 100755 index 0000000..12e98f2 --- /dev/null +++ b/Cuba/makefile @@ -0,0 +1,354 @@ +CC = gcc +SUFFIX = +CFLAGS = -O3 -fomit-frame-pointer -ffast-math -Wall -DHAVE_CONFIG_H -DREALSIZE=8 -I$(common) -I. -I$(srcdir) +MCFLAGS = +FC = gfortran +FCFLAGS = -g -O2 -DREALSIZE=8 +LIBS = -lm +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +RANLIB = ranlib +EXE = + +prefix = /usr/local +exec_prefix = ${prefix} +srcdir = . +bindir = ${exec_prefix}/bin +libdir = ${exec_prefix}/lib64 +includedir = ${prefix}/include +datarootdir = ${prefix}/share +datadir = ${datarootdir} + +MATH_DEFAULT = math +TOOLS_DEFAULT = +DEMO_FORTRAN_DEFAULT = demo-fortran$(EXE) + +MCC = CC="$(tools)/fcc" CXX="$(tools)/fcc " \ + REALCC="$(CC)" PATH="$(PATH):$(tools)" mcc + +TARDIR = Cuba-4.2 +TARFILE = $(TARDIR).tar.gz + + +HEADERS = cuba$(SUFFIX).h +LIB = libcuba$(SUFFIX).a +MATH = Vegas$(SUFFIX)$(EXE) Suave$(SUFFIX)$(EXE) Divonne$(SUFFIX)$(EXE) Cuhre$(SUFFIX)$(EXE) +TOOLS = partview$(EXE) + + +all: lib demos $(MATH_DEFAULT) $(TOOLS_DEFAULT) + +lib: $(LIB) $(HEADERS) + +demos: demo-c$(EXE) $(DEMO_FORTRAN_DEFAULT) + +math: $(MATH) + +tools: $(TOOLS) + + +install: lib $(TOOLS_DEFAULT) + $(INSTALL) -m 755 -d $(DESTDIR)$(libdir) \ + $(DESTDIR)$(includedir) \ + $(DESTDIR)$(bindir) \ + $(DESTDIR)$(datadir) + $(INSTALL_DATA) $(LIB) $(DESTDIR)$(libdir) + for f in $(HEADERS) ; do \ + $(INSTALL_DATA) `test -f $$f || echo $(srcdir)/`$$f $(DESTDIR)$(includedir); \ + done + for f in $(MATH) $(TOOLS) ; do \ + test -f $$f && $(INSTALL_PROGRAM) $$f $(DESTDIR)$(bindir) || : ; \ + done + $(INSTALL_DATA) $(srcdir)/cuba.pdf $(DESTDIR)$(datadir) + + +check: demo-c + ./demo-c | grep RESULT > demo-c.out + @echo diff demo-c.out $(demo)/demo-c.out + @diff demo-c.out $(demo)/demo-c.out || \ + echo "Note: This is serious only if the results deviate significantly." + +.SUFFIXES: +.SUFFIXES: .c .f .tm + +common = $(srcdir)/src/common +vegas = $(srcdir)/src/vegas +suave = $(srcdir)/src/suave +divonne = $(srcdir)/src/divonne +cuhre = $(srcdir)/src/cuhre +demo = $(srcdir)/demo +tools = $(srcdir)/tools + + +COMMON_DEPS = $(common)/stddecl.h $(common)/ChiSquare.c $(common)/Erf.c +COMMON_CDEPS = $(COMMON_DEPS) $(common)/CSample.c $(common)/Parallel.c $(common)/sock.h +COMMON_TMDEPS = $(COMMON_DEPS) $(common)/MSample.c + +VEGAS_C = $(vegas)/Vegas.c +VEGAS_TM = $(vegas)/Vegas.tm +VEGAS_DEPS = $(common)/Random.c \ + $(vegas)/decl.h $(vegas)/common.c \ + $(vegas)/Grid.c $(vegas)/Integrate.c +VEGAS = $(VEGAS_C) $(VEGAS_TM) $(VEGAS_DEPS) + +$(LIB)(Vegas.o): config.h $(VEGAS_C) $(VEGAS_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(vegas) -DNOUNDERSCORE -c -o Vegas.o $(VEGAS_C) + $(AR) $(ARFLAGS) $(LIB) Vegas.o + $(RM) Vegas.o + +$(LIB)(llVegas.o): config.h $(VEGAS_C) $(VEGAS_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(vegas) -DLONGLONGINT -DNOUNDERSCORE -c -o llVegas.o $(VEGAS_C) + $(AR) $(ARFLAGS) $(LIB) llVegas.o + $(RM) llVegas.o + +$(LIB)(Vegas_.o): config.h $(VEGAS_C) $(VEGAS_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(vegas) -c -o Vegas_.o $(VEGAS_C) + $(AR) $(ARFLAGS) $(LIB) Vegas_.o + $(RM) Vegas_.o + +$(LIB)(llVegas_.o): config.h $(VEGAS_C) $(VEGAS_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(vegas) -DLONGLONGINT -c -o llVegas_.o $(VEGAS_C) + $(AR) $(ARFLAGS) $(LIB) llVegas_.o + $(RM) llVegas_.o + +Vegas$(EXE): config.h $(VEGAS_TM) $(VEGAS_DEPS) $(COMMON_TMDEPS) + $(MCC) $(MCFLAGS) $(CFLAGS) -I$(vegas) -o Vegas$(EXE) $(VEGAS_TM) + strip Vegas$(EXE) + +Vegasl$(EXE): config.h $(VEGAS_TM) $(VEGAS_DEPS) $(COMMON_TMDEPS) + sed '/:Begin:/,/:End:/ s/Real64/Real128/g' $(VEGAS_TM) > Vegasl.tm + $(MCC) $(MCFLAGS) $(CFLAGS) -I$(vegas) -o Vegasl$(EXE) Vegasl.tm + strip Vegasl$(EXE) + $(RM) Vegasl.tm + +Vegasq$(EXE): + + +SUAVE_C = $(suave)/Suave.c +SUAVE_TM = $(suave)/Suave.tm +SUAVE_DEPS = $(common)/Random.c \ + $(suave)/decl.h $(suave)/common.c \ + $(suave)/Grid.c $(suave)/Fluct.c $(suave)/Sample.c \ + $(suave)/Integrate.c +SUAVE = $(SUAVE_C) $(SUAVE_TM) $(SUAVE_DEPS) + +$(LIB)(Suave.o): config.h $(SUAVE_C) $(SUAVE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(suave) -DNOUNDERSCORE -c -o Suave.o $(SUAVE_C) + $(AR) $(ARFLAGS) $(LIB) Suave.o + $(RM) Suave.o + +$(LIB)(llSuave.o): config.h $(SUAVE_C) $(SUAVE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(suave) -DLONGLONGINT -DNOUNDERSCORE -c -o llSuave.o $(SUAVE_C) + $(AR) $(ARFLAGS) $(LIB) llSuave.o + $(RM) llSuave.o + +$(LIB)(Suave_.o): config.h $(SUAVE_C) $(SUAVE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(suave) -c -o Suave_.o $(SUAVE_C) + $(AR) $(ARFLAGS) $(LIB) Suave_.o + $(RM) Suave_.o + +$(LIB)(llSuave_.o): config.h $(SUAVE_C) $(SUAVE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(suave) -DLONGLONGINT -c -o llSuave_.o $(SUAVE_C) + $(AR) $(ARFLAGS) $(LIB) llSuave_.o + $(RM) llSuave_.o + +Suave$(EXE): config.h $(SUAVE_TM) $(SUAVE_DEPS) $(COMMON_TMDEPS) + $(MCC) $(MCFLAGS) $(CFLAGS) -I$(suave) -o Suave$(EXE) $(SUAVE_TM) + strip Suave$(EXE) + +Suavel$(EXE): config.h $(SUAVE_TM) $(SUAVE_DEPS) $(COMMON_TMDEPS) + sed '/:Begin:/,/:End:/ s/Real64/Real128/g' $(SUAVE_TM) > Suavel.tm + $(MCC) $(MCFLAGS) $(CFLAGS) -I$(suave) -o Suavel$(EXE) Suavel.tm + strip Suavel$(EXE) + $(RM) Suavel.tm + +Suaveq$(EXE): + + +DIVONNE_C = $(divonne)/Divonne.c +DIVONNE_TM = $(divonne)/Divonne.tm +DIVONNE_DEPS = $(common)/Random.c \ + $(divonne)/decl.h $(divonne)/common.c \ + $(divonne)/KorobovCoeff.c $(divonne)/Rule.c $(divonne)/Sample.c \ + $(divonne)/FindMinimum.c $(divonne)/Iterate.c $(divonne)/Explore.c \ + $(divonne)/Split.c $(divonne)/Integrate.c +DIVONNE = $(DIVONNE_C) $(DIVONNE_TM) $(DIVONNE_DEPS) + +$(LIB)(Divonne.o): config.h $(DIVONNE_C) $(DIVONNE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(divonne) -DNOUNDERSCORE -c -o Divonne.o $(DIVONNE_C) + $(AR) $(ARFLAGS) $(LIB) Divonne.o + $(RM) Divonne.o + +$(LIB)(llDivonne.o): config.h $(DIVONNE_C) $(DIVONNE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(divonne) -DLONGLONGINT -DNOUNDERSCORE -c -o llDivonne.o $(DIVONNE_C) + $(AR) $(ARFLAGS) $(LIB) llDivonne.o + $(RM) llDivonne.o + +$(LIB)(Divonne_.o): config.h $(DIVONNE_C) $(DIVONNE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(divonne) -c -o Divonne_.o $(DIVONNE_C) + $(AR) $(ARFLAGS) $(LIB) Divonne_.o + $(RM) Divonne_.o + +$(LIB)(llDivonne_.o): config.h $(DIVONNE_C) $(DIVONNE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(divonne) -DLONGLONGINT -c -o llDivonne_.o $(DIVONNE_C) + $(AR) $(ARFLAGS) $(LIB) llDivonne_.o + $(RM) llDivonne_.o + +Divonne$(EXE): config.h $(DIVONNE_TM) $(DIVONNE_DEPS) $(COMMON_TMDEPS) + $(MCC) $(MCFLAGS) $(CFLAGS) -I$(divonne) -o Divonne$(EXE) $(DIVONNE_TM) + strip Divonne$(EXE) + +Divonnel$(EXE): config.h $(DIVONNE_TM) $(DIVONNE_DEPS) $(COMMON_TMDEPS) + sed '/:Begin:/,/:End:/ s/Real64/Real128/g' $(DIVONNE_TM) > Divonnel.tm + $(MCC) $(MCFLAGS) $(CFLAGS) -I$(divonne) -o Divonnel$(EXE) Divonnel.tm + strip Divonnel$(EXE) + $(RM) Divonnel.tm + +Divonneq$(EXE): + + +CUHRE_C = $(cuhre)/Cuhre.c +CUHRE_TM = $(cuhre)/Cuhre.tm +CUHRE_DEPS = \ + $(cuhre)/decl.h $(cuhre)/common.c \ + $(cuhre)/Rule.c $(cuhre)/Integrate.c +CUHRE = $(CUHRE_C) $(CUHRE_TM) $(CUHRE_DEPS) + +$(LIB)(Cuhre.o): config.h $(CUHRE_C) $(CUHRE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(cuhre) -DNOUNDERSCORE -c -o Cuhre.o $(CUHRE_C) + $(AR) $(ARFLAGS) $(LIB) Cuhre.o + $(RM) Cuhre.o + +$(LIB)(llCuhre.o): config.h $(CUHRE_C) $(CUHRE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(cuhre) -DLONGLONGINT -DNOUNDERSCORE -c -o llCuhre.o $(CUHRE_C) + $(AR) $(ARFLAGS) $(LIB) llCuhre.o + $(RM) llCuhre.o + +$(LIB)(Cuhre_.o): config.h $(CUHRE_C) $(CUHRE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(cuhre) -c -o Cuhre_.o $(CUHRE_C) + $(AR) $(ARFLAGS) $(LIB) Cuhre_.o + $(RM) Cuhre_.o + +$(LIB)(llCuhre_.o): config.h $(CUHRE_C) $(CUHRE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(cuhre) -DLONGLONGINT -c -o llCuhre_.o $(CUHRE_C) + $(AR) $(ARFLAGS) $(LIB) llCuhre_.o + $(RM) llCuhre_.o + +Cuhre$(EXE): config.h $(CUHRE_TM) $(CUHRE_DEPS) $(COMMON_TMDEPS) + $(MCC) $(MCFLAGS) $(CFLAGS) -I$(cuhre) -o Cuhre$(EXE) $(CUHRE_TM) + strip Cuhre$(EXE) + +Cuhrel$(EXE): config.h $(CUHRE_TM) $(CUHRE_DEPS) $(COMMON_TMDEPS) + sed '/:Begin:/,/:End:/ s/Real64/Real128/g' $(CUHRE_TM) > Cuhrel.tm + $(MCC) $(MCFLAGS) $(CFLAGS) -I$(cuhre) -o Cuhrel$(EXE) Cuhrel.tm + strip Cuhrel$(EXE) + $(RM) Cuhrel.tm + +Cuhreq$(EXE): + + +$(LIB)(Fork.o): $(common)/Fork.c $(common)/stddecl.h $(common)/sock.h + $(CC) $(CFLAGS) -DNOUNDERSCORE -c -o Fork.o $(common)/Fork.c + $(AR) $(ARFLAGS) $(LIB) Fork.o + $(RM) Fork.o + +$(LIB)(Fork_.o): $(common)/Fork.c $(common)/stddecl.h $(common)/sock.h + $(CC) $(CFLAGS) -c -o Fork_.o $(common)/Fork.c + $(AR) $(ARFLAGS) $(LIB) Fork_.o + $(RM) Fork_.o + + +$(LIB)(Global.o): $(common)/Global.c $(common)/stddecl.h + $(CC) $(CFLAGS) -DNOUNDERSCORE -c -o Global.o $(common)/Global.c + $(AR) $(ARFLAGS) $(LIB) Global.o + $(RM) Global.o + +$(LIB)(Global_.o): $(common)/Global.c $(common)/stddecl.h + $(CC) $(CFLAGS) -c -o Global_.o $(common)/Global.c + $(AR) $(ARFLAGS) $(LIB) Global_.o + $(RM) Global_.o + + +$(LIB)(Data.o): $(common)/Data.c $(common)/stddecl.h + $(CC) $(CFLAGS) -c -o Data.o $(common)/Data.c + $(AR) $(ARFLAGS) $(LIB) Data.o + $(RM) Data.o + + +$(LIB): $(LIB)(Vegas.o) $(LIB)(Vegas_.o) \ + $(LIB)(llVegas.o) $(LIB)(llVegas_.o) \ + $(LIB)(Suave.o) $(LIB)(Suave_.o) \ + $(LIB)(llSuave.o) $(LIB)(llSuave_.o) \ + $(LIB)(Divonne.o) $(LIB)(Divonne_.o) \ + $(LIB)(llDivonne.o) $(LIB)(llDivonne_.o) \ + $(LIB)(Cuhre.o) $(LIB)(Cuhre_.o) \ + $(LIB)(llCuhre.o) $(LIB)(llCuhre_.o) \ + $(LIB)(Fork.o) $(LIB)(Fork_.o) \ + $(LIB)(Global.o) $(LIB)(Global_.o) \ + $(LIB)(Data.o) + -$(RANLIB) $(LIB) + + +cubal.h: cuba.h + sed 's/double/long double/g' cuba.h > cubal.h + +cubaq.h: cuba.h + sed 's/double/__float128/g' cuba.h > cubaq.h + + +DEMO_F = $(demo)/demo-fortran.F +DEMO_C = $(demo)/demo-c.c +DEMO_TM = $(demo)/demo-math.m $(demo)/testsuite.m +DEMO = $(DEMO_F) $(DEMO_C) $(DEMO_TM) $(demo)/demo-c.out $(demo)/cuba.F + +demo-fortran$(EXE): $(DEMO_F) $(LIB) + $(FC) $(FCFLAGS) -o demo-fortran$(EXE) $(DEMO_F) $(LIB) $(LIBS) + +demo-c$(EXE): $(DEMO_C) $(srcdir)/cuba.h $(LIB) + $(CC) $(CFLAGS) -o demo-c$(EXE) $(DEMO_C) $(LIB) $(LIBS) + + +PARTVIEW = $(tools)/partview.cpp $(tools)/partview.pro \ + $(tools)/quit.xpm $(tools)/print.xpm + +partview$(EXE): $(PARTVIEW) + qmake -o makefile.partview $(tools)/partview.pro + $(MAKE) -f makefile.partview + $(RM) partview.o partview.moc makefile.partview + -strip partview$(EXE) + + +TARCONTENTS = $(srcdir)/COPYING $(srcdir)/ChangeLog \ + $(srcdir)/configure $(srcdir)/configure.ac \ + $(srcdir)/config.sub $(srcdir)/config.guess $(srcdir)/install-sh \ + $(srcdir)/makefile.in $(srcdir)/config.h.in \ + $(srcdir)/cuba.pdf $(srcdir)/cuba.tex $(srcdir)/cuba.h \ + $(COMMON_CDEPS) $(COMMON_TMDEPS) \ + $(common)/Global.c $(common)/Fork.c $(common)/Data.c \ + $(VEGAS) $(SUAVE) $(DIVONNE) $(divonne)/KorobovCoeff.c-* $(CUHRE) \ + $(DEMO) $(PARTVIEW) $(tools)/partview.m \ + $(tools)/mcc $(tools)/fcc $(tools)/mkstatic $(tools)/mkdist.c + +dist: + mkdist cvfz $(TARFILE) $(TARDIR) \ + $(patsubst $(srcdir)/%,%, $(sort $(TARCONTENTS))) + +# ln -s . $(TARDIR) +# tar cvfz $(TARFILE) --owner=root --group=root \ +# $(patsubst $(srcdir)/%,$(TARDIR)/%, $(sort $(TARCONTENTS))) +# $(RM) $(TARDIR) + +pub: dist + mv -f $(TARFILE) web/ + ./mkwebpage + +clean: + -$(RM) $(TARFILE) $(TARDIR) demo-c.out \ + partview.moc partview.o makefile.partview \ + cubal.h cubaq.h *.o */*.o */*.tm.c *.tm + +distclean: clean + -$(RM) $(LIB) demo-c demo-fortran $(MATH) $(TOOLS) \ + config.h config.log config.status makefile + diff --git a/Cuba/makefile.in b/Cuba/makefile.in new file mode 100644 index 0000000..cef3149 --- /dev/null +++ b/Cuba/makefile.in @@ -0,0 +1,354 @@ +CC = @CC@ +SUFFIX = @SUFFIX@ +CFLAGS = @CFLAGS@ @DEFS@ -DREALSIZE=@REALSIZE@ -I$(common) -I. -I$(srcdir) +MCFLAGS = @MCFLAGS@ +FC = @FC@ +FCFLAGS = @FCFLAGS@ -DREALSIZE=@REALSIZE@ +LIBS = @LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +RANLIB = @RANLIB@ +EXE = @EXEEXT@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +srcdir = @srcdir@ +bindir = @bindir@ +libdir = @libdir@ +includedir = @includedir@ +datarootdir = @datarootdir@ +datadir = @datadir@ + +MATH_DEFAULT = @MATH_DEFAULT@ +TOOLS_DEFAULT = @TOOLS_DEFAULT@ +DEMO_FORTRAN_DEFAULT = @DEMO_FORTRAN_DEFAULT@$(EXE) + +MCC = CC="$(tools)/fcc" CXX="$(tools)/fcc @MCSTDCPP@" \ + REALCC="$(CC)" PATH="$(PATH):$(tools)" mcc + +TARDIR = @PACKAGE_NAME@-@PACKAGE_VERSION@ +TARFILE = $(TARDIR).tar.gz + + +HEADERS = cuba$(SUFFIX).h +LIB = libcuba$(SUFFIX).a +MATH = Vegas$(SUFFIX)$(EXE) Suave$(SUFFIX)$(EXE) Divonne$(SUFFIX)$(EXE) Cuhre$(SUFFIX)$(EXE) +TOOLS = partview$(EXE) + + +all: lib demos $(MATH_DEFAULT) $(TOOLS_DEFAULT) + +lib: $(LIB) $(HEADERS) + +demos: demo-c$(EXE) $(DEMO_FORTRAN_DEFAULT) + +math: $(MATH) + +tools: $(TOOLS) + + +install: lib $(TOOLS_DEFAULT) + $(INSTALL) -m 755 -d $(DESTDIR)$(libdir) \ + $(DESTDIR)$(includedir) \ + $(DESTDIR)$(bindir) \ + $(DESTDIR)$(datadir) + $(INSTALL_DATA) $(LIB) $(DESTDIR)$(libdir) + for f in $(HEADERS) ; do \ + $(INSTALL_DATA) `test -f $$f || echo $(srcdir)/`$$f $(DESTDIR)$(includedir); \ + done + for f in $(MATH) $(TOOLS) ; do \ + test -f $$f && $(INSTALL_PROGRAM) $$f $(DESTDIR)$(bindir) || : ; \ + done + $(INSTALL_DATA) $(srcdir)/cuba.pdf $(DESTDIR)$(datadir) + + +check: demo-c + ./demo-c | grep RESULT > demo-c.out + @echo diff demo-c.out $(demo)/demo-c.out + @diff demo-c.out $(demo)/demo-c.out || \ + echo "Note: This is serious only if the results deviate significantly." + +.SUFFIXES: +.SUFFIXES: .c .f .tm + +common = $(srcdir)/src/common +vegas = $(srcdir)/src/vegas +suave = $(srcdir)/src/suave +divonne = $(srcdir)/src/divonne +cuhre = $(srcdir)/src/cuhre +demo = $(srcdir)/demo +tools = $(srcdir)/tools + + +COMMON_DEPS = $(common)/stddecl.h $(common)/ChiSquare.c $(common)/Erf.c +COMMON_CDEPS = $(COMMON_DEPS) $(common)/CSample.c $(common)/Parallel.c $(common)/sock.h +COMMON_TMDEPS = $(COMMON_DEPS) $(common)/MSample.c + +VEGAS_C = $(vegas)/Vegas.c +VEGAS_TM = $(vegas)/Vegas.tm +VEGAS_DEPS = $(common)/Random.c \ + $(vegas)/decl.h $(vegas)/common.c \ + $(vegas)/Grid.c $(vegas)/Integrate.c +VEGAS = $(VEGAS_C) $(VEGAS_TM) $(VEGAS_DEPS) + +$(LIB)(Vegas.o): config.h $(VEGAS_C) $(VEGAS_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(vegas) -DNOUNDERSCORE -c -o Vegas.o $(VEGAS_C) + $(AR) $(ARFLAGS) $(LIB) Vegas.o + $(RM) Vegas.o + +$(LIB)(llVegas.o): config.h $(VEGAS_C) $(VEGAS_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(vegas) -DLONGLONGINT -DNOUNDERSCORE -c -o llVegas.o $(VEGAS_C) + $(AR) $(ARFLAGS) $(LIB) llVegas.o + $(RM) llVegas.o + +$(LIB)(Vegas_.o): config.h $(VEGAS_C) $(VEGAS_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(vegas) -c -o Vegas_.o $(VEGAS_C) + $(AR) $(ARFLAGS) $(LIB) Vegas_.o + $(RM) Vegas_.o + +$(LIB)(llVegas_.o): config.h $(VEGAS_C) $(VEGAS_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(vegas) -DLONGLONGINT -c -o llVegas_.o $(VEGAS_C) + $(AR) $(ARFLAGS) $(LIB) llVegas_.o + $(RM) llVegas_.o + +Vegas$(EXE): config.h $(VEGAS_TM) $(VEGAS_DEPS) $(COMMON_TMDEPS) + $(MCC) $(MCFLAGS) $(CFLAGS) -I$(vegas) -o Vegas$(EXE) $(VEGAS_TM) + strip Vegas$(EXE) + +Vegasl$(EXE): config.h $(VEGAS_TM) $(VEGAS_DEPS) $(COMMON_TMDEPS) + sed '/:Begin:/,/:End:/ s/Real64/Real128/g' $(VEGAS_TM) > Vegasl.tm + $(MCC) $(MCFLAGS) $(CFLAGS) -I$(vegas) -o Vegasl$(EXE) Vegasl.tm + strip Vegasl$(EXE) + $(RM) Vegasl.tm + +Vegasq$(EXE): + + +SUAVE_C = $(suave)/Suave.c +SUAVE_TM = $(suave)/Suave.tm +SUAVE_DEPS = $(common)/Random.c \ + $(suave)/decl.h $(suave)/common.c \ + $(suave)/Grid.c $(suave)/Fluct.c $(suave)/Sample.c \ + $(suave)/Integrate.c +SUAVE = $(SUAVE_C) $(SUAVE_TM) $(SUAVE_DEPS) + +$(LIB)(Suave.o): config.h $(SUAVE_C) $(SUAVE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(suave) -DNOUNDERSCORE -c -o Suave.o $(SUAVE_C) + $(AR) $(ARFLAGS) $(LIB) Suave.o + $(RM) Suave.o + +$(LIB)(llSuave.o): config.h $(SUAVE_C) $(SUAVE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(suave) -DLONGLONGINT -DNOUNDERSCORE -c -o llSuave.o $(SUAVE_C) + $(AR) $(ARFLAGS) $(LIB) llSuave.o + $(RM) llSuave.o + +$(LIB)(Suave_.o): config.h $(SUAVE_C) $(SUAVE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(suave) -c -o Suave_.o $(SUAVE_C) + $(AR) $(ARFLAGS) $(LIB) Suave_.o + $(RM) Suave_.o + +$(LIB)(llSuave_.o): config.h $(SUAVE_C) $(SUAVE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(suave) -DLONGLONGINT -c -o llSuave_.o $(SUAVE_C) + $(AR) $(ARFLAGS) $(LIB) llSuave_.o + $(RM) llSuave_.o + +Suave$(EXE): config.h $(SUAVE_TM) $(SUAVE_DEPS) $(COMMON_TMDEPS) + $(MCC) $(MCFLAGS) $(CFLAGS) -I$(suave) -o Suave$(EXE) $(SUAVE_TM) + strip Suave$(EXE) + +Suavel$(EXE): config.h $(SUAVE_TM) $(SUAVE_DEPS) $(COMMON_TMDEPS) + sed '/:Begin:/,/:End:/ s/Real64/Real128/g' $(SUAVE_TM) > Suavel.tm + $(MCC) $(MCFLAGS) $(CFLAGS) -I$(suave) -o Suavel$(EXE) Suavel.tm + strip Suavel$(EXE) + $(RM) Suavel.tm + +Suaveq$(EXE): + + +DIVONNE_C = $(divonne)/Divonne.c +DIVONNE_TM = $(divonne)/Divonne.tm +DIVONNE_DEPS = $(common)/Random.c \ + $(divonne)/decl.h $(divonne)/common.c \ + $(divonne)/KorobovCoeff.c $(divonne)/Rule.c $(divonne)/Sample.c \ + $(divonne)/FindMinimum.c $(divonne)/Iterate.c $(divonne)/Explore.c \ + $(divonne)/Split.c $(divonne)/Integrate.c +DIVONNE = $(DIVONNE_C) $(DIVONNE_TM) $(DIVONNE_DEPS) + +$(LIB)(Divonne.o): config.h $(DIVONNE_C) $(DIVONNE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(divonne) -DNOUNDERSCORE -c -o Divonne.o $(DIVONNE_C) + $(AR) $(ARFLAGS) $(LIB) Divonne.o + $(RM) Divonne.o + +$(LIB)(llDivonne.o): config.h $(DIVONNE_C) $(DIVONNE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(divonne) -DLONGLONGINT -DNOUNDERSCORE -c -o llDivonne.o $(DIVONNE_C) + $(AR) $(ARFLAGS) $(LIB) llDivonne.o + $(RM) llDivonne.o + +$(LIB)(Divonne_.o): config.h $(DIVONNE_C) $(DIVONNE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(divonne) -c -o Divonne_.o $(DIVONNE_C) + $(AR) $(ARFLAGS) $(LIB) Divonne_.o + $(RM) Divonne_.o + +$(LIB)(llDivonne_.o): config.h $(DIVONNE_C) $(DIVONNE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(divonne) -DLONGLONGINT -c -o llDivonne_.o $(DIVONNE_C) + $(AR) $(ARFLAGS) $(LIB) llDivonne_.o + $(RM) llDivonne_.o + +Divonne$(EXE): config.h $(DIVONNE_TM) $(DIVONNE_DEPS) $(COMMON_TMDEPS) + $(MCC) $(MCFLAGS) $(CFLAGS) -I$(divonne) -o Divonne$(EXE) $(DIVONNE_TM) + strip Divonne$(EXE) + +Divonnel$(EXE): config.h $(DIVONNE_TM) $(DIVONNE_DEPS) $(COMMON_TMDEPS) + sed '/:Begin:/,/:End:/ s/Real64/Real128/g' $(DIVONNE_TM) > Divonnel.tm + $(MCC) $(MCFLAGS) $(CFLAGS) -I$(divonne) -o Divonnel$(EXE) Divonnel.tm + strip Divonnel$(EXE) + $(RM) Divonnel.tm + +Divonneq$(EXE): + + +CUHRE_C = $(cuhre)/Cuhre.c +CUHRE_TM = $(cuhre)/Cuhre.tm +CUHRE_DEPS = \ + $(cuhre)/decl.h $(cuhre)/common.c \ + $(cuhre)/Rule.c $(cuhre)/Integrate.c +CUHRE = $(CUHRE_C) $(CUHRE_TM) $(CUHRE_DEPS) + +$(LIB)(Cuhre.o): config.h $(CUHRE_C) $(CUHRE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(cuhre) -DNOUNDERSCORE -c -o Cuhre.o $(CUHRE_C) + $(AR) $(ARFLAGS) $(LIB) Cuhre.o + $(RM) Cuhre.o + +$(LIB)(llCuhre.o): config.h $(CUHRE_C) $(CUHRE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(cuhre) -DLONGLONGINT -DNOUNDERSCORE -c -o llCuhre.o $(CUHRE_C) + $(AR) $(ARFLAGS) $(LIB) llCuhre.o + $(RM) llCuhre.o + +$(LIB)(Cuhre_.o): config.h $(CUHRE_C) $(CUHRE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(cuhre) -c -o Cuhre_.o $(CUHRE_C) + $(AR) $(ARFLAGS) $(LIB) Cuhre_.o + $(RM) Cuhre_.o + +$(LIB)(llCuhre_.o): config.h $(CUHRE_C) $(CUHRE_DEPS) $(COMMON_CDEPS) + $(CC) $(CFLAGS) -I$(cuhre) -DLONGLONGINT -c -o llCuhre_.o $(CUHRE_C) + $(AR) $(ARFLAGS) $(LIB) llCuhre_.o + $(RM) llCuhre_.o + +Cuhre$(EXE): config.h $(CUHRE_TM) $(CUHRE_DEPS) $(COMMON_TMDEPS) + $(MCC) $(MCFLAGS) $(CFLAGS) -I$(cuhre) -o Cuhre$(EXE) $(CUHRE_TM) + strip Cuhre$(EXE) + +Cuhrel$(EXE): config.h $(CUHRE_TM) $(CUHRE_DEPS) $(COMMON_TMDEPS) + sed '/:Begin:/,/:End:/ s/Real64/Real128/g' $(CUHRE_TM) > Cuhrel.tm + $(MCC) $(MCFLAGS) $(CFLAGS) -I$(cuhre) -o Cuhrel$(EXE) Cuhrel.tm + strip Cuhrel$(EXE) + $(RM) Cuhrel.tm + +Cuhreq$(EXE): + + +$(LIB)(Fork.o): $(common)/Fork.c $(common)/stddecl.h $(common)/sock.h + $(CC) $(CFLAGS) -DNOUNDERSCORE -c -o Fork.o $(common)/Fork.c + $(AR) $(ARFLAGS) $(LIB) Fork.o + $(RM) Fork.o + +$(LIB)(Fork_.o): $(common)/Fork.c $(common)/stddecl.h $(common)/sock.h + $(CC) $(CFLAGS) -c -o Fork_.o $(common)/Fork.c + $(AR) $(ARFLAGS) $(LIB) Fork_.o + $(RM) Fork_.o + + +$(LIB)(Global.o): $(common)/Global.c $(common)/stddecl.h + $(CC) $(CFLAGS) -DNOUNDERSCORE -c -o Global.o $(common)/Global.c + $(AR) $(ARFLAGS) $(LIB) Global.o + $(RM) Global.o + +$(LIB)(Global_.o): $(common)/Global.c $(common)/stddecl.h + $(CC) $(CFLAGS) -c -o Global_.o $(common)/Global.c + $(AR) $(ARFLAGS) $(LIB) Global_.o + $(RM) Global_.o + + +$(LIB)(Data.o): $(common)/Data.c $(common)/stddecl.h + $(CC) $(CFLAGS) -c -o Data.o $(common)/Data.c + $(AR) $(ARFLAGS) $(LIB) Data.o + $(RM) Data.o + + +$(LIB): $(LIB)(Vegas.o) $(LIB)(Vegas_.o) \ + $(LIB)(llVegas.o) $(LIB)(llVegas_.o) \ + $(LIB)(Suave.o) $(LIB)(Suave_.o) \ + $(LIB)(llSuave.o) $(LIB)(llSuave_.o) \ + $(LIB)(Divonne.o) $(LIB)(Divonne_.o) \ + $(LIB)(llDivonne.o) $(LIB)(llDivonne_.o) \ + $(LIB)(Cuhre.o) $(LIB)(Cuhre_.o) \ + $(LIB)(llCuhre.o) $(LIB)(llCuhre_.o) \ + $(LIB)(Fork.o) $(LIB)(Fork_.o) \ + $(LIB)(Global.o) $(LIB)(Global_.o) \ + $(LIB)(Data.o) + -$(RANLIB) $(LIB) + + +cubal.h: cuba.h + sed 's/double/long double/g' cuba.h > cubal.h + +cubaq.h: cuba.h + sed 's/double/__float128/g' cuba.h > cubaq.h + + +DEMO_F = $(demo)/demo-fortran.F +DEMO_C = $(demo)/demo-c.c +DEMO_TM = $(demo)/demo-math.m $(demo)/testsuite.m +DEMO = $(DEMO_F) $(DEMO_C) $(DEMO_TM) $(demo)/demo-c.out $(demo)/cuba.F + +demo-fortran$(EXE): $(DEMO_F) $(LIB) + $(FC) $(FCFLAGS) -o demo-fortran$(EXE) $(DEMO_F) $(LIB) $(LIBS) + +demo-c$(EXE): $(DEMO_C) $(srcdir)/cuba.h $(LIB) + $(CC) $(CFLAGS) -o demo-c$(EXE) $(DEMO_C) $(LIB) $(LIBS) + + +PARTVIEW = $(tools)/partview.cpp $(tools)/partview.pro \ + $(tools)/quit.xpm $(tools)/print.xpm + +partview$(EXE): $(PARTVIEW) + qmake -o makefile.partview $(tools)/partview.pro + $(MAKE) -f makefile.partview + $(RM) partview.o partview.moc makefile.partview + -strip partview$(EXE) + + +TARCONTENTS = $(srcdir)/COPYING $(srcdir)/ChangeLog \ + $(srcdir)/configure $(srcdir)/configure.ac \ + $(srcdir)/config.sub $(srcdir)/config.guess $(srcdir)/install-sh \ + $(srcdir)/makefile.in $(srcdir)/config.h.in \ + $(srcdir)/cuba.pdf $(srcdir)/cuba.tex $(srcdir)/cuba.h \ + $(COMMON_CDEPS) $(COMMON_TMDEPS) \ + $(common)/Global.c $(common)/Fork.c $(common)/Data.c \ + $(VEGAS) $(SUAVE) $(DIVONNE) $(divonne)/KorobovCoeff.c-* $(CUHRE) \ + $(DEMO) $(PARTVIEW) $(tools)/partview.m \ + $(tools)/mcc $(tools)/fcc $(tools)/mkstatic $(tools)/mkdist.c + +dist: + mkdist cvfz $(TARFILE) $(TARDIR) \ + $(patsubst $(srcdir)/%,%, $(sort $(TARCONTENTS))) + +# ln -s . $(TARDIR) +# tar cvfz $(TARFILE) --owner=root --group=root \ +# $(patsubst $(srcdir)/%,$(TARDIR)/%, $(sort $(TARCONTENTS))) +# $(RM) $(TARDIR) + +pub: dist + mv -f $(TARFILE) web/ + ./mkwebpage + +clean: + -$(RM) $(TARFILE) $(TARDIR) demo-c.out \ + partview.moc partview.o makefile.partview \ + cubal.h cubaq.h *.o */*.o */*.tm.c *.tm + +distclean: clean + -$(RM) $(LIB) demo-c demo-fortran $(MATH) $(TOOLS) \ + config.h config.log config.status makefile + diff --git a/Cuba/src/common/CSample.c b/Cuba/src/common/CSample.c new file mode 100644 index 0000000..dfdbae1 --- /dev/null +++ b/Cuba/src/common/CSample.c @@ -0,0 +1,82 @@ +/* + CSample.c + the serial sampling routine + for the C versions of the Cuba routines + by Thomas Hahn + last modified 9 Oct 14 th +*/ + + +coreinit cubafun_; +extern int cubaverb_; +extern corespec cubaworkers_; + + +static inline number SampleRaw(This *t, number n, creal *x, real *f, + cint core VES_ONLY(, creal *w, ccount iter)) +{ + number nvec; + for( nvec = t->nvec; n > 0; n -= nvec ) { + nvec = IMin(n, nvec); + if( t->integrand(&t->ndim, x, &t->ncomp, f, t->userdata, &nvec, &core + VES_ONLY(, w, &iter) + DIV_ONLY(, &t->phase)) == ABORT ) return -1; + VES_ONLY(w += nvec;) + x += nvec*t->ndim; + f += nvec*t->ncomp; + } + return 0; +} + +/*********************************************************************/ + +static inline void DoSampleSerial(This *t, cnumber n, creal *x, real *f + VES_ONLY(, creal *w, ccount iter)) +{ + MasterInit(); + t->neval += n; + if( SampleRaw(t, n, x, f, -1 VES_ONLY(, w, iter)) ) + longjmp(t->abort, -99); +} + +/*********************************************************************/ + +#ifdef HAVE_FORK + +static void DoSample(This *t, number n, creal *x, real *f + VES_ONLY(, creal *w, ccount iter)); +DIV_ONLY(static int Explore(This *t, cint iregion);) + +#else + +#define DoSample DoSampleSerial +#define Explore ExploreSerial +#define ForkCores(t) + +static inline void WaitCores(This *t, Spin **pspin) +{ + if( Invalid(pspin) ) MasterExit(); +} + +#define WaitCores(t, pspin) + +#endif + +#ifdef DIVONNE +static inline count SampleExtra(This *t, cBounds *b) +{ + number n = t->nextra; + t->peakfinder(&t->ndim, b, &n, t->xextra, t->userdata); + DoSample(t, n, t->xextra, t->fextra); + return n; +} +#endif + +#include "common.c" + +#ifdef HAVE_FORK +#include "Parallel.c" +#endif + +#include "Integrate.c" + diff --git a/Cuba/src/common/ChiSquare.c b/Cuba/src/common/ChiSquare.c new file mode 100644 index 0000000..fc25788 --- /dev/null +++ b/Cuba/src/common/ChiSquare.c @@ -0,0 +1,67 @@ +/* + ChiSquare.c + the chi-square cdf + after W.J. Kennedy and J.E. Gentle, + Statistical computing, p. 116 + last modified 12 Mar 15 th +*/ + +#ifdef HAVE_ERF +#define Erf erf +#else +#include "Erf.c" +#endif + +static inline real Normal(creal x) +{ + return .5*Erf(x/1.414213562373095048801689) + .5; +} + +/*********************************************************************/ + +static real ChiSquare(creal x, cint df) +{ + real y; + + if( df <= 0 ) return -999; + + if( x <= 0 ) return 0; + if( x > 1000*df ) return 1; + + if( df > 1000 ) { + if( x < 2 ) return 0; + y = 2./(9*df); + y = (powx(x/df, 1/3.) - (1 - y))/sqrtx(y); + if( y > 5 ) return 1; + if( y < -18.8055 ) return 0; + return Normal(y); + } + + y = .5*x; + + if( df & 1 ) { + creal sqrty = sqrtx(y); + real h = Erf(sqrty); + count i; + + if( df == 1 ) return h; + + y = sqrty*expx(-y)/.8862269254527579825931; + for( i = 3; i < df; i += 2 ) { + h -= y; + y *= x/i; + } + y = h - y; + } + else { + real term = expx(-y), sum = term; + count i; + + for( i = 1; i < df/2; ++i ) + sum += term *= y/i; + y = 1 - sum; + } + + return Max(0., y); +} + diff --git a/Cuba/src/common/Data.c b/Cuba/src/common/Data.c new file mode 100644 index 0000000..3d40591 --- /dev/null +++ b/Cuba/src/common/Data.c @@ -0,0 +1,18 @@ +/* + Data.c + initialized data for Cuba + by Thomas Hahn + last modified 21 Jul 14 th +*/ + + +#include "stddecl.h" + +int cubaverb_ = uninitialized; + +#ifdef HAVE_FORK +corespec cubaworkers_ = { + uninitialized, uninitialized, + uninitialized, uninitialized }; +#endif + diff --git a/Cuba/src/common/Erf.c b/Cuba/src/common/Erf.c new file mode 100644 index 0000000..c94d106 --- /dev/null +++ b/Cuba/src/common/Erf.c @@ -0,0 +1,51 @@ +/* + Erf.c + Gaussian error function + = 2/Sqrt[Pi] Integrate[Exp[-t^2], {t, 0, x}] + Code from Takuya Ooura's gamerf2a.f + http://www.kurims.kyoto-u.ac.jp/~ooura/gamerf.html + last modified 12 Mar 15 th +*/ + + +static real Erfc(creal x) +{ + static creal c[] = { + 2.96316885199227378e-01, 6.12158644495538758e-02, + 1.81581125134637070e-01, 5.50942780056002085e-01, + 6.81866451424939493e-02, 1.53039662058770397e+00, + 1.56907543161966709e-02, 2.99957952311300634e+00, + 2.21290116681517573e-03, 4.95867777128246701e+00, + 1.91395813098742864e-04, 7.41471251099335407e+00, + 9.71013284010551623e-06, 1.04765104356545238e+01, + 1.66642447174307753e-07, 1.48455557345597957e+01, + 6.10399733098688199e+00, 1.26974899965115684e+01 }; + real y = x*x; + y = expx(-y)*x*( + c[0]/(y + c[1]) + c[2]/(y + c[3]) + + c[4]/(y + c[5]) + c[6]/(y + c[7]) + + c[8]/(y + c[9]) + c[10]/(y + c[11]) + + c[12]/(y + c[13]) + c[14]/(y + c[15]) ); + if( x < c[16] ) y += 2/(expx(c[17]*x) + 1); + return y; +} + + +static real Erf(creal x) +{ + static creal c[] = { + 1.12837916709551257e+00, + -3.76126389031833602e-01, + 1.12837916706621301e-01, + -2.68661698447642378e-02, + 5.22387877685618101e-03, + -8.49202435186918470e-04 }; + real y = fabsx(x); + if( y > .125 ) { + y = 1 - Erfc(y); + return (x > 0) ? y : -y; + } + y *= y; + return x*(c[0] + y*(c[1] + y*(c[2] + + y*(c[3] + y*(c[4] + y*c[5]))))); +} diff --git a/Cuba/src/common/Fork.c b/Cuba/src/common/Fork.c new file mode 100644 index 0000000..99605d2 --- /dev/null +++ b/Cuba/src/common/Fork.c @@ -0,0 +1,164 @@ +/* + Fork.c + fork the cores for parallel sampling + (C version only) + by Thomas Hahn + last modified 23 Apr 15 th +*/ + + +#define ROUTINE "cubafork" +#include "stddecl.h" + +#ifdef HAVE_FORK + +#include "sock.h" + +#define MINCORES 1 + +coreinit cubafun_; +extern int cubaverb_; +extern corespec cubaworkers_; + +/*********************************************************************/ + +static inline void Child(cint fd, cint core) +{ + dispatch d; + + while( readsock(fd, &d, sizeof d) == sizeof d ) { + if( d.thissize ) { + MemAlloc(d.thisptr, d.thissize); + WORKER("reading This (%lu)", d.thissize); + readsock(fd, d.thisptr, d.thissize); + } + WORKER("running %p on fd %d", d.thisptr, fd); + d.worker(d.thisptr, d.thissize, core, fd); + if( d.thissize ) free(d.thisptr); + } +} + +/*********************************************************************/ + +Extern void SUFFIX(cubafork)(Spin **pspin) +{ + char out[128]; + int cores, core; + fdpid *pfp; + Spin *spin; + + VerboseInit(); + + EnvInit(cubaworkers_.paccel, "CUBAACCELMAX", 1000); + EnvInit(cubaworkers_.pcores, "CUBACORESMAX", 10000); + EnvInit(cubaworkers_.naccel, "CUBAACCEL", 0); + EnvInit(cubaworkers_.ncores, "CUBACORES", -sysconf(_SC_NPROCESSORS_ONLN)); + +#ifdef HAVE_GETLOADAVG + if( cubaworkers_.ncores < 0 ) { + static int load = uninitialized; + if( load == uninitialized ) { + double loadavg; + getloadavg(&loadavg, 1); + load = floor(loadavg); + } + cubaworkers_.ncores = IMax(-cubaworkers_.ncores - load, 0); + } +#else + cubaworkers_.ncores = abs(cubaworkers_.ncores); +#endif + + cores = cubaworkers_.naccel + cubaworkers_.ncores; + if( cores < MINCORES ) { + *pspin = NULL; + return; + } + + if( cubaverb_ ) { + sprintf(out, "using %d cores %d accelerators via " +#ifdef HAVE_SHMGET + "shared memory", +#else + "pipes", +#endif + cubaworkers_.ncores, cubaworkers_.naccel); + Print(out); + } + + fflush(NULL); /* make sure all buffers are flushed, + or else buffered content will be written + out multiply, at each child's exit(0) */ + + MemAlloc(spin, sizeof *spin + cores*sizeof *spin->fp); + spin->spec = cubaworkers_; + pfp = spin->fp; + for( core = -spin->spec.naccel; core < spin->spec.ncores; ++core ) { + int fd[2]; + pid_t pid; + assert( + socketpair(AF_LOCAL, SOCK_STREAM, 0, fd) != -1 && + (pid = fork()) != -1 ); + if( pid == 0 ) { + close(fd[0]); + free(spin); + Child(fd[1], core); + exit(0); + } + MASTER("forked pid %d pipe %d(master) -> %d(worker)", + pid, fd[0], fd[1]); + close(fd[1]); + pfp->fd = fd[0]; + pfp->pid = pid; + ++pfp; + } + + *pspin = spin; +} + +/*********************************************************************/ + +Extern void SUFFIX(cubawait)(Spin **pspin) +{ + int cores, core, status; + Spin *spin; + + MasterExit(); + + if( Invalid(pspin) || (spin = *pspin) == NULL ) return; + + cores = spin->spec.naccel + spin->spec.ncores; + + for( core = 0; core < cores; ++core ) { + MASTER("closing fd %d", spin->fp[core].fd); + close(spin->fp[core].fd); + } + +#ifdef KILL_WORKERS + for( core = 0; core < cores; ++core ) { + MASTER("killing pid %d", spin->fp[core].pid); + kill(spin->fp[core].pid, SIGKILL); + } +#endif + + for( core = 0; core < cores; ++core ) { + DEB_ONLY(pid_t pid;) + MASTER("waiting for child"); + DEB_ONLY(pid =) wait(&status); + MASTER("pid %d terminated with exit code %d", pid, status); + } + + free(spin); + *pspin = NULL; +} + +#else + +Extern void SUFFIX(cubafork)(Spin **pspin) {} + +Extern void SUFFIX(cubawait)(Spin **pspin) +{ + MasterExit(); +} + +#endif + diff --git a/Cuba/src/common/Global.c b/Cuba/src/common/Global.c new file mode 100644 index 0000000..6e5975f --- /dev/null +++ b/Cuba/src/common/Global.c @@ -0,0 +1,58 @@ +/* + Global.c + set global vars + by Thomas Hahn + last modified 21 Jul 14 th +*/ + + +#include "stddecl.h" + + +coreinit cubafun_; +extern int cubaverb_; + +#ifdef HAVE_FORK +extern corespec cubaworkers_; +#endif + + +Extern void SUFFIX(cubaverbose)(cint verb) +{ + cubaverb_ = verb; +} + +/*********************************************************************/ + +Extern void SUFFIX(cubacores)(cint n, cint p) +{ +#ifdef HAVE_FORK + cubaworkers_.ncores = n; + cubaworkers_.pcores = p; +#endif +} + +Extern void SUFFIX(cubaaccel)(cint n, cint p) +{ +#ifdef HAVE_FORK + cubaworkers_.naccel = n; + cubaworkers_.paccel = p; +#endif +} + +/*********************************************************************/ + +Extern void SUFFIX(cubainit)(subroutine f, void *arg) +{ + cubafun_.initfun = f; + cubafun_.initarg = arg; +} + +/*********************************************************************/ + +Extern void SUFFIX(cubaexit)(subroutine f, void *arg) +{ + cubafun_.exitfun = f; + cubafun_.exitarg = arg; +} + diff --git a/Cuba/src/common/MSample.c b/Cuba/src/common/MSample.c new file mode 100644 index 0000000..e0c4814 --- /dev/null +++ b/Cuba/src/common/MSample.c @@ -0,0 +1,90 @@ +/* + MSample.c + the sampling routine for the + Mathematica versions of the Cuba routines + by Thomas Hahn + last modified 13 Mar 15 th +*/ + + +static void DoSample(This *t, cnumber n, real *x, real *f + VES_ONLY(, real *w, ccount iter)) +{ + real *mma_f; + int mma_n; + + if( MLAbort ) longjmp(t->abort, -99); + + MLPutFunction(stdlink, "EvaluatePacket", 1); + MLPutFunction(stdlink, "Cuba`" ROUTINE "`sample", 1 VES_ONLY(+2) DIV_ONLY(+1)); + MLPutRealxList(stdlink, x, n*t->ndim); + VES_ONLY(MLPutRealxList(stdlink, w, n); + MLPutInteger(stdlink, iter);) + DIV_ONLY(MLPutInteger(stdlink, t->phase);) + MLEndPacket(stdlink); + + MLNextPacket(stdlink); + if( !MLGetRealxList(stdlink, &mma_f, &mma_n) ) { + MLClearError(stdlink); + MLNewPacket(stdlink); + longjmp(t->abort, -99); + } + + t->neval += mma_n; + + if( mma_n != n*t->ncomp ) { + MLReleaseRealxList(stdlink, mma_f, mma_n); + longjmp(t->abort, -3); + } + + Copy(f, mma_f, n*t->ncomp); + MLReleaseRealxList(stdlink, mma_f, mma_n); +} + +/*********************************************************************/ + +#ifdef DIVONNE +#define Explore ExploreSerial + +static count SampleExtra(This *t, cBounds *b) +{ + count n, nget; + real *mma_f; + int mma_n; + + MLPutFunction(stdlink, "EvaluatePacket", 1); + MLPutFunction(stdlink, "Cuba`Divonne`findpeak", 2); + MLPutRealxList(stdlink, (real *)b, 2*t->ndim); + MLPutInteger(stdlink, t->phase); + MLEndPacket(stdlink); + + MLNextPacket(stdlink); + if( !MLGetRealxList(stdlink, &mma_f, &mma_n) ) { + MLClearError(stdlink); + MLNewPacket(stdlink); + longjmp(t->abort, -99); + } + + t->neval += nget = mma_n/(t->ndim + t->ncomp); + + n = IMin(nget, t->nextra); + if( n ) { + Copy(t->xextra, mma_f, n*t->ndim); + Copy(t->fextra, mma_f + nget*t->ndim, n*t->ncomp); + } + + MLReleaseRealxList(stdlink, mma_f, mma_n); + + return n; +} +#endif + +/*********************************************************************/ + +#include "common.c" + +#define ForkCores(t) +#define WaitCores(t) + +#include "Integrate.c" + diff --git a/Cuba/src/common/Parallel.c b/Cuba/src/common/Parallel.c new file mode 100644 index 0000000..895862f --- /dev/null +++ b/Cuba/src/common/Parallel.c @@ -0,0 +1,441 @@ +/* + Parallel.c + the parallel sampling routine + for the C versions of the Cuba routines + by Thomas Hahn + last modified 23 Apr 15 th +*/ + +#include "sock.h" + +#define MINSLICE 10 +#define MINCORES 1 +/*#define MINCORES 2*/ + +typedef struct { + number n, m, i; + VES_ONLY(count iter;) + DIV_ONLY(int phase SHM_ONLY(, shmid);) +} Slice; + +#if defined HAVE_SHMGET && (defined SUAVE || defined DIVONNE) +#define FRAMECOPY +#endif + +Extern void SUFFIX(cubafork)(Spin **); +Extern void SUFFIX(cubawait)(Spin **); + +/*********************************************************************/ + +static inline void DoSampleParallel(This *t, number n, creal *x, real *f + VES_ONLY(, creal *w, ccount iter)) +{ + char out[128]; + Slice slice, rslice; + fd_set ready; + int core, abort, running = 0; + const fdpid *pfp; + Spin *spin = t->spin; + cint paccel = spin->spec.paccel; + cint naccel = IMin(spin->spec.naccel, (n + paccel - 1)/IMax(paccel, 1)); + cnumber nrest = IDim(n - naccel*paccel); + cint ncores = IMin(spin->spec.ncores, nrest/MINSLICE); + number pcores = IMin(spin->spec.pcores, nrest/IMax(ncores, 1)); + number nx = nrest - ncores*pcores; + if( nx >= ncores ) nx = 0; + + t->neval += n; + + if( VERBOSE > 2 ) { + sprintf(out, "sampling " NUMBER " points each on %d cores", + pcores, ncores); + Print(out); + } + + slice.n = paccel; + slice.m = IMax(slice.n, pcores); + slice.i = 0; + VES_ONLY(slice.iter = iter;) + DIV_ONLY(slice.phase = t->phase;) + +#ifdef DIVONNE + if( n > t->nframe ) { + FrameFree(t, Master); + t->nframe = n; + FrameAlloc(t, Master); + } + SHM_ONLY(slice.shmid = t->shmid;) +#endif + + SHM_ONLY(if( t->shmid != -1 ) { + slice.m = n; +#ifdef FRAMECOPY + VES_ONLY(Copy(t->frame, w, n);) + Copy(t->frame + n*NW, x, n*t->ndim); +#endif + }) + +#define PutSamples(fd) do { \ + slice.n = IMin(slice.n, n); \ + MASTER("sending samples (sli:%lu[+" VES_ONLY(NUMBER "w:%lu+") \ + NUMBER "x:%lu]) to fd %d", \ + sizeof slice, VES_ONLY(slice.n, sizeof *w,) \ + slice.n, t->ndim*sizeof *x, fd); \ + writesock(fd, &slice, sizeof slice); \ + SHM_ONLY(if( t->shmid == -1 )) { \ + VES_ONLY(writesock(fd, w, slice.n*sizeof *w); \ + w += slice.n;) \ + writesock(fd, x, slice.n*t->ndim*sizeof *x); \ + x += slice.n*t->ndim; \ + } \ + slice.i += slice.n; \ + n -= slice.n; \ + ++running; \ +} while( 0 ) + +#define GetSamples(fd) do { \ + readsock(fd, &rslice, sizeof rslice); \ + MASTER("reading samples (sli:%lu[+" NUMBER "f:%lu]) from fd %d", \ + sizeof rslice, rslice.n, t->ncomp*sizeof *f, fd); \ + if( rslice.n == -1 ) abort = 1; \ + else SHM_ONLY(if( t->shmid == -1 )) \ + readsock(fd, f + rslice.i*t->ncomp, rslice.n*t->ncomp*sizeof *f); \ + --running; \ +} while( 0 ) + + ++pcores; + pfp = spin->fp; + for( core = -naccel; n && core < ncores; ++core ) { + cint fd = pfp++->fd; + pcores -= (core == nx); + slice.n = (core < 0) ? paccel : pcores; + PutSamples(fd); + } + + abort = 0; + + while( running ) { + int fdmax = 0; + + FD_ZERO(&ready); + pfp = spin->fp; + for( core = -naccel; core < ncores; ++core ) { + cint fd = pfp++->fd; + FD_SET(fd, &ready); + fdmax = IMax(fdmax, fd); + } + fdmax = select(fdmax + 1, &ready, NULL, NULL, NULL); + + pfp = spin->fp; + for( core = -naccel; core < ncores; ++core ) { + cint fd = pfp++->fd; + if( FD_ISSET(fd, &ready) ) { + GetSamples(fd); + if( abort ) break; + if( n ) PutSamples(fd); + if( --fdmax == 0 ) break; + } + } + } + + if( abort ) longjmp(t->abort, -99); + +#ifdef FRAMECOPY + if( t->shmid != -1 ) + Copy(f, t->frame + slice.m*(NW + t->ndim), slice.m*t->ncomp); +#endif +} + +/*********************************************************************/ + +static void DoSample(This *t, number n, creal *x, real *f + VES_ONLY(, creal *w, ccount iter)) +{ + if( t->spin == NULL || + t->spin->spec.ncores + t->spin->spec.naccel < MINCORES || + n < MINCORES*MINSLICE ) + DoSampleSerial(t, n, x, f VES_ONLY(, w, iter)); + else + DoSampleParallel(t, n, x, f VES_ONLY(, w, iter)); +} + +/*********************************************************************/ + +#ifdef DIVONNE + +typedef struct { + number neval, neval_opt, neval_cut; + count nregions, iregion, retval; +} ExploreResult; + +static inline int ExploreParallel(This *t, cint iregion) +{ + Vector(Totals, totals, NCOMP); + csize_t regionsize = RegionSize; + Region *region; + Spin *spin = t->spin; + cint cores = spin->spec.naccel + spin->spec.ncores; + int core = t->running; + int ireg = iregion; + + if( core >= ((iregion < 0) ? 1 : cores) ) { + fd_set ready; + int fd = 0, fdmax = 0; + ExploreResult res; + count comp, succ; + + FD_ZERO(&ready); + for( core = 0; core < cores; ++core ) { + fd = spin->fp[core].fd; + FD_SET(fd, &ready); + fdmax = IMax(fd, fdmax); + } + select(fdmax + 1, &ready, NULL, NULL, NULL); + + for( core = 0; core < cores; ++core ) { + fd = spin->fp[core].fd; + if( FD_ISSET(fd, &ready) ) break; + } + + --t->running; + MASTER("reading res + region (res:%lu+reg:%lu) from fd %d", + sizeof res, regionsize, fd); + readsock(fd, &res, sizeof res); + ireg = res.iregion; + region = RegionPtr(ireg); + succ = ireg + region->next; + readsock(fd, region, regionsize); + if( --res.nregions > 0 ) { + region->next = t->nregions - ireg; + EnlargeRegions(t, res.nregions); + MASTER("reading regions (%dreg:%lu) from fd %d", + res.nregions, regionsize, fd); + readsock(fd, RegionPtr(t->nregions), res.nregions*regionsize); + t->nregions += res.nregions; + + RegionPtr(t->nregions-1)->next = succ - t->nregions + 1; + } + + MASTER("reading totals (tot:%lu) from fd %d", + t->ncomp*sizeof(Totals), fd); + readsock(fd, totals, t->ncomp*sizeof(Totals)); + for( comp = 0; comp < t->ncomp; ++comp ) + t->totals[comp].secondspread = + Max(t->totals[comp].secondspread, totals[comp].secondspread); + + t->neval += res.neval; + t->neval_opt += res.neval_opt; + t->neval_cut += res.neval_cut; + + if( res.retval == -1 ) return -1; + } + + if( iregion >= 0 ) { + Slice slice; + cint fd = spin->fp[core].fd; + slice.n = 0; + slice.i = iregion; + slice.phase = t->phase; + region = RegionPtr(iregion); + MASTER("writing region (sli:%lu+sam:%lu+reg:%lu+tot:%lu) to fd %d", + sizeof slice, sizeof(Samples), regionsize, + t->ncomp*sizeof(Totals), fd); + writesock(fd, &slice, sizeof slice); + writesock(fd, &t->samples[region->isamples], sizeof(Samples)); + writesock(fd, region, regionsize); + writesock(fd, t->totals, t->ncomp*sizeof(Totals)); + region->depth = 0; + ++t->running; + } + + return ireg; +} + +/*********************************************************************/ + +static int Explore(This *t, cint iregion) +{ + if( t->spin == NULL || + t->spin->spec.ncores + t->spin->spec.naccel < MINCORES ) + return ExploreSerial(t, iregion); + else + return ExploreParallel(t, iregion); +} + +#endif + +/*********************************************************************/ + +static void Worker(This *t, const size_t alloc, cint core, cint fd) +{ + Slice slice; + + if( readsock(fd, &slice, sizeof slice) == sizeof slice && + slice.n != -1 ) { +#ifdef DIVONNE + csize_t regionsize = RegionSize; + Vector(Totals, totals, NCOMP); + Spin spin = {{0, 0, 0, 0}}; /* no recursive forks */ + + t->totals = totals; + t->spin = &spin; + t->size = 2*t->ndim + 2; + AllocRegions(t); +#endif + + if( alloc ) { +#ifndef DIVONNE + FrameAlloc(t, Worker); +#endif +#if defined DIVONNE || defined CUHRE + RuleAlloc(t); +#endif + } +#ifdef SUAVE + else SHM_ONLY(if( t->shmid == -1 )) + MemAlloc(t->frame, t->nframe*SAMPLESIZE); +#endif + + if( cubafun_.initfun ) cubafun_.initfun(cubafun_.initarg, &core); + + do { + number n = slice.n; + WORKER("received slice.n = " NUMBER, n); + DIV_ONLY(t->phase = slice.phase;) + + if( n > 0 ) { + real VES_ONLY(*w,) *x, *f; + WORKER("reading samples (sli:%lu[+" VES_ONLY(NUMBER "w:%lu+") + NUMBER "x:%lu]) from fd %d", + sizeof slice, VES_ONLY(n, sizeof *w,) n, t->ndim*sizeof *x, fd); + +#ifdef DIVONNE + if( slice.m > t->nframe ) { + FrameFree(t, Worker); + t->nframe = slice.m; + SHM_ONLY(t->shmid = slice.shmid;) + FrameAlloc(t, Worker); + } +#endif + + VES_ONLY(w = t->frame;) + x = t->frame + slice.m*NW; + f = x + slice.m*t->ndim; + + SHM_ONLY(if( t->shmid != -1 ) { + VES_ONLY(w += slice.i;) + x += slice.i*t->ndim; + f += slice.i*t->ncomp; + } + else) { + VES_ONLY(readsock(fd, w, n*sizeof *w);) + readsock(fd, x, n*t->ndim*sizeof *x); + } + + slice.n |= SampleRaw(t, n, x, f, core VES_ONLY(, w, slice.iter)); + WORKER("writing samples (sli:%lu[+" NUMBER "f:%lu]) to fd %d", + sizeof slice, slice.n, t->ncomp*sizeof *f, fd); + writesock(fd, &slice, sizeof slice); + if( SHM_ONLY(t->shmid == -1 &&) slice.n != -1 ) + writesock(fd, f, slice.n*t->ncomp*sizeof *f); + } +#ifdef DIVONNE + else { + Samples *samples, psamples; + ExploreResult res; + + WORKER("reading region (sli:%lu+sam:%lu+reg:%lu+tot:%lu) from fd %d", + sizeof slice, sizeof psamples, regionsize, + t->ncomp*sizeof(Totals), fd); + readsock(fd, &psamples, sizeof psamples); + readsock(fd, t->region, regionsize); + readsock(fd, totals, t->ncomp*sizeof(Totals)); + t->nregions = 1; + t->neval = t->neval_opt = t->neval_cut = 0; + + samples = &t->samples[RegionPtr(0)->isamples]; + if( psamples.n != samples->n ) { + SamplesFree(samples); + *samples = psamples; + SamplesAlloc(t, samples); + } + + res.retval = ExploreSerial(t, 0); + res.neval = t->neval; + res.neval_opt = t->neval_opt; + res.neval_cut = t->neval_cut; + res.nregions = t->nregions; + res.iregion = slice.i; + WORKER("writing regions (res:%lu+%dreg:%lu+tot:%lu) to fd %d", + sizeof res, t->nregions, regionsize, + t->ncomp*sizeof(Totals), fd); + writesock(fd, &res, sizeof res); + writesock(fd, t->region, t->nregions*regionsize); + writesock(fd, totals, t->ncomp*sizeof(Totals)); + } +#endif + } while( readsock(fd, &slice, sizeof slice) == sizeof slice && + slice.n != -1 ); + + if( cubafun_.exitfun ) cubafun_.exitfun(cubafun_.exitarg, &core); + +#if defined DIVONNE || defined CUHRE + RuleFree(t); +#endif + + FrameFree(t, Worker); + +#ifdef DIVONNE + free(t->region); +#endif + } + + WORKER("worker wrapping up"); +} + +/*********************************************************************/ + +static inline void ForkCores(This *t) +{ + dispatch d; + const fdpid *pfp; + int ncores, core; + + DIV_ONLY(t->running = 0;) + + d.worker = Worker; + d.thisptr = t; + d.thissize = sizeof *t; + + if( t->spin == NULL ) { + SUFFIX(cubafork)(&t->spin); + if( t->spin == NULL ) return; + d.thissize = 0; + } + + pfp = t->spin->fp; + ncores = t->spin->spec.ncores; + for( core = -t->spin->spec.naccel; core < ncores; ++core ) { + cint fd = pfp++->fd; + writesock(fd, &d, sizeof d); + if( d.thissize ) writesock(fd, t, d.thissize); + } +} + +/*********************************************************************/ + +static inline void WaitCores(This *t, Spin **pspin) +{ + if( Invalid(pspin) ) SUFFIX(cubawait)(&t->spin); + else { + Slice slice = { .n = -1 }; + cint cores = t->spin->spec.naccel + t->spin->spec.ncores; + const fdpid *pfp = t->spin->fp; + int core; + for( core = 0; core < cores; ++core ) + writesock(pfp[core].fd, &slice, sizeof slice); + *pspin = t->spin; + MasterExit(); + } +} + diff --git a/Cuba/src/common/Random.c b/Cuba/src/common/Random.c new file mode 100644 index 0000000..6d60615 --- /dev/null +++ b/Cuba/src/common/Random.c @@ -0,0 +1,344 @@ +/* + Random.c + quasi- and pseudo-random-number generation + last modified 18 Mar 14 th +*/ + + +/* + PART 1: Sobol quasi-random-number generator + adapted from ACM TOMS algorithm 659 +*/ + +static void SobolGet(This *t, real *x) +{ + number seq = t->rng.sobol.seq++; + count zerobit = 0, dim; + + while( seq & 1 ) { + ++zerobit; + seq >>= 1; + } + + for( dim = 0; dim < t->ndim; ++dim ) { + t->rng.sobol.prev[dim] ^= t->rng.sobol.v[dim][zerobit]; + x[dim] = t->rng.sobol.prev[dim]*t->rng.sobol.norm; + } +} + + +static void SobolSkip(This *t, number n) +{ + while( n-- ) { + number seq = t->rng.sobol.seq++; + count zerobit = 0, dim; + + while( seq & 1 ) { + ++zerobit; + seq >>= 1; + } + + for( dim = 0; dim < t->ndim; ++dim ) + t->rng.sobol.prev[dim] ^= t->rng.sobol.v[dim][zerobit]; + } +} + + +static inline void SobolIni(This *t) +{ + static number ini[9*40] = { + 3, 1, 0, 0, 0, 0, 0, 0, 0, + 7, 1, 1, 0, 0, 0, 0, 0, 0, + 11, 1, 3, 7, 0, 0, 0, 0, 0, + 13, 1, 1, 5, 0, 0, 0, 0, 0, + 19, 1, 3, 1, 1, 0, 0, 0, 0, + 25, 1, 1, 3, 7, 0, 0, 0, 0, + 37, 1, 3, 3, 9, 9, 0, 0, 0, + 59, 1, 3, 7, 13, 3, 0, 0, 0, + 47, 1, 1, 5, 11, 27, 0, 0, 0, + 61, 1, 3, 5, 1, 15, 0, 0, 0, + 55, 1, 1, 7, 3, 29, 0, 0, 0, + 41, 1, 3, 7, 7, 21, 0, 0, 0, + 67, 1, 1, 1, 9, 23, 37, 0, 0, + 97, 1, 3, 3, 5, 19, 33, 0, 0, + 91, 1, 1, 3, 13, 11, 7, 0, 0, + 109, 1, 1, 7, 13, 25, 5, 0, 0, + 103, 1, 3, 5, 11, 7, 11, 0, 0, + 115, 1, 1, 1, 3, 13, 39, 0, 0, + 131, 1, 3, 1, 15, 17, 63, 13, 0, + 193, 1, 1, 5, 5, 1, 27, 33, 0, + 137, 1, 3, 3, 3, 25, 17, 115, 0, + 145, 1, 1, 3, 15, 29, 15, 41, 0, + 143, 1, 3, 1, 7, 3, 23, 79, 0, + 241, 1, 3, 7, 9, 31, 29, 17, 0, + 157, 1, 1, 5, 13, 11, 3, 29, 0, + 185, 1, 3, 1, 9, 5, 21, 119, 0, + 167, 1, 1, 3, 1, 23, 13, 75, 0, + 229, 1, 3, 3, 11, 27, 31, 73, 0, + 171, 1, 1, 7, 7, 19, 25, 105, 0, + 213, 1, 3, 5, 5, 21, 9, 7, 0, + 191, 1, 1, 1, 15, 5, 49, 59, 0, + 253, 1, 1, 1, 1, 1, 33, 65, 0, + 203, 1, 3, 5, 15, 17, 19, 21, 0, + 211, 1, 1, 7, 11, 13, 29, 3, 0, + 239, 1, 3, 7, 5, 7, 11, 113, 0, + 247, 1, 1, 5, 3, 15, 19, 61, 0, + 285, 1, 3, 1, 1, 9, 27, 89, 7, + 369, 1, 1, 3, 7, 31, 15, 45, 23, + 299, 1, 3, 3, 9, 9, 25, 107, 39 }; + + count dim, bit, nbits; + number *pini = ini, max; + + for( nbits = 0, max = t->maxeval; max; max >>= 1 ) ++nbits; + t->rng.sobol.norm = ldexp(.5, -nbits); + + for( bit = 0; bit <= nbits; ++bit ) + t->rng.sobol.v[0][bit] = (number)1 << (nbits - bit); + + for( dim = 1; dim < t->ndim; ++dim ) { + number *pv = t->rng.sobol.v[dim], *pvv = pv; + number powers = *pini++, j; + int inibits = -1, bit; + for( j = powers; j; j >>= 1 ) ++inibits; + + memcpy(pv, pini, inibits*sizeof *pini); + pini += 8; + + for( bit = inibits; bit <= nbits; ++bit ) { + number newv = *pvv, j = powers; + int b; + for( b = 0; b < inibits; ++b ) { + if( j & 1 ) newv ^= pvv[b] << (inibits - b); + j >>= 1; + } + pvv[inibits] = newv; + ++pvv; + } + + for( bit = 0; bit < nbits; ++bit ) + pv[bit] <<= nbits - bit; + } + + t->rng.sobol.seq = 0; + XClear(t->rng.sobol.prev); + + t->rng.getrandom = SobolGet; + t->rng.skiprandom = SobolSkip; +} + + +/* + PART 2: Mersenne Twister pseudo-random-number generator + adapted from T. Nishimura's and M. Matsumoto's C code at + http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html +*/ + +/* 32 or 53 random bits */ +#define RANDOM_BITS 32 + + +static inline state_t Twist(state_t a, state_t b) +{ + state_t mixbits = (a & 0x80000000) | (b & 0x7fffffff); + state_t matrixA = (-(b & 1)) & 0x9908b0df; + return (mixbits >> 1) ^ matrixA; +} + + +static inline void MersenneReload(state_t *state) +{ + state_t *s = state; + int j; + + for( j = MERSENNE_N - MERSENNE_M + 1; --j; ++s ) + *s = s[MERSENNE_M] ^ Twist(s[0], s[1]); + for( j = MERSENNE_M; --j; ++s ) + *s = s[MERSENNE_M - MERSENNE_N] ^ Twist(s[0], s[1]); + *s = s[MERSENNE_M - MERSENNE_N] ^ Twist(s[0], state[0]); +} + + +static inline state_t MersenneInt(state_t s) +{ + s ^= s >> 11; + s ^= (s << 7) & 0x9d2c5680; + s ^= (s << 15) & 0xefc60000; + return s ^ (s >> 18); +} + + +static void MersenneGet(This *t, real *x) +{ + count next = t->rng.mersenne.next, dim; + + for( dim = 0; dim < t->ndim; ++dim ) { +#if RANDOM_BITS == 53 + state_t a, b; +#endif + + if( next >= MERSENNE_N ) { + MersenneReload(t->rng.mersenne.state); + next = 0; + } + +#if RANDOM_BITS == 53 + a = MersenneInt(t->rng.mersenne.state[next++]) >> 5; + b = MersenneInt(t->rng.mersenne.state[next++]) >> 6; + x[dim] = (67108864.*a + b)/9007199254740992.; +#else + x[dim] = MersenneInt(t->rng.mersenne.state[next++])/4294967296.; +#endif + } + + t->rng.mersenne.next = next; +} + + +static void MersenneSkip(This *t, number n) +{ +#if RANDOM_BITS == 53 + n = 2*n*t->ndim + t->rng.mersenne.next; +#else + n = n*t->ndim + t->rng.mersenne.next; +#endif + t->rng.mersenne.next = n % MERSENNE_N; + n /= MERSENNE_N; + while( n-- ) MersenneReload(t->rng.mersenne.state); +} + + +static inline void MersenneIni(This *t) +{ + state_t seed = t->seed; + state_t *next = t->rng.mersenne.state; + count j; + + for( j = 1; j <= MERSENNE_N; ++j ) { + *next++ = seed; + seed = 0x6c078965*(seed ^ (seed >> 30)) + j; + /* see Knuth TAOCP Vol 2, 3rd Ed, p. 106 for multiplier */ + } + + MersenneReload(t->rng.mersenne.state); + t->rng.mersenne.next = 0; + + t->rng.getrandom = MersenneGet; + t->rng.skiprandom = MersenneSkip; +} + + +/* + PART 3: Ranlux subtract-and-borrow random-number generator + proposed by Marsaglia and Zaman, implemented by F. James with + the name RCARRY in 1991, and later improved by Martin Luescher + in 1993 to produce "Luxury Pseudorandom Numbers". + Adapted from the CERNlib Fortran 77 code by F. James, 1993. + + The available luxury levels are: + + level 0 (p = 24): equivalent to the original RCARRY of Marsaglia + and Zaman, very long period, but fails many tests. + level 1 (p = 48): considerable improvement in quality over level 0, + now passes the gap test, but still fails spectral test. + level 2 (p = 97): passes all known tests, but theoretically still + defective. + level 3 (p = 223): DEFAULT VALUE. Any theoretically possible + correlations have very small chance of being observed. + level 4 (p = 389): highest possible luxury, all 24 bits chaotic. +*/ + + +static inline int RanluxInt(This *t, count n) +{ + int s = 0; + + while( n-- ) { + s = t->rng.ranlux.state[t->rng.ranlux.j24] - + t->rng.ranlux.state[t->rng.ranlux.i24] + t->rng.ranlux.carry; + s += (t->rng.ranlux.carry = NegQ(s)) & (1 << 24); + t->rng.ranlux.state[t->rng.ranlux.i24] = s; + --t->rng.ranlux.i24; + t->rng.ranlux.i24 += NegQ(t->rng.ranlux.i24) & 24; + --t->rng.ranlux.j24; + t->rng.ranlux.j24 += NegQ(t->rng.ranlux.j24) & 24; + } + + return s; +} + + +static void RanluxGet(This *t, real *x) +{ +/* The Generator proper: "Subtract-with-borrow", + as proposed by Marsaglia and Zaman, FSU, March 1989 */ + + count dim; + + for( dim = 0; dim < t->ndim; ++dim ) { + cint nskip = (--t->rng.ranlux.n24 >= 0) ? 0 : + (t->rng.ranlux.n24 = 24, t->rng.ranlux.nskip); + cint s = RanluxInt(t, 1 + nskip); + x[dim] = ldexp(s, -24); +/* small numbers (with less than 12 significant bits) are "padded" */ + if( s < (1 << 12) ) + x[dim] += ldexp(t->rng.ranlux.state[t->rng.ranlux.j24], -48); + } +} + + +static void RanluxSkip(This *t, cnumber n) +{ + RanluxInt(t, n + t->rng.ranlux.nskip*(n/24)); + t->rng.ranlux.n24 = 24 - n % 24; +} + + +static inline void RanluxIni(This *t) +{ + cint skip[] = {24, 48, 97, 223, 389, + 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 223, 223, 223, 223}; + int seed = t->seed; + int level = RNG; + count i; + + if( level < Elements(skip) ) level = skip[level]; + t->rng.ranlux.nskip = level - 24; + + t->rng.ranlux.i24 = 23; + t->rng.ranlux.j24 = 9; + t->rng.ranlux.n24 = 24; + + for( i = 0; i < 24; ++i ) { + cint k = seed/53668; + seed = 40014*(seed - k*53668) - k*12211; + seed += NegQ(seed) & 2147483563; + t->rng.ranlux.state[i] = seed & ((1 << 24) - 1); + } + + t->rng.ranlux.carry = ~TrueQ(t->rng.ranlux.state[23]) & (1 << 24); + + t->rng.getrandom = RanluxGet; + t->rng.skiprandom = RanluxSkip; +} + + +/* + PART 4: User routines: + + - IniRandom sets up the random-number generator to produce a + sequence of at least n ndim-dimensional random vectors. + + - GetRandom retrieves one random vector. + + - SkipRandom skips over n random vectors. +*/ + +static inline void IniRandom(This *t) +{ + if( t->seed == 0 ) SobolIni(t); + else if( RNG == 0 ) MersenneIni(t); + else RanluxIni(t); +} + diff --git a/Cuba/src/common/sock.h b/Cuba/src/common/sock.h new file mode 100644 index 0000000..13507c8 --- /dev/null +++ b/Cuba/src/common/sock.h @@ -0,0 +1,65 @@ +/* + sock.h + socket read/write + by Thomas Hahn + last modified 27 May 14 th +*/ + +#include <sys/socket.h> + +#ifdef DEBUG +#define TERM_RED "\e[31m" +#define TERM_BLUE "\e[34m" +#define TERM_RESET "\e[0m\n" +#define MASTER(s, ...) \ +fprintf(stderr, TERM_RED ROUTINE " master %d(%d): " s TERM_RESET, core, getpid(), ##__VA_ARGS__) +#define WORKER(s, ...) \ +fprintf(stderr, TERM_BLUE ROUTINE " worker %d(%d): " s TERM_RESET, core, getpid(), ##__VA_ARGS__) +#define DEB_ONLY(...) __VA_ARGS__ +#else +#define MASTER(s, ...) +#define WORKER(s, ...) +#define DEB_ONLY(...) +#endif + +#ifdef LOW_LEVEL_DEBUG +#define TERM_GREEN "\e[32m" +#define TERM_MAGENTA "\e[35m" +#define READ(s, ...) \ +fprintf(stderr, TERM_GREEN ROUTINE " pid %d: read " s TERM_RESET, getpid(), ##__VA_ARGS__) +#define WRITE(s, ...) \ +fprintf(stderr, TERM_MAGENTA ROUTINE " pid %d: write " s TERM_RESET, getpid(), ##__VA_ARGS__) +#else +#define READ(s, ...) +#define WRITE(s, ...) +#endif + +/*********************************************************************/ + +#ifndef MSG_WAITALL +/* Windows */ +#define MSG_WAITALL 0 +#endif + +static inline int readsock(cint fd, void *data, csize_t n) +{ + ssize_t got; + size_t remain = n; + do got = recv(fd, data, remain, MSG_WAITALL); + while( got > 0 && (data += got, remain -= got) > 0 ); + READ("%lu bytes at %p from fd %d", n, data, fd); + return got; +} + +/*********************************************************************/ + +static inline int writesock(cint fd, const void *data, csize_t n) +{ + ssize_t got; + size_t remain = n; + do got = send(fd, data, remain, MSG_WAITALL); + while( got > 0 && (data += got, remain -= got) > 0 ); + WRITE("%lu bytes at %p to fd %d", n, data, fd); + return got; +} + diff --git a/Cuba/src/common/stddecl.h b/Cuba/src/common/stddecl.h new file mode 100644 index 0000000..8b82a10 --- /dev/null +++ b/Cuba/src/common/stddecl.h @@ -0,0 +1,561 @@ +/* + stddecl.h + declarations common to all Cuba routines + last modified 23 Apr 15 th +*/ + + +#ifndef _stddecl_h_ +#define _stddecl_h_ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#define _BSD_SOURCE +#define _SVID_SOURCE + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <math.h> +#include <float.h> +#include <limits.h> +#include <unistd.h> +#include <assert.h> +#include <fcntl.h> +#include <setjmp.h> +#include <sys/stat.h> +#include <sys/types.h> +#ifdef HAVE_FORK +#include <sys/wait.h> +#include <sys/socket.h> +#include <signal.h> +#ifdef HAVE_SHMGET +#include <sys/ipc.h> +#include <sys/shm.h> +#endif +#endif + +#ifdef HAVE_ALLOCA_H +#include <alloca.h> +#elif defined __GNUC__ +#define alloca __builtin_alloca +#elif defined _AIX +#define alloca __alloca +#elif defined _MSC_VER +#include <malloc.h> +#define alloca _alloca +#else +#include <stddef.h> +#ifdef __cplusplus +extern "C" +#endif +void *alloca (size_t); +#endif + +#ifndef NDIM +#define NDIM t->ndim +#define MAXDIM 1024 +#else +#define MAXDIM NDIM +#endif + +#ifndef NCOMP +#define NCOMP t->ncomp +#define MAXCOMP 1024 +#else +#define MAXCOMP NCOMP +#endif + +#if defined(VEGAS) || defined(SUAVE) +#define VES_ONLY(...) __VA_ARGS__ +#define NW 1 +#else +#define VES_ONLY(...) +#define NW 0 +#endif + +#ifdef DIVONNE +#define DIV_ONLY(...) __VA_ARGS__ +#else +#define DIV_ONLY(...) +#endif + +#define SAMPLESIZE (NW + t->ndim + t->ncomp)*sizeof(real) + + +enum { uninitialized = 0x61627563 }; + +#define EnvInit(var, name, default) \ + if( var == uninitialized ) { \ + cchar *env = getenv(name); \ + if( env == NULL ) var = default; \ + else { \ + var = atoi(env); \ + if( cubaverb_ ) { \ + char out[64]; \ + sprintf(out, "env " name " = %d", (int)var); \ + Print(out); \ + } \ + } \ + } + +#define VerboseInit() EnvInit(cubaverb_, "CUBAVERBOSE", 0) +#define MaxVerbose(flags) (flags + IDim(IMin(cubaverb_, 3) - ((flags) & 3))) + +#define VERBOSE (t->flags & 3) +#define LAST (t->flags & 4) +#define SHARPEDGES (t->flags & 8) +#define KEEPFILE (t->flags & 16) +#define ZAPSTATE (t->flags & 32) +#define REGIONS (t->flags & 128) +#define RNG (t->flags >> 8) + +#define INFTY DBL_MAX + +#if __STDC_VERSION__ >= 199901L +#define POW2(n) 0x1p-##n +#else +#define POW2(n) ldexp(1., -n) +#endif + +#define NOTZERO POW2(104) + +#define ABORT -999 + +#define Elements(x) (sizeof(x)/sizeof(*x)) + +#define Copy(d, s, n) memcpy(d, s, (n)*sizeof(*(d))) + +#define Move(d, s, n) memmove(d, s, (n)*sizeof(*(d))) + +#define XCopy(d, s) Copy(d, s, t->ndim) + +#define FCopy(d, s) Copy(d, s, t->ncomp) + +#define Clear(d, n) memset(d, 0, (n)*sizeof(*(d))) + +#define XClear(d) Clear(d, t->ndim) + +#define FClear(d) Clear(d, t->ncomp) + +#define Zap(d) memset(d, 0, sizeof(d)) + +#define MaxErr(avg) Max(t->epsrel*fabsx(avg), t->epsabs) + +#ifdef __cplusplus +#define mallocset(p, n) (*(void **)&p = malloc(n)) +#define reallocset(p, n) (*(void **)&p = realloc(p, n)) +#else +#define mallocset(p, n) (p = malloc(n)) +#define reallocset(p, n) (p = realloc(p, n)) +#endif + +#define Abort(s) abort1(s, __LINE__) +#define abort1(s, line) abort2(s, line) +#define abort2(s, line) { perror(s " " __FILE__ "(" #line ")"); exit(1); } + +#define Die(p) if( (p) == NULL ) Abort("malloc") + +#define MemAlloc(p, n) Die(mallocset(p, n)) +#define ReAlloc(p, n) Die(reallocset(p, n)) +#define Alloc(p, n) MemAlloc(p, (n)*sizeof(*p)) + +#if __STDC_VERSION__ >= 199901L +#define Sized(type, var, size) char var##_[size]; type *var = (type *)var##_ +#define Vector(type, var, n1) type var[n1] +#define Array(type, var, n1, n2) type var[n1][n2] +#else +#define Sized(type, var, size) type *var = alloca(size) +#define Vector(type, var, n1) type *var = alloca((n1)*sizeof(type)) +#define Array(type, var, n1, n2) type (*var)[n2] = alloca((n1)*(n2)*sizeof(type)) +#endif + +#define FORK_ONLY(...) +#define SHM_ONLY(...) +#define ShmAlloc(...) +#define ShmFree(...) + +#ifdef MLVERSION +#define ML_ONLY(...) __VA_ARGS__ +#define ML_NOT(...) +#else +#define ML_ONLY(...) +#define ML_NOT(...) __VA_ARGS__ + +#define CORE_MASTER (int []){32768} +#define MasterInit() do if( !cubafun_.init ) { \ + cubafun_.init = true; \ + if( cubafun_.initfun ) cubafun_.initfun(cubafun_.initarg, CORE_MASTER); \ +} while( 0 ) +#define MasterExit() do if( cubafun_.init ) { \ + cubafun_.init = false; \ + if( cubafun_.exitfun ) cubafun_.exitfun(cubafun_.exitarg, CORE_MASTER); \ +} while( 0 ) +#define Invalid(s) ((s) == NULL || *(int *)(s) == -1) + +#ifdef HAVE_FORK +#undef FORK_ONLY +#define FORK_ONLY(...) __VA_ARGS__ + +#ifdef HAVE_SHMGET +#undef SHM_ONLY +#define SHM_ONLY(...) __VA_ARGS__ + +#define MasterAlloc(t) \ + t->shmid = shmget(IPC_PRIVATE, t->nframe*SAMPLESIZE, IPC_CREAT | 0600) +#define MasterFree(t) shmctl(t->shmid, IPC_RMID, NULL) +#define WorkerAlloc(t) +#define WorkerFree(r) + +#undef ShmAlloc +#define ShmAlloc(t, who) \ + who##Alloc(t); \ + if( t->shmid != -1 ) { \ + t->frame = shmat(t->shmid, NULL, 0); \ + if( t->frame == (void *)-1 ) Abort("shmat"); \ + } + +#undef ShmFree +#define ShmFree(t, who) \ + if( t->shmid != -1 ) { \ + shmdt(t->frame); \ + who##Free(t); \ + } + +#endif +#endif +#endif + +#define FrameAlloc(t, who) \ + SHM_ONLY(ShmAlloc(t, who) else) \ + MemAlloc(t->frame, t->nframe*SAMPLESIZE); + +#define FrameFree(t, who) \ + DIV_ONLY(if( t->nframe )) { \ + SHM_ONLY(ShmFree(t, who) else) \ + free(t->frame); \ + } + + +#define StateDecl \ +char *statefile_tmp = NULL, *statefile_XXXXXX = NULL; \ +int statemsg = VERBOSE; \ +ssize_t ini = 1; \ +struct stat st + +#define StateSetup(t) if( (t)->statefile ) { \ + if( *(t)->statefile == 0 ) (t)->statefile = NULL; \ + else { \ + ccount len = strlen((t)->statefile); \ + statefile_tmp = alloca(len + 8); \ + strcpy(statefile_tmp, (t)->statefile); \ + statefile_XXXXXX = statefile_tmp + len; \ + } \ +} + +typedef long long int signature_t; + +enum { signature = 0x41425543 }; + +#define StateSignature(t, i) (signature + \ + ((signature_t)(i) << 60) + \ + ((signature_t)(t)->ncomp << 48) + \ + ((signature_t)(t)->ndim << 32)) + +#define StateReadTest(t) (t)->statefile && \ + stat((t)->statefile, &st) == 0 && (st.st_mode & 0400) + +#define StateReadOpen(t, fd) do { \ + int fd; \ + if( (fd = open((t)->statefile, O_RDONLY)) != -1 ) { \ + do + +#define StateRead(fd, buf, size) \ + ini += size - read(fd, buf, size) + +#define StateReadClose(t, fd) \ + while( (--ini, 0) ); \ + close(fd); \ + } \ + if( ini | statemsg ) { \ + char s[512]; \ + sprintf(s, ini ? \ + "\nError restoring state from %s, starting from scratch." : \ + "\nRestored state from %s.", (t)->statefile); \ + Print(s); \ + } \ +} while( 0 ) + + +#define StateWriteTest(t) ((t)->statefile) + +#define StateWriteOpen(t, fd) do { \ + ssize_t fail = 1; \ + int fd; \ + strcpy(statefile_XXXXXX, "-XXXXXX"); \ + if( (fd = mkstemp(statefile_tmp)) != -1 ) { \ + do + +#define StateWrite(fd, buf, size) \ + fail += size - write(fd, buf, size) + +#define StateWriteClose(t, fd) \ + while( (--fail, 0) ); \ + close(fd); \ + if( fail == 0 ) fail |= rename(statefile_tmp, (t)->statefile); \ + } \ + if( fail | statemsg ) { \ + char s[512]; \ + sprintf(s, fail ? \ + "\nError saving state to %s." : \ + "\nSaved state to %s.", (t)->statefile); \ + Print(s); \ + statemsg &= fail & -2; \ + } \ +} while( 0 ) + + +#define StateRemove(t) \ +if( fail == 0 && (t)->statefile && KEEPFILE == 0 ) unlink((t)->statefile) + + +#ifdef __cplusplus +#define Extern extern "C" +#else +#define Extern extern +typedef enum { false, true } bool; +#endif + +typedef const char cchar; + +typedef const bool cbool; + +typedef const int cint; + +typedef const long clong; + +typedef const size_t csize_t; + +#define COUNT "%d" +typedef /*unsigned*/ int count; +typedef const count ccount; + +#ifdef LONGLONGINT +#define PREFIX(s) ll##s +#define NUMBER "%lld" +#define NUMBER7 "%7lld" +#define NUMBER_MAX LLONG_MAX +typedef long long int number; +#else +#define PREFIX(s) s +#define NUMBER "%d" +#define NUMBER7 "%7d" +#define NUMBER_MAX INT_MAX +typedef int number; +#endif +typedef const number cnumber; + +#define REAL "%g" +#define REALF "%f" +#define SHOW(r) (double)(r) + /* floating-point numbers are printed with SHOW */ + +#if REALSIZE == 16 +#include <quadmath.h> +typedef __float128 real; +#define RC(x) x##Q +#define sqrtx sqrtq +#define expx expq +#define powx powq +#define erfx erfq +#define fabsx fabsq +#define ldexpx ldexpq +#define REAL_MAX_EXP FLT128_MAX_EXP +#define REAL_MAX FLT128_MAX +#elif REALSIZE == 10 +typedef long double real; +#define RC(x) x##L +#define sqrtx sqrtl +#define expx expl +#define powx powl +#define erfx erfl +#define fabsx fabsl +#define ldexpx ldexpl +#define REAL_MAX_EXP LDBL_MAX_EXP +#define REAL_MAX LDBL_MAX +#define MLPutRealxList MLPutReal128List +#define MLGetRealxList MLGetReal128List +#define MLReleaseRealxList MLReleaseReal128List +#else +typedef double real; +#define RC(x) x +#define sqrtx sqrt +#define expx exp +#define powx pow +#define erfx erf +#define fabsx fabs +#define ldexpx ldexp +#define REAL_MAX_EXP DBL_MAX_EXP +#define REAL_MAX DBL_MAX +#define MLPutRealxList MLPutReal64List +#define MLGetRealxList MLGetReal64List +#define MLReleaseRealxList MLReleaseReal64List +#endif + +typedef const real creal; + +typedef void (*subroutine)(void *, cint *); + +typedef struct { + subroutine initfun; + void *initarg; + subroutine exitfun; + void *exitarg; + bool init; +} coreinit; + +typedef struct { + int ncores, naccel; + int pcores, paccel; +} corespec; + +typedef struct { + int fd, pid; +} fdpid; + +typedef struct { + corespec spec; + fdpid fp[]; +} Spin; + + +struct _this; + +typedef struct { + void (*worker)(struct _this *, csize_t, cint, cint); + struct _this *thisptr; + size_t thissize; +} dispatch; + + +typedef unsigned int state_t; + +#define SOBOL_MINDIM 1 +#define SOBOL_MAXDIM 40 + +/* length of state vector */ +#define MERSENNE_N 624 + +/* period parameter */ +#define MERSENNE_M 397 + +typedef struct { + void (*getrandom)(struct _this *t, real *x); + void (*skiprandom)(struct _this *t, cnumber n); + union { + struct { + real norm; + number v[SOBOL_MAXDIM][30], prev[SOBOL_MAXDIM]; + number seq; + } sobol; + struct { + state_t state[MERSENNE_N]; + count next; + } mersenne; + struct { + count n24, i24, j24, nskip; + int carry, state[24]; + } ranlux; + }; +} RNGState; + + +#if NOUNDERSCORE +#define SUFFIX(s) s +#else +#define SUFFIX(s) s##_ +#endif + +#define EXPORT(s) EXPORT_(PREFIX(s)) +#define EXPORT_(s) SUFFIX(s) + + +#define CString(cs, fs, len) { \ + char *_s = NULL; \ + if( fs ) { \ + int _l = len; \ + while( _l > 0 && fs[_l - 1] == ' ' ) --_l; \ + if( _l > 0 && (_s = alloca(_l + 1)) ) { \ + memcpy(_s, fs, _l); \ + _s[_l] = 0; \ + } \ + } \ + cs = _s; \ +} + +static inline real Sq(creal x) { + return x*x; +} + +static inline real Min(creal a, creal b) { + return (a < b) ? a : b; +} + +static inline real Max(creal a, creal b) { + return (a > b) ? a : b; +} + +static inline real Weight(creal sum, creal sqsum, cnumber n) { + creal w = sqrtx(sqsum*n); + return (n - 1)/Max((w + sum)*(w - sum), NOTZERO); +} + + +/* (a < 0) ? -1 : 0 */ +#define NegQ(a) ((a) >> (sizeof(a)*8 - 1)) + +/* (a < 0) ? -1 : 1 */ +#define Sign(a) (1 + 2*NegQ(a)) + +/* (a < 0) ? 0 : a */ +#define IDim(a) ((a) & NegQ(-(a))) + +/* (a < b) ? a : b */ +#define IMin(a, b) ((a) - IDim((a) - (b))) + +/* (a > b) ? a : b */ +#define IMax(a, b) ((b) + IDim((a) - (b))) + +/* (a == 0) ? 0 : -1 */ +#define TrueQ(a) NegQ((a) | (-a)) + +/* a + (a == 0) */ +#define Min1(a) ((a) + 1 + TrueQ(a)) + +/* abs(a) + (a == 0) */ +#define Abs1(a) (((a) ^ NegQ(a)) - NegQ((a) - 1)) + + +#ifdef MLVERSION + +static inline void Print(MLCONST char *s) +{ + MLPutFunction(stdlink, "EvaluatePacket", 1); + MLPutFunction(stdlink, "Print", 1); + MLPutString(stdlink, s); + MLEndPacket(stdlink); + + MLNextPacket(stdlink); + MLNewPacket(stdlink); +} + +#else + +#define Print(s) puts(s); fflush(stdout) + +#endif + +#endif + diff --git a/Cuba/src/cuhre/Cuhre.c b/Cuba/src/cuhre/Cuhre.c new file mode 100644 index 0000000..6dc0aaa --- /dev/null +++ b/Cuba/src/cuhre/Cuhre.c @@ -0,0 +1,84 @@ +/* + Cuhre.c + Adaptive integration using cubature rules + by Thomas Hahn + last modified 22 Jul 14 th +*/ + + +#define CUHRE +#define ROUTINE "Cuhre" + +#include "decl.h" +#include "CSample.c" + +/*********************************************************************/ + +Extern void EXPORT(Cuhre)(ccount ndim, ccount ncomp, + Integrand integrand, void *userdata, cnumber nvec, + creal epsrel, creal epsabs, + cint flags, cnumber mineval, cnumber maxeval, + ccount key, cchar *statefile, Spin **pspin, + count *pnregions, number *pneval, int *pfail, + real *integral, real *error, real *prob) +{ + This t; + + VerboseInit(); + + t.ndim = ndim; + t.ncomp = ncomp; + t.integrand = integrand; + t.userdata = userdata; + t.nvec = nvec; + t.epsrel = epsrel; + t.epsabs = epsabs; + t.flags = MaxVerbose(flags); + t.mineval = mineval; + t.maxeval = maxeval; + t.key = key; + t.statefile = statefile; + FORK_ONLY(t.spin = Invalid(pspin) ? NULL : *pspin;) + + *pfail = Integrate(&t, integral, error, prob); + *pnregions = t.nregions; + *pneval = t.neval; + + WaitCores(&t, pspin); +} + +/*********************************************************************/ + +Extern void EXPORT(cuhre)(ccount *pndim, ccount *pncomp, + Integrand integrand, void *userdata, cnumber *pnvec, + creal *pepsrel, creal *pepsabs, + cint *pflags, cnumber *pmineval, cnumber *pmaxeval, + ccount *pkey, cchar *statefile, Spin **pspin, + count *pnregions, number *pneval, int *pfail, + real *integral, real *error, real *prob, cint statefilelen) +{ + This t; + + VerboseInit(); + + t.ndim = *pndim; + t.ncomp = *pncomp; + t.integrand = integrand; + t.userdata = userdata; + t.nvec = *pnvec; + t.epsrel = *pepsrel; + t.epsabs = *pepsabs; + t.flags = MaxVerbose(*pflags); + t.mineval = *pmineval; + t.maxeval = *pmaxeval; + t.key = *pkey; + CString(t.statefile, statefile, statefilelen); + FORK_ONLY(t.spin = Invalid(pspin) ? NULL : *pspin;) + + *pfail = Integrate(&t, integral, error, prob); + *pnregions = t.nregions; + *pneval = t.neval; + + WaitCores(&t, pspin); +} + diff --git a/Cuba/src/cuhre/Cuhre.tm b/Cuba/src/cuhre/Cuhre.tm new file mode 100644 index 0000000..1902ab9 --- /dev/null +++ b/Cuba/src/cuhre/Cuhre.tm @@ -0,0 +1,218 @@ +:Evaluate: BeginPackage["Cuba`"] + +:Evaluate: Cuhre::usage = + "Cuhre[f, {x, xmin, xmax}..] computes a numerical approximation to the integral of the real scalar or vector function f. + The output is a list with entries of the form {integral, error, chi-square probability} for each component of the integrand." + +:Evaluate: MinPoints::usage = "MinPoints is an option of Cuhre. + It specifies the minimum number of points to sample." + +:Evaluate: Key::usage = "Key is an option of Cuhre. + It specifies the basic integration rule:\n + 7 = use a degree-7 rule,\n + 9 = use a degree-9 rule,\n + 11 = use a degree-11 rule (available only in 3 dimensions),\n + 13 = use a degree-13 rule (available only in 2 dimensions),\n + otherwise the default rule is used: the degree-13 rule in 2 dimensions, the degree-11 rule in 3 dimensions, else the degree-9 rule." + +:Evaluate: StateFile::usage = "StateFile is an option of Cuhre. + It specifies a file in which the internal state is stored after each iteration and from which it can be restored on a subsequent run. + The state file is removed once the prescribed accuracy has been reached." + +:Evaluate: Final::usage = "Final is an option of Cuhre. + It can take the values Last or All which determine whether only the last (largest) or all sets of samples collected on a subregion over the iterations contribute to the final result." + +:Evaluate: RetainStateFile::usage = "RetainStateFile is an option of Cuhre. + It determines whether a chosen state file is kept even if the integration terminates normally." + +:Evaluate: Regions::usage = "Regions is an option of Cuhre. + It specifies whether the regions into which the integration region has been cut are returned together with the integration results." + +:Evaluate: Region::usage = "Region[ll, ur, res] describes a subregion: + ll and ur are multidimensional equivalents of the region's lower left and upper right corner. + res gives the integration results for the region in a list with entries of the form {integral, error} for each component of the integrand." + +:Evaluate: MapSample::usage = "MapSample is a function used to map the integrand over the points to be sampled." + + +:Evaluate: Begin["`Cuhre`"] + +:Begin: +:Function: Cuhre +:Pattern: MLCuhre[ndim_, ncomp_, + epsrel_, epsabs_, flags_, mineval_, maxeval_, + key_, statefile_] +:Arguments: {ndim, ncomp, + epsrel, epsabs, flags, mineval, maxeval, + key, statefile} +:ArgumentTypes: {Integer, Integer, + Real64, Real64, Integer, Integer, Integer, + Integer, String} +:ReturnType: Manual +:End: + +:Evaluate: Attributes[Cuhre] = {HoldFirst} + +:Evaluate: Options[Cuhre] = {PrecisionGoal -> 3, AccuracyGoal -> 12, + MinPoints -> 0, MaxPoints -> 50000, Key -> 0, StateFile -> "", + Verbose -> 1, Final -> Last, RetainStateFile -> False, + Regions -> False, Compiled -> True} + +:Evaluate: Cuhre[f_, v:{_, _, _}.., opt___Rule] := + Block[ {ff = HoldForm[f], ndim = Length[{v}], ncomp, + tags, vars, lower, range, jac, tmp, defs, intT, + rel, abs, mineval, maxeval, key, state, verbose, final, + retain, regions, compiled}, + Message[Cuhre::optx, #, Cuhre]&/@ + Complement[First/@ {opt}, tags = First/@ Options[Cuhre]]; + {rel, abs, mineval, maxeval, key, state, + verbose, final, retain, regions, compiled} = + tags /. {opt} /. Options[Cuhre]; + {vars, lower, range} = Transpose[{v}]; + jac = Simplify[Times@@ (range -= lower)]; + tmp = Array[tmpvar, ndim]; + defs = Simplify[lower + range tmp]; + Block[{Set}, define[compiled, tmp, Thread[vars = defs], jac]]; + intT = integrandT[f]; + Block[#, + ncomp = Length[intT@@ RandomReal[1, ndim]]; + MLCuhre[ndim, ncomp, 10.^-rel, 10.^-abs, + Min[Max[verbose, 0], 3] + + If[final === Last, 4, 0] + + If[TrueQ[retain], 16, 0] + + If[TrueQ[regions], 128, 0], + mineval, maxeval, key, state] + ]& @ vars + ] + +:Evaluate: tmpvar[n_] := ToExpression["Cuba`Cuhre`t" <> ToString[n]] + +:Evaluate: Attributes[foo] = {HoldAll} + +:Evaluate: define[True, tmp_, defs_, jac_] := ( + TtoX := TtoX = Compile[tmp, defs]; + integrandT[f_] := Compile[tmp, eval[defs, N[f jac]], + {{_eval, _Real, 1}}] ) + +:Evaluate: define[_, tmp_, defs_, jac_] := ( + TtoX := TtoX = Function[tmp, defs]; + integrandT[f_] := Function[tmp, eval[defs, N[f jac]]] ) + +:Evaluate: eval[_, f_Real] = {f} + +:Evaluate: eval[_, f:{__Real}] = f + +:Evaluate: eval[x_, _] := (Message[Cuhre::badsample, ff, x]; {}) + +:Evaluate: sample[x_] := + Check[Flatten @ MapSample[intT@@ # &, Partition[x, ndim]], {}] + +:Evaluate: ValueQ[MapSample] || (MapSample = Map) + +:Evaluate: region[bounds_, r___] := Region[##, r]&@@ + MapThread[TtoX, Partition[bounds, 2]] + +:Evaluate: Cuhre::badsample = "`` is not a real-valued function at ``." + +:Evaluate: Cuhre::baddim = "Cannot integrate in `` dimensions." + +:Evaluate: Cuhre::badcomp = "Cannot integrate `` components." + +:Evaluate: Cuhre::accuracy = + "Desired accuracy was not reached within `` function evaluations on `` subregions." + +:Evaluate: Cuhre::success = "Needed `` function evaluations on `` subregions." + +:Evaluate: End[] + +:Evaluate: EndPackage[] + + +/* + Cuhre.tm + Adaptive integration using cubature rules + by Thomas Hahn + last modified 13 Mar 15 th +*/ + + +#define CUHRE +#define ROUTINE "Cuhre" + +#include "mathlink.h" +#include "decl.h" +#include "MSample.c" + +/*********************************************************************/ + +static void Status(MLCONST char *msg, cint n1, cint n2) +{ + MLPutFunction(stdlink, "CompoundExpression", 2); + MLPutFunction(stdlink, "Message", 3); + MLPutFunction(stdlink, "MessageName", 2); + MLPutSymbol(stdlink, "Cuhre"); + MLPutString(stdlink, msg); + MLPutInteger(stdlink, n1); + MLPutInteger(stdlink, n2); +} + +/*********************************************************************/ + +static inline void DoIntegrate(This *t) +{ + real integral[NCOMP], error[NCOMP], prob[NCOMP]; + cint fail = Integrate(t, integral, error, prob); + + if( fail < 0 ) { + switch( fail ) { + case -99: + MLPutFunction(stdlink, "Abort", 0); + return; + case -1: + Status("baddim", t->ndim, 0); + break; + case -2: + Status("badcomp", t->ncomp, 0); + break; + } + MLPutSymbol(stdlink, "$Failed"); + } + else { + Status(fail ? "accuracy" : "success", t->neval, t->nregions); + MLPutFunction(stdlink, "Thread", 1); + MLPutFunction(stdlink, "List", 3); + MLPutRealxList(stdlink, integral, t->ncomp); + MLPutRealxList(stdlink, error, t->ncomp); + MLPutRealxList(stdlink, prob, t->ncomp); + } +} + +/*********************************************************************/ + +void Cuhre(cint ndim, cint ncomp, + creal epsrel, creal epsabs, + cint flags, cnumber mineval, cnumber maxeval, + cint key, cchar *statefile) +{ + This t; + t.ndim = ndim; + t.ncomp = ncomp; + t.epsrel = epsrel; + t.epsabs = epsabs; + t.flags = flags; + t.mineval = mineval; + t.maxeval = maxeval; + t.key = key; + t.statefile = statefile; + + DoIntegrate(&t); + MLEndPacket(stdlink); +} + +/*********************************************************************/ + +int main(int argc, char **argv) +{ + return MLMain(argc, argv); +} + diff --git a/Cuba/src/cuhre/Integrate.c b/Cuba/src/cuhre/Integrate.c new file mode 100644 index 0000000..27fc7e2 --- /dev/null +++ b/Cuba/src/cuhre/Integrate.c @@ -0,0 +1,282 @@ +/* + Integrate.c + integrate over the unit hypercube + this file is part of Cuhre + checkpointing by B. Chokoufe + last modified 14 Mar 15 th +*/ + + +#define POOLSIZE 1024 + +typedef struct pool { + struct pool *next; +#if REALSIZE > 8 + void *dummy; /* for alignment */ +#endif + char region[]; +} Pool; + +typedef struct { + signature_t signature; + count nregions, ncur; + number neval; + Totals totals[]; +} State; + +static int Integrate(This *t, real *integral, real *error, real *prob) +{ + StateDecl; + csize_t statesize = sizeof(State) + NCOMP*sizeof(Totals); + Sized(State, state, statesize); + csize_t regionsize = RegionSize; + csize_t poolsize = sizeof(Pool) + POOLSIZE*regionsize; + Vector(Result, result, NCOMP); + Vector(char, out, 128*NCOMP + 256); + + Totals *tot, *Tot = state->totals + t->ncomp; + Result *res, *resL, *resR; + Bounds *b, *B; + Pool *cur = NULL, *pool; + Region *region; + count comp, ipool, npool; + int fail; + + if( VERBOSE > 1 ) { + sprintf(out, "Cuhre input parameters:\n" + " ndim " COUNT "\n ncomp " COUNT "\n" + ML_NOT(" nvec " NUMBER "\n") + " epsrel " REAL "\n epsabs " REAL "\n" + " flags %d\n mineval " NUMBER "\n maxeval " NUMBER "\n" + " key " COUNT "\n" + " statefile \"%s\"", + t->ndim, t->ncomp, + ML_NOT(t->nvec,) + SHOW(t->epsrel), SHOW(t->epsabs), + t->flags, t->mineval, t->maxeval, + t->key, + t->statefile); + Print(out); + } + + if( BadComponent(t) ) return -2; + if( BadDimension(t) ) return -1; + + t->epsabs = Max(t->epsabs, NOTZERO); + + RuleAlloc(t); + t->mineval = IMax(t->mineval, t->rule.n + 1); + FrameAlloc(t, Master); + ForkCores(t); + + if( (fail = setjmp(t->abort)) ) goto abort; + + StateSetup(t); + + if( StateReadTest(t) ) { + StateReadOpen(t, fd) { + Pool *prev = NULL; + int size; + if( read(fd, state, statesize) != statesize || + state->signature != StateSignature(t, 4) ) break; + t->neval = state->neval; + t->nregions = state->nregions; + do { + MemAlloc(cur, poolsize); + cur->next = prev; + prev = cur; + size = read(fd, cur, poolsize); + } while( size == poolsize ); + if( size != state->ncur*regionsize ) break; + } StateReadClose(t, fd); + } + + if( ini ) { + MemAlloc(cur, poolsize); + cur->next = NULL; + state->ncur = t->nregions = 1; + + region = (Region *)cur->region; + region->div = 0; + for( B = (b = region->bounds) + t->ndim; b < B; ++b ) { + b->lower = 0; + b->upper = 1; + } + + t->neval = 0; + Sample(t, region); + + for( res = RegionResult(region), tot = state->totals; + tot < Tot; ++res, ++tot ) { + tot->avg = tot->lastavg = tot->guess = res->avg; + tot->err = tot->lasterr = res->err; + tot->weightsum = 1/Max(Sq(res->err), NOTZERO); + tot->avgsum = tot->weightsum*res->avg; + tot->chisq = tot->chisqsum = tot->chisum = 0; + } + } + + /* main iteration loop */ + for( ; ; ) { + count maxcomp, bisectdim; + real maxratio, maxerr; + Region *regionL, *regionR; + Bounds *bL, *bR; + + if( VERBOSE ) { + char *oe = out + sprintf(out, "\n" + "Iteration " COUNT ": " NUMBER " integrand evaluations so far", + t->nregions, t->neval); + for( tot = state->totals, comp = 0; tot < Tot; ++tot ) + oe += sprintf(oe, "\n[" COUNT "] " + REAL " +- " REAL " \tchisq " REAL " (" COUNT " df)", + ++comp, SHOW(tot->avg), SHOW(tot->err), + SHOW(tot->chisq), t->nregions - 1); + Print(out); + } + + maxratio = -INFTY; + maxcomp = 0; + for( tot = state->totals, comp = 0; tot < Tot; ++tot, ++comp ) { + creal ratio = tot->err/MaxErr(tot->avg); + if( ratio > maxratio ) { + maxratio = ratio; + maxcomp = comp; + } + } + + if( maxratio <= 1 && t->neval >= t->mineval ) break; + + if( t->neval >= t->maxeval ) { + fail = 1; + break; + } + + maxerr = -INFTY; + regionL = (Region *)cur->region; + npool = state->ncur; + for( pool = cur; pool; npool = POOLSIZE, pool = pool->next ) + for( ipool = 0; ipool < npool; ++ipool ) { + Region *region = RegionPtr(pool, ipool); + creal err = RegionResult(region)[maxcomp].err; + if( err > maxerr ) { + maxerr = err; + regionL = region; + } + } + + if( state->ncur == POOLSIZE ) { + Pool *prev = cur; + MemAlloc(cur, poolsize); + cur->next = prev; + state->ncur = 0; + } + regionR = RegionPtr(cur, state->ncur++); + + regionR->div = ++regionL->div; + FCopy(result, RegionResult(regionL)); + XCopy(regionR->bounds, regionL->bounds); + + bisectdim = result[maxcomp].bisectdim; + bL = ®ionL->bounds[bisectdim]; + bR = ®ionR->bounds[bisectdim]; + bL->upper = bR->lower = .5*(bL->upper + bL->lower); + + Sample(t, regionL); + Sample(t, regionR); + + for( res = result, + resL = RegionResult(regionL), + resR = RegionResult(regionR), + tot = state->totals; + tot < Tot; ++res, ++resL, ++resR, ++tot ) { + real diff, err, w, avg, sigsq; + + tot->lastavg += diff = resL->avg + resR->avg - res->avg; + + diff = fabsx(.25*diff); + err = resL->err + resR->err; + if( err > 0 ) { + creal c = 1 + 2*diff/err; + resL->err *= c; + resR->err *= c; + } + resL->err += diff; + resR->err += diff; + tot->lasterr += resL->err + resR->err - res->err; + + tot->weightsum += w = 1/Max(Sq(tot->lasterr), NOTZERO); + sigsq = 1/tot->weightsum; + tot->avgsum += w*tot->lastavg; + avg = sigsq*tot->avgsum; + tot->chisum += w *= tot->lastavg - tot->guess; + tot->chisqsum += w*tot->lastavg; + tot->chisq = tot->chisqsum - avg*tot->chisum; + + if( LAST ) { + tot->avg = tot->lastavg; + tot->err = tot->lasterr; + } + else { + tot->avg = avg; + tot->err = sqrtx(sigsq); + } + } + ++t->nregions; + + if( StateWriteTest(t) ) { + StateWriteOpen(t, fd) { + Pool *prev = cur; + state->signature = StateSignature(t, 4); + state->nregions = t->nregions; + state->neval = t->neval; + StateWrite(fd, state, statesize); + while( (prev = prev->next) ) StateWrite(fd, prev, poolsize); + StateWrite(fd, cur, state->ncur*regionsize); + } StateWriteClose(t, fd); + } + } + + for( tot = state->totals, comp = 0; tot < Tot; ++tot, ++comp ) { + integral[comp] = tot->avg; + error[comp] = tot->err; + prob[comp] = ChiSquare(tot->chisq, t->nregions - 1); + } + +#ifdef MLVERSION + if( REGIONS ) { + MLPutFunction(stdlink, "List", 2); + MLPutFunction(stdlink, "List", t->nregions); + + npool = state->ncur; + for( pool = cur; pool; npool = POOLSIZE, pool = pool->next ) + for( ipool = 0; ipool < npool; ++ipool ) { + Region const *region = RegionPtr(pool, ipool); + Result *Res; + + MLPutFunction(stdlink, "Cuba`Cuhre`region", 2); + MLPutRealxList(stdlink, (real *)region->bounds, 2*t->ndim); + + MLPutFunction(stdlink, "List", t->ncomp); + for( Res = (res = RegionResult(region)) + t->ncomp; + res < Res; ++res ) { + real r[] = {res->avg, res->err}; + MLPutRealxList(stdlink, r, Elements(r)); + } + } + } +#endif + +abort: + while( (pool = cur) ) { + cur = cur->next; + free(pool); + } + FrameFree(t, Master); + RuleFree(t); + + StateRemove(t); + + return fail; +} + diff --git a/Cuba/src/cuhre/Rule.c b/Cuba/src/cuhre/Rule.c new file mode 100644 index 0000000..129e968 --- /dev/null +++ b/Cuba/src/cuhre/Rule.c @@ -0,0 +1,757 @@ +/* + Rule.c + integration with cubature rules + code lifted with minor modifications from DCUHRE + by J. Berntsen, T. Espelid, and A. Genz + this file is part of Cuhre + last modified 7 May 15 th +*/ + + +#define NextSet(p) p = (Set *)((char *)p + setsize) +#define IndexSet(p, n) ((Set *)((char *)p + n*setsize)) + +/*********************************************************************/ + +static void Rule13Alloc(This *t) +{ + static creal w[][nrules] = { + { .00844923090033615, .3213775489050763, .3372900883288987, + -.8264123822525677, .6539094339575232 }, + { .023771474018994404, -.1767341636743844, -.1644903060344491, + .306583861409436, -.2041614154424632}, + { .02940016170142405, .07347600537466073, .07707849911634623, + .002389292538329435, -.174698151579499 }, + { .006644436465817374, -.03638022004364754, -.03804478358506311, + -.1343024157997222, .03937939671417803 }, + { .0042536044255016, .021252979220987123, .02223559940380806, + .08833366840533902, .006974520545933992 }, + { 0, .1460984204026913, .1480693879765931, + 0, 0 }, + { .0040664827465935255, .017476132861520992, 4.467143702185815e-6, + .0009786283074168292, .0066677021717782585 }, + { .03362231646315497, .1444954045641582, .150894476707413, + -.1319227889147519, .05512960621544304 }, + { .033200804136503725, .0001307687976001325, 3.6472001075162155e-5, + .00799001220015063, .05443846381278608 }, + { .014093686924979677, .0005380992313941161, .000577719899901388, + .0033917470797606257, .02310903863953934 }, + { .000977069770327625, .0001042259576889814, .0001041757313688177, + .0022949157182832643, .01506937747477189 }, + { .007531996943580376, -.001401152865045733, -.001452822267047819, + -.01358584986119197, -.060570216489018905 }, + { .02577183086722915, .008041788181514763, .008338339968783704, + .04025866859057809, .04225737654686337}, + { .015625, -.1420416552759383, -.147279632923196, + .003760268580063992, .02561989142123099 } + }; + + static creal g[] = { + .12585646717265545, .3506966822267133, + .4795480315809981, .4978005239276064, + .25, .07972723291487795, + .1904495567970094, .3291384627633596, + .43807365825146577, .499121592026599, + .4895111329084231, .32461421628226944, + .43637106005656195, .1791307322940614, + .2833333333333333, .1038888888888889 }; + + enum { nsets = 14, ndim = 2 }; + + count n, r; + Set *first, *last, *s, *x; + csize_t setsize = SetSize; + + Die(first = calloc(nsets, setsize)); + + last = first; + n = last->n = 1; + Copy(last->weight, w[0], nrules); + + NextSet(last); + n += last->n = 2*ndim; + Copy(last->weight, w[1], nrules); + last->gen[0] = g[0]; + + NextSet(last); + n += last->n = 2*ndim; + Copy(last->weight, w[2], nrules); + last->gen[0] = g[1]; + + NextSet(last); + n += last->n = 2*ndim; + Copy(last->weight, w[3], nrules); + last->gen[0] = g[2]; + + NextSet(last); + n += last->n = 2*ndim; + Copy(last->weight, w[4], nrules); + last->gen[0] = g[3]; + + NextSet(last); + n += last->n = 2*ndim; + Copy(last->weight, w[5], nrules); + last->gen[0] = g[4]; + + NextSet(last); + n += last->n = 2*ndim*(ndim - 1); + Copy(last->weight, w[6], nrules); + last->gen[0] = g[5]; + last->gen[1] = g[5]; + + NextSet(last); + n += last->n = 2*ndim*(ndim - 1); + Copy(last->weight, w[7], nrules); + last->gen[0] = g[6]; + last->gen[1] = g[6]; + + NextSet(last); + n += last->n = 2*ndim*(ndim - 1); + Copy(last->weight, w[8], nrules); + last->gen[0] = g[7]; + last->gen[1] = g[7]; + + NextSet(last); + n += last->n = 2*ndim*(ndim - 1); + Copy(last->weight, w[9], nrules); + last->gen[0] = g[8]; + last->gen[1] = g[8]; + + NextSet(last); + n += last->n = 2*ndim*(ndim - 1); + Copy(last->weight, w[10], nrules); + last->gen[0] = g[9]; + last->gen[1] = g[9]; + + NextSet(last); + n += last->n = 4*ndim*(ndim - 1); + Copy(last->weight, w[11], nrules); + last->gen[0] = g[10]; + last->gen[1] = g[11]; + + NextSet(last); + n += last->n = 4*ndim*(ndim - 1); + Copy(last->weight, w[12], nrules); + last->gen[0] = g[12]; + last->gen[1] = g[13]; + + NextSet(last); + n += last->n = 4*ndim*(ndim - 1); + Copy(last->weight, w[13], nrules); + last->gen[0] = g[14]; + last->gen[1] = g[15]; + + t->rule.first = first; + t->rule.last = last; + t->rule.errcoeff[0] = 10; + t->rule.errcoeff[1] = 1; + t->rule.errcoeff[2] = 5; + t->rule.n = n; + + for( s = first; s <= last; NextSet(s) ) + for( r = 1; r < nrules - 1; ++r ) { + creal scale = (s->weight[r] == 0) ? 100 : + -s->weight[r + 1]/s->weight[r]; + real sum = 0; + for( x = first; x <= last; NextSet(x) ) + sum += x->n*fabsx(x->weight[r + 1] + scale*x->weight[r]); + s->scale[r] = scale; + s->norm[r] = 1/sum; + } +} + +/*********************************************************************/ + +static void Rule11Alloc(This *t) +{ + static creal w[][nrules] = { + { .0009903847688882167, 1.715006248224684, 1.936014978949526, + .517082819560576, 2.05440450381852 }, + { .0084964717409851, -.3755893815889209, -.3673449403754268, + .01445269144914044, .013777599884901202 }, + { .00013587331735072814, .1488632145140549, .02929778657898176, + -.3601489663995932, -.576806291790441 }, + { .022982920777660364, -.2497046640620823, -.1151883520260315, + .3628307003418485, .03726835047700328 }, + { .004202649722286289, .1792501419135204, .05086658220872218, + .007148802650872729, .0068148789397772195 }, + { .0012671889041675774, .0034461267589738897, .04453911087786469, + -.09222852896022966, .057231697338518496 }, + { .0002109560854981544, -.005140483185555825, -.022878282571259, + .01719339732471725, -.044930187438112855 }, + { .016830857056410086, .006536017839876424, .02908926216345833, + -.102141653746035, .027292365738663484 }, + { .00021876823557504823, -.00065134549392297, -.002898884350669207, + -.007504397861080493, .000354747395055699 }, + { .009690420479796819, -.006304672433547204, -.028059634133074954, + .01648362537726711, .01571366799739551 }, + { .030773311284628138, .01266959399788263, .05638741361145884, + .05234610158469334, .049900992192785674 }, + { .0084974310856038, -.005454241018647931, -.02427469611942451, + .014454323316130661, .0137791555266677 }, + { .0017749535291258914, .004826995274768427, .021483070341828822, + .003019236275367777, .0028782064230998723 } + }; + + static creal g[] = { + .095, .25, + .375, .4, + .4975, .49936724991757, + .38968518428362114, .49998494965443835, + .3951318612385894, .22016983438253684, + .4774686911397297, .2189239229503431, + .4830546566815374, .2288552938881567 }; + + enum { nsets = 13, ndim = 3 }; + + count n, r; + Set *first, *last, *s, *x; + csize_t setsize = SetSize; + + Die(first = calloc(nsets, setsize)); + + last = first; + n = last->n = 1; + Copy(last->weight, w[0], nrules); + + NextSet(last); + n += last->n = 2*ndim; + Copy(last->weight, w[1], nrules); + last->gen[0] = g[0]; + + NextSet(last); + n += last->n = 2*ndim; + Copy(last->weight, w[2], nrules); + last->gen[0] = g[1]; + + NextSet(last); + n += last->n = 2*ndim; + Copy(last->weight, w[3], nrules); + last->gen[0] = g[2]; + + NextSet(last); + n += last->n = 2*ndim; + Copy(last->weight, w[4], nrules); + last->gen[0] = g[3]; + + NextSet(last); + n += last->n = 2*ndim; + Copy(last->weight, w[5], nrules); + last->gen[0] = g[4]; + + NextSet(last); + n += last->n = 2*ndim*(ndim - 1); + Copy(last->weight, w[6], nrules); + last->gen[0] = g[5]; + last->gen[1] = g[5]; + + NextSet(last); + n += last->n = 2*ndim*(ndim - 1); + Copy(last->weight, w[7], nrules); + last->gen[0] = g[6]; + last->gen[1] = g[6]; + + NextSet(last); + n += last->n = 4*ndim*(ndim - 1)*(ndim - 2)/3; + Copy(last->weight, w[8], nrules); + last->gen[0] = g[7]; + last->gen[1] = g[7]; + last->gen[2] = g[7]; + + NextSet(last); + n += last->n = 4*ndim*(ndim - 1)*(ndim - 2)/3; + Copy(last->weight, w[9], nrules); + last->gen[0] = g[8]; + last->gen[1] = g[8]; + last->gen[2] = g[8]; + + NextSet(last); + n += last->n = 4*ndim*(ndim - 1)*(ndim - 2)/3; + Copy(last->weight, w[10], nrules); + last->gen[0] = g[9]; + last->gen[1] = g[9]; + last->gen[2] = g[9]; + + NextSet(last); + n += last->n = 4*ndim*(ndim - 1)*(ndim - 2); + Copy(last->weight, w[11], nrules); + last->gen[0] = g[10]; + last->gen[1] = g[11]; + last->gen[2] = g[11]; + + NextSet(last); + n += last->n = 4*ndim*(ndim - 1)*(ndim - 2); + Copy(last->weight, w[12], nrules); + last->gen[0] = g[12]; + last->gen[1] = g[12]; + last->gen[2] = g[13]; + + t->rule.first = first; + t->rule.last = last; + t->rule.errcoeff[0] = 4; + t->rule.errcoeff[1] = .5; + t->rule.errcoeff[2] = 3; + t->rule.n = n; + + for( s = first; s <= last; NextSet(s) ) + for( r = 1; r < nrules - 1; ++r ) { + creal scale = (s->weight[r] == 0) ? 100 : + -s->weight[r + 1]/s->weight[r]; + real sum = 0; + for( x = first; x <= last; NextSet(x) ) + sum += x->n*fabsx(x->weight[r + 1] + scale*x->weight[r]); + s->scale[r] = scale; + s->norm[r] = 1/sum; + } +} + +/*********************************************************************/ + +static void Rule9Alloc(This *t) +{ + static creal w[] = { + RC(-.002361170967785511788400941242259231309691), + RC(.1141539002385732526821323741697655347686), + RC(-.6383392007670238909386026193674701393074), + RC(.7484998850468520800423030047583803945205), + RC(-.001432401703339912514196154599769007103671), + RC(.05747150786448972594860897296200006759892), + RC(-.1422510457143424323449521620935950679394), + RC(-.06287502873828697998942424881040490136987), + RC(.2545911332489590890011611142429070613156), + RC(-1.207328566678236261002219995185143356737), + RC(.8956736576416067650809467826488567200939), + RC(-.3647935698604914666100134551377381205297), + RC(.003541756451678267682601411863388846964536), + RC(-.07260936739589367960492815865074633743652), + RC(.1055749162521899101218622863269817454540), + RC(.002148602555009868771294231899653510655506), + RC(-.03226856389295394999786630399875134318006), + RC(.01063678399023121748083624225818915724455), + RC(.01468910249614349017540783437728097691502), + RC(.5113470834646759143109387357149329909126), + RC(.4597644812080634464633352781605214342691), + RC(.1823967849302457333050067275688690602649), + RC(-.04508628929435784075980562738240804429658), + RC(.2141588352435279340097929526588394300172), + RC(-.02735154652654564472203690086290223507436), + RC(.05494106704871123410060080562462135546101), + RC(.1193759620257077529708962121565290178730), + RC(.6508951939192025059314756320878023215278), + RC(.1474493982943446016775696826942585013243), + RC(.05769338449097348357291272840392627722165), + RC(.03499962660214358382244159694487155861542), + RC(-1.386862771927828143599782668709014266770), + RC(-.2386668732575008878964134721962088068396), + RC(.01553241727660705326386197156586357005224), + RC(.003532809960709087023561817517751309380604), + RC(.09231719987444221619017126187763868745587), + RC(.02254314464717892037990281369120402214829), + RC(.01367577326327282236101845043145111753718), + RC(-.3254475969596012529657378160439011607639), + RC(.001770878225839133841300705931694423482268), + RC(.001074301277504934385647115949826755327753), + RC(.2515001149531479199576969952416196054795) }; + + static creal g[] = { + RC(.4779536579022695061928604197171830064732), + RC(.2030285873691198677998034402373279133258), + RC(.4476273546261781288207704806530998539285), + RC(.125), + RC(.3430378987808781457001426145164678603407) }; + + enum { nsets = 9 }; + + ccount ndim = t->ndim; + ccount twondim = 1 << ndim; + count dim, n, r; + Set *first, *last, *s, *x; + csize_t setsize = SetSize; + + Die(first = calloc(nsets, setsize)); + + last = first; + n = last->n = 1; + last->weight[0] = ndim*(ndim*(ndim*w[0] + w[1]) + w[2]) + w[3]; + last->weight[1] = ndim*(ndim*(ndim*w[4] + w[5]) + w[6]) - w[7]; + last->weight[2] = ndim*w[8] - last->weight[1]; + last->weight[3] = ndim*(ndim*w[9] + w[10]) - 1 + last->weight[0]; + last->weight[4] = ndim*w[11] + 1 - last->weight[0]; + + NextSet(last); + n += last->n = 2*ndim; + last->weight[0] = ndim*(ndim*w[12] + w[13]) + w[14]; + last->weight[1] = ndim*(ndim*w[15] + w[16]) + w[17]; + last->weight[2] = w[18] - last->weight[1]; + last->weight[3] = ndim*w[19] + w[20] + last->weight[0]; + last->weight[4] = w[21] - last->weight[0]; + last->gen[0] = g[0]; + + NextSet(last); + n += last->n = 2*ndim; + last->weight[0] = ndim*w[22] + w[23]; + last->weight[1] = ndim*w[24] + w[25]; + last->weight[2] = w[26] - last->weight[1]; + last->weight[3] = ndim*w[27] + w[28]; + last->weight[4] = -last->weight[0]; + last->gen[0] = g[1]; + + NextSet(last); + n += last->n = 2*ndim; + last->weight[0] = w[29]; + last->weight[1] = w[30]; + last->weight[2] = -w[29]; + last->weight[3] = w[31]; + last->weight[4] = -w[29]; + last->gen[0] = g[2]; + + NextSet(last); + n += last->n = 2*ndim; + last->weight[2] = w[32]; + last->gen[0] = g[3]; + + NextSet(last); + n += last->n = 2*ndim*(ndim - 1); + last->weight[0] = w[33] - ndim*w[12]; + last->weight[1] = w[34] - ndim*w[15]; + last->weight[2] = -last->weight[1]; + last->weight[3] = w[35] + last->weight[0]; + last->weight[4] = -last->weight[0]; + last->gen[0] = g[0]; + last->gen[1] = g[0]; + + NextSet(last); + n += last->n = 4*ndim*(ndim - 1); + last->weight[0] = w[36]; + last->weight[1] = w[37]; + last->weight[2] = -w[37]; + last->weight[3] = w[38]; + last->weight[4] = -w[36]; + last->gen[0] = g[0]; + last->gen[1] = g[1]; + + NextSet(last); + n += last->n = 4*ndim*(ndim - 1)*(ndim - 2)/3; + last->weight[0] = w[39]; + last->weight[1] = w[40]; + last->weight[2] = -w[40]; + last->weight[3] = w[39]; + last->weight[4] = -w[39]; + last->gen[0] = g[0]; + last->gen[1] = g[0]; + last->gen[2] = g[0]; + + NextSet(last); + n += last->n = twondim; + last->weight[0] = w[41]/twondim; + last->weight[1] = w[7]/twondim; + last->weight[2] = -last->weight[1]; + last->weight[3] = last->weight[0]; + last->weight[4] = -last->weight[0]; + for( dim = 0; dim < ndim; ++dim ) + last->gen[dim] = g[4]; + + t->rule.first = first; + t->rule.last = last; + t->rule.errcoeff[0] = 5; + t->rule.errcoeff[1] = 1; + t->rule.errcoeff[2] = 5; + t->rule.n = n; + + for( s = first; s <= last; NextSet(s) ) + for( r = 1; r < nrules - 1; ++r ) { + creal scale = (s->weight[r] == 0) ? 100 : + -s->weight[r + 1]/s->weight[r]; + real sum = 0; + for( x = first; x <= last; NextSet(x) ) + sum += x->n*fabsx(x->weight[r + 1] + scale*x->weight[r]); + s->scale[r] = scale; + s->norm[r] = 1/sum; + } +} + +/*********************************************************************/ + +static void Rule7Alloc(This *t) +{ + static creal w[] = { + RC(.01941786667474838842844534313920462333850), + RC(-.4038525770115018254611834753723880293161), + RC(.6448566876746598222277360730193089551024), + RC(.01177982690775806141012214458820955067854), + RC(-.1804131874073360901182293138710989490609), + RC(-.08878582808133504444306598174517276122439), + RC(.05632864580828594137378124255408286479947), + RC(-.009708933337374194214222671569602311669249), + RC(-.9912917677958235813775106862002319060386), + RC(-.1775716561626700888861319634903455224488), + RC(.1235939803204323357183625846672135876752), + RC(.07497814870203369068087999555157339703666), + RC(.5548914705142355977605994477355651401434), + RC(.08804124152269277122645182458858273865209), + RC(.02111835845551338508329573367808085283304), + RC(-.009930220323965333308685820460105538586058), + RC(-.06410005328501090417895544042025034295870), + RC(.03038172903822100765927778829870429682489), + RC(.005889913453879030705061072294104775339268), + RC(-.004854466668687097107111335784801155834624), + RC(.3551433123253401777722639269806910448976) }; + + static creal g[] = { + RC(.4779536579022695061928604197171830064732), + RC(.2030285873691198677998034402373279133258), + RC(.375), + RC(.3430378987808781457001426145164678603407) }; + + enum { nsets = 6 }; + + ccount ndim = t->ndim; + ccount twondim = 1 << ndim; + count dim, n, r; + Set *first, *last, *s, *x; + csize_t setsize = SetSize; + + Die(first = calloc(nsets, setsize)); + + last = first; + n = last->n = 1; + last->weight[0] = ndim*(ndim*w[0] + w[1]) + w[2]; + last->weight[1] = ndim*(ndim*w[3] + w[4]) - w[5]; + last->weight[2] = ndim*w[6] - last->weight[1]; + last->weight[3] = ndim*(ndim*w[7] + w[8]) - w[9]; + last->weight[4] = 1 - last->weight[0]; + + NextSet(last); + n += last->n = 2*ndim; + last->weight[0] = w[10]; + last->weight[1] = w[11]; + last->weight[2] = -w[10]; + last->weight[3] = w[12]; + last->weight[4] = -w[10]; + last->gen[0] = g[1]; + + NextSet(last); + n += last->n = 2*ndim; + last->weight[0] = w[13] - ndim*w[0]; + last->weight[1] = w[14] - ndim*w[3]; + last->weight[2] = w[15] - last->weight[1]; + last->weight[3] = w[16] - ndim*w[7]; + last->weight[4] = -last->weight[0]; + last->gen[0] = g[0]; + + NextSet(last); + n += last->n = 2*ndim; + last->weight[2] = w[17]; + last->gen[0] = g[2]; + + NextSet(last); + n += last->n = 2*ndim*(ndim - 1); + last->weight[0] = -w[7]; + last->weight[1] = w[18]; + last->weight[2] = -w[18]; + last->weight[3] = w[19]; + last->weight[4] = w[7]; + last->gen[0] = g[0]; + last->gen[1] = g[0]; + + NextSet(last); + n += last->n = twondim; + last->weight[0] = w[20]/twondim; + last->weight[1] = w[5]/twondim; + last->weight[2] = -last->weight[1]; + last->weight[3] = w[9]/twondim; + last->weight[4] = -last->weight[0]; + for( dim = 0; dim < ndim; ++dim ) + last->gen[dim] = g[3]; + + t->rule.first = first; + t->rule.last = last; + t->rule.errcoeff[0] = 5; + t->rule.errcoeff[1] = 1; + t->rule.errcoeff[2] = 5; + t->rule.n = n; + + for( s = first; s <= last; NextSet(s) ) + for( r = 1; r < nrules - 1; ++r ) { + creal scale = (s->weight[r] == 0) ? 100 : + -s->weight[r + 1]/s->weight[r]; + real sum = 0; + for( x = first; x <= last; NextSet(x) ) + sum += x->n*fabsx(x->weight[r + 1] + scale*x->weight[r]); + s->scale[r] = scale; + s->norm[r] = 1/sum; + } +} + +/*********************************************************************/ + +static inline void RuleAlloc(This *t) +{ + if( t->key == 13 && t->ndim == 2 ) Rule13Alloc(t); + else if( t->key == 11 && t->ndim == 3 ) Rule11Alloc(t); + else if( t->key == 9 ) Rule9Alloc(t); + else if( t->key == 7 ) Rule7Alloc(t); + else { + if( t->ndim == 2 ) Rule13Alloc(t); + else if( t->ndim == 3 ) Rule11Alloc(t); + else Rule9Alloc(t); + } +} + +/*********************************************************************/ + +static inline void RuleFree(cThis *t) +{ + free(t->rule.first); +} + +/*********************************************************************/ + +static real *ExpandFS(cThis *t, cBounds *b, real *g, real *x) +{ + count dim, ndim = t->ndim; + +next: + /* Compute centrally symmetric sum for permutation of G */ + + for( dim = 0; dim < ndim; ++dim ) + *x++ = (.5 + g[dim])*b[dim].lower + (.5 - g[dim])*b[dim].upper; + + for( dim = 0; dim < ndim; ) { + g[dim] = -g[dim]; + if( g[dim++] < 0 ) goto next; + } + + /* Find next distinct permutation of G and loop back for next sum. + Permutations are generated in reverse lexicographic order. */ + + for( dim = 1; dim < ndim; ++dim ) { + creal gd = g[dim]; + if( g[dim - 1] > gd ) { + count i, j = dim, ix = dim, dx = dim - 1; + for( i = 0; i < --j; ++i ) { + creal tmp = g[i]; + g[i] = g[j]; + g[j] = tmp; + if( tmp <= gd ) --dx; + if( g[i] > gd ) ix = i; + } + if( g[dx] <= gd ) dx = ix; + g[dim] = g[dx]; + g[dx] = gd; + goto next; + } + } + + /* Restore original order to generators */ + + for( dim = 0; dim < --ndim; ++dim ) { + creal tmp = g[dim]; + g[dim] = g[ndim]; + g[ndim] = tmp; + } + + return x; +} + +/*********************************************************************/ + +static void Sample(This *t, Region *region) +{ + csize_t setsize = SetSize; + creal vol = ldexp(1., -region->div); + + real *x = t->frame, *f = x + t->rule.n*t->ndim; + Set *first = t->rule.first, *last = t->rule.last, *s; + Bounds *b, *B = region->bounds + t->ndim; + Result *result = RegionResult(region), *res, *Res = result + t->ncomp; + creal *errcoeff = t->rule.errcoeff; + creal ratio = Sq(IndexSet(first,2)->gen[0]/ + IndexSet(first,1)->gen[0]); + + ccount offset = 2*t->ndim*t->ncomp; + count dim, rul, n, maxdim = 0; + real maxrange = 0; + + for( b = region->bounds, dim = 0; b < B; ++b, ++dim ) { + creal range = b->upper - b->lower; + if( range > maxrange ) { + maxrange = range; + maxdim = dim; + } + } + + for( s = first; s <= last; NextSet(s) ) + if( s->n ) x = ExpandFS(t, region->bounds, s->gen, x); + + DoSample(t, t->rule.n, t->frame, f); + + for( res = result; res < Res; ++res ) { + real sum[nrules]; + creal *f1 = f; + creal base = *f1*2*(1 - ratio); + real maxdiff = 0; + count bisectdim = maxdim; + + for( dim = 0; dim < t->ndim; ++dim ) { + creal *fp = f1 + t->ncomp; + creal *fm = fp + t->ncomp; + creal fourthdiff = fabsx(base + + ratio*(fp[0] + fm[0]) - (fp[offset] + fm[offset])); + f1 = fm; + if( fourthdiff > maxdiff ) { + maxdiff = fourthdiff; + bisectdim = dim; + } + } + res->bisectdim = bisectdim; + + f1 = f++; + Zap(sum); + for( s = first; s <= last; NextSet(s) ) + for( n = s->n; n; --n ) { + creal fun = *f1; + f1 += t->ncomp; + for( rul = 0; rul < nrules; ++rul ) + sum[rul] += fun*s->weight[rul]; + } + + /* Search for the null rule, in the linear space spanned by two + successive null rules in our sequence, which gives the greatest + error estimate among all normalized (1-norm) null rules in this + space. */ + + for( rul = 1; rul < nrules - 1; ++rul ) { + real maxerr = 0; + for( s = first; s <= last; NextSet(s) ) + maxerr = Max(maxerr, + fabsx(sum[rul + 1] + s->scale[rul]*sum[rul])*s->norm[rul]); + sum[rul] = maxerr; + } + + res->avg = vol*sum[0]; + res->err = vol*( + (errcoeff[0]*sum[1] <= sum[2] && errcoeff[0]*sum[2] <= sum[3]) ? + errcoeff[1]*sum[1] : + errcoeff[2]*Max(Max(sum[1], sum[2]), sum[3]) ); + } + + if( VERBOSE > 2 ) { + Vector(char, out, 64*NDIM + 128*NCOMP); + char *oe = out; + count comp; + cchar *msg = "\nRegion (" REALF ") - (" REALF ")"; + + for( b = region->bounds; b < B; ++b ) { + oe += sprintf(oe, msg, b->lower, b->upper); + msg = "\n (" REALF ") - (" REALF ")"; + } + + for( res = result, comp = 0; res < Res; ++res ) + oe += sprintf(oe, "\n[" COUNT "] " + REAL " +- " REAL, ++comp, SHOW(res->avg), SHOW(res->err)); + + Print(out); + } +} + diff --git a/Cuba/src/cuhre/common.c b/Cuba/src/cuhre/common.c new file mode 100644 index 0000000..fcd4403 --- /dev/null +++ b/Cuba/src/cuhre/common.c @@ -0,0 +1,23 @@ +/* + common.c + includes most of the modules + this file is part of Cuhre + last modified 2 Aug 13 11 th +*/ + + +#include "ChiSquare.c" +#include "Rule.c" + +static inline bool BadDimension(cThis *t) +{ + if( t->ndim > MAXDIM ) return true; + return t->ndim < 2; +} + +static inline bool BadComponent(cThis *t) +{ + if( t->ncomp > MAXCOMP ) return true; + return t->ncomp < 1; +} + diff --git a/Cuba/src/cuhre/decl.h b/Cuba/src/cuhre/decl.h new file mode 100644 index 0000000..bf924ba --- /dev/null +++ b/Cuba/src/cuhre/decl.h @@ -0,0 +1,89 @@ +/* + decl.h + Type declarations + this file is part of Cuhre + last modified 21 Jul 14 th +*/ + + +#include "stddecl.h" + +typedef struct { + real avg, err; + count bisectdim; +} Result; + +typedef const Result cResult; + +typedef struct { + real avg, err, lastavg, lasterr; + real weightsum, avgsum; + real guess, chisum, chisqsum, chisq; +} Totals; + +typedef const Totals cTotals; + +typedef struct { + real lower, upper; +} Bounds; + +typedef const Bounds cBounds; + +enum { nrules = 5 }; + +typedef struct { + count n; + real weight[nrules], scale[nrules], norm[nrules]; + real gen[]; +} Set; + +#define SetSize (sizeof(Set) + t->ndim*sizeof(real)) + +typedef struct { + Set *first, *last; + real errcoeff[3]; + count n; +} Rule; + +typedef const Rule cRule; + +typedef int (*Integrand)(ccount *, creal *, ccount *, real *, + void *, cnumber *, cint *); + +typedef struct _this { + count ndim, ncomp; +#ifndef MLVERSION + Integrand integrand; + void *userdata; + number nvec; +#ifdef HAVE_FORK + SHM_ONLY(int shmid;) + Spin *spin; +#endif +#endif + real *frame; + real epsrel, epsabs; + int flags; + number mineval, maxeval; + count key, nregions; + cchar *statefile; + number neval; + Rule rule; + jmp_buf abort; +} This; + +#define nframe rule.n + +typedef const This cThis; + +typedef struct region { + count div; + Bounds bounds[]; +} Region; + +#define RegionSize (sizeof(Region) + t->ndim*sizeof(Bounds) + t->ncomp*sizeof(Result)) + +#define RegionResult(r) ((Result *)(r->bounds + t->ndim)) + +#define RegionPtr(p, n) ((Region *)((char *)p->region + (n)*regionsize)) + diff --git a/Cuba/src/divonne/Divonne.c b/Cuba/src/divonne/Divonne.c new file mode 100644 index 0000000..444dddd --- /dev/null +++ b/Cuba/src/divonne/Divonne.c @@ -0,0 +1,119 @@ +/* + Divonne.c + Multidimensional integration by partitioning + originally by J.H. Friedman and M.H. Wright + (CERNLIB subroutine D151) + this version by Thomas Hahn + last modified 22 Jul 14 th +*/ + +#define DIVONNE +#define ROUTINE "Divonne" + +#include "decl.h" +#include "CSample.c" + +/*********************************************************************/ + +Extern void EXPORT(Divonne)(ccount ndim, ccount ncomp, + Integrand integrand, void *userdata, cnumber nvec, + creal epsrel, creal epsabs, + cint flags, cint seed, + cnumber mineval, cnumber maxeval, + cint key1, cint key2, cint key3, ccount maxpass, + creal border, creal maxchisq, creal mindeviation, + cnumber ngiven, ccount ldxgiven, real *xgiven, + cnumber nextra, PeakFinder peakfinder, + cchar *statefile, Spin **pspin, + int *pnregions, number *pneval, int *pfail, + real *integral, real *error, real *prob) +{ + This t; + + VerboseInit(); + + t.ndim = ndim; + t.ncomp = ncomp; + t.integrand = integrand; + t.userdata = userdata; + t.nvec = nvec; + t.epsrel = epsrel; + t.epsabs = epsabs; + t.flags = MaxVerbose(flags); + t.seed = seed; + t.mineval = mineval; + t.maxeval = maxeval; + t.key1 = key1; + t.key2 = key2; + t.key3 = key3; + t.maxpass = maxpass; + t.border.upper = 1 - (t.border.lower = border); + t.maxchisq = maxchisq; + t.mindeviation = mindeviation; + t.ngiven = ngiven; + t.xgiven = xgiven; + t.ldxgiven = ldxgiven; + t.nextra = nextra; + t.peakfinder = peakfinder; + t.statefile = statefile; + FORK_ONLY(t.spin = Invalid(pspin) ? NULL : *pspin;) + + *pfail = Integrate(&t, integral, error, prob); + *pnregions = t.nregions; + *pneval = t.neval; + + WaitCores(&t, pspin); +} + +/*********************************************************************/ + +Extern void EXPORT(divonne)(ccount *pndim, ccount *pncomp, + Integrand integrand, void *userdata, cnumber *pnvec, + creal *pepsrel, creal *pepsabs, + cint *pflags, cint *pseed, + cnumber *pmineval, cnumber *pmaxeval, + cint *pkey1, cint *pkey2, cint *pkey3, ccount *pmaxpass, + creal *pborder, creal *pmaxchisq, creal *pmindeviation, + cnumber *pngiven, ccount *pldxgiven, real *xgiven, + cnumber *pnextra, PeakFinder peakfinder, + cchar *statefile, Spin **pspin, + int *pnregions, number *pneval, int *pfail, + real *integral, real *error, real *prob, cint statefilelen) +{ + This t; + + VerboseInit(); + + t.ndim = *pndim; + t.ncomp = *pncomp; + t.integrand = integrand; + t.userdata = userdata; + t.nvec = *pnvec; + t.epsrel = *pepsrel; + t.epsabs = *pepsabs; + t.flags = MaxVerbose(*pflags); + t.seed = *pseed; + t.mineval = *pmineval; + t.maxeval = *pmaxeval; + t.key1 = *pkey1; + t.key2 = *pkey2; + t.key3 = *pkey3; + t.maxpass = *pmaxpass; + t.border.upper = 1 - (t.border.lower = *pborder); + t.maxchisq = *pmaxchisq; + t.mindeviation = *pmindeviation; + t.ngiven = *pngiven; + t.xgiven = xgiven; + t.ldxgiven = *pldxgiven; + t.nextra = *pnextra; + t.peakfinder = peakfinder; + CString(t.statefile, statefile, statefilelen); + FORK_ONLY(t.spin = Invalid(pspin) ? NULL : *pspin;) + + *pfail = Integrate(&t, integral, error, prob); + *pnregions = t.nregions; + *pneval = t.neval; + + WaitCores(&t, pspin); +} + diff --git a/Cuba/src/divonne/Divonne.tm b/Cuba/src/divonne/Divonne.tm new file mode 100644 index 0000000..f7d0a75 --- /dev/null +++ b/Cuba/src/divonne/Divonne.tm @@ -0,0 +1,346 @@ +:Evaluate: BeginPackage["Cuba`"] + +:Evaluate: Divonne::usage = + "Divonne[f, {x, xmin, xmax}..] computes a numerical approximation to the integral of the real scalar or vector function f. + The output is a list with entries of the form {integral, error, chi-square probability} for each component of the integrand." + +:Evaluate: MinPoints::usage = "MinPoints is an option of Divonne. + It specifies the minimum number of points to sample." + +:Evaluate: Key1::usage = "Key1 is an option of Divonne. + It determines sampling in the partitioning phase.\n + Special cases:\n + Key1 = 7: use a degree-7 cubature rule,\n + Key1 = 9: use a degree-9 cubature rule,\n + Key1 = 11: use a degree-11 cubature rule (available only in 3 dimensions),\n + Key1 = 13: use a degree-13 cubature rule (available only in 2 dimensions),\n + otherwise a random sample of n1 = Abs[Key1] points is used, where the sign of Key1 determines the type of sample:\n + Key1 > 0: use a Korobov quasi-random sample,\n + Key1 < 0: use a \"standard\" sample." + +:Evaluate: Key2::usage = "Key2 is an option of Divonne. + It determines sampling in the main integration phase.\n + Special cases:\n + Key2 = 7: use a degree-7 cubature rule,\n + Key2 = 9: use a degree-9 cubature rule,\n + Key2 = 11: use a degree-11 cubature rule (available only in 3 dimensions),\n + Key2 = 13: use a degree-13 cubature rule (available only in 2 dimensions),\n + otherwise a random sample is used, where the sign of Key2 determines the type of sample:\n + Key2 > 0: use a Korobov quasi-random sample,\n + Key2 < 0: use a \"standard\" sample,\n + and n2 = Abs[Key2] determines the number of points:\n + n2 >= 40: sample n2 points,\n + n2 < 40: sample n2*nneed points, where nneed is the number of points needed to reach the prescribed accuracy, as estimated by Divonne from the results of the partitioning phase." + +:Evaluate: Key3::usage = "Key3 is an option of Divonne. + It sets the strategy for the refinement phase:\n + Key3 = 0: do not further treat the subregion,\n + Key3 = 1: split the subregion up once more,\n + for other values the region is sampled a third time:\n + Key3 = 7: use a degree-7 cubature rule,\n + Key3 = 9: use a degree-9 cubature rule,\n + Key3 = 11: use a degree-11 cubature rule (available only in 3 dimensions),\n + Key3 = 13: use a degree-13 cubature rule (available only in 2 dimensions),\n + otherwise a random sample is used, where the sign of Key3 determines the type of sample:\n + Key3 > 0: use a Korobov quasi-random sample,\n + Key3 < 0: use a \"standard\" sample,\n + and n3 = Abs[Key3] determines the number of points:\n + n3 >= 40: sample n3 points,\n + n3 < 40: sample n3*nneed points, where nneed is the number of points needed to reach the prescribed accuracy, as estimated by Divonne from the results of the partitioning phase." + +:Evaluate: MaxPass::usage = "MaxPass is an option of Divonne. + It controls the partitioning termination. + The partitioning phase is terminated when the estimated total number of integrand evaluations (partitioning plus main integration) does not decrease for MaxPass successive iterations." + +:Evaluate: Border::usage = "Border is an option of Divonne. + It specifies the width of the border of the integration region. + Points falling into this border region are not sampled directly, but are extrapolated from two samples from the interior. + The border width always refers to the unit hypercube, i.e. it is not rescaled if the integration region is not the unit hypercube." + +:Evaluate: MaxChisq::usage = "MaxChisq is an option of Divonne. + It specifies the maximum chi-square value a single subregion is allowed to have in the main integration phase. + Regions which fail this chi-square test and whose sample averages differ by more than MinDeviation move on to the refinement phase." + +:Evaluate: MinDeviation::usage = "MinDeviation is an option of Divonne. + Regions which fail the chi-square test are not treated further if their sample averages differ by less than MinDeviation. + MinDeviation is specified as the fraction of the requested error of the entire integral." + +:Evaluate: Given::usage = "Given is an option of Divonne. + It provides a list of points where the integrand might have peaks. + Divonne will consider these points when partitioning the integration region." + +:Evaluate: NExtra::usage = "NExtra is an option of Divonne. + It specifies the maximum number of points that will be considered in the output of the PeakFinder function." + +:Evaluate: PeakFinder::usage = "PeakFinder is an option of Divonne. + It specifies the peak-finder function. + This function is called whenever a region is up for subdivision and is supposed to point out possible peaks lying in the region, thus acting as the dynamic counterpart of the static list of points supplied with Given. + It is invoked with two arguments, the multidimensional equivalents of the lower left and upper right corners of the region being investigated, and must return a (possibly empty) list of points." + +:Evaluate: StateFile::usage = "StateFile is an option of Divonne. + It specifies a file in which the internal state is stored after each iteration and from which it can be restored on a subsequent run. + The state file is removed once the prescribed accuracy has been reached." + +:Evaluate: Final::usage = "Final is an option of Divonne. + It can take the values Last or All which determine whether only the last (largest) or all sets of samples collected on a subregion over the integration phases contribute to the final result." + +:Evaluate: PseudoRandom::usage = "PseudoRandom is an option of Divonne. + It can take the following values: + False for Sobol quasi-random numbers (default), + True or 0 for Mersenne Twister pseudo-random numbers, + any other integer value n for Ranlux pseudo-random numbers of luxury level n." + +:Evaluate: PseudoRandomSeed::usage = "PseudoRandomSeed is an option of Divonne. + It specifies the seed for the pseudo-random number generator." + +:Evaluate: RetainStateFile::usage = "RetainStateFile is an option of Divonne. + It determines whether a chosen state file is kept even if the integration terminates normally." + +:Evaluate: Regions::usage = "Regions is an option of Divonne. + It specifies whether the regions into which the integration region has been cut are returned together with the integration results." + +:Evaluate: Region::usage = "Region[ll, ur, res, df] describes a subregion: + ll and ur are multidimensional equivalents of the region's lower left and upper right corner. + res gives the integration results for the region in a list with entries of the form {integral, error, chi-square} for each component of the integrand. + df is the number of degrees of freedom corresponding to the chi-square values in res." + +:Evaluate: $Phase::usage = "$Phase is a global variable set by Divonne during the evaluation of the integrand to the integration phase:\n + 0 = sampling of the points in xgiven,\n + 1 = partitioning phase,\n + 2 = main integration phase,\n + 3 = refinement phase." + +:Evaluate: MapSample::usage = "MapSample is a function used to map the integrand over the points to be sampled." + + +:Evaluate: Begin["`Divonne`"] + +:Begin: +:Function: Divonne +:Pattern: MLDivonne[ndim_, ncomp_, + epsrel_, epsabs_, flags_, seed_, + mineval_, maxeval_, + key1_, key2_, key3_, maxpass_, + border_, maxchisq_, mindeviation_, + xgiven_, fgiven_, nextra_, statefile_] +:Arguments: {ndim, ncomp, + epsrel, epsabs, flags, seed, + mineval, maxeval, + key1, key2, key3, maxpass, + border, maxchisq, mindeviation, + xgiven, fgiven, nextra, statefile} +:ArgumentTypes: {Integer, Integer, + Real64, Real64, Integer, Integer, + Integer, Integer, + Integer, Integer, Integer, Integer, + Real64, Real64, Real64, + Real64List, Real64List, Integer, String} +:ReturnType: Manual +:End: + +:Evaluate: Attributes[Divonne] = {HoldFirst} + +:Evaluate: Options[Divonne] = {PrecisionGoal -> 3, AccuracyGoal -> 12, + MinPoints -> 0, MaxPoints -> 50000, + Key1 -> 47, Key2 -> 1, Key3 -> 1, MaxPass -> 5, + Border -> 0, MaxChisq -> 10, MinDeviation -> .25, + Given -> {}, NExtra -> 0, PeakFinder -> ({}&), + StateFile -> "", Verbose -> 1, Final -> All, + PseudoRandom -> False, PseudoRandomSeed -> 5489, + RetainStateFile -> False, Regions -> False, Compiled -> True} + +:Evaluate: Divonne[f_, v:{_, _, _}.., opt___Rule] := + Block[ {ff = HoldForm[f], ndim = Length[{v}], ncomp, + tags, vars, lower, range, jac, tmp, defs, intT, intX, + rel, abs, mineval, maxeval, key1, key2, key3, maxpass, border, + maxchisq, mindeviation, given, nextra, peakfinder, state, + final, verbose, level, seed, retain, regions, compiled, + $Phase}, + Message[Divonne::optx, #, Divonne]&/@ + Complement[First/@ {opt}, tags = First/@ Options[Divonne]]; + {rel, abs, mineval, maxeval, key1, key2, key3, maxpass, border, + maxchisq, mindeviation, given, nextra, peakfinder, state, + verbose, final, level, seed, retain, regions, compiled} = + tags /. {opt} /. Options[Divonne]; + {vars, lower, range} = Transpose[{v}]; + jac = Simplify[Times@@ (range -= lower)]; + tmp = Array[tmpvar, ndim]; + defs = Simplify[lower + range tmp]; + Block[{Set}, define[compiled, tmp, vars, Thread[vars = defs], jac]]; + intT = integrandT[f]; + intX = integrandX[f]; + given = Flatten[given]; + Block[#, + ncomp = Length[intT@@ RandomReal[1, ndim]]; + MLDivonne[ndim, ncomp, 10.^-rel, 10.^-abs, + Min[Max[verbose, 0], 3] + + If[final === Last, 4, 0] + + If[TrueQ[retain], 16, 0] + + If[TrueQ[regions], 128, 0] + + If[IntegerQ[level], 256 level, 0], + If[level =!= False && IntegerQ[seed], seed, 0], + mineval, maxeval, + key1, key2, key3, maxpass, + N[border], N[maxchisq], N[mindeviation], + given, sample[given, 0, intX], nextra, state] + ]& @ vars + ] + +:Evaluate: tmpvar[n_] := ToExpression["Cuba`Divonne`t" <> ToString[n]] + +:Evaluate: Attributes[foo] = {HoldAll} + +:Evaluate: define[True, tmp_, vars_, defs_, jac_] := ( + TtoX := TtoX = Compile[tmp, defs]; + integrandT[f_] := Compile[tmp, eval[defs, N[f jac]], + {{_eval, _Real, 1}}]; + integrandX[f_] := Compile[vars, eval[vars, N[f jac]], + {{_eval, _Real, 1}}] ) + +:Evaluate: define[_, tmp_, vars_, defs_, jac_] := ( + TtoX := TtoX = Function[tmp, defs]; + integrandT[f_] := Function[tmp, eval[defs, N[f jac]]]; + integrandX[f_] := Function[vars, eval[vars, N[f jac]]] ) + +:Evaluate: eval[_, f_Real] := {f} + +:Evaluate: eval[_, f:{__Real}] := f + +:Evaluate: eval[x_, _] := (Message[Divonne::badsample, ff, x]; {}) + +:Evaluate: sample[x_, p_, i_:intT] := ( + $Phase = p; + Check[Flatten @ MapSample[i@@ # &, Partition[x, ndim]], {}] ) + +:Evaluate: ValueQ[MapSample] || (MapSample = Map) + +:Evaluate: findpeak[b_, p_] := Check[Join[#, sample[#, p, intX]]& @ + N[Flatten[peakfinder@@ MapThread[TtoX, Partition[b, 2]]]], {}] + +:Evaluate: region[bounds_, r___] := Region[##, r]&@@ + MapThread[TtoX, Partition[bounds, 2]] + +:Evaluate: Divonne::badsample = "`` is not a real-valued function at ``." + +:Evaluate: Divonne::baddim = "Cannot integrate in `` dimensions." + +:Evaluate: Divonne::badcomp = "Cannot integrate `` components." + +:Evaluate: Divonne::accuracy = + "Desired accuracy was not reached within `` integrand evaluations on `` subregions. + Estimate that MaxPoints needs to be increased by `` for this accuracy." + +:Evaluate: Divonne::success = "Needed `` integrand evaluations on `` subregions." + +:Evaluate: End[] + +:Evaluate: EndPackage[] + + +/* + Divonne.tm + Multidimensional integration by partitioning + originally by J.H. Friedman and M.H. Wright + (CERNLIB subroutine D151) + this version by Thomas Hahn + last modified 13 Mar 15 th +*/ + + +#define DIVONNE +#define ROUTINE "Divonne" + +#include "mathlink.h" +#include "decl.h" +#include "MSample.c" + +/*********************************************************************/ + +static void Status(MLCONST char *msg, cint n1, cint n2, cint n3) +{ + MLPutFunction(stdlink, "CompoundExpression", 2); + MLPutFunction(stdlink, "Message", 4); + MLPutFunction(stdlink, "MessageName", 2); + MLPutSymbol(stdlink, "Divonne"); + MLPutString(stdlink, msg); + MLPutInteger(stdlink, n1); + MLPutInteger(stdlink, n2); + MLPutInteger(stdlink, n3); +} + +/*********************************************************************/ + +static inline void DoIntegrate(This *t) +{ + real integral[NCOMP], error[NCOMP], prob[NCOMP]; + cint fail = Integrate(t, integral, error, prob); + + if( fail < 0 ) { + switch( fail ) { + case -99: + MLPutFunction(stdlink, "Abort", 0); + return; + case -1: + Status("baddim", t->ndim, 0, 0); + break; + case -2: + Status("badcomp", t->ncomp, 0, 0); + break; + } + MLPutSymbol(stdlink, "$Failed"); + } + else { + Status(fail ? "accuracy" : "success", t->neval, t->nregions, fail); + MLPutFunction(stdlink, "Thread", 1); + MLPutFunction(stdlink, "List", 3); + MLPutRealxList(stdlink, integral, t->ncomp); + MLPutRealxList(stdlink, error, t->ncomp); + MLPutRealxList(stdlink, prob, t->ncomp); + } +} + +/*********************************************************************/ + +void Divonne(cint ndim, cint ncomp, + creal epsrel, creal epsabs, + cint flags, cint seed, + cnumber mineval, cnumber maxeval, + cint key1, cint key2, cint key3, cint maxpass, + creal border, creal maxchisq, creal mindeviation, + real *xgiven, cint nxgiven, real *fgiven, cint nfgiven, + cnumber nextra, cchar *statefile) +{ + This t; + t.ldxgiven = t.ndim = ndim; + t.ncomp = ncomp; + t.epsrel = epsrel; + t.epsabs = epsabs; + t.flags = flags; + t.seed = seed; + t.mineval = mineval; + t.maxeval = maxeval; + t.key1 = key1; + t.key2 = key2; + t.key3 = key3; + t.maxpass = maxpass; + t.border.upper = 1 - (t.border.lower = border); + t.maxchisq = maxchisq; + t.mindeviation = mindeviation; + t.ngiven = nxgiven/ndim; + t.xgiven = xgiven; + t.fgiven = fgiven; + t.nextra = nextra; + t.statefile = statefile; + + DoIntegrate(&t); + + MLEndPacket(stdlink); +} + +/*********************************************************************/ + +int main(int argc, char **argv) +{ + return MLMain(argc, argv); +} + diff --git a/Cuba/src/divonne/Explore.c b/Cuba/src/divonne/Explore.c new file mode 100644 index 0000000..e29520c --- /dev/null +++ b/Cuba/src/divonne/Explore.c @@ -0,0 +1,160 @@ +/* + Explore.c + sample region, determine min and max, split if necessary + this file is part of Divonne + last modified 12 Mar 15 th +*/ + + +typedef struct { + real fmin, fmax; + creal *xmin, *xmax; +} Extrema; + +/*********************************************************************/ + +static int ExploreSerial(This *t, ccount iregion) +{ + csize_t regionsize = RegionSize; + Region *region = RegionPtr(iregion); + cBounds *bounds = region->bounds; + Result *result = RegionResult(region); + real *minmax = RegionMinMax(region); + + Vector(Extrema, extrema, NCOMP); + Vector(real, xtmp, NDIM); + Result *r; + creal *x; + real *f; + real halfvol, maxerr; + count n, dim, comp, maxcomp; + cSamples *samples = &t->samples[region->isamples]; + + for( comp = 0; comp < t->ncomp; ++comp ) { + Extrema *e = &extrema[comp]; + e->fmin = INFTY; + e->fmax = -INFTY; + e->xmin = e->xmax = NULL; + } + + if( region->isamples == 0 ) { /* others already sampled */ + real vol = 1; + for( dim = 0; dim < t->ndim; ++dim ) { + cBounds *b = &bounds[dim]; + vol *= b->upper - b->lower; + } + region->vol = vol; + + for( comp = 0; comp < t->ncomp; ++comp ) { + Result *r = &result[comp]; + r->fmin = INFTY; + r->fmax = -INFTY; + } + + x = t->xgiven; + f = t->fgiven; + n = t->ngiven; + if( t->nextra ) n += SampleExtra(t, bounds); + + for( ; n; --n ) { + for( dim = 0; dim < t->ndim; ++dim ) { + cBounds *b = &bounds[dim]; + if( x[dim] < b->lower || x[dim] > b->upper ) goto skip; + } + for( comp = 0; comp < t->ncomp; ++comp ) { + Extrema *e = &extrema[comp]; + creal y = f[comp]; + if( y < e->fmin ) e->fmin = y, e->xmin = x; + if( y > e->fmax ) e->fmax = y, e->xmax = x; + } +skip: + x += t->ldxgiven; + f += t->ncomp; + } + + samples->sampler(t, iregion); + } + + x = samples->x; + f = samples->f; + for( n = samples->n; n; --n ) { + for( comp = 0; comp < t->ncomp; ++comp ) { + Extrema *e = &extrema[comp]; + creal y = *f++; + if( y < e->fmin ) e->fmin = y, e->xmin = x; + if( y > e->fmax ) e->fmax = y, e->xmax = x; + } + x += t->ndim; + } + t->neval_opt -= t->neval; + + halfvol = .5*region->vol; + maxerr = -INFTY; + maxcomp = -1; + + for( comp = 0; comp < t->ncomp; ++comp ) { + Extrema *e = &extrema[comp]; + Result *r = &result[comp]; + real ftmp, err; + + if( e->xmin ) { /* not all NaNs */ + t->selectedcomp = comp; + XCopy(xtmp, e->xmin); + ftmp = FindMinimum(t, bounds, xtmp, e->fmin); + if( ftmp < r->fmin ) { + r->fmin = ftmp; + XCopy(&minmax[2*comp*t->ndim], xtmp); + } + + t->selectedcomp = Tag(comp); + XCopy(xtmp, e->xmax); + ftmp = -FindMinimum(t, bounds, xtmp, -e->fmax); + if( ftmp > r->fmax ) { + r->fmax = ftmp; + XCopy(&minmax[(2*comp + 1)*t->ndim], xtmp); + } + } + + r->spread = halfvol*(r->fmax - r->fmin); + err = r->spread/Max(fabsx(r->avg), NOTZERO); + if( err > maxerr ) { + maxerr = err; + maxcomp = comp; + } + } + + t->neval_opt += t->neval; + + if( maxcomp == -1 ) { /* all NaNs */ + region->depth = 0; + return -1; + } + + region->cutcomp = maxcomp; + r = RegionResult(region) + maxcomp; + if( halfvol*(r->fmin + r->fmax) > r->avg ) { + region->fminor = r->fmin; + region->fmajor = r->fmax; + region->xmajor = (2*maxcomp + 1)*t->ndim; + } + else { + region->fminor = r->fmax; + region->fmajor = r->fmin; + region->xmajor = 2*maxcomp*t->ndim; + } + + if( region->isamples == 0 ) { + if( (region->depth < INIDEPTH && r->spread < samples->neff*r->err) || + r->spread < t->totals[maxcomp].secondspread ) + region->depth = 0; + if( region->depth == 0 ) + for( comp = 0; comp < t->ncomp; ++comp ) + t->totals[comp].secondspread = + Max(t->totals[comp].secondspread, result[comp].spread); + } + + if( region->depth ) Split(t, iregion); + + return iregion; +} + diff --git a/Cuba/src/divonne/FindMinimum.c b/Cuba/src/divonne/FindMinimum.c new file mode 100644 index 0000000..ac7fd90 --- /dev/null +++ b/Cuba/src/divonne/FindMinimum.c @@ -0,0 +1,694 @@ +/* + FindMinimum.c + find minimum (maximum) of hyperrectangular region + this file is part of Divonne + last modified 12 Mar 15 th +*/ + + +#define EPS POW2(52) +#define RTEPS POW2(26) +#define QEPS POW2(13) + +#define DELTA POW2(16) +#define RTDELTA POW2(8) +#define QDELTA POW2(4) + +/* +#define DELTA 1e-5 +#define RTDELTA 3.1622776601683791e-3 +#define QDELTA 5.6234132519034912e-2 +*/ + +#define SUFTOL 8*QEPS*QDELTA +#define FTOL 5e-2 +#define GTOL 1e-2 + +#define Hessian(i, j) hessian[(i)*t->ndim + j] + +typedef struct { real dx, f; } Point; + +/*********************************************************************/ + +static inline real Dot(ccount n, creal *a, creal *b) +{ + real sum = 0; + count i; + for( i = 0; i < n; ++i ) sum += a[i]*b[i]; + return sum; +} + +/*********************************************************************/ + +static inline real Length(ccount n, creal *vec) +{ + return sqrtx(Dot(n, vec, vec)); +} + +/*********************************************************************/ + +static inline void LinearSolve(cThis *t, ccount n, creal *hessian, + creal *grad, real *p) +{ + int i, j; + real dir; + + for( i = 0; i < n; ++i ) { + dir = -grad[i]; + for( j = 0; j < i; ++j ) + dir -= Hessian(i, j)*p[j]; + p[i] = dir; + } + + while( --i >= 0 ) { + if( Hessian(i, i) <= 0 ) return; + dir = p[i]/Hessian(i, i); + for( j = i + 1; j < n; ++j ) + dir -= Hessian(j, i)*p[j]; + p[i] = dir; + } +} + +/*********************************************************************/ + +static void RenormalizeCholesky(cThis *t, ccount n, real *hessian, + real *z, real alpha) +{ + count i, j; + + for( i = 0; i < n; ++i ) { + creal dir = z[i]; + real beta = alpha*dir; + real gamma = Hessian(i, i); + real gammanew = Hessian(i, i) += beta*dir; + + if( i + 1 >= n || gammanew < 0 || + (gammanew < 1 && gamma > DBL_MAX*gammanew) ) return; + + gamma /= gammanew; + beta /= gammanew; + alpha *= gamma; + + if( gamma < .25 ) { + for( j = i + 1; j < n; ++j ) { + real delta = beta*z[j]; + z[j] -= dir*Hessian(j, i); + Hessian(j, i) = Hessian(j, i)*gamma + delta; + } + } + else { + for( j = i + 1; j < n; ++j ) { + z[j] -= dir*Hessian(j, i); + Hessian(j, i) += beta*z[j]; + } + } + } +} + +/*********************************************************************/ + +static void UpdateCholesky(cThis *t, ccount n, real *hessian, + real *z, real *p) +{ + int i, j; + real gamma = 0; + + for( i = 0; i < n; ++i ) { + real dir = z[i]; + for( j = 0; j < i; ++j ) + dir -= Hessian(i, j)*p[j]; + p[i] = dir; + gamma += Sq(dir)/Hessian(i, i); + } + gamma = Max(fabsx(1 - gamma), EPS); + + while( --i >= 0 ) { + creal dir = z[i] = p[i]; + real beta = dir/Hessian(i, i); + creal gammanew = gamma + dir*beta; + Hessian(i, i) *= gamma/gammanew; + beta /= gamma; + gamma = gammanew; + for( j = i + 1; j < n; ++j ) { + creal delta = beta*z[j]; + z[j] += dir*Hessian(j, i); + Hessian(j, i) -= delta; + } + } +} + +/*********************************************************************/ + +static inline void BFGS(cThis *t, ccount n, real *hessian, + creal *gnew, creal *g, real *p, creal dx) +{ + Vector(real, y, NDIM); + real c; + count i, j; + + for( i = 0; i < n; ++i ) + y[i] = gnew[i] - g[i]; + c = dx*Dot(n, y, p); + if( c < 1e-10 ) return; + RenormalizeCholesky(t, n, hessian, y, 1/c); + + c = Dot(n, g, p); + if( c >= 0 ) return; + c = 1/sqrtx(-c); + for( i = 0; i < n; ++i ) + y[i] = c*g[i]; + UpdateCholesky(t, n, hessian, y, p); + + for( i = 0; i < n - 1; ++i ) + for( j = i + 1; j < n; ++j ) + Hessian(i, j) = Hessian(j, i); +} + +/*********************************************************************/ + +static void Gradient(This *t, ccount nfree, ccount *ifree, + cBounds *b, real *x, creal y, real *grad) +{ + count i; + + for( i = 0; i < nfree; ++i ) { + ccount dim = Untag(ifree[i]); + creal xd = x[dim]; + creal delta = (b[dim].upper - xd < DELTA) ? -DELTA : DELTA; + x[dim] += delta; + grad[i] = (Sample(t, x) - y)/delta; + x[dim] = xd; + } +} + +/*********************************************************************/ + +static Point LineSearch(This *t, ccount nfree, ccount *ifree, + creal *p, creal *xini, real fini, real *x, + real step, creal range, creal grad, + creal ftol, creal xtol, creal gtol) +{ + real tol = ftol, tol2 = tol + tol; + Point cur = {0, fini}; + + XCopy(x, xini); + + /* don't even try if + a) we'd walk backwards, + b) the range to explore is too small, + c) the gradient is positive, i.e. we'd move uphill */ + + if( step > 0 && range > tol2 && grad <= 0 ) { + creal eps = RTEPS*fabsx(range) + ftol; + creal mingrad = -1e-4*grad, maxgrad = -gtol*grad; + + real end = range + eps; + real maxstep = range - eps/(1 + RTEPS); + + Point min = cur, v = cur, w = cur; + Point a = cur, b = {end, 0}; + real a1, b1 = end; + + /* distmin: distance along p from xini to the minimum, + u: second-lowest point, + v: third-lowest point, + a, b: interval in which the minimum is sought. */ + + real distmin = 0, dist, mid, q, r, s; + count i; + int shift; + bool first; + + for( first = true; ; first = false ) { + if( step >= maxstep ) { + step = maxstep; + maxstep = maxstep*(1 + .75*RTEPS) + .75*tol; + } + + cur.dx = (fabsx(step) >= tol) ? step : (step > 0) ? tol : -tol; + dist = distmin + cur.dx; + for( i = 0; i < nfree; ++i ) { + ccount dim = ifree[i]; + x[dim] = xini[dim] + dist*p[i]; + } + cur.f = Sample(t, x); + + if( cur.f <= min.f ) { + v = w; + w = min; + min.f = cur.f; + distmin = dist; + + /* shift everything to the new minimum position */ + maxstep -= cur.dx; + v.dx -= cur.dx; + w.dx -= cur.dx; + a.dx -= cur.dx; + b.dx -= cur.dx; + if( cur.dx < 0 ) b = w; + else a = w; + + tol = RTEPS*fabsx(distmin) + ftol; + tol2 = tol + tol; + } + else { + if( cur.dx < 0 ) a = cur; + else b = cur; + if( cur.f <= w.f || w.dx == 0 ) v = w, w = cur; + else if( cur.f <= v.f || v.dx == 0 || v.dx == w.dx ) v = cur; + } + + if( distmin + b.dx <= xtol ) break; + if( min.f < fini && + a.f - min.f <= fabsx(a.dx)*maxgrad && + (fabsx(distmin - range) > tol || maxstep < b.dx) ) break; + + mid = .5*(a.dx + b.dx); + if( fabsx(mid) <= tol2 - .5*(b.dx - a.dx) ) break; + + r = q = s = 0; + if( fabsx(end) > tol ) { + if( first ) { + creal s1 = w.dx*grad; + creal s2 = w.f - min.f; + s = (s1 - ((distmin == 0) ? 0 : 2*s2))*w.dx; + q = 2*(s2 - s1); + } + else { + creal s1 = w.dx*(v.f - min.f); + creal s2 = v.dx*(w.f - min.f); + s = s1*w.dx - s2*v.dx; + q = 2*(s2 - s1); + } + if( q > 0 ) s = -s; + q = fabsx(q); + r = end; + if( step != b1 || b.dx <= maxstep ) end = step; + } + + if( distmin == a.dx ) step = mid; + else if( b.dx > maxstep ) step = (step < b.dx) ? -4*a.dx : maxstep; + else { + real num = a.dx, den = b.dx; + if( fabsx(b.dx) <= tol || (w.dx > 0 && fabsx(a.dx) > tol) ) + num = b.dx, den = a.dx; + num /= -den; + step = (num < 1) ? .5*den*sqrtx(num) : 5/11.*den*(.1 + 1/num); + } + + if( step > 0 ) a1 = a.dx, b1 = step; + else a1 = step, b1 = b.dx; + if( fabsx(s) < fabsx(.5*q*r) && s > q*a1 && s < q*b1 ) { + step = s/q; + if( step - a.dx < tol2 || b.dx - step < tol2 ) + step = (mid > 0) ? tol : -tol; + } + else end = (mid > 0) ? b.dx : a.dx; + } + + first = true; + if( fabsx(distmin - range) < tol ) { + distmin = range; + if( maxstep > b.dx ) first = false; + } + + for( cur.dx = distmin, cur.f = min.f, shift = -1; ; + cur.dx = Max(ldexp(distmin, shift), ftol), shift <<= 1 ) { + for( i = 0; i < nfree; ++i ) { + ccount dim = ifree[i]; + x[dim] = xini[dim] + cur.dx*p[i]; + } + if( !first ) cur.f = Sample(t, x); + + if( cur.dx + b.dx <= xtol ) { + cur.dx = 0; + break; + } + if( fini - cur.f > cur.dx*mingrad ) break; + if( cur.dx <= ftol ) { + cur.dx = 0; + break; + } + first = false; + } + } + + return cur; +} + +/*********************************************************************/ + +static real LocalSearch(This *t, ccount nfree, ccount *ifree, + cBounds *b, creal *x, creal fx, real *z) +{ + Vector(real, y, NDIM); + Vector(real, p, NDIM); + real delta, smax, sopp, spmax, snmax; + real fy, fz, ftest; + int sign; + count i; + + /* Choose a direction p along which to move away from the + present x. We choose the direction which leads farthest + away from all borders. */ + + smax = INFTY; + for( i = 0; i < nfree; ++i ) { + ccount dim = ifree[i]; + creal sp = b[dim].upper - x[dim]; + creal sn = x[dim] - b[dim].lower; + if( sp < sn ) { + smax = Min(smax, sn); + p[i] = -1; + } + else { + smax = Min(smax, sp); + p[i] = 1; + } + } + smax *= .9; + + /* Move along p until the integrand changes appreciably + or we come close to a border. */ + + XCopy(y, x); + ftest = SUFTOL*(1 + fabsx(fx)); + delta = RTDELTA/5; + do { + delta = Min(5*delta, smax); + for( i = 0; i < nfree; ++i ) { + ccount dim = ifree[i]; + y[dim] = x[dim] + delta*p[i]; + } + fy = Sample(t, y); + if( fabsx(fy - fx) > ftest ) break; + } while( delta != smax ); + + /* Construct a second direction p' orthogonal to p, i.e. p.p' = 0. + We let pairs of coordinates cancel in the dot product, + i.e. we choose p'[0] = p[0], p'[1] = -p[1], etc. + (It should really be 1/p and -1/p, but p consists of 1's and -1's.) + For odd nfree, we let the last three components cancel by + choosing p'[nfree - 3] = p[nfree - 3], + p'[nfree - 2] = -1/2 p[nfree - 2], and + p'[nfree - 1] = -1/2 p[nfree - 1]. */ + + sign = (nfree <= 1 && fy > fx) ? 1 : -1; + spmax = snmax = INFTY; + for( i = 0; i < nfree; ++i ) { + ccount dim = ifree[i]; + real sp, sn; + p[i] *= (nfree & 1 && nfree - i <= 2) ? -.5*sign : (sign = -sign); + sp = (b[dim].upper - y[dim])/p[i]; + sn = (y[dim] - b[dim].lower)/p[i]; + if( p[i] > 0 ) { + spmax = Min(spmax, sp); + snmax = Min(snmax, sn); + } + else { + spmax = Min(spmax, -sn); + snmax = Min(snmax, -sp); + } + } + smax = .9*spmax; + sopp = .9*snmax; + + if( nfree > 1 && smax < snmax ) { + real tmp = smax; + smax = sopp; + sopp = tmp; + for( i = 0; i < nfree; ++i ) + p[i] = -p[i]; + } + + /* Move along p' until the integrand changes appreciably + or we come close to a border. */ + + XCopy(z, y); + ftest = SUFTOL*(1 + fabsx(fy)); + delta = RTDELTA/5; + do { + delta = Min(5*delta, smax); + for( i = 0; i < nfree; ++i ) { + ccount dim = ifree[i]; + z[dim] = y[dim] + delta*p[i]; + } + fz = Sample(t, z); + if( fabsx(fz - fy) > ftest ) break; + } while( delta != smax ); + + if( fy != fz ) { + real pleneps, grad, range, step; + Point low; + + if( fy > fz ) { + grad = (fz - fy)/delta; + range = smax/.9; + step = Min(delta + delta, smax); + } + else { + grad = (fy - fz)/delta; + range = sopp/.9 + delta; + step = Min(delta + delta, sopp); + XCopy(y, z); + fy = fz; + for( i = 0; i < nfree; ++i ) + p[i] = -p[i]; + } + + pleneps = Length(nfree, p) + RTEPS; + low = LineSearch(t, nfree, ifree, p, y, fy, z, step, range, grad, + RTEPS/pleneps, 0., RTEPS); + fz = low.f; + } + + if( fz != fx ) { + real pleneps, grad, range, step; + Point low; + + spmax = snmax = INFTY; + for( i = 0; i < nfree; ++i ) { + ccount dim = ifree[i]; + p[i] = z[dim] - x[dim]; + if( p[i] != 0 ) { + creal sp = (b[dim].upper - x[dim])/p[i]; + creal sn = (x[dim] - b[dim].lower)/p[i]; + if( p[i] > 0 ) { + spmax = Min(spmax, sp); + snmax = Min(snmax, sn); + } + else { + spmax = Min(spmax, -sn); + snmax = Min(snmax, -sp); + } + } + } + + grad = fz - fx; + range = spmax; + step = Min(.9*spmax, 2.); + pleneps = Length(nfree, p) + RTEPS; + if( fz > fx ) { + delta = Min(.9*snmax, RTDELTA/pleneps); + for( i = 0; i < nfree; ++i ) { + ccount dim = ifree[i]; + z[dim] = x[dim] - delta*p[i]; + } + fz = Sample(t, z); + if( fz < fx ) { + grad = (fz - fx)/delta; + range = snmax; + step = Min(.9*snmax, delta + delta); + for( i = 0; i < nfree; ++i ) + p[i] = -p[i]; + } + else if( delta < 1 ) grad = (fx - fz)/delta; + } + + low = LineSearch(t, nfree, ifree, p, x, fx, z, step, range, grad, + RTEPS/pleneps, 0., RTEPS); + fz = low.f; + } + + return fz; +} + +/*********************************************************************/ + +static real FindMinimum(This *t, cBounds *b, real *xmin, real fmin) +{ + Vector(real, hessian, NDIM*NDIM); + Vector(real, gfree, NDIM); + Vector(real, p, NDIM); + Vector(real, tmp, NDIM); + Vector(count, ifree, NDIM); + Vector(count, ifix, NDIM); + real ftmp, fini = fmin; + ccount maxeval = t->neval + 50*t->ndim; + count nfree, nfix; + count dim, local; + + Clear(hessian, t->ndim*t->ndim); + for( dim = 0; dim < t->ndim; ++dim ) + Hessian(dim, dim) = 1; + + /* Step 1: - classify the variables as "fixed" (sufficiently close + to a border) and "free", + - if the integrand is flat in the direction of the gradient + w.r.t. the free dimensions, perform a local search. */ + + for( local = 0; local < 2; ++local ) { + bool resample = false; + nfree = nfix = 0; + for( dim = 0; dim < t->ndim; ++dim ) { + if( xmin[dim] < b[dim].lower + (1 + fabsx(b[dim].lower))*QEPS ) { + xmin[dim] = b[dim].lower; + ifix[nfix++] = dim; + resample = true; + } + else if( xmin[dim] > b[dim].upper - (1 + fabsx(b[dim].upper))*QEPS ) { + xmin[dim] = b[dim].upper; + ifix[nfix++] = Tag(dim); + resample = true; + } + else ifree[nfree++] = dim; + } + + if( resample ) fini = fmin = Sample(t, xmin); + + if( nfree == 0 ) goto releasebounds; + + Gradient(t, nfree, ifree, b, xmin, fmin, gfree); + if( local || Length(nfree, gfree) > GTOL ) break; + + ftmp = LocalSearch(t, nfree, ifree, b, xmin, fmin, tmp); + if( ftmp > fmin - (1 + fabsx(fmin))*RTEPS ) + goto releasebounds; + fmin = ftmp; + XCopy(xmin, tmp); + } + + while( t->neval <= maxeval ) { + + /* Step 2a: perform a quasi-Newton iteration on the free + variables only. */ + + if( nfree > 0 ) { + real plen, pleneps; + real minstep; + count i, mini = 0, minfix = 0; + Point low; + + LinearSolve(t, nfree, hessian, gfree, p); + plen = Length(nfree, p); + pleneps = plen + RTEPS; + + minstep = INFTY; + for( i = 0; i < nfree; ++i ) { + count dim = Untag(ifree[i]); + if( fabsx(p[i]) > EPS ) { + real step; + count fix; + if( p[i] < 0 ) { + step = (b[dim].lower - xmin[dim])/p[i]; + fix = dim; + } + else { + step = (b[dim].upper - xmin[dim])/p[i]; + fix = Tag(dim); + } + if( step < minstep ) { + minstep = step; + mini = i; + minfix = fix; + } + } + } + + if( minstep*pleneps <= DELTA ) { +fixbound: + ifix[nfix++] = minfix; + + if( mini < --nfree ) { + creal diag = Hessian(mini, mini); + + Clear(tmp, mini); + for( i = mini; i < nfree; ++i ) + tmp[i] = Hessian(i + 1, mini); + + for( i = mini; i < nfree; ++i ) { + Move(&Hessian(i, 0), &Hessian(i + 1, 0), i); + Hessian(i, i) = Hessian(i + 1, i + 1); + } + RenormalizeCholesky(t, nfree, hessian, tmp, diag); + + Move(&ifree[mini], &ifree[mini + 1], nfree - mini); + Move(&gfree[mini], &gfree[mini + 1], nfree - mini); + } + continue; + } + + low = LineSearch(t, nfree, ifree, p, xmin, fmin, tmp, + Min(minstep, 1.), Min(minstep, 100.), Dot(nfree, gfree, p), + RTEPS/pleneps, DELTA/pleneps, .2); + + if( low.dx > 0 ) { + real fdiff; + + fmin = low.f; + XCopy(xmin, tmp); + + Gradient(t, nfree, ifree, b, xmin, fmin, tmp); + BFGS(t, nfree, hessian, tmp, gfree, p, low.dx); + XCopy(gfree, tmp); + + if( fabsx(low.dx - minstep) < QEPS*minstep ) goto fixbound; + + fdiff = fini - fmin; + fini = fmin; + if( fdiff > (1 + fabsx(fmin))*FTOL || + low.dx*plen > (1 + Length(t->ndim, xmin))*FTOL ) continue; + } + } + + /* Step 2b: check whether freeing any fixed variable will lead + to a reduction in f. */ + +releasebounds: + if( nfix > 0 ) { + real mingrad = INFTY; + count i, mini = 0; + bool repeat = false; + + Gradient(t, nfix, ifix, b, xmin, fmin, tmp); + + for( i = 0; i < nfix; ++i ) { + creal grad = Sign(ifix[i])*tmp[i]; + if( grad < -RTEPS ) { + repeat = true; + if( grad < mingrad ) { + mingrad = grad; + mini = i; + } + } + } + + if( repeat ) { + gfree[nfree] = tmp[mini]; + ifree[nfree] = Untag(ifix[mini]); + Clear(&Hessian(nfree, 0), nfree); + Hessian(nfree, nfree) = 1; + ++nfree; + + --nfix; + Move(&ifix[mini], &ifix[mini + 1], nfix - mini); + continue; + } + } + + break; + } + + return fmin; +} + diff --git a/Cuba/src/divonne/Integrate.c b/Cuba/src/divonne/Integrate.c new file mode 100644 index 0000000..335aa57 --- /dev/null +++ b/Cuba/src/divonne/Integrate.c @@ -0,0 +1,501 @@ +/* + Integrate.c + partition the integration region until each region + has approximately equal spread = 1/2 vol (max - min), + then do a main integration over all regions + this file is part of Divonne + checkpointing by B. Chokoufe + last modified 13 Mar 15 th +*/ + + +typedef struct { + signature_t signature; + number neval, neval_opt, neval_cut; + number nmin, nrand; + count iregion, nregions; + count phase, iter, pass, size; + Totals totals[]; +} State; + +static int Integrate(This *t, real *integral, real *error, real *prob) +{ + StateDecl; + csize_t statesize = sizeof(State) + NCOMP*sizeof(Totals); + Sized(State, state, statesize); + csize_t regionsize = RegionSize; + Vector(char, out, 64*NDIM + 256*NCOMP); + + Totals *tot, *Tot = state->totals + t->ncomp; + Bounds *b, *B; + Result *res; + count comp, iregion; + number nwant, err; + real nneed; + ML_ONLY(number neff;) + int fail; + + if( VERBOSE > 1 ) { + sprintf(out, "Divonne input parameters:\n" + " ndim " COUNT "\n ncomp " COUNT "\n" + ML_NOT(" nvec " NUMBER "\n") + " epsrel " REAL "\n epsabs " REAL "\n" + " flags %d\n seed %d\n" + " mineval " NUMBER "\n maxeval " NUMBER "\n" + " key1 %d\n key2 %d\n key3 %d\n maxpass " COUNT "\n" + " border " REAL "\n maxchisq " REAL "\n mindeviation " REAL "\n" + " ngiven " NUMBER "\n nextra " NUMBER "\n" + " statefile \"%s\"", + t->ndim, t->ncomp, + ML_NOT(t->nvec,) + SHOW(t->epsrel), SHOW(t->epsabs), + t->flags, t->seed, + t->mineval, t->maxeval, + t->key1, t->key2, t->key3, t->maxpass, + SHOW(t->border.lower), SHOW(t->maxchisq), SHOW(t->mindeviation), + t->ngiven, t->nextra, + t->statefile); + Print(out); + } + + if( BadComponent(t) ) return -2; + if( BadDimension(t, t->key1) || + BadDimension(t, t->key2) || + ((t->key3 & -2) && BadDimension(t, t->key3)) ) return -1; + + FORK_ONLY(t->nframe = 0;) + + AllocGiven(t); + SamplesIni(&t->samples[0]); + SamplesIni(&t->samples[1]); + SamplesIni(&t->samples[2]); + RuleAlloc(t); + if( IsSobol(t->key1) | IsSobol(t->key2) | IsSobol(t->key3) ) + IniRandom(t); + t->epsabs = Max(t->epsabs, NOTZERO); + t->totals = state->totals; + + ForkCores(t); + + if( (fail = setjmp(t->abort)) ) goto abort; + + SamplesLookup(t, &t->samples[0], t->key1, + (number)47, (number)INT_MAX, (number)0); + SamplesAlloc(t, &t->samples[0]); + + StateSetup(t); + + if( StateReadTest(t) ) { + StateReadOpen(t, fd) { + if( read(fd, state, statesize) != statesize || + state->signature != StateSignature(t, 3) ) break; + t->nregions = state->nregions; + if( st.st_size != statesize + t->nregions*regionsize ) break; + t->neval = state->neval; + t->neval_opt = state->neval_opt; + t->neval_cut = state->neval_cut; + t->nrand = state->nrand; + t->phase = state->phase; + t->size = state->size; + AllocRegions(t); + StateRead(fd, t->region, t->nregions*regionsize); + } StateReadClose(t, fd); + + if( IsSobol(t->key1) | IsSobol(t->key2) | IsSobol(t->key3) ) + t->rng.skiprandom(t, t->nrand); + } + + if( ini ) { +#if MLVERSION + t->neval = t->ngiven; +#else + t->neval = 0; +#endif + t->neval_opt = 0; + t->neval_cut = 0; + t->nrand = 0; + + t->size = CHUNKSIZE; + AllocRegions(t); + for( B = (b = t->region->bounds) + t->ndim; b < B; ++b ) { + b->lower = 0; + b->upper = 1; + } + t->nregions = 1; + + t->phase = 1; + state->iter = 1; + state->pass = 0; + state->nmin = INT_MAX; + state->iregion = 0; + FClear(state->totals); + } + + /* Step 1: partition the integration region */ + + if( t->phase == 1 ) { + if( VERBOSE ) Print("\nPartitioning phase:"); + + if( ini ) Iterate(t, 0, INIDEPTH, 0, NULL); + + for( ; ; ++state->iter ) { + Totals *maxtot; + count valid; + + for( tot = state->totals; tot < Tot; ++tot ) { + tot->avg = tot->spreadsq = 0; + tot->spread = tot->secondspread = -INFTY; + } + + for( iregion = 0; iregion < t->nregions; ++iregion ) + for( res = RegionResult(RegionPtr(iregion)), tot = state->totals; + tot < Tot; ++res, ++tot ) { + tot->avg += res->avg; + tot->spreadsq += Sq(res->spread); + if( res->spread > tot->spread ) { + tot->secondspread = tot->spread; + tot->spread = res->spread; + tot->iregion = iregion; + } + else if( res->spread > tot->secondspread ) + tot->secondspread = res->spread; + } + + valid = 0; + for( maxtot = tot = state->totals, comp = 0; tot < Tot; ++tot, ++comp ) { + integral[comp] = tot->avg; + valid += tot->avg == tot->avg; + if( tot->spreadsq > maxtot->spreadsq ) maxtot = tot; + tot->spread = sqrtx(tot->spreadsq); + error[comp] = tot->spread/t->samples[0].neff; + } + +#define WriteState(t) \ +if( StateWriteTest(t) ) { \ + StateWriteOpen(t, fd) { \ + state->signature = StateSignature(t, 3); \ + state->neval = t->neval; \ + state->neval_opt = t->neval_opt; \ + state->neval_cut = t->neval_cut; \ + state->nrand = t->nrand; \ + state->nregions = t->nregions; \ + state->phase = t->phase; \ + state->size = t->size; \ + StateWrite(fd, state, statesize); \ + StateWrite(fd, t->region, t->nregions*regionsize); \ + } StateWriteClose(t, fd); \ +} + + WriteState(t); + + if( VERBOSE ) { + char *oe = out + sprintf(out, "\n" + "Iteration " COUNT " (pass " COUNT "): " COUNT " regions\n" + NUMBER7 " integrand evaluations so far,\n" + NUMBER7 " in optimizing regions,\n" + NUMBER7 " in finding cuts", + state->iter, state->pass, t->nregions, + t->neval, t->neval_opt, t->neval_cut); + for( comp = 0; comp < t->ncomp; ++comp ) + oe += sprintf(oe, "\n[" COUNT "] " + REAL " +- " REAL, + comp + 1, SHOW(integral[comp]), SHOW(error[comp])); + Print(out); + } + + if( valid == 0 ) goto abort; /* all NaNs */ + + if( t->neval > t->maxeval ) break; + + nneed = maxtot->spread/MaxErr(maxtot->avg); + if( nneed < MAXPRIME ) { + cnumber n = t->neval + t->nregions*(number)ceil(nneed); + if( n < state->nmin ) { + state->nmin = n; + state->pass = 0; + } + else if( ++state->pass > t->maxpass && n >= t->mineval ) break; + } + + Iterate(t, maxtot->iregion, DEPTH, -1, NULL); + } + } + + /* Step 2: do a "full" integration on each region */ + +/* nneed = t->samples[0].neff + 1; */ + nneed = 2*t->samples[0].neff; + for( tot = state->totals; tot < Tot; ++tot ) { + creal maxerr = MaxErr(tot->avg); + tot->nneed = tot->spread/maxerr; + nneed = Max(nneed, tot->nneed); + tot->maxerrsq = Sq(maxerr); + tot->mindevsq = tot->maxerrsq*Sq(t->mindeviation); + } + nwant = (number)Min(ceil(nneed), NWANTMAX/40.); + + err = SamplesLookup(t, &t->samples[1], t->key2, nwant, + (t->maxeval - t->neval)/t->nregions + 1, t->samples[0].n + 1); + + /* the number of points needed to reach the desired accuracy */ + fail = Unmark(err)*t->nregions; + + if( Marked(err) ) { + if( VERBOSE ) Print("\nNot enough samples left for main integration."); + for( comp = 0; comp < t->ncomp; ++comp ) + prob[comp] = -999; + ML_ONLY(neff = t->samples[0].neff;) + } + else { + bool can_adjust = (t->key3 == 1 && + t->samples[1].sampler != SampleRule && + (t->key2 < 0 || t->samples[1].neff < MAXPRIME)); + count df, nlimit; + + SamplesAlloc(t, &t->samples[1]); + + if( VERBOSE ) { + sprintf(out, "\nMain integration on " COUNT + " regions with " NUMBER " samples per region.", + t->nregions, t->samples[1].neff); + Print(out); + } + + nlimit = t->maxeval - t->nregions*t->samples[1].n; + df = 0; + +#define CopyPhaseResults(f) \ + for( res = RegionResult(region), tot = state->totals; tot < Tot; ++res, ++tot ) { \ + PhaseResult *p = &tot->phase[f]; \ + p->avg = res->avg; \ + p->err = res->err; \ + } + +#define Var2(f, r) Sq((r)->err ? (r)->err : res->spread/t->samples[f].neff) +#define Var(f) Var2(f, &tot->phase[f]) + + while( state->iregion < t->nregions ) { + Region *region; + char *oe = out; + int todo; + +refine: + region = RegionPtr(state->iregion); + CopyPhaseResults(0); + t->phase = 2; + region->isamples = 1; + t->samples[1].sampler(t, state->iregion); + CopyPhaseResults(1); + + if( can_adjust ) + for( res = RegionResult(region), tot = state->totals; + tot < Tot; ++res, ++tot ) + tot->spreadsq -= Sq(res->spread); + + nlimit += t->samples[1].n; + todo = 0; + + for( res = RegionResult(region), tot = state->totals; + tot < Tot; ++tot ) { + if( t->neval < nlimit ) { + creal avg2 = tot->phase[1].avg; + creal diffsq = Sq(avg2 - tot->phase[0].avg); + + if( res->err*tot->nneed > res->spread || + diffsq > Max(t->maxchisq*(Var(0) + Var(1)), EPS*Sq(avg2)) ) { + if( t->key3 && diffsq > tot->mindevsq ) { + if( t->key3 == 1 ) { + if( VERBOSE > 2 ) Print("\nSplit"); + t->phase = 1; + Iterate(t, state->iregion, POSTDEPTH, 1, state->totals); + + if( can_adjust ) { + cnumber nnew = (tot->spreadsq/Sq(NWANTMAX) > tot->maxerrsq) ? + NWANTMAX : + (number)ceil(sqrtx(tot->spreadsq/tot->maxerrsq)); + if( nnew > nwant + nwant/64 ) { + cnumber err = SamplesLookup(t, &t->samples[1], t->key2, nnew, + (t->maxeval - t->neval)/t->nregions + 1, t->samples[1].n); + fail += Unmark(err)*t->nregions; + nwant = nnew; + SamplesFree(&t->samples[1]); + SamplesAlloc(t, &t->samples[1]); + + if( t->key2 > 0 && t->samples[1].neff >= MAXPRIME ) + can_adjust = false; + + if( VERBOSE > 2 ) { + sprintf(out, "Sampling remaining " COUNT + " regions with " NUMBER " points per region.", + t->nregions, t->samples[1].neff); + Print(out); + } + } + } + goto refine; + } + todo |= 3; + } + todo |= 1; + } + } + } + + if( can_adjust ) + for( res = RegionResult(region), tot = state->totals; + tot < Tot; ++res, ++tot ) + tot->maxerrsq -= Sq(res->spread/t->samples[1].neff); + + switch( todo ) { + case 1: /* get spread right */ + region->isamples = 1; + ExploreSerial(t, state->iregion); + break; + + case 3: /* sample region again with more points */ + if( SamplesIniQ(&t->samples[2]) ) { + SamplesLookup(t, &t->samples[2], t->key3, + nwant, (number)INT_MAX, (number)0); + SamplesAlloc(t, &t->samples[2]); + } + t->phase = 3; + region->isamples = 2; + t->samples[2].sampler(t, state->iregion); + ExploreSerial(t, state->iregion); + ++region->depth; /* misused for df here */ + ++df; + } + + if( VERBOSE > 2 ) { + cchar *msg = "\nRegion (" REALF ") - (" REALF ")"; + for( B = (b = region->bounds) + t->ndim; b < B; ++b ) { + oe += sprintf(oe, msg, b->lower, b->upper); + msg = "\n (" REALF ") - (" REALF ")"; + } + } + + for( tot = state->totals, res = RegionResult(region), comp = 0; + tot < Tot; ++tot, ++res ) { + creal x1 = tot->phase[0].avg; + creal v1 = Var(0); + creal x2 = tot->phase[1].avg; + creal v2 = Var(1); + creal r2 = v1 ? v2/v1 : + Sq(t->samples[1].neff/(real)t->samples[0].neff); + + real norm = 1 + r2; + real avg = x2 + r2*x1; + real sigsq = v2; + real chisq = Sq(x2 - x1); + real chiden = v1 + v2; + + if( todo == 3 ) { + creal x3 = res->avg; + creal v3 = Var2(2, res); + creal r3 = v2 ? v3/v2 : + Sq(t->samples[2].neff/(real)t->samples[1].neff); + + norm = 1 + r3*norm; + avg = x3 + r3*avg; + sigsq = v3; + chisq = v1*Sq(x3 - x2) + v2*Sq(x3 - x1) + v3*chisq; + chiden = v1*v2 + v3*chiden; + } + + avg = LAST ? res->avg : (sigsq *= norm = 1/norm, avg*norm); + if( chisq > EPS ) chisq /= Max(chiden, NOTZERO); + + if( VERBOSE > 2 ) { +#define Out2(f, r) SHOW((r)->avg), SHOW(res->spread/t->samples[f].neff), SHOW((r)->err) +#define Out(f) Out2(f, &tot->phase[f]) + oe += sprintf(oe, "\n[" COUNT "] " + REAL " +- " REAL "(" REAL ")\n " + REAL " +- " REAL "(" REAL ")", ++comp, Out(0), Out(1)); + if( todo == 3 ) oe += sprintf(oe, "\n " + REAL " +- " REAL "(" REAL ")", Out2(2, res)); + oe += sprintf(oe, " \tchisq " REAL, SHOW(chisq)); + } + + tot->integral += avg; + tot->sigsq += sigsq; + tot->chisq += chisq; + + res->avg = avg; + res->spread = sqrtx(sigsq); + res->chisq = chisq; + } + + if( VERBOSE > 2 ) Print(out); + ++state->iregion; + + WriteState(t); + } + + df += t->nregions; + + for( tot = state->totals, comp = 0; tot < Tot; ++tot, ++comp ) { + integral[comp] = tot->integral; + error[comp] = sqrtx(tot->sigsq); + prob[comp] = ChiSquare(tot->chisq, df); + } + + if( VERBOSE > 2 ) { + char *oe = out + sprintf(out, "\nTotals:"); + for( tot = state->totals, comp = 0; tot < Tot; ++tot, ++comp ) + oe += sprintf(oe, "\n[" COUNT "] " + REAL " +- " REAL " \tchisq " REAL " (" COUNT " df)", + comp + 1, SHOW(integral[comp]), SHOW(error[comp]), + SHOW(tot->chisq), df); + Print(out); + } + + ML_ONLY(neff = 1;) + } + +#ifdef MLVERSION + if( REGIONS ) { + Vector(real, bounds, t->ndim*2); + + MLPutFunction(stdlink, "List", 2); + + MLPutFunction(stdlink, "List", t->nregions); + for( iregion = 0; iregion < t->nregions; ++iregion ) { + Region *region = RegionPtr(iregion); + cResult *Res; + real *d = bounds; + + for( B = (b = region->bounds) + t->ndim; b < B; ++b ) { + *d++ = b->lower; + *d++ = b->upper; + } + + MLPutFunction(stdlink, "Cuba`Divonne`region", 4); + + MLPutRealxList(stdlink, bounds, 2*t->ndim); + + MLPutFunction(stdlink, "List", t->ncomp); + for( Res = (res = RegionResult(region)) + t->ncomp; res < Res; ++res ) { + real r[] = {res->avg, res->spread/neff, res->chisq}; + MLPutRealxList(stdlink, r, Elements(r)); + } + + MLPutInteger(stdlink, region->depth + 1); /* misused for df */ + } + } +#endif + +abort: + FORK_ONLY(FrameFree(t, Master);) + + RuleFree(t); + SamplesFree(&t->samples[2]); + SamplesFree(&t->samples[1]); + SamplesFree(&t->samples[0]); + free(t->region); + free(t->xgiven); + + StateRemove(t); + + return fail; +} + diff --git a/Cuba/src/divonne/Iterate.c b/Cuba/src/divonne/Iterate.c new file mode 100644 index 0000000..ac4a4cd --- /dev/null +++ b/Cuba/src/divonne/Iterate.c @@ -0,0 +1,132 @@ +/* + Iterate.c + recursion over regions + this file is part of Divonne + last modified 12 Mar 15 th +*/ + + +static void Iterate(This *t, count iregion, cint depth, cint isamples, + Totals *totals) +{ + csize_t regionsize = RegionSize; + Region *parent, *region; + typedef struct { + real avg, err, spread, spreadsq; + } Corr; + Vector(Corr, corr, NCOMP); + Corr *c, *C = corr + t->ncomp; + Result *res; + count ireg, mreg = iregion; + count comp, maxsplit; + int last, idest, isrc; + + region = RegionPtr(iregion); + region->depth = depth; + region->next = -iregion - 1; + if( isamples < 0 ) Split(t, iregion); + else { + region->isamples = isamples; + ExploreSerial(t, iregion); + } + + ireg = iregion + RegionPtr(iregion)->next; + + do { + region = RegionPtr(ireg); + if( region->depth > 0 ) { + --region->depth; +FORK_ONLY(more:) + ireg = Explore(t, ireg); + if( ireg == -1 ) return; + region = RegionPtr(ireg); + } + if( region->depth < 0 ) mreg = IMax(mreg, ireg); + ireg += region->next; + } while( ireg > 0 ); + + FORK_ONLY(if( t->running ) goto more;) + + maxsplit = 1; + for( ireg = mreg; ireg >= iregion; --ireg ) { + parent = RegionPtr(ireg); + maxsplit -= NegQ(parent->depth); + if( parent->depth < 0 ) { + count xreg; + struct { + count from, to; + } todo[maxsplit], *tdmax = todo, *td; + count nsplit = 0; + real norm; + + FClear(corr); + + tdmax->from = ireg + parent->next; + tdmax->to = tdmax->from - parent->depth; + ++tdmax; + for( td = todo; td < tdmax; ++td ) { + for( xreg = td->from; xreg < td->to; ++xreg ) { + Region *region = RegionPtr(xreg); + if( region->depth < 0 ) { + tdmax->from = xreg + region->next; + tdmax->to = tdmax->from - region->depth; + ++tdmax; + } + else { + ++nsplit; + for( res = RegionResult(region), c = corr; c < C; ++res, ++c ) { + c->avg += res->avg; + c->err += res->err; + c->spread += Sq(res->spread); + } + } + } + } + + norm = 1./nsplit--; + for( res = RegionResult(parent), c = corr; c < C; ++res, ++c ) { + creal diff = fabsx(res->avg - c->avg)*norm; + c->avg = diff*norm*nsplit; + c->err = (c->err == 0) ? 1 : 1 + diff/c->err; + c->spread = (c->spread == 0) ? 1 : 1 + diff/sqrtx(c->spread); + } + + for( td = todo; td < tdmax; ++td ) + for( xreg = td->from; xreg < td->to; ++xreg ) { + Region *region = RegionPtr(xreg); + if( region->depth >= 0 ) { + cnumber neff = t->samples[region->isamples].neff; + for( res = RegionResult(region), c = corr; c < C; ++res, ++c ) { + if( res->err > 0 ) res->err = res->err*c->err + c->avg; + res->spread = res->spread*c->spread + c->avg*neff; + c->spreadsq += Sq(res->spread); + } + } + } + } + } + + if( totals ) + for( comp = 0; comp < t->ncomp; ++comp ) + totals[comp].spreadsq += corr[comp].spreadsq; + + for( last = -1, idest = isrc = iregion; iregion <= mreg; ++iregion ) { + Region *region = RegionPtr(iregion); + cint cur = NegQ(region->depth); + switch( cur - last ) { + case -1: + memmove(RegionPtr(idest), RegionPtr(isrc), + (iregion - isrc)*regionsize); + idest += iregion - isrc; + break; + case 1: + isrc = iregion; + } + last = cur; + } + + memmove(RegionPtr(idest), RegionPtr(iregion), + (t->nregions - iregion)*regionsize); + t->nregions += idest - iregion; +} + diff --git a/Cuba/src/divonne/KorobovCoeff.c b/Cuba/src/divonne/KorobovCoeff.c new file mode 120000 index 0000000..c290ac5 --- /dev/null +++ b/Cuba/src/divonne/KorobovCoeff.c @@ -0,0 +1 @@ +KorobovCoeff.c-9689 \ No newline at end of file diff --git a/Cuba/src/divonne/KorobovCoeff.c-16033 b/Cuba/src/divonne/KorobovCoeff.c-16033 new file mode 100644 index 0000000..d242fdc --- /dev/null +++ b/Cuba/src/divonne/KorobovCoeff.c-16033 @@ -0,0 +1,1370 @@ +#define KOROBOV_MINDIM 2 +#define KOROBOV_MAXDIM 257 +#define MAXPRIME 16033 + +#define Hash(x) ((32879 - x)*(-47 + x))/212544 + +static int prime[] = { + FIRST,47,53,59,67,73,79,83,89,97,107,113,127,131,137,139,149,151,157, + 163,173,179,181,191,197,199,211,223,227,229,233,241,251,257,263,269,277, + 281,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397, + 401,409,419,421,431,433,439,449,457,461,467,479,487,491,499,503,509,521, + 523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641, + 643,647,653,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761, + 769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883, + 887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013, + 1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097, + 1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213, + 1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301, + 1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429, + 1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511, + 1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609, + 1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721, + 1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831, + 1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949, + 1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053, + 2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143, + 2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273, + 2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377, + 2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473, + 2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617, + 2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707, + 2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801, + 2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917, + 2927,2939,2953,2957,2963,2969,2971,2999,3001,3011,3019,3023,3037,3041, + 3049,3061,3067,3079,3083,3089,3109,3119,3121,3137,3163,3167,3169,3181, + 3187,3191,3203,3209,3217,3221,3229,3251,3253,3257,3259,3271,3299,3301, + 3307,3313,3319,3323,3329,3331,3343,3347,3359,3361,3371,3373,3389,3391, + 3407,3413,3433,3449,3457,3461,3463,3467,3469,3491,3499,3511,3517,3527, + 3529,3533,3539,3541,3547,3557,3559,3571,3581,3583,3593,3607,3613,3617, + 3623,3631,3637,3643,3659,3671,3673,3677,3691,3697,3701,3709,3719,3727, + 3733,3739,3761,3767,3769,3779,3793,3797,3803,3821,3823,3833,3847,3851, + 3853,3863,3877,3881,3889,3907,3911,3917,3919,3923,3929,3931,3943,3947, + 3967,3989,4001,4003,4007,4013,4019,4021,4027,4049,4051,4057,4073,4079, + 4091,4093,4099,4111,4127,4129,4133,4139,4153,4157,4159,4177,4201,4211, + 4217,4219,4229,4231,4241,4243,4253,4259,4261,4271,4273,4283,4289,4297, + 4327,4337,4339,4349,4357,4363,4373,4391,4397,4409,4421,4423,4441,4447, + 4451,4457,4463,4481,4483,4493,4507,4513,4517,4519,4523,4547,4549,4561, + 4567,4583,4591,4597,4603,4621,4637,4639,4643,4649,4651,4657,4663,4673, + 4679,4691,4703,4721,4723,4729,4733,4751,4759,4783,4787,4789,4793,4799, + 4801,4813,4817,4831,4861,4871,4877,4889,4903,4909,4919,4931,4933,4937, + 4943,4951,4957,4967,4969,4973,4987,4993,4999,5003,5009,5011,5021,5023, + 5039,5051,5059,5077,5081,5087,5099,5101,5107,5113,5119,5147,5153,5167, + 5171,5179,5189,5197,5209,5227,5231,5233,5237,5261,5273,5279,5281,5297, + 5303,5309,5323,5333,5347,5351,5381,5387,5393,5399,5407,5413,5417,5419, + 5431,5437,5441,5443,5449,5471,5477,5479,5483,5501,5503,5507,5519,5521, + 5527,5531,5557,5563,5569,5573,5581,5591,5623,5639,5641,5647,5651,5653, + 5657,5659,5669,5683,5689,5693,5701,5711,5717,5737,5741,5749,5779,5783, + 5791,5801,5807,5813,5821,5827,5839,5851,5861,5869,5881,5897,5903,5923, + 5927,5939,5953,5981,5987,6007,6011,6029,6037,6043,6047,6053,6067,6073, + 6079,6089,6091,6101,6113,6121,6131,6133,6143,6151,6163,6173,6197,6199, + 6203,6217,6229,6247,6257,6263,6269,6277,6287,6301,6311,6323,6329,6343, + 6353,6361,6373,6389,6397,6421,6427,6449,6451,6469,6473,6481,6491,6521, + 6529,6547,6551,6553,6563,6569,6571,6577,6581,6599,6607,6619,6637,6653, + 6659,6661,6673,6689,6691,6709,6719,6733,6737,6761,6763,6779,6781,6793, + 6803,6823,6827,6841,6857,6863,6871,6883,6899,6907,6917,6947,6949,6959, + 6961,6971,6983,6991,7001,7013,7027,7039,7043,7057,7069,7079,7103,7109, + 7121,7129,7151,7159,7177,7187,7193,7207,7211,7219,7229,7243,7253,7283, + 7297,7307,7309,7321,7331,7333,7349,7351,7369,7393,7411,7417,7433,7451, + 7457,7459,7477,7481,7489,7499,7517,7523,7537,7549,7561,7573,7583,7591, + 7607,7621,7639,7643,7649,7669,7681,7691,7703,7717,7727,7741,7753,7759, + 7789,7793,7817,7823,7829,7841,7853,7867,7877,7883,7901,7919,7927,7937, + 7951,7963,7993,8009,8011,8017,8039,8053,8059,8069,8081,8089,8101,8117, + 8123,8147,8161,8167,8179,8191,8209,8219,8231,8243,8263,8269,8287,8293, + 8311,8317,8329,8353,8363,8377,8387,8389,8419,8429,8443,8447,8467,8501, + 8513,8521,8527,8537,8543,8563,8573,8581,8599,8609,8627,8641,8647,8669, + 8681,8693,8707,8719,8737,8747,8761,8779,8783,8807,8819,8831,8849,8861, + 8867,8887,8893,8923,8933,8941,8963,8971,8999,9001,9013,9029,9043,9059, + 9067,9091,9103,9109,9133,9151,9161,9173,9187,9203,9221,9239,9241,9257, + 9277,9293,9311,9323,9337,9349,9371,9377,9397,9413,9431,9439,9461,9473, + 9491,9497,9521,9533,9551,9587,9601,9613,9619,9629,9643,9661,9677,9689, + 9697,9721,9739,9749,9767,9781,9803,9817,9833,9851,9859,9883,9901,9907, + 9929,9941,9967,9973,10007,10009,10037,10039,10061,10079,10093,10111, + 10133,10141,10159,10177,10193,10211,10223,10247,10259,10273,10301,10313, + 10331,10343,10369,10391,10399,10427,10433,10453,10477,10487,10501,10529, + 10531,10559,10589,10597,10613,10631,10651,10667,10687,10709,10723,10739, + 10771,10781,10799,10831,10837,10859,10883,10891,10909,10937,10949,10973, + 10993,11003,11027,11047,11069,11087,11113,11131,11149,11171,11197,11213, + 11239,11251,11273,11287,11311,11329,11353,11369,11393,11411,11437,11467, + 11483,11497,11519,11549,11551,11587,11617,11633,11657,11677,11699,11719, + 11743,11777,11789,11807,11831,11863,11887,11903,11923,11953,11971,11987, + 12011,12043,12071,12097,12119,12143,12163,12197,12211,12241,12263,12289, + 12323,12343,12373,12391,12421,12451,12473,12497,12527,12553,12583,12611, + 12637,12659,12689,12721,12743,12781,12809,12841,12853,12893,12923,12953, + 12983,13009,13049,13093,13109,13147,13171,13217,13241,13267,13309,13339, + 13367,13411,13441,13477,13513,13553,13591,13627,13669,13697,13729,13781, + 13829,13859,13901,13933,13997,14029,14071,14107,14159,14207,14251,14303, + 14347,14407,14461,14519,14563,14627,14683,14747,14813,14869,14939,15013, + 15091,15161,15259,15349,15443,15551,15679,15823,MarkLast(16033) +}; + +static short coeff[][256] = { + {13,11,10,3,9,2,2,2,2,9,2,2,7,2,2,2,2,2,2,6,2,2,2,13,11,10,3,9,2,2,2,2,9,2,2,7,2,2,2,2,2,2,6,2,2,2,13,11,10,3,9,2,2,2,2,9,2,2,7,2,2,2,2,2,2,6,2,2,2,13,11,10,3,9,2,2,2,2,9,2,2,7,2,2,2,2,2,2,6,2,2,2,13,11,10,3,9,2,2,2,2,9,2,2,7,2,2,2,2,2,2,6,2,2,2,13,11,10,3,9,2,2,2,2,9,2,2,7,2,2,2,2,2,2,6,2,2,2,13,11,10,3,9,2,2,2,2,9,2,2,7,2,2,2,2,2,2,6,2,2,2,13,11,10,3,9,2,2,2,2,9,2,2,7,2,2,2,2,2,2,6,2,2,2,13,11,10,3,9,2,2,2,2,9,2,2,7,2,2,2,2,2,2,6,2,2,2,13,11,10,3,9,2,2,2,2,9,2,2,7,2,2,2,2,2,2,6,2,2,2,13,11,10,3,9,2,2,2,2,9,2,2,7,2,2,2,2,2,2,6,2,2,2,13,11,10}, + {23,17,12,11,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,12,14,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,12,14,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,12,14,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,12,14,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,12,14,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,12,14,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,12,14,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,12,14,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,12,14,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {18,14,5,14,2,2,19,19,25,25,18,18,18,2,2,2,2,2,2,2,2,2,2,2,25,6,2,2,2,18,14,5,14,2,2,19,19,25,25,18,18,18,2,2,2,2,2,2,2,2,2,2,2,25,6,2,2,2,18,14,5,14,2,2,19,19,25,25,18,18,18,2,2,2,2,2,2,2,2,2,2,2,25,6,2,2,2,18,14,5,14,2,2,19,19,25,25,18,18,18,2,2,2,2,2,2,2,2,2,2,2,25,6,2,2,2,18,14,5,14,2,2,19,19,25,25,18,18,18,2,2,2,2,2,2,2,2,2,2,2,25,6,2,2,2,18,14,5,14,2,2,19,19,25,25,18,18,18,2,2,2,2,2,2,2,2,2,2,2,25,6,2,2,2,18,14,5,14,2,2,19,19,25,25,18,18,18,2,2,2,2,2,2,2,2,2,2,2,25,6,2,2,2,18,14,5,14,2,2,19,19,25,25,18,18,18,2,2,2,2,2,2,2,2,2,2,2,25,6,2,2,2,18,14,5,14,2,2,19,19,25,25,18,18,18,2,2,2,2,2,2,2,2,2,2,2}, + {18,13,23,5,2,12,6,12,12,12,10,10,16,2,16,16,2,2,2,2,2,2,2,10,2,2,2,2,10,2,2,2,2,18,13,23,23,2,12,6,12,12,12,10,10,16,2,16,16,2,2,2,2,2,2,2,10,2,2,2,2,10,2,2,2,2,18,13,23,23,2,12,6,12,12,12,10,10,16,2,16,16,2,2,2,2,2,2,2,10,2,2,2,2,10,2,2,2,2,18,13,23,23,2,12,6,12,12,12,10,10,16,2,16,16,2,2,2,2,2,2,2,10,2,2,2,2,10,2,2,2,2,18,13,23,23,2,12,6,12,12,12,10,10,16,2,16,16,2,2,2,2,2,2,2,10,2,2,2,2,10,2,2,2,2,18,13,23,23,2,12,6,12,12,12,10,10,16,2,16,16,2,2,2,2,2,2,2,10,2,2,2,2,10,2,2,2,2,18,13,23,23,2,12,6,12,12,12,10,10,16,2,16,16,2,2,2,2,2,2,2,10,2,2,2,2,10,2,2,2,2,18,13,23,23,2,12,6,12,12,12,10,10,16,2,16,16,2,2,2,2,2,2,2,10,2}, + {27,14,10,14,2,4,13,2,2,16,4,4,4,6,6,6,6,6,6,25,25,31,31,15,31,2,2,31,15,14,14,6,31,5,5,5,31,14,11,14,13,5,13,13,13,13,5,5,5,6,6,6,6,6,6,25,15,31,31,15,31,31,31,31,15,14,14,15,31,5,5,5,31,14,11,14,13,5,13,13,13,13,5,5,5,5,5,11,6,6,31,15,15,31,31,15,31,31,31,31,15,14,14,15,31,5,5,5,31,14,11,14,13,5,13,13,13,13,5,5,5,5,5,11,6,31,31,15,15,31,31,15,31,31,31,31,15,14,14,15,31,5,5,5,31,14,11,14,13,5,13,13,13,13,5,5,5,5,5,11,31,31,31,15,15,31,31,15,31,31,31,31,15,14,14,15,31,5,5,5,31,14,11,14,13,5,13,13,13,13,5,5,5,5,5,11,31,31,31,15,15,31,31,15,31,31,31,31,15,14,14,15,31,5,5,5,31,14,11,14,13,5,13,13,13,13,5,5,5,5,5,11,31,31,31,15,15,31,31,15,31,31,31,31,15,14,14,15,31,5,5,5,31,14,11,14}, + {29,19,27,32,6,8,2,2,2,2,2,8,8,2,2,2,2,9,9,9,9,2,2,2,2,2,2,2,9,9,2,2,2,2,2,4,2,2,2,29,19,28,32,6,6,2,2,2,2,2,2,2,2,2,2,2,9,9,9,9,2,2,2,2,2,2,2,9,9,2,2,2,2,2,4,2,2,2,29,19,28,32,6,6,2,2,2,2,2,2,2,2,2,2,2,9,9,9,9,2,2,2,2,2,2,2,9,9,2,2,2,2,2,4,2,2,2,29,19,28,32,6,6,2,2,2,2,2,2,2,2,2,2,2,9,9,9,9,2,2,2,2,2,2,2,9,9,2,2,2,2,2,4,2,2,2,29,19,28,32,6,6,2,2,2,2,2,2,2,2,2,2,2,9,9,9,9,2,2,2,2,2,2,2,9,9,2,2,2,2,2,4,2,2,2,29,19,28,32,6,6,2,2,2,2,2,2,2,2,2,2,2,9,9,9,9,2,2,2,2,2,2,2,9,9,2,2,2,2,2,4,2,2,2,29,19,28,32,6,6,2,2,2,2,2,2,2,2,2,2,2,9,9,9,9,2}, + {30,19,24,16,22,8,2,2,22,5,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,2,2,2,6,2,2,2,30,19,24,16,22,8,2,2,22,5,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,2,2,2,6,2,2,2,30,19,24,16,22,8,2,2,22,5,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,2,2,2,6,2,2,2,30,19,24,16,22,8,2,2,22,5,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,2,2,2,6,2,2,2,30,19,24,16,22,8,2,2,22,5,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,2,2,2,6,2,2,2,30,19,24,16,22,8,2,2,22,5,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,2,2,2,6,2,2,2,30,19,24,16,22,8,2,2,22,5}, + {34,28,13,28,27,27,2,4,2,2,2,16,16,4,20,20,36,20,36,5,5,5,36,36,5,5,5,7,5,7,7,2,2,25,16,6,20,20,36,29,24,3,3,3,27,28,13,28,27,27,27,27,27,2,2,27,27,13,20,20,13,20,36,13,5,5,36,7,7,7,7,7,7,7,7,7,7,7,6,6,24,28,28,29,24,3,3,3,27,28,13,28,27,27,27,27,27,13,7,27,27,13,24,13,13,13,13,13,5,5,7,7,7,7,7,7,7,7,7,7,7,7,6,6,24,28,28,29,24,3,3,3,27,28,13,28,27,27,27,27,27,13,7,27,27,13,24,13,13,13,13,13,13,13,7,7,7,7,7,7,7,7,7,7,7,7,6,6,24,28,28,29,24,3,3,3,27,28,13,28,27,27,27,27,27,13,7,27,27,13,24,13,13,13,13,13,13,13,7,7,7,7,7,7,7,7,7,7,7,7,6,6,24,28,28,29,24,3,3,3,27,28,13,28,27,27,27,27,27,13,7,27,27,13,24,13,13,13,13,13,13,13,7,7,7,7,7,7,7,7,7,7,7,7,6,6}, + {35,19,33,8,21,30,8,2,4,2,4,4,2,2,2,2,2,2,2,2,2,17,2,2,11,25,11,17,17,17,17,17,17,17,17,17,7,7,7,7,17,2,2,17,26,5,5,5,26,23,21,23,21,21,17,17,17,17,17,17,21,21,17,7,7,2,17,17,17,17,2,2,17,17,17,17,17,17,17,17,17,17,17,17,7,7,7,7,17,17,17,17,26,5,5,5,26,23,21,23,21,21,17,17,17,17,17,17,21,21,17,7,7,7,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,7,7,7,7,17,17,17,17,26,5,5,5,26,23,21,23,21,21,17,17,17,17,17,17,21,21,17,7,7,7,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,7,7,7,7,17,17,17,17,26,5,5,5,26,23,21,23,21,21,17,17,17,17,17,17,21,21,17,7,7,7,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,7,7,7,7,17,17,17,17,26,5,5,5,26,23,21,23,21,21,17,17,17,17,17,17,21,21,17,7}, + {41,22,15,7,26,29,29,2,2,2,2,2,2,41,41,2,2,2,31,31,2,31,31,2,31,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,6,2,2,2,41,22,15,7,26,29,29,2,2,2,2,2,2,41,41,2,2,2,31,31,2,31,31,2,31,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,6,2,2,2,41,22,15,7,26,29,29,2,2,2,2,2,2,41,41,2,2,2,31,31,2,31,31,2,31,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,6,2,2,2,41,22,15,7,26,29,29,2,2,2,2,2,2,41,41,2,2,2,31,31,2,31,31,2,31,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,6,2,2,2,41,22,15,7,26,29,29,2,2,2,2,2,2,41,41,2,2,2,31,31,2,31,31,2,31,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {35,22,37,9,35,12,35,8,2,2,50,50,2,2,32,32,32,31,13,8,8,8,2,22,50,9,9,9,22,22,22,10,10,10,10,10,22,22,50,10,2,2,12,12,12,12,12,17,23,17,6,6,12,3,3,3,24,23,37,24,5,12,12,6,27,10,27,27,27,27,27,27,27,27,27,27,27,12,12,12,12,12,9,9,22,22,22,10,10,10,10,10,10,10,10,10,10,10,12,12,12,12,12,17,23,17,6,6,12,3,3,3,24,23,37,24,5,12,12,6,27,10,27,27,27,27,27,27,27,27,27,27,27,12,12,12,12,12,9,9,12,12,27,10,10,10,10,10,10,10,10,10,10,10,12,12,12,12,12,17,23,17,6,6,12,3,3,3,24,23,37,24,5,12,12,6,27,10,27,27,27,27,27,27,27,27,27,27,27,12,12,12,12,12,12,12,12,12,27,10,10,10,10,10,10,10,10,10,10,10,12,12,12,12,12,17,23,17,6,6,12,3,3,3,24,23,37,24,5,12,12,6,27,10,27,27,27,27,27,27,27,27,27,27,27,12,12,12,12,12,12,12,12,12,27,10}, + {29,24,43,36,49,2,2,8,4,25,49,25,2,2,8,10,10,10,5,5,5,40,10,33,40,40,2,27,10,25,25,25,25,25,25,10,10,49,10,5,5,5,40,10,33,40,40,45,6,45,45,25,25,25,25,6,6,6,43,34,3,3,3,29,26,43,36,49,11,11,46,46,46,49,49,49,49,29,49,49,6,6,5,5,40,6,6,6,6,31,29,9,9,9,9,9,9,9,49,49,49,49,49,5,5,49,49,49,45,45,45,6,45,45,45,45,36,36,6,6,6,43,34,3,3,3,29,26,43,36,49,11,11,46,46,46,49,49,49,49,29,49,49,6,6,6,6,6,6,6,6,6,31,29,9,9,9,9,9,9,9,49,49,49,49,49,49,49,49,49,49,45,45,45,6,45,45,45,45,36,36,6,6,6,43,34,3,3,3,29,26,43,36,49,11,11,46,46,46,49,49,49,49,29,49,49,6,6,6,6,6,6,6,6,6,31,29,9,9,9,9,9,9,9,49,49,49,49,49,49,49,49,49,49,45,45,45,6,45,45,45,45,36,36,6,6,6,43,34,3,3,3,29,26,43,36}, + {50,18,32,39,21,2,2,2,4,4,36,36,14,14,14,14,2,2,2,17,17,17,16,16,2,14,14,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,14,6,2,2,2,50,17,43,6,21,2,2,2,4,4,36,36,14,14,14,14,2,2,2,17,17,17,16,16,2,14,14,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,14,6,2,2,2,50,17,43,6,21,2,2,2,4,4,36,36,14,14,14,14,2,2,2,17,17,17,16,16,2,14,14,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,14,6,2,2,2,50,17,43,6,21,2,2,2,4,4,36,36,14,14,14,14,2,2,2,17,17,17,16,16,2,14,14,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,14}, + {31,28,45,20,18,43,43,13,28,2,2,2,31,31,31,31,31,2,2,2,43,43,2,2,2,2,2,2,2,2,30,2,2,2,28,7,9,9,31,31,31,31,31,2,31,43,43,43,43,43,43,43,43,31,43,31,31,43,43,31,43,43,43,45,24,3,3,3,31,27,45,20,45,43,43,13,13,26,26,31,31,31,31,31,31,31,9,31,43,43,31,31,31,43,2,43,31,43,43,31,2,2,28,31,31,43,31,31,31,31,31,31,31,43,43,43,43,43,43,43,43,31,43,31,31,43,43,31,43,43,43,45,24,3,3,3,31,27,45,20,45,43,43,13,13,26,26,31,31,31,31,31,31,31,31,31,43,43,31,31,31,43,43,43,31,43,43,31,2,43,31,31,31,43,31,31,31,31,31,31,31,43,43,43,43,43,43,43,43,31,43,31,31,43,43,31,43,43,43,45,24,3,3,3,31,27,45,20,45,43,43,13,13,26,26,31,31,31,31,31,31,31,31,31,43,43,31,31,31,43,43,43,31,43,43,31,43,43,31,31,31,43,31,31,31,31,31,31,31,43,43,43,43,43,43,43}, + {39,15,41,7,24,2,2,30,40,2,2,25,25,25,25,2,2,2,2,2,2,6,6,2,25,2,5,2,2,25,2,2,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,2,2,41,15,41,7,24,2,2,30,40,2,2,25,25,25,25,2,2,2,2,2,2,2,2,2,25,2,5,2,2,25,2,2,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,2,2,41,15,41,7,24,2,2,30,40,2,2,25,25,25,25,2,2,2,2,2,2,2,2,2,25,2,5,2,2,25,2,2,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,2,2,41,15,41,7,24,2,2,30,40,2,2,25,25,25,25,2,2,2,2,2,2,2,2,2,25,2,5,2,2,25,2,2,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {44,20,29,39,7,21,21,21,2,2,45,2,2,2,49,49,49,49,49,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,66,66,66,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,55,55,10,13,60,21,21,21,2,2,2,2,2,2,2,13,13,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,66,66,66,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,55,55,10,13,60,21,21,21,2,2,2,2,2,2,2,13,13,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,66,66,66,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,55,55,10,13,60,21,21,21,2,2,2,2,2,2,2,13,13,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {56,20,22,13,18,35,35,6,2,4,2,4,2,2,2,23,16,16,4,23,2,34,52,2,34,2,4,2,2,2,23,16,16,4,23,23,6,23,37,4,2,4,10,2,2,23,16,52,52,52,52,52,22,10,10,10,10,10,2,2,10,10,10,52,10,10,37,51,51,51,51,18,5,5,5,56,22,22,13,18,35,35,6,10,7,34,7,14,13,7,51,7,7,7,34,34,34,52,34,34,34,34,34,34,10,22,22,6,22,22,22,6,35,37,37,37,37,10,10,10,52,52,52,52,52,52,52,22,10,10,10,10,10,10,10,10,10,10,52,10,10,37,51,51,51,51,18,5,5,5,56,22,22,13,18,35,35,6,10,7,34,7,14,13,7,51,7,7,7,34,34,34,52,34,34,34,34,34,34,10,22,22,6,22,22,22,6,35,37,37,37,37,10,10,10,52,52,52,52,52,52,52,22,10,10,10,10,10,10,10,10,10,10,52,10,10,37,51,51,51,51,18,5,5,5,56,22,22,13,18,35,35,6,10,7,34,7,14,13,7,51,7,7,7,34,34,34,52,34,34,34,34,34,34,10,22}, + {46,32,17,18,29,27,31,31,31,2,2,4,15,2,2,2,2,2,2,2,2,2,2,2,2,2,23,32,32,32,15,15,15,15,2,2,2,2,2,2,2,2,2,2,15,15,2,2,15,2,2,2,23,23,32,23,23,2,2,2,2,2,2,2,2,2,2,2,6,6,6,66,6,6,6,5,5,5,66,20,53,18,18,6,6,15,70,70,15,15,15,15,38,43,43,43,38,38,38,38,2,2,2,2,23,38,15,15,15,15,15,15,15,15,2,38,38,38,43,2,2,15,15,15,15,15,15,15,2,2,23,23,38,38,38,38,38,38,20,6,6,6,18,18,38,38,6,6,6,66,6,6,6,5,5,5,66,20,53,18,18,6,6,15,70,70,15,15,15,15,38,43,43,43,38,38,38,38,38,43,15,15,38,38,15,15,15,15,15,15,15,15,15,38,38,38,43,43,43,15,15,15,15,15,15,15,15,15,20,15,38,38,38,38,38,38,20,6,6,6,18,18,38,38,6,6,6,66,6,6,6,5,5,5,66,20,53,18,18,6,6,15,70,70,15,15,15,15,38,43,43,43,38,38,38,38}, + {62,42,43,17,23,13,13,2,2,13,2,2,2,2,2,2,2,10,2,2,2,2,9,10,2,2,2,19,9,9,9,9,2,2,2,2,2,2,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,62,42,43,42,10,11,67,2,2,2,2,2,2,2,2,2,2,10,2,2,2,2,9,10,2,2,2,19,9,9,9,9,2,2,2,2,2,2,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,62,42,43,42,10,11,67,2,2,2,2,2,2,2,2,2,2,10,2,2,2,2,9,10,2,2,2,19,9,9,9,9,2,2,2,2,2,2,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,62,42,43,42,10,11,67,2,2,2,2,2,2}, + {64,34,16,28,16,51,47,2,2,2,6,18,39,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,2,2,2,2,2,2,2,2,2,2,4,2,2,2,12,2,53,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,2,2,2,2,2,2,2,2,2,2,12,12,2,2,2,2,2,66,28,28,28,30,44,19,2,2,2,2,18,39,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,2,53,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,2,2,2,2,2,2,2,2,2,2,12,12,2,2,2,2,2,66,28,28,28,30,44,19,2,2,2,2,18,39,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,2,53,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,2,2,2,2,2,2,2,2,2,2,12,12,2,2,2}, + {74,26,44,25,50,24,54,39,58,42,2,42,42,2,2,2,2,2,2,2,2,33,33,2,2,39,11,2,2,58,39,58,2,58,58,58,39,2,39,58,2,2,2,2,2,2,2,2,2,2,2,2,2,2,58,58,58,58,2,2,2,2,2,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,10,2,2,2,74,26,44,25,50,24,54,39,58,42,2,42,42,2,2,2,2,2,2,2,2,33,33,2,2,39,11,2,2,58,39,58,2,58,58,58,39,2,39,58,2,2,2,2,2,2,2,2,2,2,2,2,2,2,58,58,58,58,2,2,2,2,2,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,10,2,2,2,74,26,44,25,50,24,54,39,58,42,2,42,42,2,2,2,2,2,2,2,2,33,33,2,2,39,11,2,2,58,39,58,2,58,58,58,39,2,39,58,2,2,2,2,2,2,2,2,2,2,2,2,2,2,58,58,58,58,2,2,2,2,2,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {70,22,50,22,16,9,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,10,2,2,2,50,41,50,58,21,10,66,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,10,2,2,2,50,41,50,58,21,10,66,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {74,21,17,25,35,33,10,2,10,20,20,57,57,57,2,2,57,2,2,2,2,2,2,2,13,2,2,2,2,2,2,2,2,2,2,2,57,57,2,2,2,57,57,2,2,2,2,2,57,57,57,57,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,12,2,2,2,74,21,17,35,35,33,10,2,10,20,20,57,57,57,2,2,57,2,2,2,2,2,2,2,13,2,2,2,2,2,2,2,2,2,2,2,57,57,2,2,2,57,57,2,2,2,2,2,57,57,57,57,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,12,2,2,2,74,21,17,35,35,33,10,2,10,20,20,57,57,57,2,2,57,2,2,2,2,2,2,2,13,2,2,2,2,2,2,2,2,2,2,2,57,57,2,2,2,57,57,2,2,2,2,2,57,57,57,57,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {71,68,68,27,71,39,81,44,2,2,2,12,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,21,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,71,48,31,27,71,35,13,44,2,2,2,12,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,21,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,71,48,31,27,71,35,13,44,2,2,2,12,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,21,2,2,2,2,2,2,2,2}, + {55,30,85,42,16,36,45,67,2,2,68,2,2,2,2,2,2,2,68,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,10,10,2,2,2,45,30,47,29,16,36,45,23,2,2,68,2,2,2,2,2,2,2,68,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,10,10,2,2,2,45,30,47,29,16,36,45,23,2,2,68,2,2,2,2,2,2,2,68,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {64,17,24,26,49,12,10,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,59,2,2,2,2,2,59,59,2,2,59,59,2,2,2,59,59,59,2,2,59,2,59,59,59,2,2,2,59,59,2,59,59,59,84,84,84,59,59,2,2,59,59,2,59,59,2,2,59,59,59,2,59,2,59,59,59,59,59,59,59,59,59,2,2,2,2,2,2,2,2,2,2,2,2,2,46,17,24,72,49,9,2,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,59,2,2,2,2,2,59,59,2,2,59,59,2,2,2,59,59,59,2,2,59,2,59,59,59,2,2,2,59,59,2,59,59,59,84,84,84,59,59,2,2,59,59,2,59,59,2,2,59,59,59,2,59,2,59,59,59,59,59,59,59,59,59,2,2,2,2,2,2,2,2,2,2,2,2,2,46,17,24,72,49,9,2,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,59,2,2,2,2,2,59,59,2,2,59,59,2,2,2,59,59}, + {68,57,23,38,61,38,13,13,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,68,15,2,44,44,44,2,2,2,4,4,2,2,2,41,64,49,49,8,7,30,24,24,24,24,45,24,2,2,2,24,2,25,44,25,25,25,25,25,25,24,24,24,24,2,24,24,24,24,2,2,41,64,49,43,43,24,24,24,43,43,44,44,44,44,24,44,44,44,44,24,44,24,24,24,24,24,24,24,24,24,22,22,22,18,3,3,3,80,57,23,38,61,38,38,18,75,24,19,19,24,22,44,44,44,24,24,24,35,31,31,31,31,44,44,44,44,44,44,44,24,24,44,44,24,24,44,44,24,53,53,24,24,24,24,24,45,24,24,24,24,24,25,25,44,25,25,25,25,25,25,24,24,24,24,44,24,24,24,24,24,24,24,24,43,43,43,24,24,24,43,43,44,44,44,44,24,44,44,44,44,24,44,24,24,24,24,24,24,24,24,24,22,22,22,18,3,3,3,80,57,23,38,61,38,38,18,75,24,19,19,24,22,44,44,44,24,24,24,35,31,31,31,31,44,44,44,44,44,44,44,24,24}, + {94,28,58,29,13,5,15,8,66,2,2,2,39,39,15,66,2,2,6,6,2,2,66,66,66,66,2,2,2,2,2,66,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,66,66,2,66,15,15,15,2,2,15,15,2,2,15,15,2,66,15,15,15,15,15,15,15,2,2,2,2,2,2,2,15,15,15,15,15,15,2,2,2,2,15,15,15,15,15,15,2,2,2,2,2,66,2,2,2,2,2,2,2,2,6,2,2,2,94,28,58,29,13,5,15,8,66,2,2,2,39,39,15,66,2,2,6,6,2,2,66,66,66,66,2,2,2,2,2,66,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,66,66,2,66,15,15,15,2,2,15,15,2,2,15,15,2,66,15,15,15,15,15,15,15,2,2,2,2,2,2,2,15,15,15,15,15,15,2,2,2,2,15,15,15,15,15,15,2,2,2,2,2,66,2,2,2,2,2,2,2,2,6,2,2,2,94,28,58,29,13,5,15,8,66,2,2,2,39,39,15,66,2,2,6,6,2,2,66,66,66,66,2,2,2,2}, + {94,85,9,41,41,37,29,29,17,2,2,2,7,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,8,8,8,8,8,2,2,2,34,8,34,8,8,22,7,7,7,2,13,13,29,29,29,29,2,2,2,2,2,2,2,2,102,102,102,13,2,2,8,8,8,8,30,2,2,2,34,8,34,34,8,22,22,29,29,2,31,29,29,7,29,7,7,29,29,7,29,29,35,35,35,35,35,29,41,29,29,41,102,6,6,6,6,6,50,29,65,41,41,102,29,29,29,102,102,40,7,7,29,39,29,39,39,24,39,28,35,29,29,29,29,29,29,29,29,29,29,29,29,29,2,29,29,35,77,77,29,29,7,7,7,7,7,7,29,29,29,29,29,29,29,92,29,7,7,102,102,102,102,102,102,102,31,31,29,29,31,31,31,31,31,31,31,31,29,29,29,29,29,29,31,29,29,7,29,7,7,29,29,7,29,29,35,35,35,35,35,29,41,29,29,41,102,6,6,6,6,6,50,29,65,41,41,102,29,29,29,102,102,40,7,7,29,39,29,39,39,24,39,28,35,29,29,29,29,29}, + {89,32,75,77,77,13,2,30,30,2,2,2,2,2,2,2,2,2,2,67,67,2,2,2,2,2,2,2,2,8,19,32,23,23,98,2,98,8,2,25,2,2,2,2,2,2,2,62,2,55,25,2,2,2,14,2,7,7,60,33,33,33,33,13,62,95,60,2,95,5,5,95,95,95,2,2,2,95,95,95,95,95,2,2,2,2,2,8,8,32,23,23,67,2,67,95,95,95,67,67,67,67,67,67,67,6,6,67,24,24,24,24,40,3,3,3,84,57,75,77,77,45,73,17,45,95,95,95,95,21,95,95,2,2,95,67,67,67,67,67,67,95,2,2,2,8,8,32,23,23,95,2,95,27,27,95,95,95,95,95,95,95,2,52,2,2,25,2,2,62,14,67,7,7,60,33,33,33,67,95,95,95,95,95,95,5,5,95,95,95,95,95,95,95,95,95,95,95,95,67,67,2,2,67,67,67,67,67,67,67,67,95,95,95,67,67,67,67,67,67,67,6,6,67,24,24,24,24,40,3,3,3,84,57,75,77,77,45,73,17,45,95,95,95,95,21,95,95,45,95,95,67,67,67,67,67}, + {101,33,76,13,45,63,2,2,6,19,2,2,32,32,32,32,32,65,2,63,63,11,11,11,19,19,19,19,9,63,63,63,63,19,2,29,29,29,19,45,45,45,45,45,45,45,11,11,19,19,50,72,72,72,72,18,12,3,3,3,18,18,12,12,45,72,72,72,45,55,11,11,50,50,50,50,46,46,46,46,71,14,14,14,14,39,39,39,39,39,39,51,51,51,11,29,71,71,71,45,45,45,71,71,71,71,46,46,46,46,42,14,42,74,74,42,42,7,7,7,55,34,34,13,13,71,14,14,13,13,13,13,34,34,34,13,13,13,45,45,45,45,46,46,46,46,46,46,46,14,74,14,14,14,14,29,14,45,45,45,45,45,45,45,45,45,45,12,12,46,50,72,72,71,71,71,12,71,3,3,18,18,12,12,45,72,55,55,55,55,55,55,55,55,51,51,46,46,46,46,71,14,14,14,14,39,39,39,39,39,39,51,51,51,51,51,71,71,71,71,71,71,71,71,71,71,46,46,46,46,42,14,42,74,74,42,42,7,7,7,55,34,34,13,13,71,14,14,13,13,13,13,34,34,34,13}, + {70,89,44,37,19,45,2,2,2,8,10,8,54,54,80,80,80,80,80,2,116,2,116,2,2,80,40,51,100,100,8,2,2,2,8,10,8,116,61,80,80,80,61,61,2,40,8,53,2,2,80,40,51,116,116,116,2,61,116,116,116,116,116,116,80,80,80,53,53,61,53,35,35,2,2,80,35,35,35,35,35,35,35,35,61,61,61,71,53,53,53,53,53,30,46,61,46,46,46,46,46,53,53,53,53,53,53,53,53,53,53,55,55,62,53,61,61,62,62,117,117,14,3,3,3,70,89,44,37,19,45,22,74,74,54,54,44,54,54,54,44,83,83,44,44,116,116,116,116,116,116,116,116,116,35,35,116,116,116,35,61,116,116,61,53,53,53,61,61,35,53,35,53,53,61,61,61,61,116,116,116,61,61,116,116,116,116,116,116,116,53,53,53,53,61,53,35,35,46,46,35,35,35,35,35,35,35,35,35,61,61,61,71,53,53,53,53,53,30,46,61,46,46,46,46,46,53,53,53,53,53,53,53,53,53,53,55,55,62,53,61,61,62,62,117,117,14,3,3,3,70,89,44,37,19,45}, + {71,54,83,51,42,98,2,2,8,8,14,30,93,22,15,15,30,30,30,44,44,44,2,2,22,22,22,117,44,11,11,11,81,81,81,81,81,81,73,73,73,73,22,22,22,22,15,15,44,44,42,44,42,42,42,98,42,42,114,114,42,9,9,9,42,13,13,13,13,13,9,9,21,21,21,21,36,36,36,36,36,44,26,26,26,26,20,21,20,42,21,71,21,71,11,11,81,81,81,69,63,63,63,28,28,28,28,28,28,41,83,33,41,38,38,38,41,41,38,38,63,38,6,12,66,3,3,3,71,54,83,51,63,85,93,93,93,93,14,93,93,93,85,85,14,14,93,93,14,65,69,69,65,65,65,65,65,65,65,65,65,65,65,65,65,28,28,28,28,28,19,19,28,19,19,19,19,19,19,19,19,19,19,19,19,42,39,39,36,9,9,9,42,13,13,13,13,13,9,13,80,13,21,80,80,80,80,80,93,93,93,42,20,20,20,20,20,20,20,71,71,71,71,69,69,69,69,69,63,63,63,28,28,28,28,28,28,41,83,33,41,38,38,38,41,41,38,38,63,38,6,12,66,3,3,3}, + {109,37,51,113,17,10,2,2,17,17,55,2,55,55,55,55,55,55,2,2,2,57,48,48,55,55,2,2,55,2,2,55,55,55,55,55,55,55,55,55,55,55,55,2,2,48,72,48,48,55,55,55,2,2,2,2,2,2,2,2,2,55,55,2,2,2,2,55,58,58,58,58,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,55,2,2,2,2,2,2,2,2,2,2,2,48,2,2,48,48,2,2,48,2,55,2,2,2,2,2,2,48,48,48,2,55,55,2,2,2,2,2,12,2,2,2,109,37,51,113,17,10,2,2,17,17,55,2,55,55,55,55,55,55,2,2,2,57,48,48,55,55,2,2,55,2,2,55,55,55,55,55,55,55,55,55,55,55,55,2,2,48,72,48,48,55,55,55,2,2,2,2,2,2,2,2,2,55,55,2,2,2,2,55,58,58,58,58,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,55,2,2,2,2,2,2,2,2,2,2,2,48,2,2,48,48,2,2,48,2,55,2,2,2,2,2,2,48,48,48,2,55,55,2,2,2}, + {75,38,68,89,11,52,2,2,81,39,2,38,2,2,2,2,2,2,2,2,2,2,2,19,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,19,19,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,19,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,19,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,75,35,68,33,60,10,2,2,2,39,2,39,2,2,2,2,2,2,2,2,2,2,2,19,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,19,19,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,19,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,19,2,2,2,2,2}, + {81,84,35,34,20,93,2,12,12,12,2,96,2,96,96,2,96,2,2,2,2,2,2,2,2,2,2,2,2,56,56,56,56,2,2,2,2,2,2,2,2,2,8,2,2,2,82,82,8,61,38,96,2,96,96,96,2,82,2,2,82,2,56,56,2,2,2,2,2,2,2,2,2,2,96,96,96,96,96,96,2,2,2,56,2,2,2,96,96,96,2,2,82,82,61,96,96,96,56,96,56,56,56,56,14,56,96,96,96,56,56,2,56,56,56,56,56,96,96,96,96,96,96,96,96,96,96,96,96,56,2,96,14,6,6,5,5,5,105,68,53,14,20,93,93,93,93,93,17,96,96,96,96,96,96,96,96,96,24,96,96,24,24,24,24,96,96,56,56,56,56,56,56,56,56,56,2,2,56,56,56,96,2,2,82,61,61,96,96,96,96,96,96,96,96,96,56,56,56,56,56,56,56,56,56,56,56,56,96,56,56,56,96,96,96,96,96,96,96,56,56,56,56,56,56,96,96,96,96,96,96,96,56,96,96,96,56,96,56,56,56,56,14,56,96,96,96,56,56,56,56,56,56,56,56,96}, + {109,72,60,96,67,32,85,84,27,91,91,2,10,29,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,25,25,25,25,25,25,66,66,66,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,106,106,2,106,66,14,2,5,5,106,72,72,18,72,18,106,106,2,46,46,46,46,46,91,46,91,91,91,2,2,2,2,2,2,2,2,2,2,2,2,2,21,2,2,25,25,25,2,2,91,66,2,91,91,91,91,91,2,2,106,91,2,2,46,46,46,91,91,91,91,91,91,12,12,12,131,3,3,3,76,96,91,96,21,26,27,84,27,91,91,91,71,21,21,46,106,106,106,106,46,46,106,106,106,46,46,46,46,91,91,57,57,2,46,46,57,104,91,91,91,46,46,46,46,46,46,106,106,106,106,46,46,46,46,11,11,11,11,11,11,106,106,106,106,106,14,11,5,5,106,72,46,46,46,91,91,91,91,46,46,46,46,46,91,46,91,91,91,91,91,91,106,106,46,46,46,91,21,21,21,21,21,21,21,21,21,21,46,91,91,91,91,91,91,91}, + {81,103,25,35,28,15,20,20,20,2,2,2,2,20,20,20,107,107,2,2,2,2,2,2,2,2,2,2,2,2,13,13,13,13,13,13,2,13,13,13,13,13,2,2,2,2,2,2,2,2,20,20,13,13,13,13,13,2,2,2,2,20,20,2,2,2,2,2,2,2,2,4,2,2,2,130,2,130,130,13,13,2,2,2,2,13,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,20,2,2,2,2,2,2,2,2,20,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,79,103,72,75,28,105,20,20,20,2,2,2,2,20,20,20,20,2,2,2,2,2,2,2,2,2,2,2,2,2,13,13,13,13,13,13,2,13,13,13,13,13,2,2,2,2,2,2,2,2,20,20,13,13,13,13,13,2,2,2,2,20,20,2,2,2,2,2,2,2,2,2,2,2,2,130,2,130,130,13,13,2,2,2,2,13,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,20,2}, + {119,75,42,29,74,23,54,36,39,2,2,4,4,19,19,2,2,2,2,2,2,2,2,54,2,2,2,2,2,2,2,54,2,2,2,2,2,2,2,2,2,2,2,2,4,4,32,2,45,2,2,125,125,125,68,37,37,37,37,37,37,37,37,37,37,37,37,37,37,16,16,52,52,52,52,52,37,37,37,37,52,52,52,52,52,52,37,37,37,37,37,2,52,52,52,37,37,37,37,37,2,2,37,37,37,37,52,52,37,37,37,15,37,37,37,37,37,37,37,52,52,52,37,37,15,15,15,52,52,37,37,37,37,37,37,52,37,37,37,37,37,37,37,100,82,88,52,52,14,14,5,5,5,119,75,42,29,74,23,56,69,39,109,109,109,109,109,52,52,52,52,45,71,52,37,52,52,52,52,15,15,52,52,52,52,15,15,52,52,52,37,37,37,37,37,37,37,37,37,45,45,45,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,52,52,52,52,52,52,37,37,37,37,52,52,52,52,52,52,37,37,37,37,37,37,52,52,52,37,37,37,37,37,37,37,37}, + {115,73,22,102,75,138,16,73,50,16,2,50,2,2,2,133,2,2,2,2,2,2,2,2,2,2,2,2,2,33,33,33,2,2,33,33,2,2,2,2,2,2,2,2,2,33,33,2,2,2,2,2,2,33,33,33,30,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,45,45,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,45,2,2,2,33,45,45,2,2,33,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,12,2,2,2,115,73,22,102,75,138,16,73,50,16,2,50,2,2,2,133,2,2,2,2,2,2,2,2,2,2,2,2,2,33,33,33,2,2,33,33,2,2,2,2,2,2,2,2,2,33,33,2,2,2,2,2,2,33,33,33,30,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,45,45,2,2}, + {119,48,66,51,14,22,20,20,2,2,2,2,2,60,2,2,2,2,2,2,2,2,60,2,2,2,2,2,2,60,2,65,2,2,2,2,60,60,60,60,60,65,65,65,65,65,2,2,2,60,60,2,2,2,2,2,2,2,60,60,2,2,65,2,2,2,60,60,2,2,2,65,65,2,2,65,2,2,22,66,66,66,65,65,65,65,65,65,65,65,65,65,65,65,60,60,65,65,65,65,65,65,60,60,65,65,60,60,65,60,60,60,60,60,60,65,65,65,65,60,60,60,65,65,65,65,65,65,65,65,65,65,2,65,65,65,65,65,65,65,60,65,65,65,65,65,65,65,65,65,60,60,80,10,10,10,86,34,77,77,14,15,20,20,20,20,65,65,65,60,60,60,60,65,65,60,65,65,60,65,65,65,65,60,60,60,60,65,60,60,60,60,60,60,60,60,60,65,65,65,65,65,65,65,65,60,60,60,60,60,60,60,60,60,60,60,60,65,65,65,60,60,60,60,60,60,60,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,60,60,65,65,65,65}, + {121,94,80,29,51,69,42,36,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,2,2,2,2,2,46,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,130,120,80,29,80,69,35,33,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,2,2,2,2,2,46,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,2,2}, + {129,123,41,79,43,34,24,11,2,2,4,2,2,2,2,75,16,16,16,75,75,75,16,16,16,25,2,99,2,2,75,16,16,16,75,99,99,99,99,99,99,99,99,2,2,75,16,16,99,99,99,99,99,7,7,99,99,99,2,2,75,16,16,41,41,41,26,44,44,36,36,36,35,2,2,75,44,44,82,44,44,44,20,20,5,5,5,5,5,5,93,93,44,93,93,44,44,44,44,44,44,44,44,93,93,24,24,24,24,24,24,35,35,35,35,35,35,35,35,35,26,35,35,129,129,129,129,129,129,129,129,129,35,129,129,129,129,129,129,17,17,17,129,24,86,35,35,35,35,6,6,6,42,42,42,42,6,60,26,6,6,42,3,3,3,129,123,41,42,43,25,24,11,11,87,87,87,87,93,25,25,25,99,99,25,25,25,25,25,25,25,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,41,41,41,26,44,44,36,36,36,35,35,35,44,44,44,82,44,44,44,20,20,5,5,5,5,5,5,93}, + {128,33,35,68,22,8,62,94,2,2,2,62,62,2,98,2,2,4,98,2,2,32,81,32,32,32,98,98,98,98,98,98,98,98,98,98,41,98,98,9,9,9,98,98,98,98,98,98,41,41,41,41,41,115,41,113,50,98,98,98,98,2,98,98,113,113,113,113,98,98,14,14,14,98,98,98,98,86,86,14,12,3,3,3,91,86,86,86,91,91,91,91,91,91,91,91,70,94,94,94,94,94,98,94,94,94,94,94,94,94,50,50,50,98,98,98,98,19,19,19,19,19,19,19,9,9,98,98,98,98,98,19,19,19,115,115,115,115,113,115,19,19,19,70,70,70,70,113,70,94,70,94,94,14,14,14,67,151,151,151,22,22,22,90,90,10,10,10,80,33,99,68,22,68,68,106,106,90,106,34,34,34,106,34,29,29,29,29,29,29,29,106,61,61,106,61,61,115,61,61,61,61,61,61,61,61,61,61,61,61,61,61,70,70,61,70,51,70,70,51,51,51,51,70,31,31,31,31,31,31,31,31,31,31,31,31,31,14,31,14,23,94,31,31,31,31,61,14,31,70,3,3,91,86,70,70}, + {101,109,154,15,57,6,27,36,2,2,37,37,2,2,2,2,2,2,2,107,2,2,2,107,107,2,2,2,2,2,2,2,2,107,107,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,107,2,2,2,2,2,107,2,2,2,6,2,2,2,101,109,154,15,57,6,27,36,2,2,37,37,2,2,2,2,2,2,2,107,2,2,2,107,107,2,2,2,2,2,2,2,2,107,107,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {106,40,24,38,61,118,106,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,132,40,40,54,46,114,114,112,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {149,111,58,79,127,13,41,33,27,16,30,2,61,2,72,2,2,2,2,2,2,2,2,2,2,2,2,75,75,2,2,2,2,2,2,2,2,2,2,2,8,93,2,2,29,29,8,8,23,17,17,17,2,48,48,48,48,2,48,48,23,48,48,2,2,93,48,2,2,93,93,45,93,93,93,93,23,23,93,23,23,2,2,92,78,9,9,9,76,76,25,25,25,39,39,39,39,27,75,75,75,72,72,72,72,72,93,2,2,27,2,2,2,93,27,27,27,27,27,27,27,48,27,48,27,2,2,27,93,27,2,2,29,29,45,45,45,45,45,45,45,27,27,27,27,45,45,45,45,27,27,48,48,45,75,27,75,75,48,48,75,48,48,48,48,45,151,151,151,54,115,117,151,3,3,3,149,48,69,79,117,13,79,33,27,27,27,26,37,37,48,56,56,48,75,75,48,45,45,48,48,37,37,75,75,75,75,75,75,75,75,75,75,48,48,48,93,75,2,2,75,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,45,48,45,45,45,48,48,48,48}, + {105,92,43,156,25,53,57,115,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,19,2,2,2,2,2,2,2,2,19,19,19,19,19,2,2,2,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,2,19,19,19,19,19,19,23,19,19,19,19,19,19,2,2,2,2,2,2,51,19,19,19,51,51,51,2,2,2,2,19,2,19,19,2,2,2,19,19,2,2,2,2,2,2,2,19,2,2,19,19,19,2,19,2,51,2,2,2,2,2,23,23,2,2,2,2,2,2,2,2,2,2,2,2,71,71,2,2,2,2,2,2,2,2,6,18,2,2,2,105,92,43,156,25,53,57,115,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,19,2,2,2,2,2,2,2,2,19,19,19,19,19,2,2,2,19,19,19,19,19,19,19}, + {99,40,62,67,66,29,99,99,99,78,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,79,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,79,2,2,2,2,2,2,2,2,2,2,79,2,2,2,2,79,2,2,79,79,79,2,79,2,79,79,79,79,79,2,79,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,79,79,79,2,79,2,2,2,2,2,2,79,2,2,79,2,2,79,79,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,2,2,2,2,2,2,4,2,2,2,99,112,62,67,66,77,99,99,99,78,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,79,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,79,2,2,2,2,2,2,2,2,2,2,79,2,2}, + {109,42,96,95,66,41,103,84,13,103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,60,60,60,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,60,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,2,2,2,99,42,166,78,78,166,82,77,26,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {111,72,16,89,25,86,117,29,14,14,2,2,2,2,2,60,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,60,60,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,60,60,60,60,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,75,2,75,2,2,2,2,2,2,60,60,60,60,60,60,60,2,2,60,2,60,75,75,60,60,75,2,2,2,2,2,2,2,2,2,60,2,2,10,2,2,2,105,72,16,89,50,72,117,117,28,2,2,2,2,2,2,60,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,60,60,2,2,2,2,2,2,2,2,2}, + {106,72,49,94,140,44,97,157,75,2,2,4,123,123,2,2,123,123,123,123,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,123,2,2,2,2,75,75,2,2,2,123,2,2,2,2,2,2,2,2,123,123,2,2,2,123,123,123,123,123,123,75,75,75,123,123,123,123,123,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,123,123,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,8,16,2,2,2,106,72,49,94,140,44,97,157,75,2,2,4,123,123,2,2,123,123,123,123,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,123}, + {115,67,74,32,43,50,21,36,135,36,85,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,51,51,51,51,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,105,60,135,32,43,50,21,31,135,2,92,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,51,51,51,51,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {151,71,157,42,41,37,80,27,18,2,2,2,2,2,2,2,2,2,2,2,2,2,115,128,128,128,128,128,32,2,128,80,2,113,2,113,2,2,2,2,15,15,2,2,8,128,15,15,15,113,113,113,113,113,2,15,15,15,68,68,60,103,68,15,15,15,103,95,95,95,95,55,15,15,17,17,17,15,17,17,17,17,17,17,113,113,2,2,51,113,15,113,113,113,60,113,21,21,21,21,21,21,15,59,59,59,15,15,15,15,15,15,15,15,15,15,15,113,113,15,15,15,60,68,68,68,60,103,68,15,15,15,103,95,95,95,95,55,15,51,146,146,146,146,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,45,45,45,45,45,45,45,45,45,143,143,143,45,15,133,45,45,45,45,45,138,138,138,45,45,45,45,45,45,28,6,138,46,24,38,18,5,5,5,146,50,46,50,21,138,80,18,18,18,18,18,18,138,18,18,18,18,18,18,18,146,146,146,59,59,59,59,21,21,59,80,80,80,80,80,80,80,80,6,38,38,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80}, + {119,91,38,30,92,44,32,76,22,2,34,2,2,2,2,2,2,2,2,2,2,2,2,2,2,129,2,2,129,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,53,53,2,2,53,53,53,53,53,2,2,140,138,11,11,160,53,53,53,129,53,53,53,129,129,53,53,53,53,53,53,53,53,129,129,53,53,53,53,129,129,129,53,53,53,53,53,129,129,53,53,53,129,129,129,53,53,53,53,53,129,129,53,129,129,129,129,53,53,53,129,129,129,129,129,53,53,53,53,53,129,53,53,53,53,53,129,129,129,129,129,129,129,129,53,53,2,53,53,53,53,53,53,53,53,53,129,187,3,3,3,124,91,38,132,92,187,21,120,34,34,34,34,129,129,129,129,129,129,66,53,53,129,129,129,129,129,129,129,129,53,53,53,53,53,53,53,53,53,53,53,53,53,53,129,53,53,53,53,53,53,53,53,53,53,53,53}, + {121,126,31,52,120,37,57,10,171,2,2,2,2,35,35,35,2,2,97,97,97,97,97,97,97,35,35,35,97,97,97,2,2,97,97,2,2,97,97,2,2,35,35,97,97,97,2,97,2,2,2,2,2,10,2,2,2,2,2,2,2,2,166,97,97,97,2,97,2,2,2,97,35,35,35,97,97,97,2,2,2,2,35,35,2,97,2,2,2,97,97,97,97,97,97,12,2,2,12,97,2,2,60,32,32,32,128,97,97,97,97,2,2,97,97,97,97,35,35,97,35,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,35,97,35,35,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,35,35,97,35,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,42,21,21,21,171,126,76,52,26,37,57,171,171,171,171,124,35,35,35,35,97,97,97,97,97,97,97,97,97,35,35,35,97,97,97,97,97,97,97,97,97,97,97,97,97,35,35,97,97,97,97,97,97,97,97,97}, + {155,86,49,104,87,94,64,45,61,91,91,91,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,116,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,48,48,103,48,103,2,2,2,48,2,91,91,91,2,2,2,2,2,2,2,2,2,2,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,2,48,48,48,48,48,2,48,48,48,48,2,48,48,2,48,48,48,48,48,48,48,48,48,48,48,48,48,2,48,48,48,48,2,2,2,48,48,2,48,48,2,48,48,48,48,48,48,2,2,48,2,2,2,2,2,2,2,2,2,2,2,2,2,48,2,2,2,2,2,48,48,2,48,4,48,2,14,2,2,2,155,86,32,104,87,94,64,45,61,91,91,91,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,116,2,2,2,2,2}, + {164,121,44,166,47,33,7,15,13,2,2,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,14,2,2,2,98,53,43,66,50,18,40,14,22,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {128,120,133,17,71,52,25,107,42,21,21,2,2,2,2,4,4,96,2,9,9,2,9,94,94,94,94,94,94,94,94,96,8,128,133,133,128,6,6,18,2,2,2,133,133,133,81,81,81,128,128,128,81,110,2,2,2,4,96,96,96,18,35,35,35,35,35,94,94,94,96,96,110,96,35,35,128,128,18,35,6,6,45,112,2,2,133,133,133,81,81,81,128,128,128,81,110,2,2,45,45,45,35,35,35,45,45,8,45,45,45,45,45,45,45,35,35,35,35,128,35,83,83,74,7,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,129,129,129,129,129,129,45,45,45,45,45,129,45,45,45,7,7,35,35,35,35,35,35,35,35,45,35,35,35,35,35,35,35,35,35,35,112,112,35,45,45,45,45,45,45,45,45,45,45,45,45,45,45,148,45,148,114,44,161,120,172,22,5,5,5,187,120,138,17,71,52,25,21,42,21,21,21,21,21,62,62,42,57,137,137,57,57,52,52,52,90,90,45,45,45,90,90,90,90,45,45,45,45,45,35,35}, + {179,82,157,76,61,35,13,90,197,2,69,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,39,39,2,2,2,2,32,32,35,35,69,69,103,37,103,103,103,103,103,103,103,103,103,103,69,103,103,103,103,103,103,103,103,103,103,103,103,103,119,42,42,42,119,86,86,86,86,86,86,103,103,103,103,103,103,103,103,103,103,103,69,103,103,103,103,103,103,103,103,103,103,103,6,6,6,6,6,6,44,44,13,44,44,18,13,13,82,135,103,103,103,103,19,19,103,103,103,103,103,83,83,83,103,103,56,83,56,103,39,97,97,42,42,42,119,86,86,86,83,83,83,19,19,19,19,83,83,83,19,103,103,103,103,103,103,103,19,19,19,19,19,103,83,103,33,56,135,56,56,135,135,135,135,135,83,83,95,83,110,135,135,135,135,20,20,20,20,56,55,55,56,56,28,110,110,19,19,87,87,87,124,124,58,5,5,5,126,135,76,76,61,85,205,14,7,7,7,7,7,7,7,55,55,61,38,56,56,56,56,135,135,135,135,135,135,135,39,135,135,135,135,56,56,56,135,135}, + {136,136,148,63,66,10,169,95,95,163,30,28,28,2,41,130,2,2,2,21,2,2,2,2,2,2,2,2,2,2,2,36,36,2,2,2,2,2,2,2,2,28,2,2,2,2,2,2,2,2,2,21,2,2,2,2,2,2,2,2,2,2,2,2,2,14,4,14,2,14,2,2,2,84,84,72,72,98,98,151,24,13,41,13,41,41,13,13,13,13,13,13,13,13,13,13,13,41,41,41,41,41,41,41,41,41,13,13,13,13,13,13,41,41,13,41,41,41,13,13,13,13,13,13,41,41,13,13,13,124,124,124,124,124,2,2,41,41,13,13,13,13,13,13,2,2,41,41,41,41,41,41,41,41,41,41,13,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,83,83,13,13,41,41,41,41,13,13,41,41,13,13,13,13,13,13,13,13,13,13,13,41,41,41,41,41,41,13,13,41,41,41,41,41,10,52,176,10,10,20,5,5,5,136,136,148,173,66,10,169,95,95,163,30,30,41,41,41,41,30,41,59,59,59,59,59,59,59,205,13,129,129,41,41,41,129,129,129,129,41}, + {165,81,92,48,9,110,12,40,40,34,2,2,2,107,107,107,2,107,2,2,2,2,2,2,2,2,2,2,2,15,41,41,2,2,2,2,2,2,2,2,2,2,2,15,15,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,15,2,2,2,2,2,2,2,2,2,2,2,2,2,14,2,2,2,154,70,70,70,180,180,180,164,180,107,2,78,15,15,15,15,15,15,15,15,15,2,15,107,2,2,107,15,107,107,41,107,107,107,107,107,107,107,15,15,107,107,107,107,107,107,2,2,2,107,107,15,15,15,15,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,15,15,15,15,107,107,107,107,15,15,107,107,107,107,15,15,107,107,107,107,15,15,15,15,15,15,2,6,149,60,116,3,3,3,165,138,62,48,19,54,12,15,117,34,34,34,85,107,107,107,107,107,107,107,107,152,15,65,65,65,107,107,15,15,15,15}, + {169,66,170,97,35,56,55,86,32,32,2,2,2,2,14,2,40,2,37,2,2,37,40,40,40,2,2,2,37,37,37,37,37,2,32,37,2,2,32,25,25,34,84,40,55,32,32,32,2,40,32,37,40,40,40,40,40,40,40,48,40,37,37,14,14,14,14,40,40,40,40,10,20,5,5,5,148,148,148,5,113,113,20,86,148,148,148,117,148,48,48,48,48,48,48,48,148,37,37,40,48,48,48,48,48,37,48,12,12,126,12,3,3,3,12,51,51,51,47,47,47,47,47,65,47,92,92,92,30,30,71,71,71,71,71,71,71,71,71,71,71,71,71,40,40,26,26,26,26,26,5,5,148,148,148,5,113,113,26,26,26,26,26,26,26,92,92,92,92,92,92,92,92,92,92,92,92,14,14,92,92,92,92,26,26,26,26,26,26,92,92,26,26,26,26,26,92,92,30,92,92,92,92,26,92,92,92,92,92,92,92,71,71,71,124,124,124,124,122,118,118,118,118,122,118,13,13,13,142,66,164,97,35,120,45,26,26,23,92,92,71,23,45,45,77,77,77,92,92,92,92,92,92,92,92,30}, + {135,63,126,156,70,18,49,143,6,117,2,109,109,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,35,35,2,2,2,2,35,2,2,2,2,2,2,2,2,2,2,2,2,35,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,35,35,2,2,2,2,2,2,35,35,2,2,2,35,35,2,2,2,2,2,2,2,2,2,35,35,35,35,35,35,35,35,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,35,35,35,2,35,35,35,2,2,2,2,35,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,35,2,35,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,10,2,2,2,135,63,152,82,50,18,99,2,117,117,2,2,98,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {193,59,51,68,68,15,170,170,170,143,143,12,2,2,2,63,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,63,2,2,2,2,2,2,2,2,2,2,2,2,2,63,63,63,2,63,63,63,63,38,38,38,38,38,63,63,63,63,63,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,63,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,10,18,2,2,2,193,59,51,68,68,15,170,170,170,143,143,12,2,2,2,63,2,2,2,2,2,2,2}, + {145,101,56,65,23,76,110,2,4,4,4,146,146,146,2,146,2,2,2,2,2,2,2,2,2,2,2,2,2,2,146,146,146,146,94,94,94,2,2,2,2,2,2,2,2,2,2,146,146,146,146,146,146,146,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,94,94,94,94,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,146,2,2,2,25,25,25,25,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,146,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,20,2,2,2,145,101,56,65,23,76,110,2,4,4,4,146,146,146,2,146,2}, + {144,129,26,98,36,46,47,52,52,52,82,2,2,2,2,2,17,2,2,2,2,2,2,2,2,2,2,2,2,91,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,91,91,2,2,2,91,2,91,91,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,91,91,2,2,91,91,91,91,91,91,2,2,91,2,2,91,2,2,2,2,2,2,2,2,2,91,91,91,91,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,2,176,129,190,98,36,46,47,52,52,52,82,2,2}, + {145,78,166,171,56,20,63,2,2,33,33,33,33,2,78,47,47,47,47,47,2,2,2,2,2,78,78,78,2,2,2,2,217,12,2,2,2,2,2,2,2,2,2,2,2,78,2,2,47,2,2,2,2,217,217,217,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,47,2,2,2,2,2,2,2,47,47,2,78,78,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,47,47,47,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,47,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,78,78,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,6,2,2,2,145,78,166,171,103,140,89,2,2,33,33}, + {191,69,176,54,47,75,167,2,2,2,188,188,188,30,30,2,67,67,117,2,117,117,117,2,2,36,2,2,2,2,2,2,2,2,2,2,36,36,2,36,2,2,2,2,2,2,2,2,2,2,2,67,67,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,4,4,72,67,2,2,18,18,32,2,2,2,72,177,177,54,54,54,54,2,2,191,4,14,14,14,14,14,67,24,24,119,117,117,117,117,117,36,36,14,14,14,14,14,4,4,14,14,36,36,39,36,36,36,2,2,2,2,2,2,2,2,2,67,67,67,67,14,14,2,2,2,2,24,14,14,14,14,2,2,2,4,4,4,72,60,60,10,10,14,14,14,14,2,2,72,177,177,54,14,14,14,14,14,14,14,60,14,14,14,14,14,14,14,14,14,117,14,14,14,14,10,14,14,106,106,106,14,14,14,14,14,10,10,10,10,10,10,14,14,14,14,14,14,10,10,10,168,168,168,14,14,14,66,10,119,119,14,14,14,119,119,119,119,210,210,210,69,60,60,119,119,14,224,10,5,5,5,185,69,176,116,47,75,109}, + {186,96,29,122,47,96,170,157,157,157,157,108,159,2,195,195,26,26,26,26,26,2,2,2,2,132,132,132,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,132,132,2,2,2,157,157,157,2,157,157,132,132,132,132,132,2,157,132,2,203,2,2,2,2,2,2,157,2,2,2,2,2,2,157,2,157,2,2,2,157,2,2,2,2,2,2,2,2,2,157,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,157,2,2,2,157,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,18,2,2,2,186,96,29,122,47}, + {151,118,226,91,54,49,33,2,2,2,2,4,4,4,143,143,2,2,143,25,25,25,2,143,143,143,143,143,143,143,143,143,143,143,143,143,74,74,74,2,2,143,143,74,2,74,74,74,74,74,2,2,143,2,143,143,2,2,2,2,2,90,90,2,2,2,2,2,2,2,2,2,90,2,2,2,2,2,2,143,143,143,2,2,2,2,2,2,2,2,2,2,2,74,74,2,2,2,2,143,143,143,2,143,143,143,2,2,2,2,2,2,2,2,143,2,143,2,2,2,2,2,2,2,2,143,143,74,74,143,2,2,90,143,2,2,2,2,143,2,2,2,143,143,143,2,2,2,2,2,2,2,2,2,2,2,2,2,2,143,143,2,143,143,143,143,2,143,2,143,2,2,2,2,2,143,2,2,2,2,2,2,2,143,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,151,98}, + {144,91,237,82,81,75,138,163,163,163,117,117,44,2,44,136,136,136,136,2,2,2,2,2,122,122,122,122,2,2,2,136,2,2,44,2,2,2,2,2,2,136,136,136,136,136,136,136,2,2,44,44,2,2,2,136,136,2,2,2,136,136,2,2,2,2,2,2,2,2,136,2,2,2,2,2,2,2,2,2,136,136,2,2,2,136,2,2,2,2,2,2,2,2,2,2,136,2,2,2,2,2,2,2,2,2,136,136,136,136,136,2,2,136,136,136,2,136,2,2,136,136,2,136,136,2,136,136,2,2,69,168,168,183,102,44,44,136,136,136,136,136,136,136,248,163,163,163,163,136,163,2,2,163,163,15,15,15,15,15,136,136,136,136,136,136,136,136,136,136,136,136,136,163,163,163,136,136,163,136,136,163,163,163,136,163,136,136,136,163,136,136,163,163,136,163,136,136,163,136,136,136,163,163,163,163,163,163,163,163,163,163,163,136,136,163,163,163,163,136,136,136,136,136,136,163,136,136,136,136,136,136,136,163,163,136,136,163,163,163,163,163,136,136,136,136,163,163,136,136,136,136,163,163,163,136}, + {189,78,178,64,118,27,189,2,2,67,67,110,110,110,110,2,28,28,2,2,2,2,2,2,2,102,2,2,2,2,2,2,2,2,2,2,2,2,28,28,28,2,2,2,2,2,2,2,2,2,2,28,28,28,28,28,28,28,28,28,28,28,2,2,2,28,28,28,28,28,28,28,28,28,28,28,28,102,102,102,102,102,102,2,2,2,40,40,28,28,28,28,28,28,2,2,28,28,28,28,28,28,2,2,2,2,2,2,2,2,2,102,2,28,28,28,2,2,2,2,2,2,2,40,2,2,2,2,2,2,28,102,2,102,102,102,102,102,102,102,102,102,102,28,28,28,28,2,2,2,102,2,2,2,2,2,2,2,2,2,102,102,2,2,2,2,2,2,28,28,28,28,2,2,2,2,2,40,40,2,40,40,40,40,40,40,2,2,40,40,2,2,2,2,28,28,102,102,102,102,102,2,2,102,102,102,28,28,28,28,28,2,2,2,28,28,28,2,2,2,2,28,2,2,2,2,2,28,2,28,28,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,28,28}, + {165,202,83,76,125,65,42,2,44,44,23,2,23,23,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {209,204,92,75,85,146,104,2,7,18,8,2,2,2,204,95,95,95,2,2,2,95,95,95,95,95,95,95,2,2,2,95,2,2,2,2,2,95,95,95,95,95,95,2,2,2,2,2,99,134,134,134,2,2,2,2,2,2,2,2,2,2,2,2,2,2,99,99,2,2,2,134,134,134,99,99,134,134,134,134,134,2,134,2,95,95,95,95,95,2,2,2,2,2,2,2,2,2,99,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,95,2,2,2,2,2,2,95,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,95,95,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,95,95,95,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,95,95,2,2,2,2,2,2,2,2,2,2,2}, + {169,68,89,16,193,82,33,262,262,175,148,148,148,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,92,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,92,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {171,162,78,43,61,17,112,10,171,182,118,33,2,2,2,2,118,2,2,2,2,2,2,151,2,2,2,2,2,2,2,2,2,2,2,2,2,2,151,2,2,151,151,151,2,2,151,151,151,2,151,151,2,151,151,2,2,151,2,2,2,2,151,151,2,2,151,151,151,151,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,151,151,2,151,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {211,121,119,55,90,211,96,89,225,25,178,36,36,36,2,2,108,2,2,2,2,2,2,2,2,2,2,2,2,184,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,184,184,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,108,108,108,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,36,144,2,108,108,2,2,52,151,208,208,108,108,108,108,108,108,184,184,184,184,108,184,108,108,184,108,184,108,184,184,108,108,184,184,184,184,108,184,184,184,184,184,184,108,108,108,108,108,184,184,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,184,108,108,108,108,184,184,184,108,184,184,184,184,184,184,108,108,184,184,184,184,184,184,184,108,108,108,108,108,184,184,184,184,184,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108}, + {154,101,83,17,16,210,41,79,70,158,2,27,27,2,2,2,2,2,2,2,2,2,2,2,2,153,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,75,75,75,75,75,75,75,2,2,153,2,153,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,83,83,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,75,75,75,75,75,75,75,2,2,153,2,153,153,2,2,2,153,153,153,2,63,153,153,2,2,2,2,2,153,153,153,2,63,63,63,63,2,2,2,153,153,2,2,2,83,83,83,83,83,83,83,83,83,83,83,2,2,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,40,40,40,40,40,40,40,40,40,63,153,63,153,40,40,40,40,40,83,83,83,63,40,40,83,83,83,83,83,83,83,83,83,83,40,63,63,2,40,40,63,83,83,83,40,83,83,40,40,40,40,40,40,40,83,83,63,83,83,40,83,40,40,83,83,40,40}, + {169,179,130,79,148,180,136,17,47,119,2,119,119,169,169,2,169,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,169,13,13,169,169,184,169,169,2,169,169,169,169,169,2,2,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,2,2,114,114,108,114,114,128,135,169,169,169,169,169,169,17,17,13,13,135,135,135,135,135,135,169,169,2,2,169,17,169,169,2,2,2,169,169,169,169,169,169,169,169,169,110,110,110,169,135,135,169,135,135,135,169,169,169,169,169,135,245,245,17,245,169,110,110,44,136,44,17,17,17,44,44,132,200,75,75,136,75,75,75,44,44,135,169,135,110,110,110,110,110,110,110,110,110,110,135,135,135,110,135,110,110,245,245,245,135,135,245,245,245,200,245,245,245,245,110,110,110,245,245,245,169,169,169,169,169,169,245,245,245,169,169,169,245,169,169,169,169,169,110,110,169,245,245,245,13,13,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,110,110,245,245,245,245,245,110,245,245,245,245,245,245,245,245,245}, + {241,171,148,31,172,34,66,60,156,140,2,2,2,75,75,2,2,2,2,2,2,2,190,190,2,2,2,30,2,2,2,2,2,2,2,2,2,2,2,190,190,2,2,190,190,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,190,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,190,190,190,190,2,2,2,190,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,30,2,2,2,30,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,67,2,2,2,2,30,30,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,30,30,2,2,2,190,190,190,91,91,91,30,2,2,2,30,2,2,2,2,190,30,30,30,30,2,2,190,190,30,30,190,2,190,190,190,2,2,2,2,2,2,170,170,2,2,2,2,30,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {229,189,183,106,118,138,82,149,265,39,2,2,265,2,2,2,2,2,2,130,2,2,2,71,71,2,2,2,71,2,2,71,71,71,71,2,71,71,2,2,2,71,71,71,71,2,2,71,71,71,2,84,71,2,71,71,71,2,2,71,71,71,71,71,71,104,104,104,2,104,71,130,2,2,97,110,158,158,71,71,71,119,71,71,71,71,71,104,71,2,2,130,71,130,130,104,104,104,104,104,104,130,130,71,104,130,104,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,104,130,130,130,130,130,130,130,130,130,130,130,130,130,130,98,98,130,98,9,9,9,106,171,109,109,171,171,25,95,95,95,95,95,95,95,95,95,104,95,95,95,95,149,149,149,149,95,95,104,95,149,149,104,71,71,71,71,71,71,104,104,104,104,71,104,71,104,104,104,104,95,95,95,149,71,95,95,104,104,104,104,71,71,104,71,71,104,104,104,104,104,104,104,104,104,104,71,95,95,71,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,149,104,149,104,104,104,104,149,104}, + {165,157,127,21,64,15,80,130,130,130,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,74,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,83,2,83,83,83,83,83,2,83,2,2,2,2,2,2,2,2,2,2,2,2,83,83,83,83,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,143,2,2,83,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,143,2,2,2,2,2,2,2,2,2,74,74,74,74,74,74,2,2,83,2,2,2,2,2,2,2,2,2,2,83,2,2,74,2,74,74,74,2,2,2,2,74}, + {221,130,203,84,83,83,29,121,54,54,2,141,2,2,94,94,94,4,4,4,2,4,2,2,2,54,54,108,16,16,94,52,52,52,52,52,52,36,52,134,134,134,52,52,52,52,52,26,26,26,227,227,227,101,101,101,101,101,101,101,67,67,67,67,2,74,74,12,12,6,12,12,3,3,3,94,94,36,36,36,36,36,9,52,52,9,203,203,203,94,94,94,52,52,271,271,271,31,31,31,83,198,31,83,83,83,83,83,191,83,83,83,83,83,134,134,134,134,134,52,31,52,52,80,80,80,80,80,80,80,170,170,170,170,170,78,78,78,92,92,113,92,92,92,80,10,20,10,10,10,69,61,61,61,78,135,78,78,121,121,39,39,113,113,94,94,113,121,121,121,121,113,80,92,92,123,123,123,170,170,80,80,80,22,22,22,271,271,271,83,83,271,271,271,271,271,271,31,31,31,83,198,31,83,83,83,83,83,83,171,171,175,175,175,175,175,175,122,122,122,12,33,33,3,3,94,94,36,36,36,113,113,170,170,170,110,110,110,110,110,110,110,110,110,110,110,110,110,73,73,73,110,110,110,110,110}, + {230,166,20,160,121,102,153,94,16,67,2,2,2,2,2,2,97,97,97,2,2,97,97,2,97,97,97,97,97,97,97,97,97,2,97,2,2,97,97,2,97,97,2,97,2,2,2,2,2,2,2,2,2,2,2,2,97,97,97,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,97,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,280,280,280,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,97,97,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,97,97,2,2,97,2,97,97,2,2,2,2,2,2,97,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {181,79,137,119,139,24,77,17,50,25,25,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,13,2,2,2,2,2,200,200,200,200,2,200,200,2,2,2,200,2,200,200,200,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,200,200,200,200,200,2,13,13,13,13,13,2,200,200,200,13,13,13,13,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {239,242,192,40,41,62,124,193,193,31,193,2,2,2,2,2,2,2,2,2,2,2,2,148,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,47,47,47,47,2,2,148,2,2,2,2,2,2,148,148,2,123,148,148,2,2,2,148,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,148,148,2,148,148,148,148,148,2,2,2,30,43,2,2,2,148,148,2,2,2,2,2,2,2,148,148,148,148,148,30,148,22,7,7,7,118,112,112,112,30,30,30,112,112,112,112,9,22,97,97,97,132,132,22,132,132,132,148,148,148,148,148,148,243,243,2,123,123,132,132,132,132,132,132,132,132,132,132,132,148,132,132,148,132,148,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,148,148,92,92,123,123,123,132,132,132,132,132,132,132,132,132,132,132,132}, + {239,178,73,122,239,51,95,48,78,88,78,2,2,2,2,2,2,2,2,2,2,2,144,144,2,2,144,144,144,2,144,144,144,144,144,144,144,144,144,144,144,144,144,2,2,2,144,2,2,2,144,144,144,2,2,2,2,2,2,2,2,2,2,2,158,2,2,2,2,2,2,2,2,2,2,2,2,2,2,144,144,144,2,2,2,2,144,144,2,144,2,144,2,2,2,144,144,144,144,144,144,144,144,144,144,144,2,2,144,144,144,144,144,144,2,144,144,144,144,2,144,144,144,144,144,144,144,144,144,144,144,144,144,53,53,144,144,144,2,2,144,144,144,2,144,144,2,144,144,144,144,144,144,144,2,144,144,144,144,144,144,144,144,144,144,144,144,2,2,144,144,144,144,144,144,144,144,2,2,2,144,2,2,2,2,2,2,2,2,2,2,144,2,2,2,2,144,144,2,2,2,144,144,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,144,2,144,144,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {234,117,198,34,143,21,74,6,252,252,98,2,2,2,2,197,38,2,2,2,2,2,47,2,47,47,47,47,2,2,2,47,2,2,2,2,4,2,2,2,2,4,2,2,2,47,128,128,128,128,57,57,57,128,128,128,2,2,2,2,201,201,2,201,201,2,73,201,73,47,47,73,201,201,201,201,201,2,201,201,201,4,2,2,2,2,4,201,2,2,47,128,128,128,128,132,132,201,201,132,132,2,132,132,132,132,132,132,132,132,2,73,73,73,47,47,73,73,2,73,132,73,2,132,132,160,4,2,112,112,2,22,201,2,2,47,128,128,128,112,112,128,128,132,112,112,112,112,112,112,112,174,112,112,112,112,112,112,112,132,132,160,160,160,160,160,160,160,112,201,112,112,112,112,112,174,174,132,2,2,47,128,174,174,174,112,112,112,112,112,174,112,174,132,132,132,174,112,112,112,112,112,112,112,112,112,112,112,112,14,174,174,174,174,174,174,174,174,112,112,112,112,112,112,112,160,160,160,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,112,112,112,112,112,112,112,112,112,112,112}, + {179,110,38,28,58,39,16,29,42,125,202,8,8,129,4,4,2,2,2,67,67,2,2,2,2,2,2,8,67,67,2,2,50,125,20,20,67,67,67,77,67,67,67,8,8,117,117,117,67,67,67,117,67,67,67,2,2,134,42,168,42,21,21,21,58,232,58,58,124,124,124,42,104,104,104,98,98,104,104,104,104,117,117,67,117,117,117,117,117,98,117,117,117,117,2,98,117,67,67,108,104,104,104,108,108,108,108,108,117,98,98,112,67,112,112,112,104,104,104,104,112,112,117,117,104,104,21,21,58,104,104,104,104,104,104,104,104,104,112,112,112,112,272,112,112,104,104,104,104,104,104,73,22,131,277,114,22,7,7,7,220,225,98,98,98,98,98,98,93,93,185,185,185,185,22,112,112,112,112,112,112,112,112,112,112,112,112,112,112,108,21,21,112,106,106,106,272,272,272,272,272,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,96,96,117,104,104,272,104,104,104,104,104,104,104,104,104,104,104,104,98,98,104,104,104,104,117,117,117,117,299,23,23,41,41,41,41,41,108,23,23}, + {246,53,189,50,18,59,179,179,7,137,137,2,2,103,103,103,103,40,40,40,2,2,2,2,73,73,73,2,103,103,103,103,103,2,73,73,73,73,73,73,73,73,73,73,73,2,2,2,2,2,35,2,2,2,2,2,71,73,73,2,2,2,61,73,73,73,2,2,2,73,61,73,73,73,24,24,73,73,73,73,73,73,73,73,73,35,73,73,73,197,73,73,73,73,73,24,24,24,24,24,12,73,73,50,61,2,2,50,45,27,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,73,73,73,73,73,73,73,73,73,73,73,61,61,61,61,73,73,61,61,61,61,61,73,61,61,61,61,61,73,73,73,73,73,73,73,73,73,73,73,73,73,2,73,73,73,73,73,73,2,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,61,61,61,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,2,2,50,73,61,61,73,73,73,61,61,61,61,61,61,61,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,61,73,73,73,73,197}, + {239,133,87,92,193,12,206,238,238,238,31,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,18,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,241,2,241,241,2,241,241,2,2,2,241,241,241,241,2,2,2,2,2,2,2,2,241,241,2,2,2,2,18,18,18,18,18,18,2,238,2,2,241,2,2,2,2,2,2,2,241,2,241,241,241,2,2,2,2,2,2,18,241,241,241,2,2,2,2,18,241,2,2,2,241,2,18,2,2,18,18,18,18,18,18,2,18,241,241,241,241,2,2,2,241,241,241,241,2,2,241,241,241,18,18,18,18,241,241,241,241,241,241,241,241,241,241,18,18,241,241,241,241,241,241,241,241,241,2,2,18,241,241,241,2,2,2,2,2,2,2,2,241,241,2,2,2,2,2,2,241,241,2,2,2,2,2,2,241,2,241,241,241,241,241,241,2,2,2,2,2,2,2,2,2,2,2}, + {191,244,60,193,18,32,193,104,74,125,125,66,2,2,2,2,2,2,2,2,2,2,125,125,2,125,125,125,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,125,2,2,2,2,125,125,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {253,143,54,39,122,32,75,107,234,2,6,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {282,89,71,88,30,23,81,105,105,2,2,105,105,131,107,2,2,2,2,2,195,195,2,2,29,29,21,21,128,195,195,195,195,195,195,195,195,195,131,195,195,195,195,195,261,57,57,57,201,77,228,228,228,228,228,57,57,57,59,59,131,131,195,195,195,195,195,195,195,195,2,195,195,131,195,195,195,195,195,195,195,195,195,195,195,195,131,195,195,195,195,195,195,57,57,57,201,77,228,228,228,228,228,228,131,131,59,83,227,131,131,195,195,195,170,170,170,170,170,170,170,170,170,170,170,170,195,195,195,195,261,131,195,195,131,195,195,195,195,195,104,104,57,57,201,77,228,228,104,104,104,104,104,104,104,104,104,104,104,6,104,104,106,6,6,6,6,6,89,138,170,89,89,222,89,89,89,104,104,104,89,89,91,91,91,83,83,83,44,44,57,57,44,44,44,44,44,44,44,44,44,44,44,44,261,89,89,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,74,74,74,74,74,74,74,30,30,17,17,17,17,17,57,57,201,17,17,261,261,261,261,261,91,91,91,204,91,91,261,261}, + {259,115,171,40,156,71,67,24,24,2,2,2,24,4,4,4,2,234,2,2,2,2,2,2,2,2,2,74,74,2,2,2,234,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,234,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,234,234,2,2,74,2,2,2,234,2,234,234,234,234,234,2,2,234,2,234,234,2,2,234,234,234,234,234,74,2,2,234,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {264,237,49,203,247,108,75,75,75,2,2,32,16,8,16,16,16,164,14,164,2,2,32,16,8,16,16,32,42,42,42,2,2,32,16,8,24,24,24,298,298,95,2,2,32,16,102,102,42,42,42,42,298,2,2,262,262,262,42,298,298,298,298,121,2,115,121,115,115,115,115,115,115,115,141,141,141,115,115,115,115,115,115,115,115,115,115,298,298,298,167,167,167,167,167,121,121,298,298,298,298,298,298,298,298,298,298,298,125,125,125,125,125,298,298,213,213,284,284,284,284,284,284,284,97,97,97,97,97,97,156,156,13,13,97,97,113,97,113,113,113,113,113,113,113,113,113,113,113,113,100,113,113,113,170,170,170,170,170,170,170,170,139,100,100,251,251,251,251,251,251,261,261,251,251,251,251,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,68,68,68,68,68,68,68,12,12,12,68,12,12,12,12,12,68,68,12,12,12,12,12,12,113,113,174,113,113,97,113,97,97,261,97,97,14,14,14,14,14,14,14,14,14,14,139,139,139,139,139,174,174,174,174,139,156,139,139,139,232,232,139,139}, + {264,106,89,51,29,226,23,286,286,151,151,151,151,151,2,2,2,2,2,2,31,31,31,2,2,2,2,2,2,2,2,284,284,94,2,2,94,2,2,2,151,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,94,2,2,2,2,2,2,94,2,2,2,2,284,284,284,151,2,2,2,2,2,2,2,151,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,4,4,16,16,2,2,2,80,76,107,168,168,168,76,4,4,151,151,151,151,80,2,187,94,94,94,94,94,94,94,12,12,2,94,94,94,94,94,94,94,94,2,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,2,94,2,2,12,2,2,2,2,2,2,12,12,284,284,284,284,284,94,94,12,12,12,12,284,2,2,2,2,151,2,150,94,94,94,94,2,2,2,2,2,2,94,94,2,2,12,94,12,12,12,94,94,94,94,94,94,94,94,2,2,80,76,107,168,168,94,12,12,261,261,261,261,12,261,261,261,12,12,94,12,12,12,12,187,187,94}, + {194,215,82,23,213,23,108,127,74,2,201,32,178,2,285,2,2,2,2,285,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,285,285,285,2,2,2,2,2,2,2,285,285,2,2,285,285,2,2,2,285,285,285,285,285,2,2,285,285,2,2,285,285,285,285,285,285,285,285,2,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,2,2,2,285,285,285,2,2,2,285,285,285,285,285,285,285,285,285,285,285,285,285,285,2,2,2,285,2,285,285,285,2,2,2,2,2,2,2,2,2,2,285,285,2,2,2,2,2,285,2,2,2,285,285,2,2,285,285,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,285,285,285,285,285,285,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {196,267,251,111,231,14,30,52,95,2,154,53,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {266,67,22,101,102,157,53,95,130,2,42,76,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,162,2,2,2,2,2,2,2,2,2,2,2,2,112,112,2,2,2,2,2,2,2,162,2,2,2,2,2,2,2,2,2,162,2,2,2,2,2,2,162,2,2,2,2,2,2,2,2,2,2,2,2,2,162,162,162,162,162,162,162,162,162,2,2,162,162,162,2,2,2,2,2,162,2,162,2,2,162,2,162,162,162,2,2,162,162,162,2,2,18,18,2,2,2,2,2,2,162,2,2,2,162,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,112,2,2,2,2,2,2}, + {281,205,107,178,236,122,122,316,76,215,215,2,60,2,2,2,2,2,2,227,2,2,2,2,2,2,2,2,27,2,2,2,2,2,2,2,2,2,2,99,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,9,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,211,2,2,2,227,211,211,211,2,211,2,4,2,2,2,144,48,108,12,12,257,22,316,316,132,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,112,112,112,112,2,112,112,112,112,112,211,211,2,2,2,2,2,2,2,2,2,2,2,211,2,2,2,211,211,112,9,112,115,115,112,211,112,211,211,2,2,2,211,211,211,2,211,211,211,211,211,211,211,211,211,112,112,112,112,112,119,112,112,112,2,2,2,112,112,112,2,2,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,2,2,144,48,112,112,112,211,211,211,211,211,211,112,112,112}, + {271,89,65,195,132,162,102,45,56,174,104,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,13,13,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,80,80,2,2,2,2,2,2,2,2,2,2,2,80,80,80,2,80,80,2,2,2,2,2,2,2,2,2,156,103,103,193,67,67,38,38,209,80,80,80,80,2,80,2,2,2,2,2,2,2,326,326,326,326,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,326,326,326,326,326,326,326,326,326,326,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,80,80,13,13,13,13,13,13,2,2,2,326,326,326,326,326,13,13,80,2,2,2,2,2,2,326,2,2,80,103,103,193,67,67,38,38,209,80,80,80}, + {200,169,170,121,155,68,131,167,78,113,113,2,2,64,2,2,2,2,2,2,2,2,2,2,2,2,2,173,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,29,2,2,2,113,2,29,2,2,2,2,2,2,2,2,113,113,113,113,113,2,113,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,40,13,13,13,13,13,104,2,4,29,29,29,62,2,2,2,2,62,62,62,62,62,62,62,62,62,62,173,173,29,29,29,2,29,29,2,2,2,29,29,29,29,62,62,62,113,29,29,62,62,113,113,2,2,113,62,29,29,29,29,113,113,113,113,113,29,29,29,29,62,62,62,62,62,2,113,113,113,29,29,29,29,29,29,29,113,113,62,62,62,62,62,62,62,62,29,29,62,62,62,62,62,29,29,29,29,29,29,29,29,29,29,29,29,2,29,29,29,29,29,29,2,2,40,29,29,62,62,62,62,62,29,29}, + {288,143,265,264,71,19,231,169,27,27,27,2,2,2,2,2,2,2,2,2,2,2,2,2,51,2,2,2,2,2,2,2,114,2,2,2,2,51,51,2,2,2,2,2,2,2,2,2,2,2,2,2,51,51,51,2,2,2,2,2,2,2,51,51,2,2,2,51,51,51,51,51,51,2,2,2,114,114,114,114,2,2,2,51,2,2,131,2,2,131,2,2,2,2,2,114,51,51,51,2,2,2,2,2,114,114,2,2,2,2,2,2,2,2,114,114,51,51,51,51,51,51,51,114,114,51,51,51,51,114,114,114,114,114,114,114,114,51,252,252,114,114,114,51,51,2,114,114,51,51,51,2,2,2,2,2,2,2,114,114,2,2,2,2,2,2,2,2,2,2,114,114,114,2,114,114,114,131,131,131,2,2,51,2,2,51,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,114,114,114,114,2,2,2,2,114,114,114,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,114,114,2,114,114}, + {311,141,96,173,90,119,134,151,35,252,39,2,39,39,2,2,2,2,2,2,2,2,2,113,113,2,2,2,2,2,2,113,2,2,113,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,113,113,113,113,113,113,2,2,113,2,2,2,2,113,113,2,2,113,113,113,113,113,113,113,2,113,113,2,2,113,113,113,113,2,113,113,2,2,2,2,2,2,2,2,2,113,2,2,2,113,2,2,113,113,113,2,2,2,2,2,2,2,2,2,113,113,113,113,2,2,2,2,2,2,2,2,2,2,113,2,2,2,113,113,113,2,2,113,2,2,113,2,2,2,2,2,113,2,2,2,2,2,2,2,2,2,2,2,2,2,113,113,2,113,113,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,113,113,113,113,113,2,113,2,2,2,2,113,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {311,230,52,138,225,346,162,216,216,91,160,182,91,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {275,167,128,244,184,184,44,210,237,139,139,139,139,2,2,2,2,2,2,2,2,2,2,73,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,73,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,73,2,2,2,197,2,2,2,2,2,2,197,197,73,197,197,197,2,2,197,197,197,2,2,2,197,197,2,197,197,197,197,197,197,197,197,197,197,2,2,2,197,197,197,2,197,2,197,73,2,197,197,197,2,2,197,73,73,73,2,197,197,73,197,197,197,197,197,2,2,2,2,2,2,2,2,2,73,73,73,73,73,73,2,2,2,2,197,197,2,197,2,2,2,2,197,197,2,197,2,2,2,197,197,2,2,2,2,2,2,2,2,197,197,197,197,2,10,197,2,10,197,2,2,121,318,47,47,47,180,47,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,2,2,197,197,197,197,197,73,197,197,197,197,197,197,197,197,197,197,197,197,197}, + {176,156,83,135,46,197,108,63,33,33,33,2,133,2,213,213,213,213,133,133,2,133,2,2,133,133,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,213,2,2,2,2,2,2,2,2,2,2,213,2,133,2,213,213,213,2,2,2,2,2,2,2,2,2,133,133,133,133,133,2,133,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,213,24,133,2,2,279,54,259,259,213,133,133,133,133,133,213,133,133,133,213,213,213,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,213,213,213,213,213,213,213,213,213,213,213,213,213,133,133,133,133,133,133,133,213,133,213,213}, + {283,125,141,192,89,181,106,208,124,124,2,112,112,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,112,2,2,2,2,2,2,2,2,2,212,212,212,2,212,2,112,112,112,112,112,112,112,2,2,112,112,112,112,112,112,112,112,112,112,112,2,112,186,186,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,2,2,2,2,2,2,2,112,112,112,2,112,212,212,212,212,212,2,2,2,212,212,2,2,2,2,2,2,2,2,2,2,2,2,2,212,212,212,212,212,212,212,112,112,112,112,112,112,112,2,112,112,112,2,2,124,124,2,2,2,124,2,2,2,2,2,2,2,2,2,2,2,112,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,112,2,2,2,2,2,112,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,124,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {289,191,171,152,191,173,54,13,21,56,56,56,2,2,2,2,2,2,2,2,2,220,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,158,158,158,220,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,220,220,2,2,220,220,2,2,220,220,220,220,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,220,220,220,220,2,220,220,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {334,305,132,132,99,126,54,116,164,105,2,105,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,287,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,149,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {240,166,44,193,153,333,15,99,246,99,2,2,99,99,2,2,2,2,195,195,195,2,195,195,2,263,263,2,195,195,195,263,195,263,2,195,195,195,195,195,195,195,195,195,263,35,35,35,35,263,263,263,263,263,263,2,263,263,263,263,263,2,2,263,263,263,263,2,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,193,193,2,2,35,193,263,263,263,263,263,263,263,2,35,35,35,35,263,2,2,2,2,263,263,263,263,263,2,2,2,35,110,110,110,263,263,263,263,263,263,35,35,35,2,2,35,263,263,263,263,263,2,2,2,2,2,263,2,2,263,2,2,35,35,35,35,35,35,2,2,2,2,2,2,2,2,2,2,2,2,2,2,263,2,2,2,263,2,2,263,2,2,263,263,263,263,2,35,2,2,2,2,2,2,2,2,2,2,2,2,2,2,266,297,297,146,263,263,36,263,123,123,263,263,263,263,2,2,195,195,195,195,263,263,263,263,263,263,263,263,263,195,263,263,195,195,263,263,263,263,263,263,263,263,263,263,263,263,263,195,195,195,195,195,195,195}, + {246,194,265,79,225,65,24,62,46,181,2,2,2,314,2,2,2,2,2,2,2,215,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,215,182,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,231,231,231,2,231,2,2,2,2,2,2,2,2,2,2,2,2,23,2,2,2,2,2,2,2,2,2,2,2,2,2,231,231,231,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,4,16,2,2,2,133,285,259,259,259,65,170,234,189,182,2,231,231,97,97,2,2,2,2,2,2,215,2,308,231,182,2,182,231,231,2,2,182,2,2,2,2,182,182,182,2,182,23,231,182,182,182,182,182,182,182,182,182,182,182,2,182,2,2,2,2,2,2,2,2,97,2,2,2,2,182,182,182,182,182,182,182,182,182,182,182,2,2,2,182,23,23,2,2,231,231,231,231,2,2,2,2,2,182,23,23,2,23,23,23,23,23,23,23,2,182,182,182,2,2,23,23,2,2,2,2}, + {229,334,285,302,21,26,24,97,64,40,2,2,2,231,231,231,231,65,2,148,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,65,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,65,65,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,65,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,65,65,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,65,2,2,2,2}, + {251,295,55,249,135,173,164,78,261,261,2,2,2,2,114,2,2,2,2,2,256,142,142,2,2,2,2,2,2,2,2,185,2,2,2,2,142,2,2,2,2,142,142,2,2,2,2,2,2,142,142,142,2,2,142,142,142,142,142,142,185,2,2,2,142,142,142,142,142,142,142,142,142,142,142,142,2,142,142,142,142,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,142,142,142,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,142,142,142,142,2,2,2,2,2,2,2,2,2,2,2,2,142,142,2,2,2,2,2,2,142,142,142,2,142,142,142,142,142,142,142,142,142,2,2,2,2,2,2,2,2,2,2,2,2,2,2,142,2,2,2,2,2,2,2,142,142,142,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,185,185,2,2,2,2,2,2,2,2,2,2,2,2,2,108,142,2,2,2,2}, + {232,153,55,60,181,79,107,70,29,35,2,2,58,58,2,58,2,2,2,2,61,61,2,61,61,2,2,61,61,90,2,90,90,2,61,61,2,2,2,126,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,144,144,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,144,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {246,116,45,146,109,90,32,103,133,119,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {246,113,146,232,162,262,204,47,45,331,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,29,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,274,274,2,2,160,160,2,29,29,29,2,2,160,2,274,29,274,274,274,274,274,2,274,274,29,29,2,2,160,160,160,160,2,2,160,29,29,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,274,2,274,274,2,2,2,274,274,274,274,2,2,160,2,2,2,2,2,2,117,117,160,160,160,2,274,274,274,160,160,160,160,160,160,160,2,2,160,160,160,160,160,160,160,160,160,160,160,160,160,2,2,2,2,2,160,2,2,2,2,2,2,2,2,2,160,160,160,2,2,2,2,2,160,160,2,2,2,160,160,2,2,2,2,2,2,2,2,2,2,2,2,2,117,2,2,2,2,2,2,29,2,2,2,2,2,2,2,2,2,2,2,2,2,160,160,2,160,160,160,160,160,160,160,160,29,29,29,29,160,160,2,2,160,160,160,160,160}, + {360,150,84,275,13,26,368,49,244,244,63,63,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,38,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {239,295,174,87,30,87,85,36,103,36,2,278,2,2,2,2,2,2,163,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,163,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,163,2,2,2,2,2,2,2,163,163,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,163,163,2,2,163,2,2,2,2,2,2,2,163,2,2,2,2,2,2,163,163,159,2,2,159,2,163,2,2,163,163,163,2,2,2,2,2,2,2,190,190,2,128,2,2,2,128,46,292,292,199,15,338,338,29,338,338,159,159,159,159,2,163,159,159,2,159,159,159,159,159,159,159,163,159,159,159,159,159,159,2,159,159,159,2,159,159,159}, + {356,300,75,310,123,301,200,107,183,37,218,37,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,148,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,148,2,2,2,2,148,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {358,207,168,150,150,21,156,50,195,275,275,275,2,2,2,2,2,251,2,2,2,251,251,251,251,251,251,251,251,251,2,2,2,2,2,2,2,251,251,251,251,2,2,2,2,2,2,2,2,2,2,251,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,251,251,2,2,2,2,2,2,2,251,2,2,251,251,251,251,251,251,2,2,2,251,2,2,2,2,251,2,2,2,2,2,2,2,2,251,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,227,2,227,2,2,2,2,2,2,2,2,2,2,251,2,2,2,2,2,2,2,2,200,2,2,2,2,251,251,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {322,194,234,62,236,147,239,400,255,255,80,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,80,80,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {326,276,134,100,143,113,115,221,13,339,194,194,194,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,198,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,8,2,2,2,16,16,16,16,16,209,16,16,16,16,198,198,198,198,198,198,198,2,2,2,2,2,2,2,2,2,2,2,198,198,198,198,2,198,198,198,198,198,198,198,198,2,198,198,198,198,198,198,198,198,282,282,25,25,25,107,214,205,205,121,65,174,174,174,174,174,198,198,174,27,27,27,198,198,198,198,198,198,198,198,198,198,198,198,152,198,152,198,198,198,198,198,198,27,27,27,27,27,2,2,2,2,198,198,84,84,203,203,2,2,16,16,16,16,51,203,203,203,203,203,203,203,198,198,198,198,203,203,51,152,152,152,198,198,198,198,198,198,198,198,198,198,198,198,79,198,198,198,194,194,152,152,152,152,152,152,164,164,107,86,352,20,25,5,5,125,125,52,52,241,241,71,71,71,20,194,194,331,194,194,194,194,194,139,352,352,352,352,152,352,352,352,352,198,352,152,152,198,198,254,254}, + {337,132,27,45,14,81,110,84,238,224,211,2,29,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,21,21,2,2,2,2,2,2,2,2,21,21,21,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,21,21,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,21,2,2,2,2,2,2,2,2,2,2,2,2,2,21,2,2,2,2,2,2,2,2,2,2,2,2,2,2,21,2,2,2,2,21,21,21,2,2,2,2,2,2,21,21,21,21,21,2,2,2,200,21,200,2,2,2,2,2,2,2,21,21,2,200,21,21,21,21,21,21,21,21,21,21,2,2,2,2,2,2,2,2,2,133,133,133,2,133,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,21,21,21,21,2,2,2,2,2,2,2,2,2,2}, + {192,213,113,174,403,117,342,342,311,35,35,2,2,2,2,2,2,2,2,101,2,2,2,2,2,2,2,2,2,101,101,101,2,2,2,101,101,101,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,101,101,2,2,2,2,2,101,101,101,101,101,101,101,101,101,101,101,11,11,101,101,2,101,101,2,2,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,2,101,101,101,101,101,101,101,101,2,101,101,101,101,101,2,101,101,101,101,101,101,2,101,101,101,101,101,101,101,101,101,2,2,101,101,101,101,101,101,33,33,33,33,2,2,2,2,2,2,2,2,2,2,33,33,2,2,2,2,2,2,2,11,2,2,101,11,33,33,2,2,33,33,101,101,101,2,2,2,101,101,11,11,11,2,2,101,2,2,2,2,2,11,11,33,2,164,164,164,164,2,2,2,2,101,164,33,33,33,33,101,33,101,394,394,394,394,394,394,394,394,33,394,101,101,101,2,2,2,2,164,164,164,164,164,2,164,164,164,2,164,2,2,2,2,2}, + {264,273,316,53,40,330,51,285,115,219,147,2,2,2,335,2,2,2,2,2,173,2,173,2,2,173,173,173,173,173,173,83,2,2,173,173,173,173,173,173,173,173,2,2,2,2,2,2,173,173,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,83,173,2,2,2,2,2,83,83,2,2,2,2,2,2,2,173,173,173,2,2,173,173,2,173,173,173,2,2,2,173,173,173,173,173,173,2,173,173,2,2,224,224,173,2,173,173,173,173,173,173,2,173,173,2,2,173,2,2,173,2,2,173,173,2,2,2,173,173,173,173,173,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,173,2,83,2,83,83,2,2,2,2,2,173,173,2,173,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,173,83,83,173,2,2,2,2}, + {254,293,407,118,54,296,160,231,4,4,93,2,2,2,2,2,60,61,2,2,120,127,127,127,88,88,88,88,88,88,88,88,88,127,2,258,258,127,88,88,2,2,2,215,215,88,215,215,215,215,88,88,215,88,88,215,215,127,127,127,127,127,127,180,2,180,180,215,215,195,195,2,215,215,215,2,2,8,8,2,2,88,88,88,186,2,2,4,2,2,2,210,247,56,105,105,88,61,61,88,120,180,2,2,71,71,71,120,61,2,2,120,97,180,180,88,88,88,88,180,180,180,180,180,180,180,180,180,180,88,88,2,97,97,195,195,195,195,180,180,180,180,180,180,180,180,180,293,157,127,293,293,180,180,180,180,180,180,180,157,157,157,157,157,157,157,180,180,180,180,180,180,180,215,215,215,215,180,180,180,2,2,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,101,180,180,180,180,180,180,180,180,180,180,180,180,180,215,215,215,215,215,215,215,215,215,215,180}, + {341,78,336,263,281,164,99,334,296,114,109,2,163,163,163,163,2,2,2,2,2,2,2,125,125,292,292,292,292,125,125,125,2,2,2,125,292,125,125,125,125,125,381,381,381,381,381,2,2,381,381,381,381,125,381,381,381,381,25,25,25,25,25,25,25,381,381,381,125,125,125,125,125,125,292,292,292,125,232,232,232,232,125,125,125,232,292,292,292,125,2,2,2,292,292,125,125,125,125,125,125,125,25,25,25,25,381,381,125,125,2,25,25,125,2,260,292,25,265,265,25,25,25,25,25,25,2,25,25,25,125,125,125,125,292,292,125,2,144,2,144,2,2,2,25,25,4,4,2,4,2,2,2,125,87,329,12,283,283,287,283,12,12,292,210,210,210,210,210,210,210,2,2,2,381,381,381,25,25,292,292,125,125,125,125,125,2,2,292,292,125,125,125,125,125,125,25,25,25,25,25,25,25,25,25,292,292,292,292,292,292,381,265,265,265,265,265,260,260,265,265,125,292,292,292,292,260,260,25,25,25,125,260,260,260,260,260,260,260,260,260,260,260,292,292,292,292,381,381,381,381,381,381,292,292,381}, + {355,87,212,100,89,210,133,344,120,45,45,138,138,138,138,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,138,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,138,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,120,120,2,2,2,138,120,120,120,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,120,2,120,2,120,120,120,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,120,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,120,120,120,120,2,138,2,2,2,2,2,2,138,138,2,2,2,138,138,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,8,2,2,2,250,71,71,55,61,61,334,193,55,55,55,120,120,120,120,120,120,120,120,120,138,138,138,120}, + {274,141,46,219,158,284,38,79,73,185,35,6,81,2,2,2,2,53,2,2,81,81,2,81,2,2,2,53,53,53,53,53,53,2,2,334,2,81,81,334,2,2,2,2,2,2,81,81,81,81,53,81,81,81,53,334,81,81,81,81,81,334,334,126,2,2,2,2,2,2,334,334,122,334,334,334,334,334,2,2,2,2,2,2,2,81,81,81,81,81,81,126,126,126,126,110,110,110,110,110,126,24,126,2,2,2,110,128,353,353,12,126,12,18,2,2,2,256,256,96,96,96,128,29,29,29,12,12,73,73,2,2,53,53,12,12,12,53,53,53,201,2,2,201,201,201,201,201,201,201,53,110,110,110,53,53,110,53,53,2,2,2,53,53,53,53,53,53,53,53,53,53,334,110,110,110,334,126,126,126,53,110,334,110,110,334,110,110,334,334,334,53,53,53,53,42,110,53,53,53,53,53,53,81,42,42,42,53,53,53,53,53,53,334,334,334,334,334,334,334,334,334,334,204,296,296,204,204,150,98,62,17,17,17,186,200,111,34,34,200,200,200,200,121,121,121,121,212,334,179,179,53,53,334,334,179}, + {349,303,439,19,95,240,174,191,2,162,162,2,2,2,76,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,76,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {360,91,201,205,67,181,59,77,2,44,103,103,103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,125,2,2,2,2,2,2,125,125,2,2,125,2,2,2,2,2,2,2,2,2,2,2,2,25,2,2,2,125,2,2,2,2,2,125,125,2,2,2,125,125,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,125,125,125,125,125,125,125,125,125,125,2,2,2,125,125,125,125,125,2,2,2,2,2,2,2,125,2,125,125,125,2,2,125,2,2,2,2,2,2,125,2,2,2,2,2,125,2,2,2,2,125,2,2,2,2,2,2,2,2,125,2,2,2,2,2,2,2,2,2,125,125,125,125,125,125,125,125,2,2,2,2,2,125,125,125,2,125,125,125,125,125,125,125,125,125,125,125,2,2,2,125,125,125,2,2,2,125,125,2,2,2,125,125,2,125,125,125,125,125,125,125,2,125,125,2,2,2,2,2,2,2,2,2,125,125,2,125,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {283,154,261,91,77,147,227,105,116,311,256,256,2,116,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,32,2,2,2,32,138,138,32,32,32,246,246,2,246,385,90,90,90,90,90,2,2,90,90,90,90,90,246,246,2,90,62,62,90,90,21,21,21,168,39,42,171,171,227,227,227,246,90,90,90,62,42,42,42,42,42,90,42,195,195,195,195,52,52,52,192,192,181,90,246,2,2,90,90,90,90,52,52,52,246,52,246,171,90,90,90,90,90,52,52,52,52,52,52,52,52,52,42,90,62,62,90,90,21,21,21,78,39,168,171,171,171,227,227,42,90,90,171,171,42,171,171,181,47,181,47,47,47,181,195,195,195,195,36,36,36,36,36,195,195,195,90,90,120,120,120,52,52,52,52,52,90,181,52,181,181,181,460,181,181,195,195,195,120,120,120,120,36,62,90,90,21,21,21,78,168,168,171,171,42,52,195,36,36,120,120,120,120,120,120,120,211,211,164,164,164,164,164,164,164,164,164,272,460,208,9,9,9,190,173,25,175,272,272,113,259,259,259,259,259,131,131,224,224,224,259}, + {287,288,111,89,249,370,55,16,248,67,67,115,2,2,134,134,2,2,2,2,2,2,2,2,2,2,2,2,2,22,22,22,22,22,22,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,360,360,360,360,360,360,360,360,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,22,22,22,22,22,22,22,22,2,2,2,2,2,2,2,2,2,2,2,2,2,381,2,2,381,381,2,2,2,2,2,22,22,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,49,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,360,360,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,360,360,360,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {284,270,282,37,29,181,160,49,285,285,374,250,2,374,374,2,2,2,179,179,35,2,179,179,2,179,179,2,2,285,285,285,179,179,179,179,179,2,2,2,2,2,2,2,2,2,2,2,2,2,2,179,179,179,179,179,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,8,2,2,2,2,64,64,64,64,135,64,64,64,2,4,4,179,2,99,99,2,2,2,179,312,199,199,179,199,199,199,199,2,199,285,285,285,179,179,179,179,179,199,2,2,2,2,2,2,2,2,2,2,2,2,2,179,2,2,179,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,8,35,35,2,2,64,64,64,64,135,64,64,64,2,4,18,35,35,159,159,2,2,2,35,35,35,35,35,35,35,35,35,35,159,159,159,159,199,199,199,199,199,199,199,199,199,2,2,2,199,199,199,2,199,2,2,312,312,312,312,312,312,312,2,2,2,2}, + {359,305,52,36,243,231,7,92,2,68,68,307,62,45,2,2,112,311,311,311,2,2,2,2,2,2,2,2,2,2,2,2,2,311,2,311,2,2,2,2,2,2,2,106,106,2,2,2,2,2,2,2,2,2,2,2,2,112,2,2,2,2,2,2,2,2,2,2,2,2,106,106,2,2,2,106,2,106,2,106,106,106,106,106,106,2,106,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,106,106,2,2,2,170,170,2,2,2,112,112,112,2,2,2,311,311,106,106,106,106,106,106,106,106,311,106,106,106,106,106,106,106,106,106,106,2,2,106,106,106,106,311,311,311,106,106,106,106,106,106,106,106,106,106,106,106,106,311,311,106,106,2,106,106,106,106,106,106,2,2,106,106,106,106,106,106,106,106,311,311,311,311,311,311,311,311,106,106,106,106,106,106,2,106,106,2,106,106,106,106,106,106,106,106,106,106,2,106,112,112,106,112,106,106,2,106,2,2,36,2,2,2,162,265,144,240,240,240,330,330,106,395,395,106}, + {288,119,218,137,364,38,27,380,2,2,211,23,33,2,2,2,2,2,225,225,225,2,2,225,225,225,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,225,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,225,225,2,2,2,225,225,225,2,225,225,225,2,2,2,2,2,2,225,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,225,2,2,2,225,225,225,225,225,225,2,2,2,225,225,225,225,225,225,225,225,2,2,2,2,2,2,225,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {277,155,232,309,370,365,348,75,214,214,214,4,4,2,2,2,210,210,210,210,210,210,210,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,41,2,2,2,2,2,2,2,2,2,2,2,2,210,210,210,210,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,210,2,2,2,2,2,2,2,2,210,210,2,210,2,210,210,2,210,210,210,2,2,2,2,2,2,2,2,2,2,2,2,210,210,210,2,2,2,2,210,2,2,2,2,2,210,210,210,210,210,2,2,2,2,2,2,210,2,2,2,2,2,2,2,2,2,2,2,2}, + {292,204,91,41,124,190,107,322,125,125,125,125,125,25,25,62,2,2,146,146,2,2,62,146,2,146,114,146,114,2,2,2,2,2,2,2,2,2,2,2,2,2,146,146,146,146,146,146,2,2,146,146,2,2,2,2,146,2,2,2,2,2,2,2,146,146,146,2,2,2,62,62,2,2,2,114,114,2,2,2,2,2,2,2,2,114,2,114,114,114,114,114,114,114,114,114,114,114,114,2,2,2,2,2,2,2,2,146,146,146,114,114,2,2,2,2,2,2,2,2,2,114,2,2,2,2,2,2,2,2,2,2,377,377,377,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,114,2,2,2,2,72,6,50,62,146,146,2,2,283,50,113,370,18,18,18,146,125,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,2,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,114,114,146,146,146,146,146,146,146,146,146,114,114,114,114,114,146,146,146,146,114,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146}, + {282,195,192,409,68,99,253,106,2,2,2,231,55,55,2,323,323,55,55,285,285,285,285,2,2,2,2,2,2,285,285,323,2,2,2,2,2,2,2,285,2,2,2,2,2,2,2,2,2,2,2,2,2,2,285,2,2,2,2,2,2,285,285,2,285,2,285,285,55,55,55,285,285,285,285,285,285,285,285,285,285,2,285,285,285,2,2,2,2,285,2,2,2,2,285,2,2,2,285,285,2,2,285,2,285,2,2,2,285,2,2,285,285,285,285,285,285,285,285,285,285,2,2,285,285,2,2,2,285,2,2,2,2,2,2,2,285,285,285,2,285,285,285,285,285,285,285,285,285,285,285,285,2,2,2,2,2,2,2,285,285,285,285,285,285,285,285,285,285,2,2,285,285,285,2,285,285,285,285,285,285,285,2,285,285,285,285,285,285,2,2,285,285,285,285,285,285,2,285,285,2,285,285,2,2,2,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,2,2,2,2,285,55,285,55,55,285,285,2,285,285,285,285,285,285,285,285,285,285,285,285,285,2,2,18,2,2,2,45,120,120,21}, + {299,122,174,403,113,77,63,275,2,2,2,138,276,227,38,227,2,237,2,2,2,2,2,2,2,2,2,2,352,352,352,2,2,2,2,2,88,88,2,2,8,8,22,2,2,2,293,293,293,293,293,293,180,180,2,2,180,104,184,180,180,184,184,180,2,180,88,2,88,88,88,88,88,2,352,352,352,2,2,2,2,293,88,293,293,2,8,180,22,2,2,2,293,293,293,293,293,293,88,88,2,2,180,180,180,180,139,326,139,139,326,326,326,88,88,88,139,139,139,139,139,139,237,237,2,86,237,237,333,333,333,2,8,180,326,139,2,2,293,237,237,237,139,333,333,333,139,139,326,326,326,326,326,326,326,326,326,326,326,326,326,104,104,86,147,147,147,147,147,147,326,326,326,326,326,326,326,326,326,72,326,72,2,72,72,237,237,237,237,237,237,326,326,237,237,237,237,237,237,237,139,139,139,139,139,326,326,326,326,326,326,139,139,139,139,139,132,132,276,276,72,139,139,139,139,139,72,333,72,72,72,72,132,132,132,132,132,72,72,72,72,72,72,72,72,132,132,132,333,333,333,6,6,411,72,72}, + {282,222,268,86,21,109,353,408,2,2,2,2,135,12,12,216,241,241,241,241,241,241,241,241,241,303,303,303,135,135,135,2,2,2,135,135,135,241,99,99,99,99,99,99,99,2,2,2,2,241,135,135,135,241,135,135,2,241,135,135,241,241,241,241,241,241,241,241,241,135,2,135,135,135,2,2,2,2,2,2,2,2,99,2,241,2,241,52,52,52,52,2,2,2,241,241,241,135,154,135,135,2,2,2,2,2,2,2,2,2,2,2,2,2,2,241,2,2,99,154,154,154,135,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,73,73,2,135,135,135,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,241,2,2,2,2,2,2,2,241,241,2,241,241,241,2,2,241,2,241,2,2,2,2,2,2,2,2,2,2,2,2,241,241,2,154,154,2,2,2,2,2,241,241,241,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {374,94,89,257,137,246,186,196,2,2,2,2,2,454,122,122,122,122,2,2,2,28,28,94,94,94,94,94,122,122,122,122,122,122,122,122,122,122,122,122,94,94,94,94,2,2,122,2,2,2,2,2,2,94,94,94,2,122,122,28,94,94,94,28,28,94,94,94,139,139,139,139,139,139,139,139,139,139,139,2,2,2,2,2,2,2,2,2,2,2,94,94,94,139,139,139,139,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,94,94,2,2,2,2,2,2,2,2,2,2,2,2,2,122,122,122,122,2,2,2,2,2,94,122,122,122,2,2,2,2,2,2,2,2,6,6,6,28,28,6,28,24,6,2,2,2,331,52,52,189,84,323,323,331,2,2,2,2,454,129,129,129,129,129,2,2,122,122,122,122,122,122,122,122,28,28,129,129,129,129,122,122,122,122,122,122,122,122,122,122,122,122,122,94,94,122,122,122,122,122,122,122,94,94,94,94,94,94,94,94,122,122,122,122,139,122,122,122,122,122,122,122,122,122,122,94,94,94,122,122,94,94}, + {288,92,62,428,122,153,481,66,2,2,2,250,250,177,177,177,177,279,279,279,279,279,279,279,2,2,279,177,177,177,177,177,279,177,177,279,2,2,279,279,408,408,408,279,2,2,2,2,2,2,279,279,279,2,2,279,177,177,54,54,2,2,279,2,2,2,2,2,2,2,2,279,279,2,2,279,2,2,279,408,279,2,2,2,279,279,2,2,2,2,279,279,177,177,2,2,2,2,2,2,2,2,2,2,2,408,408,408,408,408,408,408,2,2,2,408,408,2,2,2,2,2,2,279,2,2,2,2,2,279,2,2,279,279,2,279,279,279,279,279,279,2,2,2,177,2,2,2,279,279,279,2,2,2,2,2,279,279,279,2,2,2,2,2,2,54,2,279,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,279,2,2,2,2,2,2,2,2,2,2,2,2,279,2,2,2,2,279,279,279,279,279,279,2,279,2,2,279,2,2,2,279,279,279,2,2,2,2,279,279,279,279,2,2,2,2,279,279,279,279,279,279,2,279,2,279,279,279,279,2,2,2,279,2,2,2,279,279}, + {288,370,141,284,207,192,450,67,2,2,2,183,217,217,217,183,183,167,202,202,202,202,167,167,2,2,2,164,164,80,167,167,167,167,2,202,167,167,80,167,167,2,2,2,2,2,2,2,167,167,202,202,167,167,202,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,167,2,2,2,2,202,202,2,2,2,2,2,2,2,2,2,2,2,2,202,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,202,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,98,211,211,211,230,148,148,175,202,202,202,202,202,202,202,2,2,2,114,114,114,114,114,114,2,2,2,202,202,2,2,2,2,2,2,2,2,2,54,202,202,202,202,202,202,2,2,167,202,2,2,202,167,19,202,202,2,202,167,202,202,202,202,80,80,80,202,202,202,202,202,202,202,202,202,202,2,202,202,202,202,202,202,202,202,202,202,202,2,69,69,2,69,69,2,202,202,2,2,2,202,202,202,202,202,202,202,202,202,202,202,202,202,202,80,80,80,80,80,12,80,202,202,323,202,12,3}, + {286,293,199,39,158,332,242,103,2,2,2,408,266,315,2,2,365,253,315,315,315,315,315,2,2,315,2,2,2,2,2,2,2,2,315,315,315,315,315,315,2,2,291,253,253,291,253,2,2,315,315,2,2,315,315,315,2,2,315,315,315,315,315,315,315,315,315,315,2,315,315,315,315,315,315,253,253,253,253,253,253,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,2,2,2,2,315,2,315,315,2,253,253,2,2,2,253,253,253,253,253,315,315,315,2,2,2,2,253,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,315,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,315,2,2,2,2,2,2,2,2,2,2,2,2,2,315,315,315,2,2,2,315,315,315,2,2,2,2,315,315,2,2,2,2,2,2,2,2,2,2,2,2,2,2,315,315,315,315,2}, + {407,83,435,187,40,16,52,65,2,2,244,39,77,119,119,2,2,2,119,342,342,2,2,2,2,2,342,2,2,58,58,119,119,119,119,119,2,2,169,2,2,2,2,2,2,342,2,2,342,342,342,342,342,342,342,2,2,342,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,342,119,119,119,2,342,2,2,2,2,342,342,342,342,342,342,342,342,2,342,2,2,342,342,342,342,342,342,2,2,2,342,342,119,119,342,342,342,342,342,342,342,342,342,2,2,342,342,342,342,4,4,2,342,342,2,2,90,84,84,84,169,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,77,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,2,342,342,342,342,342,342,342,342,342,342,77,77,342,342,342,342,342,342,342,342,342,342,342,342,278,278,278,342,342,342,342,342,342,342,342,342,342,342,2,342,278,278,278,342,342,342,342,342,342,278,278,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342}, + {398,88,78,57,260,203,203,43,131,131,131,204,204,322,204,2,102,2,325,325,325,325,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,39,291,95,95,111,111,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,218,2,2,2,2,2,2,2,2,2,2,2,2,2,2,218,218,2,218,218,218}, + {390,174,70,155,163,67,225,49,2,34,34,151,151,2,2,111,2,2,111,111,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,111,111,2,111,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,111,111,111,2,2,2,2,2,2}, + {393,129,393,169,23,192,168,47,2,2,312,150,71,2,150,2,2,2,61,2,2,61,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,61,61,61,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,61,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,61,2,2,61,61,61,2,61,2,2,2,2,2}, + {408,136,71,63,63,159,222,68,181,181,124,227,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,219,219,219,219,219,2,2,2,2,2,2,2,2,2,2,2,2,408,2,408,2,2,408,408,2,408,408,2,408,408,408,2,408,2,408,2,2,2,2,2,2,2,2,408,408,408,408,408,408,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,8,102,2,2,2,2,187,190,21,21,396,118,118,21,2,2,124,124,124,303,2,2,2,2,2,2,2,2,2,181,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,219,2,219,219,2,2,2,2,2,2,219,219,219,2,2,219,219,219,219,2,219,219,219,219,219,219,219,219,219,219,219,219,2,219,219,219,2}, + {294,169,79,242,160,123,178,290,186,186,56,399,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,33,33,33,33,33,33,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,33,33,33,2,2,2,2,2,2,2,2,2,2,2}, + {415,228,69,68,193,122,21,362,33,22,362,57,2,2,2,2,46,46,196,196,196,2,196,196,196,2,196,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,196,196,2,2,196,196,196,196,196,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,196,2,33,33,33,2,2,196,33,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,196,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {415,130,241,185,312,175,309,199,94,281,47,47,2,2,2,2,206,307,221,2,2,2,2,2,239,239,239,239,239,206,206,206,2,2,2,2,307,2,2,2,307,307,2,2,2,2,2,2,2,2,335,335,335,335,335,335,335,335,335,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,307,307,307,307,307,307,307,2,2,2,2,2,2,2,2,2,2,307,307,2,2,335,307,307,307,307,307,206,206,2,307,2,2,2,2,307,307,307,307,307,307,307,2,307,307,307,307,2,307,2,2,2,2,2,2,2,2,2,307,307,206,307,307,2,307,2,2,2,2,307,307,307,307,2,2,2,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,2,2,216,216,54,216,216,307,307,307,307,307,307,307,2,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307}, + {417,238,147,165,346,19,92,164,266,291,291,43,2,2,2,345,2,2,2,345,345,2,2,2,2,2,345,2,2,2,2,2,2,2,161,2,2,2,2,2,2,2,2,2,2,161,161,161,2,2,2,2,2,2,236,236,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,266,266,2,345,2,2,2,2,2,2,2,345,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,4,2,4,2,2,2,190,153,153,95,254,199,345,345,345,345,345,345,345,345,345,345,2,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,2,345,345,2,2,345,345,345,2,345,345,345,345,345,345,345,345,345,345,345,2,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,2,2,2,345,345,345,345,345,345,345,345,345,345}, + {456,192,86,182,35,174,342,102,210,210,210,393,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,256,256,158,158,256,459,256,64,2,128,459,16,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,128,16,158,158,256,256,256,256,2,2,2,16,2,2,2,2,2,459,2,2,2,2,140,2,459,2,2,2,2,128,16,158,64,256,256,256,172,172,172,172,172,106,106,106,106,106,106,2,2,144,144,106,106,106,106,106,2,2,128,16,158,64,106,106,106,106,106,106,106,106,106,106,106,106,329,329,329,329,106,329,329,329,329,329,67,2,2,67,67,67,67,67,67,67,67,67,22,22,22,22,22,22,22,22,22,22,22,22,22,172,172,172,172,172,172,172,172,172,172,172,172,172,172,141,27,62,22,27,27,27,27,27,22,62,62,62,62,75,75,75,75,62,62,62,75,75,27,27,27,75,75,75,27,140,27,27,140,140,140,36,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,222,222,222,222,222,222,222,222,222,222,222,222}, + {307,255,92,38,325,61,103,246,176,319,80,89,2,241,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,283,283,283,283,283,283,2,2,2,2,2,2,2,2,2,283,283,283,283,283,283,283,2,2,2,2,2,2,2,2,2,2,2,283,283,283,283,2,2,2,283,2,2,283,283,283,283,283,283,283,283,283,2,283,2,2,2,283,283,283,283,283,283,283,283,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {432,168,63,154,166,46,479,145,144,288,288,288,288,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {341,256,113,85,188,233,161,29,110,167,91,91,253,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,253,253,2,2,253,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,253,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,253,253,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,253,253,2,2,2,2,2,2,2,2,2,2,253,253,253,253,253,253,253,2,253,253,253,253,253,253,253,253,253,253,253,2,253,253,253,253,253,110,110,110,110,253,253,253,253,253,2,253,253,253,253,253,253,2,2,253,253,253,253,253,253,181,253,253,253,253,253,253}, + {311,360,312,158,73,16,106,209,472,48,24,203,203,2,2,2,2,234,234,234,2,234,234,203,2,2,2,234,234,234,234,234,234,234,234,2,2,234,2,2,2,2,2,234,2,2,2,2,2,2,203,203,203,203,2,2,2,2,2,2,2,2,2,2,2,2,2,2,234,203,203,203,2,2,2,2,2,234,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,203,203,2,2,2,2,2,234,234,2,2,2,234,234,234,2,2,2,2,2,2,203,203,203,234,2,2,2,2,2,2,2,234,234,234,2,2,2,2,2,2,2,234,234,234,2,2,2,2,2,203,234,234,2,234,234,2,203,234,234,234,234,234,2,234,203,203,234,234,234,203,2,203,203,2,203,234,2,203,203,203,203,234,203,2,2,2,2,203,203,203,234,234,203,203,203,203,234,203,203,234,234,234,234,234,234,234,234,203,203,2,2,203,203,234,234,234,234,2,2,2,203,203,203,203,203,203,203,203,234,234,234,234,234,234,234,234,234,234,203,203,203,203,203,203,234,234,234,234}, + {437,196,161,100,132,246,395,187,35,35,35,2,2,35,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,24,24,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,459,2,459,459,459,2,2,2,2,2,2,2,2,70,70,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {438,174,338,145,155,276,422,374,4,463,463,99,224,70,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,32,2,2,2,78,78,78,78,94,94,121,121,70,70,398,24,24,24,24,24,24,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,24,24,24,24,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,364,2,2,136,136,136,136,136,2,136,2,2,2,2,2,2,2,24,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {426,225,211,130,325,283,353,96,282,23,299,2,2,2,63,63,2,276,276,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,276,276,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,8,8,2,2,2,159,502,502,502,502,16,120,203,430,430,430,2,2,2,2,2,480,480,480,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,276,2,2,2,2,2,41,41,41,41,2,2,2,2,2,2,2,2,94,2,94,2,2,2,2,41,41,2,2,159,502,502,502,502,77,502,51,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,41,2,41,2,94,55,55,2,2,41,41,41,41,41,2,2,94,94,94,94,94,94,94,94,41,41,41,41,41,41,41,41,41,41,41,41,94,94,94,94,94,94,94,94,430,41,41,41,41,41,41,41,41,41,41,41,41,41,2,2,41,41,41,41,41,41,41}, + {430,101,288,38,200,332,325,193,123,123,88,2,2,2,2,2,231,231,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,478,478,478,478,478,478,478,2,2,2,2,2,2,2,139,478,478,478,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,139,139,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,139,139,139,2,2,139,139,139,2,2,2,2,2,139,139,2,2,2,2,2,2,2,2,2,2,2,2,139,2,2,2,2,2,2,2,139,2,2,2,2,139,2,139,139,139,139,139,139,2,2,139,139,2,2,139,2,2,2,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,2,139}, + {434,143,308,389,365,363,174,63,121,125,260,2,2,260,260,2,2,2,2,2,2,2,2,2,2,258,2,2,2,258,2,2,2,2,2,2,2,2,258,2,258,2,2,2,2,2,258,258,258,258,258,258,258,2,2,389,258,378,378,42,42,42,2,2,2,2,2,258,258,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,19,35,35,35,35,35,22,19,22,22,22,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,258,258,258,2,2,2,2,389,389,258,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,19,35,35,35,35,22,2,22,22,22,2,2,2,2,2,2,2,2,2,2}, + {453,123,201,141,229,223,234,494,102,102,102,2,2,102,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,252,252,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,252,252,252,252,2,252,252,252,2,2,252,252,2,252,252,252,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,100,100,100,100,2,100,2,2,2,2,2,2,2,2,2,2,2,2,252,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {438,168,65,264,304,74,168,88,114,132,187,2,127,127,2,2,2,2,2,81,81,56,2,2,2,307,2,2,2,2,81,81,2,2,2,81,2,2,307,2,2,2,2,2,2,2,81,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,307,2,2,81,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,307,307,307,4,4,2,42,2,2,2,204,206,64,64,64,64,64,64,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,321,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,2,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,2,307,307,307,307,307,307}, + {324,181,141,129,33,171,173,291,227,373,52,301,301,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,168,2,2,2,168,168,168,2,2,2,2,2,2,168,168,2,2,2,2,2,2,2,2,2,259,168,168,168,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,168,2,2,2,2,2,2,2,2,2,2,2,2,175,175,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,168,168,168,168,2,2,2,2,2,2,2,2,196,261,2,2,210,108,210,128,128,128,128,128,128,128,128,128,244,244,259,196,196,196,2,168,168,168,168,168,168,2,2,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,175,175,168,168,168,168,168,175,175,175,175,175,175,168,175,175,175,175,168,168,168,168,168,168,168,175,175,259,259,259,259,259,259,259,259,168,175,175,175,175,2,168,2,175,175,175,175,259,261,175,261,2,2,259,259,175,175,2}, + {448,119,431,111,135,50,242,95,148,49,49,49,68,2,2,2,2,2,2,2,2,49,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,89,2,2,2,89,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {335,114,55,47,33,173,287,345,198,198,136,238,238,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,313,313,313,313,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,8,2,2,2,261,51,128,386,386,386,314,39,39,39,39,39,91,2,55,55,55,55,55,55,55,313,55,419,419,419,419,419,419,419,2,2,2,419,2,2,2,2,419,2,2,2,2,2,313,74,74,74,74,2,2,2,419,55,55,55,55,2,2,313,313,313,74,74,2,2,2,2,2,2,2,74,8,55,15,15,276,113,47,113,66,15,388,55,419,419,292,292,419,2,419,419,55,55,55,55,55,55,292,292,292,292,292,292,292,348,348,348,348,2,82,2,2,2,419,419,2,2,55,55,55,55,55,55,292,55,242,242,242,242,242,242,242,55,55,2,55,55,55,55,2,55,55,55,2,2,2,90,55,55,2,2,454,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55}, + {468,377,243,237,332,512,27,167,22,169,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,35,35,2,2,2,2,2,2,2,2,2,35,2,2,2,2,2,2,2,2,126,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,121,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,35,35,35,2,2,2,35,35,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,35,35,35,35,202,2,35,35,35,202,35,35,2,35,202,202,202,202,202,202,202,202,202,202,2,2,2,35,35,35,35,2,35,35,35,2,35,35,2,35,35,35,35,35,35,35,35,2,35,35,35,35,35,35,35}, + {456,162,188,223,408,209,28,164,299,299,258,186,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {445,391,115,226,96,456,239,214,556,158,158,282,2,2,2,2,2,2,2,2,2,2,2,2,2,331,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,331,331,2,2,331,331,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,331,331,331,2,2,2,2,2,2,2,331,331,331,2,2,2,331,2,2,331,2,2,331,2,2,331,331,331,331,2,331,331,331,331,331,331,331,331,331,331,331,331,2,2,331,331,2,331,2,2,331,2,2,331,331,2}, + {360,397,130,172,407,479,295,13,38,199,199,346,2,2,2,2,2,2,145,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,46,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {512,136,129,361,180,61,274,128,422,27,292,165,2,2,2,2,2,2,363,117,117,117,117,2,2,2,2,363,2,2,2,2,2,363,2,2,2,2,2,2,2,2,2,2,2,2,363,363,363,363,2,363,363,363,363,363,363,363,2,2,363,363,2,2,2,363,363,363,363,363,363,2,363,363,432,432,2,2,136,324,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,432,432,432,363,432,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,432,130,200,117,18,18,363,130,173,173,288,363,363,18,363,363,363,432,432,432,432,432,432,432,432,5,5,5,432,432,432,363,363,363,432,363,363,363,363,363,432,432,432,432,432,422,422,432,432,432,432,432,432,432,432,432,432,363,422,422,422,422,432,422,422,422,422,422,422,432,432,432,432,432,432,432,432,432,432,432,422,422,422,422,422,422,422,422,422,422,422,422,363,363,363,363,363,363,432,432,363,363,422,422,422,422}, + {478,433,483,302,200,227,273,27,171,171,371,102,2,2,2,2,2,20,2,2,2,2,2,2,2,2,403,403,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,403,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,106,106,106,403,403,403,2,403,106,106,106,106,403,106,106,2,106,106,106,106,106,106,106,2,2,2,2,2,2,2,2,2,2,2,2,106,106,106,2,2,2,2,2,106,2,2,2,2,2,2,106,2,2,106,106,106,106,106,106,106,106,106,106,2,2,2,403,403,403,403,106,106,2,2,403,403,2,2,2,2,403,403,2,403,403,403,2,2,2,2,2,2,403,2,2,2,2,2,2,106,403,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,44,44,403,44,44,44,2,44,403,2,2,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,403,403,403,2,2,403,403,403,403,403,403,403,403,403,403}, + {485,158,454,86,212,60,93,40,209,188,188,106,2,231,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,348,348,348,2,348,348,348,348,348,348,348,2,348,348,348,348,348,348,348,2,2,2,348,348,348,348,348,348,348,348,348,348,348,348,2,2,2,237,2,2,2,2,2,2,348,326,326,326,326,348,348,348,348,348,348,348,348,326,326,326,326,237,326,326,237,237,348,348,326,326,326,237,237,237,237,237,237,237,2,326,326,2,2,348,348,2,2,2,2,2,500,2,326,326,326,326,326,2,326,326,326,326,326,326,326,348,348,348,348,348,348,237,237,237,237,237,2,237,326,237,326,326,2,348,326,2,2,2,2,2,2,2,2,2,2,2,2,2,326,2,2,2,2,348,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,500,2,2,2,2,2,326,326,326,326,326,326,326,326,326,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,326,2,2,2,2,2,237,2}, + {390,448,111,145,47,555,367,317,315,52,429,435,429,429,2,2,2,2,2,2,2,2,229,2,2,229,2,2,2,229,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,229,229,229,229,229,229,229,206,206,206,229,229,229,229,229,229,229,229,2,229,229,229,229,229,229,229,229,229,229,2,229,229,229,229,2,2,229,229,229,229,2,2,229,229,229,229,2,2,2,2,2,2,2,2,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,2,229,229,229,229,2,2,2,2,2,2,2,2,2,2,2,2,2,229,229,2,229,2,229,229,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {490,331,187,398,407,373,497,219,423,423,378,378,2,419,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,84,2,2,2,2,2,84,84,84,84,84,84,84,84,84,2,2,84,2,2,84,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,228,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,228,228,228,2,228,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,228,2,2,2,2,93,2,2,2,2,2,2,2,84,2,2,2,2,2,2,2,2,2,2,2,2}, + {378,406,112,198,539,550,516,59,240,240,23,316,2,122,2,2,2,2,2,2,2,2,2,2,111,111,2,2,2,95,2,2,2,2,2,2,2,2,2,195,2,2,2,2,95,195,195,95,378,2,195,2,2,2,95,95,195,2,2,2,2,95,95,95,95,111,2,195,95,95,95,95,95,95,95,195,2,195,195,2,2,195,195,2,195,195,2,2,195,195,2,2,378,195,2,2,2,2,195,195,2,195,2,2,2,182,2,195,195,195,2,2,195,195,2,2,2,195,195,195,195,195,195,195,195,195,195,195,2,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,2,2,151,501,98,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,182,195,182,195,195,378,195,378,378,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195}, + {474,373,248,330,40,113,105,273,103,407,2,165,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,44,44,2,2,2,2,2,44,2,2,2,2,2,2,2,2,2,44,44,44,44,44,44,44,139,2,2,2,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,2,44,139,44,44,44,44,2,2,2,44,44,44,44,2,2,2,2,2,2,2,2,2,2,44,44,44,44,44,44,44,2,2,2,2,2,2,2,2,2,44,44,2,2,2,44,44,44,2,44,44,44,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,44,2,2,139,2,2,2,2,2,139,139,139,139,139,139,139,139,139,2,2,2,139,139,2,2,2,2,2,139,44,2,2,2,44,2,2,2,2,44,44,2,2,2,139,139,139,2,2,2,44,2,2,2,2,44,44,44,139,139,139,2,2,44,44,44,2,2,2,2,2,2,44,44,44,44,2,44}, + {495,406,306,239,172,323,236,50,37,435,2,310,56,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,105,105,2,2,2,2,105,105,105,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,111,111,2,105,105,2,111,111,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,111,111,105,105,105,105,105,105,105,2,2,2,2,2,2,111,2,2,2,111,111,111,111,2,2,2,2,111,111,2,105,2,2,105,2,2,111,111,111,2,2,2,111,2,2,2,2,2,2,2,2,2,2,111,111,2,2,111,111,111,2,2,111,2,2,2,2,105,111,111,111,2,2,2,2,111,111,2,2,2,105,105,105,105,105,111,111,111,111,2,111,105,105,105,2,105,2,2,2,105,105,105,105,2,105,105,2,2,105,105,105,105,105,105}, + {498,447,112,241,552,119,227,189,140,140,140,140,140,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,315,2,2,315,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,315,315,315,2,315,315,315,315,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {505,132,169,418,342,28,319,301,172,530,317,317,335,2,2,2,2,2,2,376,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,376,376,2,2,2,2,2,2,2,2,376,2,2,2,2,2,2,2,2,376,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,376,376,2,2,2,2,2,2,2,2,2,2,376,376,2,2,2,2,376,376,2,2,2,2,2,2,2,2,376,2,2,2,2,2,2,2,2,2,2,2,418,418,122,376,376,376,376,376,376,376,78,78,78,78,78,78,78,2,2,2,376,376,122,2,2,376,376,376,376,376,376,376,376,376,376,376,376,376,2,122,376,122,376,376,122,376,418,418,2,2,376,376,376,2,376,376,376,2,2,376,2,2,2,2,122,122,122,2,2,2,2,2,2,2,122,2,2,2,2}, + {397,393,191,269,462,151,264,134,307,307,2,163,163,2,2,2,2,2,2,2,2,2,2,2,2,2,159,2,2,2,2,2,2,2,2,2,2,2,2,193,2,2,2,2,2,193,193,2,193,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,193,193,193,193,193,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {485,491,325,149,122,145,228,100,311,64,2,62,137,2,137,2,2,2,2,2,2,2,392,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,392,2,2,2,2,392,2,2,2,2,2,2,2,2,2,2,2,2,2,2,392,392,392,392,2,392,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,83,83,83,83,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,392,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,28,28,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {364,462,360,383,182,187,123,69,129,146,2,156,149,2,149,2,2,2,2,2,2,2,303,303,303,2,2,2,2,2,149,266,266,266,149,303,303,303,303,303,303,303,68,68,68,303,303,68,303,303,303,303,68,68,303,68,233,68,68,68,303,470,163,163,303,303,303,303,303,303,303,68,303,68,303,303,303,303,303,303,303,303,303,303,303,303,68,68,303,303,303,303,303,303,303,303,303,303,303,303,238,238,238,238,68,238,238,238,303,303,303,303,296,238,238,381,233,68,68,68,303,470,163,163,303,303,303,303,303,303,185,68,41,41,41,303,303,303,303,303,303,303,303,303,68,68,68,185,185,185,185,185,185,185,185,185,185,185,185,185,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,41,41,106,41,41,41,41,41,41,41,41,41,41,41,41,238,238,238,238,238,238,238,238,238,238,238,41,41,41,41,41,41,238,296,296,296,296,296,296,296,296,296,238,238,86,86,86,238,238,238,238,238,238,238,238,238,238,238,86,86,86,86,86,86,86,86,86,86,238,238,238}, + {507,195,130,401,363,171,483,20,86,464,2,89,89,2,26,2,2,2,2,2,425,425,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,82,82,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,255,2,2,2,2,2,2,2,425,2,2,2,2,425,425,425,425,425,425,2,425,425,2,2,255,435,2,435,435,2,2,2,2,255,2,255,255,2,255,2,2,2,2,425,136,255,2,2,2,2,136,136,2,255,425,425,425,425,425,2,255,255,255,255,255,2,2,255,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,255,255,255,255,2,2,2,2,2,2,2,2,2,2,2,2,2,255,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,425,425,2,2,2,2,2,2,2,2,2,2,255,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,571,571,222,205,205,275,69,224,67,67,67,2,2,2,2,2,2,2,2,2,82,82,82,82,82,82,2,2,2,2,2,2,2,2,2}, + {380,220,87,122,242,78,207,371,95,305,2,2,2,2,440,440,445,358,358,331,331,358,445,445,445,445,445,445,445,445,445,445,445,358,358,358,2,2,358,358,331,331,2,331,2,2,2,2,2,445,331,331,331,331,331,445,331,331,331,331,331,358,2,2,358,358,2,172,172,2,172,2,2,331,331,331,2,358,358,146,358,358,358,358,358,358,358,331,358,358,331,331,331,358,358,358,358,358,358,358,358,358,358,358,2,2,331,331,2,172,2,331,331,2,2,2,358,445,331,331,358,358,358,358,358,358,358,358,358,2,2,358,358,358,358,358,358,358,358,358,358,2,2,2,2,2,2,2,2,2,2,2,2,2,172,2,358,358,358,172,172,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,331,445,2,2,2,2,358,358,358,358,2,2,2,2,2,2,2,2,2,2,2,146,146,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,358,358,358,358,2,2,358,358,358,358,358,2,358,358,358,2,2,2,2,2,2,2,2,2,2,2,2,358,2,2,2,2,2,2,2,2,2}, + {507,221,247,137,182,90,28,207,325,438,2,2,2,2,2,187,232,438,2,2,68,37,37,37,37,37,37,37,37,37,161,2,2,2,170,170,472,472,472,2,2,472,2,2,472,472,472,472,472,472,472,472,472,472,2,2,2,2,47,472,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,47,47,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,37,2,2,2,2,2,2,37,37,37,37,2,2,2,2,37,37,37,37,37,37,37,2,2,37,2,2,2}, + {509,265,101,126,203,86,152,416,352,85,2,2,2,284,391,368,2,2,152,2,2,2,325,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,325,325,325,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {572,359,332,480,68,535,59,504,365,21,2,2,246,54,246,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {415,178,178,372,415,400,73,82,348,99,2,23,325,44,2,2,2,2,2,2,2,2,325,2,2,2,2,2,2,2,2,2,2,2,2,300,300,2,2,325,325,2,325,2,2,2,2,2,216,216,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,277,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,216,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,325,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,44,22,54,256,256,137,137,137,137,399,2,2,44,44,2,44,2,2,2,2,2,507,507}, + {430,275,236,361,42,552,368,236,653,74,65,458,288,307,307,2,2,2,2,2,2,2,65,65,2,2,2,2,2,2,2,2,2,209,209,2,2,2,2,2,209,2,2,2,2,2,2,2,2,209,2,2,2,2,2,2,2,2,2,209,209,209,209,2,2,2,2,2,2,405,65,65,209,209,209,405,2,405,405,405,2,2,209,65,65,209,209,209,209,209,209,209,209,209,2,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,2,209,209,209,209,405,405,405,405,405,405,405,405,405,405,2,405,405,209,209,209,2,2,209,2,2,2,405,2,2,2,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,2,2,2,2,2,2,2,2,209,2,2,2,2,2,2,2,2,2,2,2,2,2,2,405,405,2,2,2,2,2,2,2,405,405,405,405,405,405,405,405,2,2,2,2,2,405,405,405,2,2,2,2,2,2,2,2,2,2,2,2,2,209,209,209,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,405,405,405}, + {434,139,58,437,130,441,188,15,63,145,145,145,300,2,2,2,2,300,2,2,2,2,2,2,2,2,401,401,401,401,401,401,605,605,605,2,2,2,2,2,2,2,605,282,282,282,605,2,2,2,605,282,2,605,605,605,605,306,2,300,2,2,2,2,2,2,605,282,605,605,605,349,349,349,282,605,605,605,2,605,282,2,2,2,2,282,282,282,605,2,605,605,2,2,605,605,605,605,605,605,605,605,605,2,282,282,2,282,2,2,2,2,2,2,2,300,2,282,282,2,282,282,2,2,2,401,401,401,401,401,401,2,2,2,2,282,282,605,605,605,605,2,605,605,605,605,605,282,605,282,282,401,282,401,605,605,605,605,605,605,605,282,2,605,605,605,605,605,605,605,282,605,605,605,605,605,605,605,605,401,605,605,605,605,605,605,605,605,605,605,605,2,605,2,2,605,605,605,2,605,2,605,2,2,401,401,401,2,2,2,2,282,2,401,401,2,2,2,2,2,2,2,2,2,2,4,4,2,2,2,2,2,2,4,2,2,2,259,92,212,195,195,51,292,32,209,32,282,282,282,2,2,282,282,282,282}, + {542,138,266,514,552,202,103,197,574,48,2,96,96,2,2,96,96,217,2,2,2,2,2,2,2,2,2,2,2,2,2,217,217,2,2,2,2,217,217,217,2,217,217,48,48,217,217,217,217,217,217,217,217,217,217,217,217,2,217,2,2,2,2,2,2,2,2,2,217,217,48,2,2,48,48,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,217,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {546,494,72,272,550,219,213,209,169,404,69,464,86,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,83,83,83,155,155,155,155,155,155,155,155,83,83,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,83,83,83,155,155,155,155,155,155,155,155,83,83,83,83,83,14,2,2,83,2,2,2,2,2,2,155,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,83,83,83,155,155,155,104,155,104,104,104,104,104,83,83,83,104,2,33,83,2,33,33,2,2,2,365,365,2,365,365,2,365,365,365,365,365,365,365,365,2,2,83,83,83,155,155,136,136,365,365,365,365,365,209,209,209,365,365,365,365,209,209,209,209,209,209,168,168,168,168,56,56,322,322,56,168,56,56,365,365,56,56,168,56,56,56,365,56,365,365,365,365,365,322,56,322,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,104,104,104,104,104,56,56,56,312,312,312,312,312,312,312,312}, + {602,466,332,458,99,244,255,183,446,670,2,186,323,2,2,2,2,2,2,2,2,2,2,2,2,2,2,292,165,165,165,165,165,165,292,292,2,292,2,292,2,2,292,165,2,2,2,2,2,2,2,292,292,292,2,292,2,2,2,2,292,292,2,2,2,2,2,2,292,2,2,292,2,2,2,2,2,2,2,2,2,2,2,2,292,2,2,292,292,2,292,292,2,2,2,292,292,292,292,292,2,2,2,2,292,292,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,292,292,292,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,292,2,2,2,292,292,4,2,2,2,2,2,99,387,387,387,387,275,409,409,292,292,292,292,292,2,2,2,2,2,2,2,2,2,165,292,2,2,165,292,292,2,292,292,292,292,292,292,2,292,2,292,2,2,292,165,2,2,2,2,2,2,2,292,165,165,2,292,2,165,165,165,292,292,2,2,2,2,2,2,292,165,165,292,165,165,182,165,2}, + {422,413,561,110,242,62,436,478,18,150,606,88,643,2,249,2,2,2,2,456,2,2,2,2,2,2,2,2,2,2,2,456,456,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,456,643,643,643,643,456,2,2,2,2,643,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,456,456,456,2,2,2,2,2,2,2,2,2,238,2,2,2,2,2,2,2,2,2,2,2,2,456,2,2,238,238,238,2,2,2,2,2,2,2,2,2,2,2,2,456,456,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,211,211,2,2,2,2,238,238,238,238,238,2,2,2,2,2,2,456,456,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {522,141,154,253,264,53,120,93,274,52,44,203,556,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,301,301,129,129,129,2,2,2,129,129,129,2,2,129,129,129,129,129,129,2,129,129,2,2,2,2,129,129,129,129,129,129,129,2,129,129,2,129,129,2,2,129,129,2,129,129,2,129,129,129,129,129,129,129,129,129,2,129,129,2,129,129,129,2,2,129,129,2,129,2,2,301,2,301,2,2,2,2,2,2,2,2,2,2,2,2,2,129,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {600,249,375,555,421,322,317,84,517,517,268,106,353,2,2,2,2,2,2,2,2,2,268,2,2,2,2,2,2,302,2,2,2,2,2,268,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,268,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,494,268,2,268,268,2,268,268,302,2,302,268,268,268,268,268,2,268,494,302,302,302,302,2,2,268,2,2,302,268,268,268,2,2,2,302,302,302,302,302,302,302,2,2,2,2,2,2,2,2,2,2,2,2,302,2,302,302,302,302,2,302,2,2,2,2,2,302,302,302,302,302,302,302,268,268,2,2,2,302,302,302,302,302,302,302,302,302,302,2,302,2,2,2,302,302,302,302,302,302,302,302,2,2,2,2,2,302,2,2,2,2,2,302,2,302,302,2,268,302,302,302,2,2,2,302,302,2,2,2,2,2,2,2,2,2,2,302}, + {555,516,310,438,290,559,52,265,248,193,285,441,285,285,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,615,615,2,615,2,2,2,2,2,2,615,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {555,300,232,386,470,300,355,177,57,407,450,279,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,27,27,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,133,133,133,133,133,133,2,2,2,2,2,2,2,133,133,2,2,2,2,2,142,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,27,2,2,2,2,27,27,2,2,2,2,2,2,27,27,2,2,27,2,27,27,27,27,27,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,27,27,27,27,27,27,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,295,295,295,56,56,216,87,87,87,40,350,142,2}, + {544,177,79,306,256,402,205,496,398,115,115,43,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,151,2,151,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,544,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,544,2,2,2,151,2,2,2,2,2,2,2,2,2,2,2,151,151,151,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,151,151,151,2,2,2,2,2,2,2,259,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,160,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,544,2,2,160,160,2,2,2,2,2,2,2,2,2,544,2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,2,2,99,317,333,54,23,23,349,2,349,409,23}, + {534,274,194,220,575,81,206,544,341,85,137,429,429,429,429,344,2,2,2,2,2,315,315,315,315,315,315,72,72,72,2,2,2,2,72,72,72,315,72,2,2,2,2,2,2,2,2,2,2,2,315,315,429,429,2,72,72,429,2,2,2,2,2,429,2,2,2,2,2,344,178,178,344,2,2,2,178,178,2,2,2,344,344,315,315,315,2,2,315,2,2,2,344,2,2,2,72,315,2,429,2,2,2,315,315,315,315,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,315,2,2,2,2,2,2,2,2,2,72,72,72,2,2,2,2,2,2,2,429,315,72,72,2,2,72,72,2,2,2,72,72,72,2,72,72,72,72,72,2,72,44,2,72,2,2,72,4,2,2,8,4,2,4,2,2,2,338,228,474,87,109,399,72,72,72,72,72,72,72,72,72,72,2,2,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,315,315,315,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,344}, + {400,136,112,136,273,277,205,578,122,122,230,230,2,2,2,2,2,2,2,2,2,2,2,2,2,2,302,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,302,302,302,302,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,317,2,2,302,302,302,302,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,302,2,2,2,2,2,2,2,2,302,2,2,2,2,2,2,2,302,302,2,2,2,2,2,2,2,2,2,302,302,302,2,2,2,2,2,302,302,302,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,302,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,302,2,2,2,2,2,2,302,302,2,2,2,2,2,302,302,302,302,2,2,2,2,302,2,302,2,2,302,302,2,2,302,302,302,302,302,302}, + {576,421,115,52,253,373,17,657,43,178,178,58,485,485,485,485,485,485,2,2,2,159,159,159,159,2,619,2,2,2,2,2,2,2,2,2,2,2,2,2,2,518,2,159,159,159,2,159,159,2,159,2,159,2,159,159,159,159,159,159,2,2,2,2,2,2,2,2,2,2,159,159,159,159,159,159,159,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,159,2,159,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,159,159,159,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,518,159,159,159,518,159,159}, + {576,301,142,329,96,41,302,528,126,112,206,206,2,2,2,2,2,2,206,206,2,206,206,2,191,206,206,191,191,191,191,206,191,191,191,206,206,191,2,206,2,206,206,206,206,2,2,2,206,2,2,2,2,206,206,206,206,206,206,206,2,206,2,2,2,2,2,206,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,191,2,2,2,2,2,2,2,2,2,2,2,2,2,206,2,2,2,206,2,2,2,2,191,191,191,191,2,191,191,191,206,206,2,2,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,2,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,206,191,191,2,191,2,2,191,191,191,206,191,191,2,2,206,191,206,206,206,274,2,2,2,2,191,191,191,191,191,191,191,191,191,206,206,206,206,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,191,2,2,2,2,2,2,2,2,2,2}, + {548,538,508,250,539,102,73,285,119,433,480,480,2,2,2,480,480,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,72,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,72,72,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,72,2,2,2,72,72,72,2,2,2,2,2,2,2,72,72,72,72,2,72,2,2,2,2,72,2,2,2,2,72,72,72,72,2,2,72,2,72,72,72,2,72,72,72,72,72,72,72,72,2,72,2,72,72,72,2,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,2,72,72,72,72,72,72,72,2,2,72,2,2,2,72,72,72,2,2,72,72,2,72,72,72,2,2,72,2,2,2,72,72,72,72,72,72,72,72,72}, + {622,526,294,56,498,176,237,351,25,26,474,55,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,358,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,358,358,358,2,358,358,358,358,358,358,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,584,2,2,2,358,584,584,584,584,2,2,358,358,358,358,358,358,358,358,358,2,358,358,358,2,358,2,358,358,358,358,358,358,2,2,358,358,358,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,358,2,358,2,358,2,2,2,2,2,358,358,358}, + {446,163,469,481,240,278,51,373,491,13,22,419,2,2,2,2,2,2,2,2,2,176,176,2,2,2,2,2,2,2,2,2,2,2,2,2,176,176,2,176,2,176,176,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,176,2,2,2,2,2,2,2,2,2,2,2,2,176,2,2,2,2,2,134,2,134,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,214,214,2,2,2,2,2,2,134,214,2,111,2,2,2,2,2,134,134,134,134,134,134,134,2,2,2,134,2,2,2,2,2,2,2,2,2,2,2,134,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,214,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {445,223,102,108,120,166,68,214,737,504,96,96,206,377,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,39,39,528,528,528,2,2,2,2,2,39,39,39,39,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,528,365,2,365,365,365,365,2,2,2,528,2,2,528,528,528,2,2,2,2,39,39,39,39,39,2,2,2,2,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,528,39,39,2}, + {453,121,489,84,434,505,78,575,468,372,468,468,83,468,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,83,83,83,83,2,2,2,2,83,83,83,2,2,83,2,2,2,2,83,2,2,83,83,492,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,2,2,2,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,2,2,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,2,83,83,83,83,83,83,83,492,83,492,492,492,378,378,492,492,83,83,378,83,83,492,492,492,492,492,492,492,492,492,2,83,492,2,2,492,492,492,2,2,83,83,83,83,83,83,83,2,83,83,83,492,492,492,83,83,2,83,83,83,83,363,363,83,363,363,363,363,363,363,363,363,363,2,363,83,83,83,2,83}, + {425,355,128,58,194,82,438,117,10,34,34,35,112,107,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,303,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {432,479,328,443,253,634,271,429,406,543,406,543,543,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,244,244,244,2,2,2,111,2,2,2,2,2,2,2,2,2,2,244,2,2,2,2,2,2,2,2,2,244,244,2,244,244,2,244,244,2,244,244,244,244,244,2,244,244,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,95,2,2,2,2,2,2,2,2,2,2,2,2,244,244,244,244,244,244,244,244,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,95,95,2,2,2,95,2,2,95,95,2,2,2,244,244,95,95,2,244,244,95,95,244,244,95,95,95,95,95,95,95,95,95,95,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,244,244,2,2,2,111,2,111,111,111,111,111,2,111,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,95,95,2,2,2,2,2,2,2,2,2,2,2,2,2,244,244,244,244,244,244,2,244,244,244,244,244,244,244,244,244,2,2,244,244,244}, + {433,294,192,205,152,70,99,68,392,169,309,390,390,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,199,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,189,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,189,2,2,2,2,189,189,2,189,2,2,2,8,677,189,189,4,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,266,266,266,189,189,189,189,189,189,189,266,266,266,266,266,266,266,189,189,189,189,189,189,189,189,189,189,189,189,189,189,162,270,270,23,23,23,450,450,450,23,450,607,607,450,606,606,189,266,189,266,266,100,189,189,189,266,266,266,266,266,266,266,189,266,266,266,266,266,266,189,189,189,166,166,166,266,266,266,266,266,189,189,266,266,189,189,189,189,284,284,284,284,189,189,189,189,189,189}, + {456,383,487,311,57,579,673,264,582,187,184,43,43,2,2,2,2,501,501,501,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,501,501,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,501,501,501,501,501,501,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,501,501,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,43,501,2,2,2,2,501,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,501,2,501,2,2,501,501,501,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {437,561,384,619,363,420,614,117,217,247,405,142,142,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,28,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {434,372,239,508,478,26,375,255,151,151,650,112,251,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,161,2,2,2,161,2,161,161,2,2,2,2,2,2,2,2,161,2,161,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,455,455,455,455,2,161,161,161,2,161,161,161,251,251,251,251,161,161,161,161,161,161,161,161,161,161,161,161,2,2,2,161,161,161,161,161,161,161,161,161,161,161,2,2,2,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,455,161,2,161,161,161,161,455,2,161,161,161,161,161,161,161,161,161,161,161,161,161,455,161,161,161,161,455,455,455,2,455,455,161,2,455,455,455,161,455,455,455,455,455,2,2,455,455,161,161,161,161,455,2,455,2,2,2,2,161,161,2,455,455,455,455,2,2,2,2,455,455,161,161,161,2,161,455,455,455,455,455,455,455,455,455,455,455,455,161,161,455,455,455,455,2,455,455,455,455,455,161,2,2,161}, + {437,133,516,423,305,90,135,25,266,487,6,286,286,2,2,2,2,2,2,2,2,2,2,2,2,510,510,2,2,2,2,2,146,146,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,146,146,146,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,146,146,146,2,2,2,2,2,2,510,2,122,122,146,146,146,2,122,122,122,122,2,146,146,2,2,2,2,2,2,2,2,2,146,2,2,2,2,2,2,146,146,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,510,2,510,510,2,2,2,2,2,2,2,2,2,2,2,2}, + {463,341,170,401,178,79,305,98,162,166,32,392,335,335,335,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,116,2,2,2,2,116,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,116,116,116,116,116,116,116,116,116,116,116,116,116,2,2,2,116,2,2,2,2,2,2,2,2,116,116,2,2,2,2,116,116,116,2,2,2,2,2,2,2,2,2,221,221,221,221,2,2,221,116,2,221,2,635,635,635,635,116,116,2,2,2,2,2,2,2,2,2,2,116,116,221,116,116,116,2,2,116,116,116,116,116,116,116,116,116,116,2,116,116,116,116,2,116,116,116,2,116,116,116,116,116,116,116,116,116,116,116,116}, + {610,477,478,516,318,184,267,423,190,494,494,2,336,336,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,551,551,551,551,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,647,647,647,2,647,647,647,647,647,551,2,2,647,2,2,647,647,647,647,551,551,2,2,2,2,647,647,551,551,647,647,647,647,2,2,2,647,647,647,647,647,647,647,647,403,647,2,647,647,647,647,647,647,647,647,647,2,647,647,647,647,647,647,647,314,314,314,314,551,647,647,647,2,647,647,647,647,647,2,2,2,2,647,551,551,551,647,647,647,647,647,551,551,551,551,551,551,551,551,647,647,647,647,647,647,2,647,647,647,647,647,647,647,2,647,647,647,2,647,647,647,647,647,647,551,551,551,647,647,647,647,647,647,647,45,45,647,647,647,96,647,647,2,647,647,96,2,96,96,96,96,96,96,96,551,551,551,551,647,2,2,647,96,96,96,96,96,96}, + {611,211,491,224,47,54,124,268,271,271,223,2,2,2,2,2,2,2,2,2,2,2,2,359,2,2,2,2,2,2,2,2,359,2,2,2,2,2,2,2,359,2,2,2,2,2,2,2,359,2,2,2,2,359,359,359,359,359,2,2,359,359,359,359,359,359,2,2,359,359,359,2,359,359,359,49,49,49,359,49,49,2,2,2,2,359,359,2,359,2,151,359,49,49,359,2,2,2,2,2,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,2,2,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,2,2,359,359,359,359,359,359,359,359,359,359,359,359,359,359,2,359,359,359,359,359,359,359,2,359,359,359,359,359,359,359,2,359,359,359,2,359,2,2,359,359,359,359,359,359,2,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,2,2,364,269,308,381,552,269,269,359,359,359,128,128,128,273,2,273,359,359,2,287,273,273,273,49,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,273,273,273,287,287,287,359,359,359,359}, + {590,463,461,162,162,622,167,254,29,377,377,75,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,75,75,2,2,2,75,75,75,75,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,205,205,205,2,2,2,2,2,2,2,2,58,2,2,2,75,75,2,2,2,2,75,75,205,75,205,2,2,205,2,2,2,2,2,75,75,75,75,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,75,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,75,2,2,75,75,75,75,2,75,2,2,2,2,2,2,2,2,2,75,75,2,2,75,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {478,388,612,404,491,561,180,80,262,58,94,2,2,275,2,2,2,2,2,151,2,2,2,2,2,312,312,312,2,2,2,275,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,312,2,2,275,2,275,2,2,2,312,2,2,2,2,2,2,2,2,2,275,312,312,312,2,312,312,312,275,2,2,2,2,2,2,2,2,275,275,275,275,2,2,2,312,312,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,275,2,2,275,2,2,2,2,2,2,2,2,275,275,275,275,2,2,2,2,2,2,2,2,2,2,2,4,288,4,44,2,2,2,234,234,234,234,234,234,234,234,302,234,26,234,50,50,50,50,50,50,50,275,132,132,132,132,132,132,132,132,132,2,2,275,275,275,275,2,2,508,2,2,2,2,2,2,312,2,2,2,2,2,2,2,132,132,132}, + {629,225,67,623,298,588,354,49,41,185,176,63,63,63,2,2,2,2,2,2,2,2,2,2,2,2,8,435,32,32,435,435,435,435,63,419,419,63,63,2,2,2,2,2,2,2,2,2,2,2,2,2,8,435,32,8,435,435,2,2,63,419,2,2,2,2,2,2,2,2,2,2,2,2,8,2,2,2,8,435,8,8,2,2,2,2,2,2,782,2,2,2,2,32,2,93,2,2,2,2,8,189,2,2,8,782,782,782,105,105,105,105,105,642,642,642,222,222,222,222,189,189,222,222,222,189,222,222,2,222,222,222,222,222,316,316,316,316,316,316,316,316,316,316,189,140,140,494,494,222,222,222,143,222,189,189,189,249,316,316,316,537,537,537,537,316,316,189,189,189,189,143,143,143,143,143,143,143,143,143,143,143,143,143,143,629,629,143,143,629,629,629,19,629,629,629,316,316,537,316,316,316,537,537,537,537,537,537,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,316,316,316,316,316,316,316,316,316,316,316,316,206}, + {671,275,392,298,612,328,337,215,58,58,124,2,2,490,392,2,2,2,125,457,457,2,2,2,2,2,2,2,2,2,2,457,457,457,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,319,2,2,457,319,319,319,2,457,457,457,169,169,169,169,169,2,2,2,2,2,2,2,457,457,457,457,457,2,2,2,2,2,2,2,2,2,319,319,457,457,457,319,319,2,319,319,2,319,2,2,2,2,2,2,169,2,2,319,319,319,319,319,319,2,2,2,2,319,2,2,2,319,319,319,319,319,319,319,319,319,2,2,2,2,2,2,2,2,2,2,2,2,319,2,319,319,319,319,2,319,319,319,319,319,319,2,319,319,319,319,2,2,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,2,2,2,2,2,2,319,319,319,319,2,319,2,2,2,2,2,2,2,2,319,319,319,2,2,2,2,319,319,319,319,2,2,2,319,2,2,2,2,319,319,319,319,319,2,319,2,2,2,319,319,319,319,319,319,2,319,319,319,319,2,2,2,2,169,169,169,319,319,2,2,2,2,2,2}, + {448,126,129,168,209,340,40,96,509,509,509,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,68,2,2,2,2,2,2,2}, + {667,246,160,68,737,203,168,628,46,128,358,2,2,2,121,121,2,2,2,2,2,2,560,121,2,2,2,2,2,2,2,121,121,505,505,505,505,505,505,94,121,94,121,2,2,2,2,94,94,121,121,121,121,121,121,411,411,411,411,411,411,411,2,94,94,94,2,2,2,2,121,411,94,94,343,94,94,94,94,94,94,94,94,94,94,121,94,121,100,100,121,121,2,121,121,121,94,2,94,94,94,94,11,121,121,2,121,121,121,100,560,560,560,560,121,121,121,121,121,560,560,560,560,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,94,2,2,2,2,2,2,505,505,505,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,94,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,505,2,2,2,94,94,94,94,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,11,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {635,212,284,356,187,591,275,361,194,317,488,2,2,2,2,2,2,97,6,2,6,247,2,2,2,2,2,2,2,2,2,6,6,2,2,2,17,17,17,2,17,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,17,17,17,17,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {612,395,104,86,264,321,521,325,252,53,178,100,100,100,16,343,343,343,343,343,2,2,2,2,2,2,2,2,2,343,343,343,135,135,2,2,135,135,2,135,2,2,32,2,2,2,128,676,128,128,128,32,32,135,135,32,135,2,182,182,343,135,135,135,135,165,135,135,2,135,343,343,509,509,509,135,135,135,135,135,135,165,165,165,165,165,26,165,165,165,7,7,343,52,343,250,343,250,250,250,250,250,250,250,250,165,165,343,343,343,343,343,343,367,100,100,343,367,228,367,367,343,343,343,343,165,165,165,165,100,100,100,100,100,100,25,25,25,216,216,216,216,216,118,674,216,423,100,674,100,165,165,343,555,555,130,130,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,165,165,26,52,363,490,7,7,343,52,343,343,648,648,648,490,367,367,490,490,648,648,648,343,368,490,490,490,490,165,165,244,244,490,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,555,368,555,244,244,244,244,367,367,367,367,367,367,367,367,367,367,363,363,363,202,244,244,363,555,244,555,555,555,363,363}, + {486,428,287,472,292,141,504,178,585,98,282,2,2,2,2,2,2,2,2,2,2,2,2,284,284,284,78,284,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,284,284,2,2,2,2,2,2,2,2,2,2,131,2,2,131,131,2,284,2,2,2,2,284,284,284,284,2,284,284,284,284,284,284,284,2,2,2,2,284,2,2,2,2,2,2,2,2,2,2,2,284,284,284,131,284,284,131,2,131,131,284,284,284,284,284,284,2,284,284,284,2,2,284,284,284,284,284,2,2,2,2,131,131,131,405,284,284,284,284,284,284,284,284,284,2,2,2,131,131,284,284,131,131,131,131,284,284,284,131,284,284,284,284,284,284,2,284,284,284,284,2,284,284,284,284,284,2,284,2,284,2,2,284,284,2,2,284,284,284,284,2,2,2,284,284,284,284,284,284,284,284,2,2,2,2,2,2,2,2,2,284,2,2,2,2,2,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,131,284,131,131,284,131,131,284,284,284,284,284,284,2,2,2,2,2,284,284,284}, + {612,327,212,565,450,385,201,649,423,491,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,50,50,50,50,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,180,180,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,180,2,180,180,50,50,2,2,2,2,2,2,2,2,2,180,180,180,180,2,2,2,2,2,50,2,180,180,180,180,180,180,180,180,2,2,2,180,180,2,2,180,180,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {462,579,236,447,60,162,427,258,73,742,742,2,742,742,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {495,440,89,439,65,207,459,407,139,131,624,2,380,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,338,2,338,338,338,2,338,338,2,2,2,2,2,2,2,2,338,338,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,774,774,774,774,2,774,774,774,774,2,2,774,774,774,774,774,774,774,774,774,2,2,2,774}, + {469,507,276,227,66,237,260,386,27,666,31,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,502,2,502,2,502,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,502,502,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,502,2,2,502,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,171,171,171,2,2,171,2,2,2,2,2,2,2,2,2,109,2,2,2,2,2,2,109,109,109,109,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {646,393,273,238,24,13,253,127,368,316,316,316,150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,290,290,2,290,290,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,542,542,542,542,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,57,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {626,196,111,465,386,431,181,414,614,391,349,318,389,2,389,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,454,454,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,546,546,546,521,525,525,128,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,166,2,2,2,2,2,2,2,2,2,2,2,94,2,94,94,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,27,2,2,2,2,2,2,2,2,2,2,2,209,546,546,521,525,525,525,74,2,544,2,2}, + {667,257,290,122,109,523,95,26,282,49,374,236,236,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,88,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,88,88,2,2,2,320,320,320,320,2,2,88,88,320,320,320,320,88,320,2,2,320,320,88,88,2,2,2,2,2,2,2,2,2,2,320,2,2,304,304,2,2,2,2,2,2,2,2,2,2,2,2,2,2,320,2,2,2,127,320,320,320,2,320,320,320,2,304,320,320,2,2,2,88,2,320,127,127,304,2,2,320,320,320,320,2,2,2,88,2,2,2,2,2,2,88,2,2,88,320,2,2,2,88,2,88,88,88,2,88,88,88,2,2,88,127,2,2,2,2,127,2,207,2,127,127,127,127,127,2,320,320,320,320,2,127,127,127,127,2,2,2,320,320,320,320,320,2,2,2,127,127,320,320,127,127,127,127,127,127,127,127,127,10,127,2,2,265,265,265,265,34,34,605,88,88,88,88,127,127,2,88,88,88,127,127,127,127,127,127,88,127,127,127,127,127,127,127,127,127,127,127,127,186,45,88,88,45}, + {653,169,261,533,488,282,213,443,337,480,503,174,534,2,2,2,2,2,534,2,2,2,2,534,2,2,2,2,534,2,2,2,2,2,2,2,2,2,2,2,2,222,2,2,2,2,2,2,2,2,2,2,534,534,534,534,534,534,2,2,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,339,2,2,534,534,339,534,534,644,644,534,534,534,534,534,534,534,534,534,534,534,534,2,487,2,487,487,487,487,487,487,487,487,2,2,2,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,487,487,534,534,487,534,534,534,534,534,534,534,534,534,270,270,270,270,487,644,487,487,270,270,270,270,644,644,270,644,644,644,534,534,644,534,115,115,115,2,644,644,534,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,270,222,644,644,534,534,2,644,644,644,644,644,644,115,115,115,115,644,644,2,644,270,270,270,534,534,534,534,534,644,644,644,644,644,644,644,644,644,644,487,222,222,644,73,73,270,270,270,534,534,534,534,534,534,534,2,2,534,534,2,2,644,2}, + {670,555,160,90,604,604,50,459,376,545,316,180,526,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,79,2}, + {639,253,95,380,108,448,223,254,381,30,6,644,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,503,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,503,503,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,503,503,2,503,503,503,503,503,503,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {642,160,702,90,157,254,278,521,650,277,74,554,122,2,2,2,2,2,2,517,174,174,174,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,517,2,2,2,2,2,2,2,517,2,2,2,517,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,517,2,517,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,517,517,517,517,2,2,2,2,2,2,517,517,517,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,517,2,2,2,2,2,517,517,517,517,2,517,517,517,2,517,2,2,517,517,2,2,2,2,2,2,2,2,2,2,2,2,2,2,517,517,517,2,2,2,517,517,2,2,2}, + {678,254,190,197,637,49,130,25,374,357,357,411,643,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,537,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,537,2,2,2,2,2,2,299,2,2,2,2,2,2,2,2,2,537,537,299,577,2,2,2,348,348,467,115,64,64,64,348,33,537,537,537,537,537,33,33,537,537,537,2,291,537,537,537,537,537,218,218,218,537,537,537,537,537,537,537,537,537,537,537,33,33,629,537,537,537,537,537,537,537,537,537,537,537,537,537,537,629,537,537,537,537,537,537,400,198,738,304,537,537,19,19,19,529,19,395,395,169,169,463,537,463,218,33,33,33,218,218,218,218,537,537,218,218,218,537,537,537,537,537,218,218,218,218,218,218,218,218,218,218,218,218,218,537,218,218,218,218,218,218,218,218,218,218,218,218,218,218,218,218,218,218,218,218,218,218,218,218,218,218,150,246,228,9,9,9,246,83,195,195,195,551,551,551,214,214,214,411,411,214,214,629,537,629,537,537,629,629,629,291,291,291,629,629,291,291,291,335,629,629,629,629,218}, + {512,347,65,546,434,87,18,123,672,412,316,6,699,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,412,2,2,412,412,412,2,2,2,2,2,2,2,2,2,412,2,412,2,412,412,2,412,412,412,412,412,412,412,412,412,412,412,412,412,2,412,412,412,412,412,2,412,412,2,2,412,412,412,412,412,412,412,2,2,2,2,2,2,2,2,412,2,412,412,412,412,412,2,2,2,412,412,412,412,412,2,2,2,2,2,412,412,412,2,412,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,412,412,412,412,2,2,2,2,2,2,2,2,2,2,2,2,2,412,412,412,412,2,2,2,2,2,2,2,2,2,2,2}, + {657,233,108,38,147,53,136,168,408,477,477,279,268,289,2,2,2,2,2,2,289,2,2,2,2,2,2,2,2,289,289,2,8,8,266,2,2,213,584,584,584,118,584,289,289,289,289,289,289,289,289,289,289,289,2,289,276,276,289,289,276,289,289,2,289,289,289,289,289,186,186,39,39,39,650,650,650,454,454,454,454,78,372,477,477,477,266,266,266,266,276,268,276,276,276,276,276,289,289,289,289,268,289,289,289,673,291,731,53,53,53,673,673,673,673,673,81,81,81,547,258,133,133,289,289,289,268,268,268,268,268,268,268,268,268,289,289,289,289,289,289,689,689,216,98,39,17,17,268,618,618,618,98,98,194,268,268,268,268,46,268,268,268,268,268,268,268,276,276,268,289,268,268,276,276,276,276,289,289,201,201,289,289,201,289,201,201,289,289,289,289,289,289,289,289,289,289,289,289,268,289,240,240,240,268,268,268,268,268,18,18,289,18,790,790,790,790,790,18,9,9,9,347,140,140,18,201,657,657,778,778,221,778,778,778,778,268,268,268,404,240,240,240,404,289,268,404,268,201,201,201,735,735,735,735,735}, + {498,431,217,101,78,143,111,113,181,825,458,140,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,79,79,79,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {660,624,376,472,165,66,158,308,492,779,305,305,2,576,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,465,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,465,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,465,465,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,465,465,465,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,465,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,205,205,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {521,249,388,155,467,245,134,311,72,312,312,623,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,263,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,530,530,530,530,530,530,55,55,55,263,263,263,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,263,530,55,2,2,2,530,55,2,2,2,530,581,2,581,581,581,581,2,2,2,2,2,2,2,2,2,2,2,530,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,55,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,263,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,55,2,2,2,55,55,55}, + {408,348,216,299,302,668,347,63,172,141,272,168,678,2,2,2,512,2,2,2,2,4,2,2,2,494,64,64,64,128,16,512,512,512,494,494,494,2,2,512,512,512,2,457,454,30,30,15,15,15,153,153,153,227,227,454,153,153,153,577,577,577,577,108,108,108,108,170,170,108,292,168,21,21,21,292,292,292,148,292,441,441,292,633,299,108,216,216,108,216,561,561,443,561,82,82,110,29,29,29,151,151,151,151,116,116,116,116,116,488,488,155,488,155,155,155,262,262,262,262,262,155,638,526,526,292,209,209,209,638,638,526,526,526,526,726,638,726,209,526,526,526,526,526,526,398,500,125,125,125,623,623,623,623,623,623,623,159,159,245,245,245,245,159,159,159,159,159,318,318,245,318,318,318,318,318,526,526,526,526,252,526,318,318,318,526,318,116,116,116,561,232,232,232,82,82,262,526,29,29,151,151,151,151,488,488,116,448,448,448,448,448,448,448,448,14,448,259,448,18,6,18,3,3,3,530,756,530,162,299,56,56,56,56,56,201,756,756,756,756,756,371,371,638,371,371,371,371,756,48,48,526,756,756,756,756}, + {669,421,230,70,212,845,237,347,148,76,823,472,2,2,2,132,2,2,2,2,2,2,2,383,132,383,2,2,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,243,243,243,2,243,296,383,383,383,383,383,132,132,132,132,2,2,132,132,132,2,2,132,132,132,2,2,2,2,2,2,383,243,243,243,132,132,132,132,132,2,2,2,2,2,2,2,2,2,2,2,413,413,2,383,383,2,2,2,437,437,2,2,2,2,2,2,2,2,2,2,2,2,2,383,383,2,2,383,383,383,383,383,437,437,2,132,132,2,383,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,28,2,2,2,405,602,602,344,344,344,344,344,590,28,28,512,2,170,170,296,170,2,2,2,2,2,2,81,132,383,2,2,383,383,383,383,383,383,296,296,383,383,383,383,383,383,81,81,81,81,81,81,81,81,81,81,81,81,383,383,383,81,132,132,132,132,2,2,132,132,132,2,2,413,413,413,413,413,413}, + {693,530,139,82,780,416,270,278,330,484,484,200,2,2,2,2,137,94,2,2,2,2,2,2,2,2,484,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,484,484,2,2,2,2,2,2,2,2,2,439,439,439,2,2,484,484,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,484,484,484,2,484,439,2,439,439,439,439,2,2,2,439,439,2,2,2,2,2,484,2,2,484,484,439,2,2,2,439,2,2,439,2,439,2,439,439,2,2,2,439,439,2,2,439,439,439,439,439,439,439,439,2,2,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,2,439,439,439,439,439,439,439,439,439,439,2,2,439,439,439,439,439,439,439,439,439,439,439,2,2,2,2,2,439,439,2,2,2,2,439,2,2,2,2,2,2,2,2,2,439,439}, + {672,150,164,622,196,75,302,119,42,314,314,132,60,60,60,298,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,298,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,298,298,298,2,2,2,2,2,2,2,2,2,2,2,298,298,2,2,2,2,2,182,182,182,182,182,2,2,2,2,2,54,54,2,2,2,54,2,298,2,2,2,2,2,2,2,2,2,2,2,191,2,2,2,2,2,2,2,2,2,2,2,2,298,298,2,2,2,298,191,2,2,2,2,2,2,191,191,2,2,2,58,58,2,58,58,2,2,2,2,2,2,2,2,2,2,2,2,2,298,2,2,2,2,2,2,191,191,2,2,2,2,2,2,2,2,2,2,58,182,182,182,182,182,182,2,2,298,2,2,2,2,2,2,2,182,2,2,2,2,2,2,182,298,2,298,54,54,298,298,298,2,298,298,298,298,298,298,298,298,298,298,182,298,54,298,54,54,54,2,298,298,298,298,298,298,54}, + {705,302,411,705,691,160,809,40,32,867,826,826,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,43,285,285,2,285,2,2,2,2,2,2,2,2,2,2,2,405,405,405,2,2,2,405,405,405,405,2,2,2,2,2,2,2,2,2,2,2,2,2,405,405,405,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,43,2,43,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,405,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,43,43,2,2,2,2,43,2,2,2,2,43,43,43,43,43,43,43,43,2,2,2,2,2,2}, + {684,229,138,46,407,399,82,254,267,31,31,45,2,209,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {707,323,409,27,31,157,492,463,886,412,251,251,304,190,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,304,304,2,2,304,304,304,304,2,2,2,304,304,304,304,304,304,2,2,304,304,304,304,304,2,304,304,2,2,304,304,304,304,304,304,304,304,2,304,2,304,2,304,304,2,304,304,304,304,2,2,304,304,304,304,304,304,304,304,304,304,304,304,2,2,2,2,304,304,304,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,685,685,2,2,685,2,2,2,2,2,2,304,2,685,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {715,521,636,304,402,459,435,571,611,214,214,43,43,358,2,2,2,2,358,2,2,2,2,2,2,358,358,358,2,2,358,358,358,2,2,2,2,2,2,2,2,2,2,358,202,2,2,202,358,2,2,2,202,2,2,2,2,2,2,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,358,358,358,2,2,134,134,2,2,134,134,134,134,358,134,134,134,2,134,134,134,134,2,134,2,2,2,2,2,2,2,2,2,2,358,358,358,2,2,134,134,134,134,134,2,2,134,202,2,202,2,134,2,134,134,134,134,134,134,134,2,134,134,134,2,134,134,2,2,2,202,202,202,134,2,2,2,134,2,134,134,202,2,202,134,134,202,134,134,134,134,134,134,134,134,134,134,134,134,134,134,2,508,508,508,508,508,2,2,134,358,358,358,358,134,134,134,134,134,134,134,134,2,134,358,134,2,2,202,202,2,202,2,2,2,2,2,2,2,2,2,2,358,202,202,202,202,202,202,202,202,202,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {768,224,219,425,467,147,151,643,316,263,263,263,263,263,2,2,2,2,2,272,139,2,2,2,2,2,2,2,2,2,272,53,53,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,53,2,2,2,272,53,2,272,272,272,272,2,272,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,53,2,2,2,2,2,2,2,2,2,2,2,2,2,2,53,53,53,53,2,2,272,2,53,53,2,2,2,2,2,53,53,53,53,53,53,2,2,2,53,53,53,53,2,2,2,53,2,2,2,2,53,53,53,53,53,2,2,2,2,272,272,272,2,272,272,272,272,272,272,272,272,2,272,2,2,2,2,2,272,53,53,272,272,272,272,272,272,272,2,2,2,2,2,53,53,53,53,26,26,2,2,2,26,26,2,53,53,53,272,272,2,2,53,2,2,2,2,2,53,272,2,2,2,53,53,53,2}, + {555,543,434,78,850,174,277,194,4,100,471,69,69,424,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,394,2,2,2,2,2,394,394,394,394,394,2,2,2,2,2,2,2,2,394,394,394,394,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,394,394,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,147,147,147,147,147,147,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,394,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,394,2,2,2,2}, + {690,206,572,877,600,129,288,52,19,147,222,222,147,147,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,147,147,2,2,2,2,147,147,2,2,147,147,147,2,2,2,2,2,2,2,2,2,147,147,147,147,147,147,147,147,2,147,147,147,147,147,2,147,147,147,147,147,147,147,2,147,147,147,147,147,147,2,2,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,2,147,147,2,147,147,147,147,147,147,2,2,2,2,2,2,2,2,147,147,136,136,147,147,2,147,147,147,147,2,147,147,147,147,147,147,147,147,147,147,147,147,147,136,136,147,147,147,147,2,2,2,147,2,2,2,2,2,2,2,147,147,147,147,2,2,2,147,147,147,147,147,147,147,147,147,147,2,2,2,2,147,147,147,147,147,2,2,2,2,2,2,147,2,2,2,2,136,2,2,2,2,2,147,147,147,2,2,2,2,2,147}, + {793,279,264,566,252,495,872,492,482,107,294,503,350,350,2,2,2,2,2,2,2,285,285,273,273,273,273,2,2,2,2,2,2,2,115,115,115,115,115,115,2,2,2,2,2,2,2,285,2,2,2,2,2,2,2,2,2,2,2,2,2,285,285,2,2,2,2,2,2,2,2,2,285,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,285,285,285,285,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,285,285,285,285,285,285,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,285,285,2,2,285,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,285,2,2,2,2,285,285,285,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,667,667,5,5,309,326,512,50,50,2,2,2,2,2,2,2,2,2,2,2}, + {703,427,225,320,136,47,103,547,239,217,73,68,68,204,204,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,827,2,2,2,827,2,827,827,827,827,827,827,827,827,827,2,2,2,2,2,2,2,2,2,827,2,827,827,827,827,827,827,827,827,827,827,827,827,827,2,2,2,2,2,2,2,827,827,827,827,827,827,827,827,827,827,827,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {791,275,60,137,352,839,67,476,356,216,216,563,563,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,131,131,2,2,2,2,2,611,459,459,459,459,2,2,611,611,611,611,611,611,2,611,611,611,611,131,131,131,131,131,131,131,131,611,611,131,2,611,611,611,611,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,2,2,2,131,131,131,131,131,131,131,131,131,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,131,611,611,611,611,2,2,611,611,611,2,2,611,611,611,611,2,611,611,2,611,611,611,611,2,611,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,611,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,131,2,2,2,2}, + {703,312,472,588,228,512,386,668,477,617,389,389,389,2,296,2,2,2,2,343,343,2,2,343,343,2,2,617,617,617,617,2,617,617,2,343,343,343,343,2,2,2,2,2,343,2,2,343,2,2,2,2,343,2,2,2,2,2,2,2,2,2,2,343,2,2,2,2,2,2,2,343,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,343,343,343,2,2,2,617,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,343,343,343,343,343,343,2,343,343,343,49,343,343,2,2,617,343,2,2,343,343,2,343,343,2,343,343,343,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,343,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,2,739,39,139,196,196,196,2,2,2,593,2,49,593,593,593,593,593}, + {709,509,697,145,252,194,304,192,192,623,623,4,423,2,2,2,199,423,2,2,2,222,222,2,2,623,623,623,623,623,2,222,2,2,2,2,2,2,2,2,2,2,2,2,2,623,2,2,2,2,2,2,2,2,2,2,2,2,222,222,222,222,222,222,2,363,2,2,2,2,2,623,2,2,2,222,222,222,222,2,2,2,222,222,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,623,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,222,222,222,222,222,222,2,2,2,222,623,623,623,2,2,2,2,2,222,2,222,222,222,222,222,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,423,423,2,2,623,623,623,2,2,2,2,623,623,623,623,623,623,2,623,623,2,2,2,2,2,2,2,2,2,623,2,2,623,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {587,453,117,107,672,86,248,568,568,294,294,513,78,2,2,164,82,2,2,2,2,22,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,374,374,2,2,2,2,2,2,216,216,216,216,2,2,216,78,294,294,294,2,2,216,216,78,78,78,78,2,78,78,216,216,2,216,216,2,216,216,216,216,216,216,216,216,216,216,216,216,216,216,294,294,216,216,216,216,216,216,216,216,216,216,2,2,2,294,294,2,294,294,2,2,2,78,78,78,2,2,2,2,2,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,78,78,78,78,2,78,78,294,294,294,294,294,294,2,2,2,2,2,2,2,2,2,2,294,2,78,78,78,78,2,2,2,294,294,78,78,78,294,2,294,2,2,2,216,2,2,216,216,216,2,2,2,294,2,2,2,2,2,2,78,78,78,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {741,466,378,135,737,131,159,469,59,2,59,59,187,2,204,2,2,2,2,2,2,2,2,2,798,2,2,798,798,798,798,798,798,798,2,2,2,2,2,2,2,798,2,2,2,2,2,2,2,2,2,2,2,2,798,798,798,798,798,798,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,474,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,798,798,798,798,798,798,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {539,310,463,103,553,45,609,326,197,2,62,113,272,2,62,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,517,517,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,517,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,517,2,517,517,285,285,285,285,285,2,2,2,2,2,2,517,517,517,517,517,517,517,2,2,2,2,2,2,2,285,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,285,2,2,2,2,2,2,285,2,285,285,2,285,285,285,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,517,2,2,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,285,285,285,285,285,285,285,285,285,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {750,703,182,242,92,335,272,466,594,2,701,569,474,129,140,140,2,507,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,197,197,197,197,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,197,197,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,197,197,197,197,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {547,210,113,361,584,121,65,307,98,2,2,552,514,514,2,514,207,514,514,514,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,698,698,698,698,698,698,698,207,207,207,207,698,2,514,514,514,207,2,2,2,207,698,2,698,207,698,698,207,514,514,514,514,514,698,698,698,698,698,2,2,698,698,2,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,2,2,2,2,514,514,514,514,514,514,2,514,207,2,207,207,207,514,514,514,514,207,698,2,2,698,514,465,465,514,698,392,392,392,392,392,392,2,2,2,2,2,2,2,2,2,2,2,514,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,698,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,465,2,392,392,392,392,392,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,432,2,2,2,698,698,698,2,465,465,465,2,2,575,2,2,2,2,2,2,2,2,2,2,2,2,698}, + {555,229,328,91,272,815,483,749,468,2,92,92,4,92,2,2,2,258,258,258,2,258,258,2,2,2,2,258,2,2,258,258,258,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,258,258,258,258,2,2,2,2,2,2,2,2,2,2,2,258,2,2,2,2,2,258,2,258,2,2,2,2,2,2,258,258,2,2,2,2,2,258,258,58,58,258,258,258,258,258,258,258,258,258,258,258,92,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,58,58,58,58,58,58,58,58,258,258,258,258,258,2,2,2,258,58,2,92,92,855,855,855,258,258,258,258,258,258,258,258,58,58,58,58,476,2,855,855,2,855,2,2,2,2,2,2,2,2,2,2,2,58,58,58,58,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,92,92,92,2,258,258,2,2,2}, + {580,145,358,434,630,73,604,366,366,2,2,398,398,207,2,207,487,2,2,487,207,2,2,207,207,207,2,2,2,2,207,207,2,2,207,207,207,207,207,487,207,2,2,2,2,2,2,2,207,207,207,207,207,2,2,2,2,2,2,2,2,2,2,2,2,2,207,207,2,2,2,2,2,2,2,2,2,2,2,207,207,2,2,2,2,207,487,487,487,2,2,2,2,2,2,2,2,2,487,2,2,2,2,2,487,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,207,487,2,207,207,2,2,487,207,2,2,2,207,487,2,487,487,2,2,207,2,2,487,487,487,487,487,2,487,2,2,2,487,2,2,2,487,2,2,207,207,2,2,2,207,207,207,207,207,207,207,207,487,2,207,207,207,207,487,207,487,207,2,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,2,2,207,207,2,2,2,487,2,207,207,207,2,487,2,2,487,487,487,487,2,2,207,207,207,207,207,207,207,207,487,2,2,2,2,2,2,487,487,2,2,2,2,2,2,2,2,2,2}, + {457,520,93,460,275,525,300,184,354,147,147,147,147,179,82,82,82,82,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {872,630,513,218,719,174,197,104,86,281,281,281,541,642,281,94,2,45,94,2,335,335,2,2,2,2,2,2,2,2,2,84,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,94,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,94,94,94,94,2,2,2,2,2,281,281,2,2,2,2,2,2,2,2,2,281,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,281,84,84,2,2,2,2,2,2,2,2,2,2,2,2,281,281,2,2,2,2,2,281,2,2,2,2,2,281,281,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {765,421,129,298,867,365,222,476,401,142,90,22,22,88,226,657,2,2,477,2,2,2,2,2,226,226,2,226,2,2,2,226,2,2,226,226,226,226,2,226,226,226,226,226,2,226,226,226,226,2,2,2,2,2,226,2,2,2,2,226,226,142,142,142,142,226,226,226,226,226,226,226,226,299,299,226,226,226,226,299,2,299,226,226,226,299,2,2,2,2,226,226,2,2,226,799,799,226,226,477,226,142,142,142,142,799,799,799,2,226,226,226,477,2,226,226,226,226,226,2,2,2,2,2,32,2,2,32,2,2,2,2,2,4,4,4,348,348,226,142,2,2,2,149,231,231,231,231,231,231,174,364,142,142,141,141,46,46,46,67,299,299,2,2,2,299,46,46,799,799,799,799,799,370,142,2,2,936,936,936,936,936,936,226,226,226,226,299,299,299,299,936,936,936,936,299,299,299,299,299,299,299,299,299,142,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,31,31,299,299,299,31,299,31,31,31,31,31,157,157,31,299,299,31,299,299,299,936,31,31,31,31}, + {833,634,228,520,113,329,279,420,581,2,2,385,385,110,450,2,733,2,2,2,561,561,2,561,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,561,561,2,2,2,2,561,561,2,561,561,2,2,561,561,561,561,561,561,561,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,561,561,2,2,2,2,2,2,2,2,2,2,2,2,561,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,120,189,323,323,286,286,2,388,388,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,385,2,2,2,2,2,2,2,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123}, + {587,553,360,539,227,800,312,143,536,2,2,2,64,64,64,2,2,2,179,179,493,2,2,184,184,184,58,2,2,2,493,493,179,179,179,179,179,179,179,179,179,179,179,179,179,2,2,184,184,184,179,179,179,493,493,493,55,2,184,2,363,363,363,363,2,363,2,2,2,179,2,2,2,2,480,2,2,480,480,480,2,2,2,2,363,363,363,363,363,363,2,2,2,2,2,2,2,2,2,363,363,363,363,363,363,363,363,55,55,55,2,821,821,184,184,184,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,458,2,2,493,493,493,2,2,343,343,289,219,219,69,69,493,493,2,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,179,179,179,493,493,493,410,821,493,55,410,410,179,179,179,493,493,179,179,179,179,179,179,179,179,179,179,493,179,179,179,179,179,179,179,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,179,493,493,493,493,493}, + {744,466,389,280,229,134,363,177,389,2,2,2,536,273,536,536,536,536,168,45,45,45,45,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,45,2,2,2,2,2,2,2,2,2,2,2,2,2,45,2,2,45,2,2,2,2,2,2,2,2,2,45,45,45,45,45,45,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,203,203,203,203,2,2,2,2,2,2,2,2,2,2,2,2,45,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,45,45,45,45,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,45,45,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,45,45}, + {841,222,158,469,253,91,347,241,766,2,2,2,88,88,88,439,439,439,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,626,2,2,626,2,626,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {462,653,478,67,269,150,474,711,220,669,669,669,669,669,390,352,325,2,229,545,545,545,545,545,545,545,545,2,545,352,309,352,352,352,352,352,2,2,2,352,2,2,545,545,2,2,2,2,2,2,2,2,2,2,2,2,352,97,2,2,2,2,352,352,352,2,2,2,352,352,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,352,352,2,2,669,2,352,2,352}, + {468,430,849,689,202,427,45,34,105,2,2,2,2,4,4,4,4,4,4,4,2,2,2,4,4,4,4,4,2,2,2,2,2,143,143,2,2,2,143,143,2,237,237,2,2,2,2,2,237,2,237,237,237,143,143,143,143,143,143,143,143,143,143,143,143,143,143,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,143,2,2,143,143,143,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {610,289,503,744,775,512,605,454,484,2,2,2,444,466,145,631,2,631,631,631,631,631,631,631,631,631,2,2,631,631,631,858,631,631,631,631,631,631,631,631,631,631,631,2,2,631,631,631,631,2,2,631,631,2,631,631,631,631,2,2,631,631,631,2,858,631,631,2,2,631,2,631,631,2,2,631,631,631,631,631,631,2,631,631,631,631,631,2,631,631,631,2,2,631,631,631,2,2,631,631,631,631,631,631,631,631,631,631,631,631,631,631,2,2,631,631,2,2,631,631,631,2,2,2,631,631,631,631,2,631,631,631,631,631,631,2,2,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,2,631,631,631,631,631,631,631,631,631,631,631,631,2,631,631,631,631,631,631,631,631,631,631,446,631,2,631,631,631,631,631,631,631,631,2,2,631,631,631,2,153,631,631,631,631,631,631,631,631,631,2,2,201,201,201,201,201,201,631,201,201,631,631,631,631,631,631,631,858,201,153,201,631,631,631,2,631,631,631,153,153,153,153,153,631,631,153,631,153,153,631,631,631,631,631,631,631}, + {792,169,306,843,246,123,293,229,483,2,2,2,165,163,163,163,163,440,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,283,2,2,2,2,2,2,2,2,2,2,2,2,2,2,318,318,318,283,283,283,283,283,2,2,283,283,283,283,283,283,2,2,2,283,283,283,318,318,2,318,318,318,318,2,2,2,318,318,318,2,318,318,318,318,318,318,318,318,318,318,318,318,318,318,283,283,318,318,318,318,318,283,283,283,283,283,318,318,318,318,318,318,318,318,318,318,318,2,283,318,318,318,318,318,318,2,318,318,318,318,318,318,2,2,2,2,2,2,2,2,2,408,408,408,408,408,2,2,2,408,2,2,2,408,2,2,2,2,2,2,2,318,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,283,283,283,283,283,283,283,283,283,283,283,318,283,318,318,318,318,318,318,2,2,2,2,2,408,2,318,318,318,408,2,2,2,2,2,318,318,318,2,2,2}, + {563,325,717,766,440,705,290,123,228,2,2,2,32,64,146,2,2,2,116,79,79,2,146,146,79,79,79,2,2,146,146,79,79,2,435,435,435,435,435,2,2,2,2,435,435,2,2,2,2,146,2,2,2,2,2,79,79,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,146,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,79,2,2,2,2,2,2,2,79,79,79,79,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,133,2,2,133,133,133,133,133,133,133,2,2,2,2,79,133,79,79,79,435,2,146,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,79,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,79,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {795,185,350,211,82,537,106,680,62,2,2,537,423,423,423,2,2,501,501,2,501,2,501,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,268,268,2,2,2,268,2,501,2,2,501,501,2,2,2,501,501,501,2,501,2,501,2,501,501,2,2,2,2,2,2,2,2,2,501,501,2,2,2,2,2,2,2,2,2,2,2,2,501,2,501,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,501,2,2,2,2,501,501,501,501,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,501,2,2,501,501,501,2,501,501,2,2,2,2,2,2,2,2,501,501,501,2,2,2,2,2,2,2,2,2,2,2,2,2,501,2,2,2,501,2,2,2,2,2,2,2,2,2,501,501,2,2,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,2,2,2,501,501,501,501,501,501,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {633,425,295,548,497,163,381,461,89,2,2,831,583,896,38,2,625,2,2,2,276,276,2,2,276,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,276,276,276,2,276,276,276,276,276,276,276,276,276,276,2,276,276,276,2,2,2,276,276,276,276,276,276,276,276,276,276,276,276,2,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,2,276,276,276,276,276,276,2,276,276,276,276,276,276,276,276,2,276,2,2,276,276,276,276,2,276,2,2,2,276,276,276,276,276,276,276,276,276,2,2,2,276,276,276,276,276,276,276,276,2,276,276,276,276,276,2,2,2,2,2,2,2,2,2,2,2,276,276,2,2,569,569,569,569,569,569,569,569,2,2,2,276,276,2,2,2,276,276,2,2,2,2,2,2,276,276,276,276,2,2,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,2,276,276,276,276,276,276,276,276,2,276,276,276,276,276,276,276,2,2,2,276,276,276,276,276,276,276,276,276,276}, + {767,318,84,97,208,387,423,196,417,2,396,396,396,396,396,128,128,2,2,2,328,328,4,4,4,4,101,2,2,328,82,16,16,16,16,244,244,221,128,128,221,128,128,128,128,346,221,221,221,221,221,244,244,244,221,221,45,45,180,180,274,325,122,325,244,45,221,221,221,221,221,346,221,221,221,221,221,221,314,705,705,413,413,413,85,85,85,467,221,698,811,958,221,811,811,698,698,221,221,811,811,811,101,101,101,307,307,307,307,307,672,212,212,21,21,21,212,143,148,148,21,53,53,672,296,558,296,296,42,558,42,221,891,221,390,390,390,390,390,390,390,390,390,120,120,120,390,390,120,390,53,53,53,53,53,53,53,53,53,53,53,307,195,250,250,250,250,250,399,399,250,27,27,27,125,125,125,125,125,125,125,195,195,195,195,195,195,195,195,195,195,195,195,387,387,387,387,195,195,27,585,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,144,651,651,144,144,651,651,120,120,21,21,212,143,120,390,390,120,120,120,100,100,100,100,18,18,18,100,100,100,100,100,100,351,520,18}, + {802,533,869,638,67,192,805,223,219,2,2,191,178,178,77,77,2,2,2,2,431,431,2,2,2,431,431,2,2,431,2,2,77,2,431,2,2,2,2,2,2,2,2,2,116,2,2,2,431,431,2,431,431,77,77,77,77,431,431,431,431,77,431,431,431,431,431,431,431,2,2,2,2,2,431,431,2,431,431,431,431,431,431,431,431,431,431,431,431,431,2,2,2,2,431,431,2,2,2,431,2,2,2,2,2,2,2,2,431,431,431,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,431,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,431,2,2,431,431,2,431,431,431}, + {781,638,410,399,336,465,856,426,28,2,4,4,6,6,2,2,2,449,372,372,449,449,449,2,2,449,449,449,449,449,449,2,2,372,372,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,372,449,2,2,2,2,449,449,2,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,2,2,2,449,449,449,449,449,449,449,2,2,449,449,449,449,449,449,449,2,449,449,449,449,449,449,449,449,2,2,2,449,449,449,449,449,2,2,449,449,449,2,2,449,2,449,449,449,449,2,2,449,449,449,449,449,449,2,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,2,2,2,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449}, + {807,377,237,443,388,286,158,349,491,32,32,260,260,260,2,2,260,615,615,615,2,2,260,260,260,260,260,615,615,615,615,615,32,32,260,260,260,639,639,86,86,43,43,43,539,539,539,539,539,539,539,539,539,539,152,152,152,315,315,315,315,315,38,38,38,38,674,38,38,38,608,608,837,608,608,608,219,219,219,219,219,275,275,607,729,85,85,85,729,607,597,275,721,721,35,254,655,254,254,254,254,254,254,254,254,254,254,535,859,535,859,859,859,859,331,331,859,394,394,162,162,162,162,254,254,254,254,254,150,35,35,35,479,197,183,183,183,183,183,183,183,183,183,162,70,70,70,183,183,183,183,183,183,183,279,967,967,967,967,166,166,166,166,333,358,279,349,349,358,358,391,358,166,27,27,27,216,391,236,53,53,717,917,917,535,717,717,717,717,717,781,657,717,717,657,657,38,38,674,674,219,674,608,254,162,162,162,162,162,162,162,769,769,769,769,254,769,254,418,254,254,254,254,254,254,254,254,254,254,254,254,254,201,201,201,201,201,201,201,201,201,201,201,227,466,201,201,201,201,201,227,977,977,227,977,294}, + {780,359,766,618,41,596,86,636,287,707,707,96,49,373,613,373,2,2,2,2,2,2,2,613,613,613,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,613,613,613,613,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,613,613,613,613,2,613,613,613,613,613,613,613,613,613,2,2,2,2,2,2,2,2,2,613,613,613,613,613,613,613,613,2,2,2,2,613,613,2,2,613,613,613,613,2,2,613,613,613,613,613,613,613,613,613,2,2,2,2,2,2,2,2,2,2,2,613,613,2,2,2,2,2,2,2,613,613,613,613,613,613,613,613,613,613,613,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,215,215,613,613,2,613,613,127,127,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,613,613,2,2,2,2,215,215,2,2,2,2,613,215,215,215,215,2,2,2,2,2,2,2,2,215}, + {788,497,334,93,319,169,273,540,904,2,903,569,569,569,272,272,2,2,2,2,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,571,2,2,571,2,2,2,2,2,2,2,2,2,2,2,2,571,571,571,2,2,571,571,571,571,2,2,571,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,571,2,2,2,2,2,2,2,2,2,2,2,2,2,571,571,2,2,571,571,2,571,571,571,2,571,571,571,571,2,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,2,2,571,2,2,571,2,2,571,571,571,571,2,571,571,2,571,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,571,2,2,2,2,2,2,2,571,571,571,571,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {622,309,913,550,994,90,257,588,29,526,526,526,496,496,576,2,2,2,2,2,182,182,182,2,2,447,447,447,447,447,447,182,182,447,447,447,447,2,447,447,447,2,2,447,447,2,2,2,447,447,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,182,182,2,2,182,447,182,182,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,2,2,447,447,2,447,447,447,447,2,2,2,2,2,2,2,2,2,2,2,2,447,447,447,447,447,2,2,2,2,2,2,2,2,2,2,2,447,447,447,447,447,447,447,447,447,447,182,447,447,447,447,447,182,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,2,2,2,2,2,2,2,2,447,2,2,2}, + {814,652,456,774,624,870,27,739,464,2,108,578,578,561,295,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,650,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,650,650,2,650,650,650,2,2,2,2,2,650,650,650,650,650,650,2,2,650,650,650,650,650,650,650,650,650,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {818,280,99,873,165,426,341,74,479,342,727,684,684,662,662,2,2,2,2,2,2,662,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,203,203,32,203,203,203,95,256,256,2,2,906,700,700,710,88,88,798,2,710,710,710,710,710,710,710,798,2,2,710,283,2,2,2,2,2,2,2,2,2,710,710,710,710,710,2,88,88,88,2,2,203,203,710,710,798,798,798,710,710,88,88,88,88,88,88,88,88,88,88,798,88,88,88,798,798,798,88,88,88,88,88,798,798,88,88,88,88,88,88,88,88,88,88,360,355,88,645,22,11,11,11,106,236,106,106,333,22,412,412,412,412,797,412,412,797,797,11,797,797,797,798,797,798,798,798,798,798,88,798,798,798,798,88,798,798,798,798,798,798,798,798,798,798,798,798,798,798,798,798,798,798,798,710,710,798,323,798,323,323,323,323,798,798,183,323,323,627,323,183,183,323,710,323,710,710,710,710,710,183,183,183,323,283,283,283,183,88,88,627,627,627,627,183,710,710,183,46,798,627,627,88,798,627,88}, + {593,411,953,203,89,57,785,354,349,424,424,707,707,707,829,2,2,2,2,2,670,670,670,2,2,424,424,424,2,2,670,424,424,424,424,424,424,424,424,424,424,670,670,2,670,2,670,2,670,2,2,670,670,2,2,2,2,2,670,2,2,2,2,2,2,2,2,2,2,670,670,2,670,670,670,670,670,2,2,670,670,670,670,670,2,670,670,670,670,2,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,79,2,2,2,670,670,670,670,670,670,670,670,670,670,670,670,670,2,2,2,2,670,670,670,670,2,2,2,2,2,2,2,2,2,2,2,2,2,2,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,2,2,2,2,79,2,670,670,2,2,2,2,670,670,670,2,2,2,79,79,2,2,2,2,2,2,2,2,2,2,2,2,670,670,670,670,670,2,2,2,2,2,2,2,2,670,670,670,670,2,2,2,670,670,670,670,670,670,670,670,670,670,670,2,670,670,2,2,79,2,424,424,424,670,2,2,2,2,2,2}, + {629,560,621,245,683,633,495,551,472,2,31,74,489,684,555,684,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,123,684,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,684,684,684,684,123,123,123,684,123,123,123,123,123,123,123,2,123,123,684,684,2,684,684,123,123,123,123,123,123,123,123,123,684,123,123,123,123,2,2,123,123,123,123,123,123,684,684,684,123,123,123,123,123,123,123,123,684,684,123,684,684,123,123,684,2,123,123,123,123,123,123,123,123,684,684,123,684,684,123,123,123,123,123,123,123,684,684,684,684,684,684,684,684,684,684,684,684,123,123,123,684,684,123,684,123,2,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,684,123,123,123,123,123,123,123,123,123,684,684,123,123,2,2,2,2,123,684,684,684,684,684,684,684,2,684,2,123,123,684,123,684,2,2,123,2,2,2,2,684,684,123}, + {901,490,693,410,666,119,703,593,201,61,70,70,774,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,418,418,418,418,418,418,418,2,2,2,418,2,2,2,2,2,2,2,2,2,2,682,682,682,682,464,464,464,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,464,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,464,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,464,2,2,2,2,464,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,418,418,418,2,2,2,2,2,418,418,418,418,418,418,464,418,418,418,418,418,418,2,418,418,2,418,2,2,2,2,2,418,418,418,2,418,418,418,418,2,464,464,464,464,464,418,418,418,418,418,464,464,464,418,418,418,418,418,418,418,418,418,464,418,418,418,418,418,418,464,464,464,418,418,464,418,418,418,2,42,42,418,418,418,418,464,2,418,33,2,2,2,418,418,418,418,2,2,2,418,418,2,2,464,464}, + {669,321,391,548,189,157,337,42,796,871,276,622,30,2,2,2,2,2,2,2,580,580,107,2,2,2,2,2,434,434,434,434,434,434,2,75,434,434,434,434,2,434,434,434,434,2,2,2,2,2,655,2,2,2,2,2,107,107,107,107,206,206,107,107,107,107,580,655,655,2,107,107,107,107,655,655,655,655,655,434,434,434,434,434,434,434,580,580,580,580,580,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,75,434,434,434,434,434,580,434,434,248,248,248,434,434,434,434,434,434,580,580,580,248,166,166,166,655,655,434,434,580,2,580,580,580,580,580,2,2,580,580,580,580,580,655,655,655,655,655,655,655,206,206,206,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,2,434,434,434,652,655,434,107,107,107,107,107,107,107,107,434,434,434,652,652,434,434,434,434,434,434,2,434,434,107,580,434,75,75,434,434,2,434,434,434,434,2,206,2,2,2,2,655,2,2,2,2,2}, + {610,236,633,300,681,358,72,281,148,466,466,283,275,2,386,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,374,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,47,47,2,2,2,2,2,2,2,2,2,2,2,2,2,47,2,2,2,47,47,2,47,2,2,47,2,2,2,47,47,47,47,47,47,47,47,47,47,47,2,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,386,386,386,386,386,386,386,386,386,2,2,2,386,386,386,386,47,47,2,47,374,374,374,374,374,374,374,374,374,47,47,47,47,47,47,47,78,47,2,2,47,47,374,47,374,374,374,374,374,374,374,374,374,374,374,374,47,47,47,47,47,374,374,374,2,2,374,374,374,47,47,47,47,374,374,374,386,386,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,120,120,120,120,374,374,386,386,386,386,386,386,374,374,374,120,120,120,120,120,716,374,374,374,374,716,716,716,716,716,120,374,374,120,120,374,374,374,120,120,120,120,47,47,47}, + {929,360,102,893,329,136,515,33,170,581,268,35,777,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {859,584,475,745,506,900,40,869,143,612,175,275,209,12,12,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,666,2,2,2}, + {822,581,76,382,72,347,964,324,137,61,61,28,623,351,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,198,198,198,198,198,198,2,2,2,198,198,198,198,198,198,198,198,198,198,198,2,198,198,198,198,198,2,2,2,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,156,156,198,156,156,156,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,156,198,2,2,2,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,156,156,156,198,156,198,156,198,156,156,198,198,198,2,2,198,198,156,156,156,198,198,198,198,198,198,198,198,198,234,156,156,156,156,156,156,156,156,156,156,198,198,198,198,198,198,198,198,198,156,156,234,234,234,234,234,234,198,234,234,234,234,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,2,198,198,198,198,198,198,198,198,198,198,198,198,198,198,234,2,234,234,234,234,234,234,198,198,198,198,198,156,156,198,198,198,234,198,234,234,2,2,2,2,198,198,198}, + {655,330,324,151,166,431,58,174,142,115,1003,66,724,778,2,2,2,503,503,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,503,503,2,503,503,503,2,2,2,503,2,2,2,2,2,2,2,2,2,503,503,503,503,503,2,503,503,503,503,503,503,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,744,2,744,2,2,2,2,2,2,2,2,2,2,503,2,2,2,2,503,2,2,2,2,2,2,2,2,2,2,2,2,744,744,744,744,744,2,2,2,2,2,2,2,2,2,2,744,744,744,2,2,2,2,2,2,2,2,503,503,503,503,503,2,503,503,503,744,744,744,2,744,744,744,744,744,744,503,503,503,503,503,744,503,503,503,503,503,503,2,2,2,744,503,503,503,503,503,503,503,503,503,2,503,2,503,503,503,503,503,503,2,2,2,503,503,2,503,503,503,503,503,503,503,2}, + {867,820,301,252,61,331,105,309,562,218,365,326,768,672,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,58,104,2,2,2,35,35,104,35,2,35,2,2,2,58,58,58,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,791,791,2,104,104,104,104,58,58,58,58,297,297,2,2,2,2,2,2,2,2,2,58,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,58,58,58,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,104,104,104,2,58,2,2,2,104,104,104,104,104,104,2,104,104,104,2,2,104,104,104,104,104,104,104,104,104,2,104,104,104,2,2,104,104,2,2,104,104,104,791,791,791,791,104,104,791,2,2,104,104,104,104,2,2,2,2,2,2,2,2,58,104,104,104,104,104,104,58,58,58,58,2,2,2,58,2,2,58,104,104,104,104,104,2,58,58,2,2,2,2,2,58,58,58,104,104,104,58,104,58,58,58}, + {623,330,182,489,212,223,741,490,40,412,801,681,681,801,2,2,71,2,2,2,2,2,2,427,2,2,2,2,2,2,2,2,2,2,2,427,2,427,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,209,209,209,209,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,99,2,2,2,2,2,2,2,71,2,2,2,2,2,71,2,2,71,2,2,71,71,71,71,71,71,2,71,71,71,71,71,2,2,2,71,71,71,71,71,71,71,71,71,2,71,71,71,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,746,746,2,2,2,2,2,2,2,2,427,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,427,427,427,427,427,2,2,746,746,2,2,71,2,2,2,71,71,71,71,71,71,2,2,529,529,746,746,746,746,2,2,2,746,2,427,2,2,2,2}, + {859,844,510,859,118,190,550,29,159,622,622,382,258,382,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,654,2,2,2,654,654,2,2,2,2,2,2,2,2,2,2,2,2,2,2,101,101,2,2,2,2,101,2,2,2,2,2,2,2,2,2,2,2,2,2,654,2,654,654,654,2,2,654,654,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,101,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,182,182,182,182,2,2,2,2,2,2,2}, + {612,237,272,53,534,682,372,935,494,536,536,599,599,599,2,536,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,689,689,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,689,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {843,730,235,233,816,495,598,134,131,604,227,378,378,553,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,139,139,2,139,2,2,604,2,2,2,604,604,2,2,2,139,2,2,2,604,139,139,139,139,139,139,139,2,2,2,604,604,604,604,604,604,139,604,604,2,2,2,2,2,2,2,604,604,604,2,2,2,2,604,2,2,604,604,604,604,2,2,2,2,2,2,2,604,604,604,604,604,604,604,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,139,139,2,139,139,2,2,2,2,2,139,2,2,139,2,2,2,139,139,2,2,2,2,139,2,2,2,2,2,2,2,139,2,2,2,2,2,2,2,2,2,2,139,139,139,2,2,2,2,2,2,2,2,139,2,2,2,2,2}, + {667,397,121,526,321,660,848,729,357,137,268,711,521,521,2,2,2,2,2,2,2,2,2,2,2,2,2,194,2,2,2,521,2,2,2,194,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,194,2,2,2,2,2,2,2,535,535,2,2,2,2,2,2,2,2,2,2,2,2,2,787,787,461,787,787,437,437,521,521,521,521,521,521,521,521,521,521,521,521,521,2,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,535,535,521,521,535,535,535,521,535,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,338,338,338,110,33,33,33,238,180,238,377,559,132,584,584,577,180,180,577,521,521,238,137,521,521,521,521,521,240,240,794,794,521,521,521,137,137,521,521,521,521,521,521,521,137,137,137,137,535,137,137,137,535,535,535,137,240,535,535,535,535,240,240,240,535,521,521,521,521,521,535,535,535}, + {939,783,796,676,259,643,103,289,15,471,80,80,2,239,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,888,888,888,888,888,888,888,888,888,471,471,2,2,2,2,2,2,2,2,2,2,488,2,2,2,2,2,2,471,471,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,78,471,471,2,2,471,471,2,2,471,471,471,471,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,471,2,2,471,2,2,2,2,2,2,2,2,2,2,2,2,2,2,714,2,714,471,471,471,2,2,2,78,78,78,471,471,471,471,471,471,471,471,471,2,2,714,714,2,471,78,78,471,471,471,471,471,471,471,471,714,714,714,714,893,714,893,893,893,2,888,714,714,19,2,2,714,714,2,714,714,714,2,714,714,2,2,714,2,2,2,78,78,471,2,2,714,2,2,2,2,714,2,2,2,2,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,78,714,714,714,714,714,2,78,78,714,714,2}, + {670,595,333,257,907,413,548,341,327,350,612,700,700,700,700,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,224,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {678,274,695,790,169,701,707,1084,470,123,846,846,217,121,317,2,2,2,83,83,83,83,83,83,83,83,83,2,2,2,2,2,217,217,217,217,217,217,217,83,217,217,217,217,217,217,217,217,2,2,52,52,52,2,217,83,217,217,217,217,83,180,180,180,180,180,180,180,180,180,180,2,2,2,2,217,217,83,52,52,52,2,217,217,217,242,242,242,242,242,2,217,52,52,52,2,52,217,217,217,217,52,337,337,337,337,337,2,217,217,217,2,2,2,217,217,217,217,217,217,217,217,217,2,317,317,317,2,52,217,52,52,2,2,52,52,2,2,2,2,2,2,2,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,217,217,2,2,217,217,2,2,2,2,2,2,2,217,217,217,217,217,217,217,217,217,217,217,2,2,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,52,52,2,2,217,2,2,217,2,2,2,217,217,2,217,217,2,2,2,217,2,2}, + {877,181,375,79,199,256,223,295,135,371,395,354,2,307,944,2,813,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,734,734,734,2,2,2,2,2,2,2,2,2,2,2,813,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {882,417,475,424,311,646,346,207,74,157,590,356,2,2,324,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,34,34,34,34,34,34,34,2,2,2,2,2,2,2,2,2,2,2,34,34,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,34,34,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,34,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {708,442,186,698,345,103,687,463,163,416,416,107,2,2,2,375,375,416,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {865,675,786,568,112,197,225,348,372,497,215,215,2,2,2,2,159,159,150,224,224,141,2,2,2,2,141,141,141,141,141,141,141,2,2,2,2,2,2,2,264,264,264,264,2,141,141,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,141,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,141,2,2,141,2,2,2,2,2,2,2,2,2,2,2,141,141,141,2,2,2,2,141,141,141,141,141,2,141,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,141,141,141,141,2,2,141,141,2,2,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,2,141,141,141,141,2,141,141,141,2,2,2,141,2,2,141,141,2,141,141,141,141,141,141,141,141,141,141,141,2,141,141,141,141,141,141,141,141,141,2,2,2,2,141,141,141,141,141,141,141,141,141,141,141,141}, + {844,244,672,489,839,263,14,233,422,392,8,392,2,2,2,2,2,2,815,815,815,815,257,257,105,105,2,2,2,815,815,815,815,815,2,2,257,257,257,815,815,815,815,815,815,815,815,105,815,815,105,105,105,105,105,815,105,815,815,815,815,815,105,105,257,257,105,105,815,815,815,815,815,257,257,257,257,257,257,815,257,257,105,105,105,815,2,105,105,105,105,105,105,105,105,2,17,17,105,105,2,2,815,815,17,257,105,105,105,105,105,105,105,17,2,815,105,105,105,2,2,2,257,257,105,105,257,257,105,2,2,2,2,2,2,2,2,2,105,105,2,2,2,2,105,105,105,2,2,105,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,815,815,815,815,815,815,815,2,2,2,2,2,2,2,2,2,815,2,2,2,2,815,815,815,815,815,815,815,815,815,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {693,726,117,167,535,725,224,78,716,100,460,299,2,2,2,2,921,744,2,2,2,2,2,378,2,2,178,178,178,2,178,178,2,2,2,2,2,2,2,2,2,2,178,178,2,2,2,2,2,2,2,2,2,2,2,178,178,178,178,178,178,2,2,2,175,2,2,2,2,178,178,178,178,178,395,2,378,378,175,175,178,178,2,178,178,178,178,178,178,178,178,178,178,2,2,178,178,178,178,178,178,178,178,178,178,178,178,178,178,2,2,178,2,2,2,2,2,2,395,395,395,395,395,2,2,178,178,395,178,178,395,395,178,178,178,178,178,178,178,178,178,178,178,178,178,2,2,2,2,2,2,2,178,178,178,2,2,178,178,231,178,231,2,2,395,395,178,178,2,2,2,178,178,178,178,2,231,395,395,395,395,178,178,178,395,2,231,178,178,178,231,231,2,231,231,437,395,395,395,437,437,437,178,178,178,178,2,437,2,178,178,178,2,2,2,2,2,2,2,2,178,178,2,2,2,2,2,2,2,178,2,2,2,2,178,2,2,178,178,2,2,2,2,178,2,2,2,2,178,178,2,178,178,2,2,2}, + {898,559,396,742,51,143,411,221,116,756,756,756,2,2,2,701,701,2,2,2,2,240,225,256,322,322,240,240,240,240,240,322,2,2,322,322,240,240,240,240,240,2,120,8,745,2,2,120,120,303,303,60,60,60,128,128,60,8,60,4,745,745,745,745,2,2,745,745,745,745,745,745,256,256,256,256,256,704,704,704,704,704,745,745,745,745,704,704,704,704,704,704,2,2,704,704,704,754,754,754,745,745,704,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,754,754,754,754,754,754,754,754,745,754,754,754,745,745,745,745,745,745,745,745,745,745,704,754,745,745,745,745,745,704,745,745,745,745,745,745,745,754,754,754,754,754,754,754,745,754,745,745,745,745,745,745,745,745,131,131,754,754,754,754,754,754,754,745,745,745,745,704,704,704,704,704,704,704,704,704,34,34,704,704,704,704,704,704,704,704,754,745,745,745,745,745,754,754,754,745,745,754,745,745,578,578,578,578,571,571,548,22,44,11,11,11,262,262,491,228,228,228,624,624,624,624,624,737,737,624,624,624,774,774,134,134,352}, + {697,540,358,391,932,309,103,73,35,353,353,503,2,2,353,134,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,902,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {982,579,548,413,416,103,71,101,1039,526,684,684,2,2,656,2,2,2,2,2,2,2,2,2,2,2,656,656,656,2,656,656,656,656,656,656,656,656,2,656,2,656,656,656,656,656,656,656,656,656,656,656,656,656,2,656,2,656,2,2,2,2,656,656,2,2,2,656,656,656,656,656,656,2,2,2,2,656,656,656,656,656,656,656,1097,1097,1097,1097,1097,1097,1097,1097,2,656,1097,2,2,1097,1097,656,656,656,656,656,656,656,2,2,2,2,656,656,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,656,656,2,2,2,2,2,656,656,656,656,2,2,656,656,656,2,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,2,656,656,2,656,656,656,656}, + {695,881,335,126,429,476,772,667,974,98,433,49,129,129,2,2,2,2,2,2,2,2,2,2,544,2,544,2,2,2,2,544,544,2,2,544,544,544,544,544,544,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,544,544,544,544,2,2,2,2,2,298,2,2,544,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,544,2,544,2,2,2,2,544,544,2,2,2,2,544,544,544,544,2,129,544,544,544,2,544,544,544,544,129,544,544,544,544,544,544,544,129,544,129,129,129,544,544,544,2,2,2,544,544,544,544,129,129,544,544,544,544,129,544,544,544,544,544,544,544,544,544,544,544,129,129,544,544,129,129,129,544,544,544,544,544,129,129,544,544,544,544,129,544,544,544,129,129,544,544,544,544,544,2,544,544,544,544,129,544,544,544,544,544,544,544,544,544,544,129,129,129,129,544,544,544,544,544,544,2,2,544,2,2,544,544,544,2,2,2,2,2,2,2,2,544,544,544,544,544,544,2,2,2,2,2,164,544,544,2,2,2,2,2,2,2,2,2,2}, + {859,361,215,569,255,378,543,436,220,34,105,105,816,816,816,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,585,2,2,2,2,2,2,585,585,585,585,585,585,585,2,2,2,2,2,2,2,2,2,2,2,585,585,585,585,2,2,2,438,438,438,205,585,585,585,2,2,585,585,585,585,585,585,2,2,2,2,2,2,2,2,2,2,585,585,585,585,2,585,585,585,585,585,585,585,585,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,585,2,2,2,2,2,585,438,438,585,585,585,585,585,585,585,585,585,2,816,816,585,585,585,585,585,585,585,585,585,585,585,585,585,585,2,2,2,585,2,2,2,2,2,2,2,2,2,2,585,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,56,8,14,2,2,2,164,164,223,223,223,223,223,223,223,223,32,32,297,297,297,2,297,297}, + {705,770,134,178,940,944,654,600,46,797,797,591,2,145,616,2,2,2,2,2,2,389,389,2,122,2,2,2,389,389,909,389,389,389,389,389,389,389,389,389,909,909,909,909,909,616,616,909,909,909,909,616,389,389,389,616,909,909,909,909,909,909,909,909,706,2,389,389,389,389,389,909,909,909,909,909,909,909,909,909,122,122,2,909,909,909,192,909,909,909,909,192,192,192,192,616,909,909,909,389,616,909,909,909,909,909,909,909,909,192,2,2,2,133,133,133,133,133,133,389,389,133,133,133,133,133,192,192,192,192,192,192,706,706,706,706,706,706,706,706,202,389,202,909,909,909,202,616,616,616,616,909,909,909,909,909,192,192,192,192,192,192,202,202,202,202,202,909,202,202,202,909,909,909,909,909,909,2,2,616,909,909,909,909,909,909,909,909,2,909,909,909,909,2,2,909,909,909,909,122,122,202,909,202,202,202,909,2,549,549,549,2,549,549,2,2,2,2,2,2,2,2,2,909,2,2,2,2,2,2,2,2,2,2,2,2,616,616,909,2,2,909,909,2,2,909,909,2,2,909,909,909,909,909,909,122}, + {642,757,247,513,372,54,546,971,271,61,61,1018,2,143,332,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,238,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {988,271,675,163,379,108,48,472,870,485,485,18,2,485,528,528,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,556,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,586,2,2,2,2,2,586,2,2,2,2,2,2,586,2,586,586,2,586,586,586,586,586,2,586,586,528,2,586,586,2,586,586,586,586,528,528,528,586,528,528,528,2,528,528,586,586,586,528,586,203,2,586,586,586,586,2,528,528,528,586,586,586,586,586,586,586,586,528,528,528,528,528,586,586,556,2,2,586,586,2,2,528,556,528,528,556,586,556,586,586,586,2,528,528,556,528,2,556,2,2,586,528,528,528,528,586,586,586,586,2,2,556,528,556,556,528,528,528,528,528,528,528,528,528,528,528,528,528,528}, + {865,827,614,74,725,685,724,190,178,272,835,722,2,35,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,643,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,49,49,2,2,2,237,237,2,237,237,237,2,2,2,237,237,237,237,237,237,237,2,237,2,237,237,2,2,2,2,237,2,2,2,2,2,237,237,237,237,237,237,237,237,237,2,237,237,2,2,2,2,237,237,237,237,237,237,2,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,2,2,2,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,508,508,508,282,282,282,237,237,237,237,237,237,237,237,237,237,237,282,282,282,2,2,237,237,2,2,2,2,2,49,49,49,49,237,2,237,237,2,2,237,237}, + {923,397,722,186,203,575,24,144,36,526,206,787,12,100,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,624,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,624,2,2,624,2,2,2,2,2,2,2,2,624,2,2,624,2,2,2,2,2,2,2,2,2,624,2,2,2,2,247,247,2,2,2,2,2,2,526,2,2,2,2,2,624,624,624,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,624,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,624,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,624,2,624,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,624,624,2,624,624,624,624,2,624,2,2,2,624,32,2,2,2,334,193,360,193,360,360,118,360,1084,1084,1084,360,1084,1084,1084}, + {718,359,103,558,684,560,67,35,120,342,680,265,265,265,2,2,265,2,2,2,2,2,2,2,2,2,430,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,430,430,2,2,2,2,2,2,2,2,2,2,2,2,430,2,775,775,2,2,2,775,2,2,2,2,2,2,2,2,2,775,775,775,775,775,775,775,2,2,2,2,2,2,2,2,2,2,2,2,2,2,430,2,775,775,2,2,2,2,2,2,2,2,2,775,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,775,775,775,2,430,430,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,430,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,430,2,2,430,430,430,430,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {927,493,988,194,97,1006,377,578,105,248,707,784,98,784,2,2,2,2,2,2,2,2,2,370,370,2,370,2,2,2,2,2,2,2,2,2,2,370,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,370,370,370,370,370,370,370,370,2,2,2,113,113,370,2,2,2,2,2,2,2,2,2,2,2,2,2,356,2,2,356,2,2,2,2,2,2,2,2,2,2,2,2,356,370,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,370,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,113,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {900,455,485,601,353,69,67,965,25,226,314,314,883,923,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,843,843,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,156,156,2,156,2,2,2,2,2,2,2,2,2,2,2,2,2,2,156,156,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,156,156,2,2,2}, + {903,259,153,106,289,916,861,41,441,368,131,131,262,671,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,802,802,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,802,802,802,802,802,802,802,160,160,160,2,2,802,2,2,2,802,802,2,802,2,2,2,517,517,2,2,2,802,802,2,2,2,2,2,2,802,802,802,802,2,2,2,802,802,802,2,2,802,2,2,2,2,2,2,2,2,2,2,2,2,2,802,802,2,2,2,2,160,2,160,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,160,160,160,160,160,160,802,802,802,802,802,160,160,160,160,2,160,2,2,2,160,160,160,160,160,160,160,160,160,160,160,160,2,160,160,2,160,160,2,2,2,2,2,2,2,2,2,2,802,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {945,358,160,196,82,403,362,195,376,877,521,336,521,77,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,579,579,579,2,2,2,2,2,2,579,579,2,2,579,2,2,2,2,2,2,2,579,579,2,2,2,2,2,2,2,2,2,579,579,579,579,2,2,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,579,2,2,2,2,2,2,2,2,2,579,2,2,2,2,2,579,579,579,579,579,579,579,579,579,2,579,579,579,579,579,579,579,579,579,579,492,2,492,2,2,2,2,2,2,2,579,579,2,2,2,2,2,2,2,2,492,2,579,579,2,2,2,2,2,2,2,2,2,2,492,2,2,2,2,492,492,492,492,492,492,492,492,2,2,579,579,579,2,579,579,579,2,579,579,2,579,579,579,579,492,2,492,579,579,579,579,579,2,2,579,2,2,2,2,2,2,2,2,2,492,492,492,492,579,579,579,579,2,2,2,492,492,492,492,492,2,2,230,492,492,492,230,230,230,230,492,230,579,2,2,2,2,2,230}, + {912,516,108,555,306,274,55,197,565,174,659,208,441,441,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,214,808,808,808,808,808,808,808,808,382,2,2,2,2,2,2,382,808,2,2,808,808,808,808,2,2,808,808,808,808,808,808,808,808,808,808,808,2,382,2,2,214,214,214,214,2,2,2,2,2,2,808,808,808,808,808,2,2,2,2,2,2,2,2,2,2,2,214,214,214,2,2,2,2,2,2,2,2,214,214,2,2,214,2,214,2,2,2,2,2,189,189,189,2,382,382,382,382,2,2,2,2,214,214,382,382,214,214,2,2,2,2,2,214,214,214,214,214,226,226,226,226,2,2,226,214,2,2,214,214,214,214,214,214,214,214,214,189,189,189,2,189,382,382,382,382,382,382,382,382,382,2,382,214,214,214,214,2,214,2,2,214,2,2,2,2,214,2}, + {753,242,194,619,345,94,463,485,163,85,412,575,270,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,149,149,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,149,149,149,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {940,226,320,666,269,54,542,174,109,290,754,524,649,2,202,2,2,2,2,2,2,2,776,202,776,776,776,2,2,202,202,202,202,202,202,202,202,202,202,776,202,202,202,776,776,202,170,170,170,170,170,170,170,170,170,170,170,170,202,202,202,113,113,113,57,57,57,113,113,57,113,113,113,113,113,113,113,113,113,703,113,113,703,703,703,703,703,703,703,703,703,703,703,703,703,703,2,2,57,57,202,202,202,202,202,504,2,2,2,2,2,2,703,2,703,703,2,2,2,703,703,703,703,113,2,2,2,2,2,202,2,2,2,105,105,105,105,105,105,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {915,210,456,377,303,237,225,521,621,175,569,20,124,2,601,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {672,652,792,253,796,404,171,90,406,433,43,159,72,2,2,372,2,540,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,540,540,540,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,261,261,261,261,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {733,439,537,37,149,650,916,443,743,621,921,664,664,2,2,2,2,2,682,523,523,523,2,2,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,2,682,682,523,523,523,523,682,682,523,523,682,2,523,682,523,523,2,2,2,523,523,523,523,523,155,155,523,2,2,682,682,2,682,682,682,682,682,682,682,682,682,682,682,523,523,523,2,2,2,2,2,2,2,2,2,2,682,523,2,2,2,523,523,523,523,682,523,523,523,523,523,523,523,682,523,682,523,523,682,682,682,682,682,682,523,523,523,523,523,523,523,523,523,523,523,523,2,2,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,682,523,523,682,682,682,682,682,682,682,682,523,523,523,523,523,523,523,523,523,523,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,2,2,378,378,378,523,2,2,2,2,378,378,378,378,682,682,682,682,682,682,2,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682}, + {982,344,812,567,243,52,246,369,439,205,600,739,730,2,2,2,61,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,289,2,2,2,2,2,2,2,2,2,2,2,2,2,289,289,289,289,2,289,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {982,604,126,65,633,657,22,776,161,45,725,44,4,2,2,2,2,2,2,2,2,2,269,269,2,2,2,2,2,2,2,2,2,2,269,600,600,269,269,269,269,2,2,269,269,269,2,269,269,2,269,269,2,269,2,269,269,269,2,2,269,269,269,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,600,600,2,600,600,600,2,2,2,2,269,269,2,2,600,600,2,2,600,269,2,2,2,2,2,269,269,2,2,269,2,2,269,269,269,269,269,2,2,2,2,2,2,2,269,269,2,2,2,2,1121,1121,1121,1121,1121,1121,1121,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,2,2,2,600,269,269,2,269,269,269,269,269,269,269,269,269,269,269,269,269,269,2,2,2,2,269,269,269,269,269,269,269,221,221,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,600,269,269,600,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269}, + {745,600,284,1117,459,1135,300,52,845,331,334,334,334,2,334,334,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,353,353,353,353,353,353,353,2,2,2,2,2,448,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1160,2,2,2,2,2,2,2,2,2,353,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {936,409,217,57,574,395,481,245,548,268,447,598,375,2,192,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,735,735,2,2,2,735,735,735,735,2,2,2,2,735,2,2,735,2,2,2,735,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,735,735,735,735,735,735,735,2,2,2,735,735,2,2,735,735,735,735,735,2,2,2,2,2,2,2,2,2,2,735,735,735,735,735,735,735,735,2,2,2,735,735,735,735,735,735,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,735,2,2,2,2,2,2,2,2,2,735,2,2,2,2,2,2,2,2}, + {986,241,233,45,721,325,350,222,35,1065,1065,1065,1065,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,250,2,250,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,250,2,2,2,2,2,2,250,2,2,2,2,2,2,2,2,2,250,2,2,2,250,250,250,2,2,250,250,2,250,250,2,250,2,2,2,250,250,250,250,250,2,250,2,2,2,2,2,250,250,250,2,2,2,2,2,2,2,2,2,2,2,2,2,2,250,2,2,2,2,2,2,2,2,250,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,250,250,2,2,2,2,2,2,2,2,2,2,2,2,2,2,250,250,250,250,250,250,250,250,250,250,250,250,250,250,2,2,250,2,169,2,250,250,2,250,2,250,2,2,2,2,169,169,2,250,250,250,169,250}, + {755,796,877,981,259,194,1180,215,90,658,662,662,662,2,36,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {981,626,987,827,466,458,578,346,475,223,223,223,342,1058,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,728,728,728,728,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,223,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,39,2,2,39,39,2,2,2,39,2,2,2,39,728,39,728,728,728,728,2,2,2,2,2,728,2,2,728,216,39,39,39,2,728,223,728,216,216,728,728,728,39,728,728,2,728,728,2,2,2,728,728,728,728,728,728,728,728,728,728,2,728,728,728,728,728,728,216,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,223,728,223,223,728,728,216,216,216,216,728,728,728,728,223,728,728,728,728,39,728,728,728,728,728,39,728,728,223,728,728,223,223,39,39,39,39,39,2,2,39,39,39,2,2,2,2,2,2,2,223,223,223,39,39,39,39,39,39,39,39,39,2,2,2,2,223,2,2,39,39,39,39}, + {949,422,941,491,66,786,592,429,307,123,40,478,478,478,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,36,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,788,788,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,788,2,2,2,2,2,2,2,2,2,2,788,2,2,2,2,2,2,2,2,2,2,2,2,2,788,788,2,788,2}, + {992,723,625,251,431,544,309,466,700,644,484,837,904,320,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,316,471,2,2,4,4,2,2,4,16,316,2,2,816,502,57,204,57,248,57,248,638,638,638,82,82,1024,316,316,316,36,36,36,36,36,36,36,36,36,2,36,36,2,2,2,36,36,36,36,36,36,36,36,36,153,2,153,36,36,36,36,36,36,36,36,36,36,36,541,2,2,36,241,241,36,36,2,153,153,153,153,153,36,36,576,576,576,36,36,36,36,153,9,9,520,632,1067,466,520,1067,839,839,839,839,839,1067,281,281,281,281,281,281,281,281,281,281,560,560,281,281,334,281,281,632,632,632,632,541,589,36,471,471,471,471,153,153,153,153,589,36,36,471,153,153,153,153,541,471,653,653,653,653,653,589,589,589,589,589,653,653,653,153,153,653,653,653,153,153,153,153,653,153,153,2,153,153,36,36,153,471,153,153,153,153,153,153,153,153}, + {1077,496,819,340,974,122,39,1209,819,18,461,648,648,394,2,2,2,2,2,2,61,2,2,2,2,2,394,2,2,2,2,394,394,394,394,394,394,394,394,2,394,394,2,2,394,2,394,2,394,394,394,2,2,394,2,2,2,2,2,2,394,394,394,2,2,2,2,394,2,2,2,2,2,394,394,394,394,394,2,394,394,394,394,394,61,2,394,394,394,394,2,394,2,2,2,2,394,2,2,394,2,2,2,2,2,2,2,2,2,665,665,665,665,665,665,394,394,394,394,394,394,394,2,2,2,2,394,2,2,2,394,394,394,394,394,665,665,394,665,665,665,665,665,665,665,394,394,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,394,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,394,394,2,394,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,394,2,2,2,394,394,394}, + {999,674,212,673,279,579,462,754,89,866,345,110,110,887,2,2,2,2,2,707,707,2,2,2,2,2,2,2,2,2,2,707,707,707,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,509,509,2,509,2,2,2,509,509,509,509,2,2,2,2,2,2,2,2,509,509,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,509,509,2,2,2,2,2,2,2,2,2,2}, + {1083,356,367,357,559,213,606,477,71,103,790,103,299,299,2,2,2,2,2,2,406,406,2,2,2,2,2,2,2,2,2,2,2,2,2,818,2,2,818,818,2,818,2,2,2,818,818,2,2,2,2,818,818,2,2,2,2,2,2,818,818,818,818,818,818,818,818,818,818,2,2,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,2,818,818,818,818,818,2,818,818,818,818,818,818,818,818,818,818,818,818,818,2,2,2,2,818,818,818,818,818,818,818,2,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,2,818,818,2,2,818,818,818,818,818,818,818,818,818,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,818,818,818,818,818,818,818,818,2,2,2,818,818,2,2,2,2,818,2,2,2,2,2,2,2,2,2,818,456,456,456,456,456,456,456,456,818,456,456,2,818,818,2,2,2,818,818,818,818,818,456,456,2,2,818,818}, + {1005,260,389,960,501,714,118,73,334,1019,704,204,504,205,822,822,2,2,2,2,2,2,2,2,2,2,684,2,2,2,2,2,2,2,2,2,2,2,2,2,2,671,671,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,671,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {738,749,769,610,306,326,328,578,479,840,840,840,68,192,2,150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,150,150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,150,150,2,2,2,2,2,150,2,2,2,2,2,2,2,150,2,2,2,2,2,2,2,2,2,150,150,150,150,150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,630,630,2,150,150,150,150,335,335,335,335,335,2,335,150,150,150,630,630,2,2,630,2,2,335,2,2,2,2,2,2,2,2,2,2,2,2,2,150,150,150,150,150,150,2,150,150,150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1010,937,449,474,154,456,766,318,275,444,709,2,778,778,778,806,779,779,2,2,2,2,2,2,2,2,806,2,2,2,287,287,287,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,287,287,2,2,2,287,2,2,2,2,2,2,2,2,2,2,2,2,2,2,8,2,2,2,2,298,298,298,442,442,442,266,266,256,1024,287,4,2,287,287,287,2,2,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,326,46,23,23,23,251,23,682,251,251,670,614,614,98,368,368,368,374,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,669,669,669,669,669,669,669,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,669,669,669,287,287,287,287,287,287,287,287,287,2,669,287,287,287,287,669,669,669}, + {1011,780,134,945,183,42,741,25,252,164,205,222,222,222,147,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,622,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,622,622,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,963,963,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,622,2,2,2,2,2}, + {1118,427,294,404,268,217,922,515,19,1045,1045,2,833,291,448,2,2,2,2,2,2,2,2,2,175,2,2,2,2,2,2,2,2,2,2,2,175,175,2,175,2,2,175,175,175,175,2,2,2,2,2,2,175,175,175,175,2,2,2,2,2,2,2,2,187,187,187,187,175,175,175,175,175,175,175,175,175,175,175,2,2,187,175,2,2,175,175,2,2,2,2,175,175,175,175,175,175,175,175,175,2,187,187,187,187,187,2,2,187,187,187,187,187,187,187,187,175,175,175,175,175,175,175,175,175,175,175,175,829,187,187,829,829,399,399,399,399,187,187,187,399,175,175,175,175,11,11,11,11,11,11,399,399,399,399,399,399,262,11,2,175,175,175,399,399,2,399,175,175,175,175,175,175,175,11,11,11,11,11,11,11,11,11,11,11,187,175,175,175,175,175,175,175,175,175,175,175,175,399,175,175,399,175,175,175,175,175,175,175,175,175,175,175,399,175,175,175,175,175,175,399,175,175,175,175,175,175,175,175,399,829,11,11,11,175,175,175,175,175,2,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399}, + {1094,640,912,223,67,472,623,623,1244,65,1009,1209,1209,812,387,2,2,2,513,2,2,2,2,2,2,2,2,2,2,2,1209,234,234,234,234,234,2,234,234,2,234,234,234,234,234,234,234,2,234,234,234,234,234,234,234,234,234,234,234,234,234,2,2,2,2,2,1209,1209,1209,2,2,2,2,2,2,1209,1209,234,234,234,234,234,234,234,234,234,234,234,234,832,832,832,832,832,832,832,2,513,513,2,2,832,438,2,438,832,832,832,832,832,2,832,2,2,2,234,234,2,832,2,832,832,234,438,438,2,2,2,2,234,2,541,541,513,513,513,2,2,513,513,2,2,2,2,2,431,431,431,2,2,2,2,2,2,513,513,438,438,438,438,438,438,438,438,438,438,438,513,438,234,513,513,513,513,513,513,513,513,234,832,832,832,832,832,832,513,513,513,234,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,513,513,2,513,2,2,2,2,2,513,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {722,375,264,390,515,498,1161,391,884,551,238,2,2,825,549,2,2,2,551,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,408,408,2,2,2,408,408,2,2,2,408,408,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {792,250,299,210,496,682,94,207,220,227,227,2,2,227,73,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,844,844,844,844,844,2,913,913,2,2,2,2,2,2,2,2,2,2,2,844,844,844,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,844,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,844,2,2,2,2,2,2,2,2,2,2,2,2,844,2,2,2,844,2,2,2,2,2,2,2,844,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,844,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1022,409,93,359,983,345,280,280,104,940,940,2,2,382,1039,2,2,2,2,831,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,831,831,831,2,831,2,2,2,2,2,2,831,831,2,2,2,2,2,831,831,2,2,1039,2,2,2,2,2,2,2,4,4,4,2,2,4,4,8,16,2,2,2,150,556,391,391,391,391,1200,524,16,16,524,256,524,1039,4,4,4,1039,4,1039,2,2,2,831,831,287,831,2,2,2,782,782,2,2,2,2,831,831,831,831,2,831,2,2,2,2,2,831,831,831,2,1039,2,2,2,831,831,2,8,1039,2,8,2,2,8,8,2,4,4,42,2,2,4,4,8,42,2,2,2,150,679,679,679,391,391,524,524,524,256,256,256,256,256,256,256,8,782,8,782,2,782,782,782,831,16,831,2,2,782,782,782,2,2,464,464,464,464,464,262,262,262,2,2,996,996,996,996,996,996,996,996,2,996,996,996,831,2,8,8,8,8,8,262,8,67,67,831,4,42,2,2,4,4,8,42,560,2,2,150,679,679,679,391,391,1140,1140,1140,1140,1140,1140,1140,1140,560,560,560,1140,560}, + {1027,925,413,335,327,826,250,122,293,773,564,541,420,420,420,774,763,2,2,2,2,2,2,900,110,110,2,763,2,2,2,2,763,763,763,763,763,763,763,110,110,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,110,2,2,2,2,2,2,2,2,2,2,8,2,2,2,2,1083,641,727,727,154,932,500,110,110,110,110,359,359,359,763,763,110,2,110,110,110,763,763,763,110,110,763,110,110,110,763,763,763,110,110,763,763,763,110,110,110,110,110,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,110,110,110,110,763,110,110,110,763,110,110,110,110,110,110,110,110,110,110,763,110,110,110,110,110,110,110,110,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,1255,679,27,27,27,1027,1027,1027,774,773,774,1005,1005,567,773,773,773,773,774,774,774,774,431,431,431,431,431,431,431,431,158,158,158,158,158,763,197}, + {1028,730,807,119,209,146,230,498,164,309,309,2,2,2,693,912,430,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {997,525,680,120,466,728,288,110,1082,544,572,2,2,663,290,290,2,2,754,2,2,2,2,2,582,582,582,582,582,2,2,2,2,2,582,582,582,582,582,582,582,582,582,582,2,582,582,582,290,290,290,441,441,290,2,582,582,582,441,441,582,582,582,582,582,441,441,441,441,441,290,290,290,290,290,2,266,266,266,266,266,266,2,2,441,266,441,441,441,441,582,441,441,441,2,2,2,441,441,441,441,441,441,441,2,2,2,2,2,2,2,2,2,2,2,582,2,2,2,2,441,2,582,582,582,2,582,441,2,2,290,290,2,2,2,2,2,2,2,2,2,2,2,2,582,2,330,2,2,2,2,582,582,290,290,2,2,582,2,582,2,2,2,2,2,2,582,2,2,2,2,2,2,2,2,2,2,2,266,266,582,2,2,582,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,266,582,582,582,2,2,2,2,2,2,290,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,582,582,290,2,2,290,290,582,582,290,290,290,290,290,582,582,582,582,582,582,582,290,582,582,582,582,582,582,441}, + {1055,395,795,561,222,85,294,433,377,89,89,2,2,2,456,821,2,2,821,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,821,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,821,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,821,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,821,821,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,821,2,2,2,2,2,2,2,821,821,2,2,2,2,2,2,2,2,2,2,821,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {997,614,240,638,755,575,874,321,600,235,665,2,2,2,154,154,767,767,2,767,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,165,2,2,767,767,767,767,767,767,767,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {802,298,672,424,104,623,152,159,476,760,66,2,2,2,215,215,490,490,490,2,2,2,2,2,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,2,2,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,2,448,448,448,448,448,448,2,2,2,2,2,490,490,490,490,490,490,490,490,490,490,490,2,2,2,2,2,2,2,613,613,613,613,613,613,613,613,613,613,613,613,613,613,613,2,2,2,2,2,2,2,2,2,2,490,2,490,2,2,490,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,945,945,2,2,2,2,2,2,2,2,2,2,2,2,2,2,490,490,490,490,2,2,2,2,2,2,2,2,2,2,550,550,550,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1128,788,124,501,561,1015,419,787,48,620,705,2,2,2,2,88,18,2,215,215,215,2,2,215,215,2,2,2,215,2,2,2,2,2,2,2,2,2,2,2,2,2,2,215,215,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,215,215,215,215,2,2,2,2,215,2,2,215,2,2,215,215,215,215,215,215,215,2,2,215,215,215,2,2,215,215,215,215,2,215,215,215,215,215,215,215,215,215,215,215,215,215,215,2,215,215,215,215,215,215,215,2,215,215,215,215,215,215,215,215,215,2,215,215,215,2,2,2,215,215,215,215,2,215,215,215,2,2,2,2,2,2,2,2,2,215,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,215,2,2,215,215,215,215,215,215,2,2,2,2,2,2,2,215,2,2,215,215,2,2,2,2,2,2,2,2,2,2,2}, + {807,433,721,434,449,242,170,842,21,4,642,2,2,2,2,2,4,4,4,4,2,856,856,856,885,885,856,856,856,856,856,885,272,272,856,856,856,272,272,272,272,867,867,856,867,867,867,2,867,867,885,885,2,885,885,885,2,2,2,2,2,2,2,2,745,2,2,2,2,885,885,2,2,2,2,2,867,867,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,856,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,885,885,2,885,2,2,2,2,2,2,2,885,885,2,2,885,2,2,2,2,885,2,885,885,2,885,885,885,885,885,885,885,885,885,885,885,885,885,885,2,2,2,885,885,885,2,2,2,2,2,2,885,885,885,885,885,885,2,885,885,2,2,2,2,2,2,2,2,2,2}, + {755,612,235,265,369,855,414,362,478,518,518,2,2,64,16,8,32,4,16,8,8,1041,501,1041,2,2,64,16,8,8,16,270,526,526,526,943,135,135,135,943,571,571,627,135,892,892,627,223,526,526,2,1070,1070,1070,1070,1070,1070,1070,1070,435,435,439,205,205,205,474,474,367,367,367,367,367,367,295,295,295,135,135,571,270,571,627,763,763,492,132,1008,166,33,33,33,83,83,83,163,75,75,75,111,83,111,111,997,83,1008,1008,1008,1008,1008,1008,321,321,321,321,321,135,135,571,270,571,1070,295,295,435,435,435,439,205,205,205,474,474,367,367,367,367,367,367,367,367,295,295,75,295,295,295,1159,75,75,75,75,838,838,838,135,355,355,355,355,136,136,838,109,492,109,109,461,109,461,461,272,272,109,109,234,234,109,977,977,977,33,33,83,83,83,109,117,117,377,136,957,387,17,17,17,902,902,902,555,555,578,578,555,902,902,902,902,902,902,902,902,902,461,461,461,461,355,461,355,555,461,461,461,461,461,578,578,578,297,461,461,284,284,1022,1022,1022,373,284,373,373,373,373,238,710,284,280,280,941,280,280,941,941,388,284,280,941}, + {1004,719,1041,460,551,516,135,417,130,698,698,2,2,2,655,655,655,655,655,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,642,642,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,642,642,2,2,2,2,642,642,642,642,2,642,642,642,642,642,642,642,642,642,2,642,642,642,2,2,642,642,642,642,642,642,642,642,2,642,2,642,642,642,642,2,642,642,642,642,642,642,2,2,2,2,2,642,642,642,642,642,642,642,642,642,642,642,642,642,642,642,2,2,642,642,642,2,642,642,2,642,455,2,2,2,2,2,642,642,642,642,642,642,642,642,642,642,2,642,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,642,2,2,642,2,347,347,2,2,2,2,2,2,347,347,347,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1017,568,930,1113,556,1299,114,881,690,475,641,2,2,2,779,779,103,2,528,2,2,2,2,2,2,528,528,2,2,910,910,2,2,2,2,2,2,103,2,2,2,103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,528,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,103,103,2,2,2,2,2,910,910,910,910,910,910,910,910,910,910,2,2,528,528,528,2,528,528,528,528,528,103,103,103,2,528,528,2,2,2,2,103,103,103,2,103,103,287,287,287,528,528,287,287,287,2,2,2,287,287,528,103,103,103,103,103,103,2,103,103,103,103,910,910,910,2,2,2,2,103,103,103,103,103,528,528,528,287,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2,2,2,528,528,528,528,528,528}, + {814,473,286,752,476,779,420,569,742,164,490,2,2,2,793,812,812,812,2,812,812,2,2,526,526,812,526,2,2,2,526,526,2,2,2,411,411,411,411,2,2,812,812,812,812,812,812,526,526,526,526,526,526,526,2,2,526,526,526,526,526,526,526,526,526,526,526,526,526,2,2,2,2,2,2,2,2,2,2,2,526,526,526,526,526,2,526,526,526,2,2,2,2,2,2,2,2,2,2,2,2,411,411,411,2,2,2,2,2,526,2,2,2,2,2,526,526,812,2,812,812,487,411,2,411,411,487,2,2,2,2,2,2,2,411,411,2,411,411,526,526,2,526,526,526,2,2,2,2,2,2,2,2,2,2,526,2,2,2,2,2,2,526,2,2,2,2,2,2,2,2,2,526,2,411,151,151,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,526,2,2,2,2,2,2,2}, + {818,301,273,664,206,971,895,590,912,523,523,2,2,452,384,255,2,130,130,130,130,865,2,2,2,255,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,785,785,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,785,2,2,2,2,2,2,2,2,2,2,2,785,785,785,785,785,785,2,785,785,785,785,2,2,2,2,785,785,255,255,785,785,785,785,785,785,785,785,785,785,785,2,785,785,2,785,785,2,2,2,2,785,785,785,785,785,785,785,785,785,785,785,785,785,785,255,255,255,785,785,785,785,785,2,785,785,785,785,785,785,785,255,2,255,785,785,785,785,785,785,2,785,785,785,785,255,255,255,255,255,255,255,255,2,785}, + {820,249,292,1017,1017,143,403,37,433,456,515,2,2,69,640,2,2,2,2,2,2,2,2,2,2,2,2,824,824,824,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,681,681,681,2,2,2,681,681,681,681,681,681,681,681,681,681,2,878,878,878,681,681,2,681,681,824,2,2,878,681,824,824,824,824,2,681,681,681,681,681,681,824,824,681,681,824,878,2,2,2,173,173,2,2,173,824,2,2,2,681,2,2,2,2,878,2,2,878,2,2,2,2,824,824,824,2,2,878,878,2,2,2,2,173,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,681,2,2,2,2,2,2,824,2,2,2,2,824,2,2,824,2,2,2,2,2,824,824,824,824,824,824,2,2,824,824,2,2,2,2,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824}, + {1078,527,589,244,170,892,827,606,1165,773,189,2,2,240,22,2,2,2,2,2,2,759,621,621,621,621,621,621,621,621,621,621,2,2,2,759,759,2,2,2,2,2,2,2,2,2,2,2,621,621,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,142,142,415,142,142,142,415,415,415,415,415,415,2,2,2,415,415,142,142,142,2,2,142,142,142,142,2,2,418,418,418,2,2,2,2,2,2,2,2,2,2,415,2,415,418,418,418,415,415,2,2,415,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,418,418,2,2,2,2,2,2,2,2,2,621,2,2,2,2,415,415,415,2,2,2,2,2,2,621,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {865,1132,428,582,254,408,536,376,825,116,116,1266,1266,1266,705,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,474,474,2,2,2,2,2,2,2,2,2,2,2,2,2,2,227,227,227,227,227,227,474,474,227,474,2,775,775,775,775,775,775,775,775,775,227,227,2,474,474,474,474,227,2,2,2,474,227,227,227,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,2,2,474,474,775,474,474,474,474,474,474,474,227,227,534,534,227,227,474,474,474,474,590,1266,534,474,474,474,1266,1266,1266,1266,227,227,227,534,534,534,534,534,1266,1266,1266,202,227,1266,474,474,474,474,474,2,2,227,227,474,474,474,474,1266,474,1266,705,1266,1266,1266,1266,1266,1266,1266,1266,534,1266,1266,474,1266,227,227,705,227,227,227,2,2,2,2,2,2,2,1266,2,2,1266,1266,1266,1266,1266,1266,1266,1266,2,534,2,1266,1266,2,2,2,227,2,2,2,2,2,1266,2,2,534,534,2,2,227,474,474,227,227,227,2,2,474,2,534,534,1266,1266,1266,1266,2,1266,1266,474,474,474,2,474,474,474,202,202,202,2,2,2,2}, + {1062,268,389,1325,598,276,1270,48,572,439,302,2,544,609,544,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,158,2,2,2,2,2,2,2,2,158,158,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,158,158,158,2,2,2,158,158,158,2,2,2,158,158}, + {1065,517,247,1142,247,674,385,120,592,177,98,2,956,364,275,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,687,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,376,376,376,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,687,2,2,2,2,2,2,275,275,275,275,687,687,687,2,376,376,376,2,687,376,687,687,2,2,376,376,376,2,687,687,687,376,376,376,376,2,376,376,376,376,376,376,376,2,2,2,2,2,2,376,376,376,376,687,376,687,687,687,687,2,376,2,376,687,376,376,376,376,376,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687}, + {635,503,594,203,456,1246,221,396,1151,178,66,2,781,587,86,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,938,938,938,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,339,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,190,2,2,2,2,2,2,2,2,339,2,339,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,114,2,2,2,2,2,2,2,2,2,2,2,2,339,339,339,339,2,339,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,339,2,2,2,2,2}, + {1157,395,446,280,1130,695,668,271,111,882,477,615,615,615,2,2,2,2,2,2,2,2,615,615,615,615,615,615,615,2,305,2,2,305,305,305,305,305,2,2,2,2,2,2,2,248,305,305,493,493,305,305,305,615,2,2,2,2,2,305,248,248,305,305,248,305,2,2,2,305,305,305,2,120,120,120,120,305,305,305,305,305,305,305,305,305,305,2,2,2,2,2,2,305,2,2,2,2,2,2,305,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,305,305,2,2,305,305,2,2,2,305,305,305,305,2,2,2,2,305,2,2,305,305,305,305,2,2,305,305,305,2,2,305,2,305,305,305,2,2,305,305,2,2,305,305,2,305,305,305,305,305,305,2,2,2,2,2,2,2,305,305,2,305,2,2,2,2,2,2,305,305,305,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,305,2,2,2,305,305,305,305,305,305,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,305,305,305,305,2,305}, + {830,397,932,519,818,113,367,694,88,535,535,414,343,175,2,2,2,2,2,2,2,2,2,2,414,864,2,2,864,864,864,864,864,864,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,2,1052,1024,95,95,95,307,307,760,760,144,222,414,222,165,165,864,864,2,864,864,864,864,864,864,864,222,222,222,864,864,864,98,864,864,144,144,144,144,864,864,144,864,864,864,864,864,222,864,864,222,864,165,165,165,165,134,222,27,27,725,592,725,476,134,134,725,725,105,864,476,476,476,476,310,222,222,144,144,144,310,144,144,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,72,165,165,165,144,144,144,144,144,144,144,72,630,86,9,9,9,144,222,222,310,310,310,144,81,627,222,222,222,630,630,98,98,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,98,98,165,165,165,165,98,165,165,165,165,165,165,165,660,374,1011,660,434,348,49,49,49,936,639,639,639,409,409,409,409,409,409,660,660,678,660,98,165,165,165,165,392}, + {793,463,329,730,390,551,968,92,511,470,424,563,672,563,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,652,652,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,548,548,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,652,2,2,2,2,652,652,652,2,652,2,2,2,652,652,2,2,652,652,652,652,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,652,652,2,2}, + {1050,749,809,479,87,757,288,172,597,722,4,418,418,390,2,2,2,2,2,390,390,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,390,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,390,2,390,390,2,2,390,390,390,390,390,2,2,2,390,390,390,2,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,2,2,390,390,2,2,2,390,390,390,390,2,390,390,390,390,390,390,2,390,390,390,390,390,390,390,390,2,390,390,390,637,637,390,390,390,390,390,390,390,390,390,390,390,390,390,390,887,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,2,2,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,2,2,2,2,2,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390}, + {1084,402,130,1077,276,154,1068,779,511,853,83,757,757,38,2,2,2,2,2,202,2,2,2,2,2,2,2,2,2,2,757,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,757,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,187,187,2,2,2,2,187,187,2,187,2,2,757,2,2,2,2,2,2,2,757,757,2,2,2,2,187,2,2,2,2}, + {1090,255,271,110,159,235,158,236,271,815,1300,416,416,416,2,2,416,416,2,2,2,399,791,791,2,791,2,2,2,2,791,791,2,2,2,100,100,100,100,100,100,2,4,791,2,4,2,4,2,2,2,256,98,98,98,802,802,802,802,802,175,175,175,175,175,2,2,389,802,2,389,389,389,389,389,389,389,389,10,10,389,389,389,389,389,389,2,389,389,389,389,389,2,4,389,389,389,389,389,389,7,7,791,98,98,98,802,802,4,354,802,98,98,175,175,506,506,506,506,389,2,389,389,399,389,389,306,306,306,265,306,306,306,306,389,389,265,265,265,265,265,140,140,140,140,140,389,389,265,140,140,2,2,791,98,98,265,265,268,268,268,268,268,268,268,268,306,268,265,265,265,265,265,265,389,265,265,389,389,389,389,389,389,1090,1020,265,306,306,306,306,643,862,389,389,389,389,320,10,10,40,70,5,5,5,594,134,268,134,140,591,591,140,389,389,389,713,469,713,245,245,245,265,265,265,265,265,265,245,265,265,265,265,265,1090,1090,1090,1090,1090,265,265,265,265,265,265,140,265,265,94,140,140,140,140,265,265,265,265}, + {1058,417,271,172,312,363,184,191,28,183,759,214,759,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,188,2,2,188,2,2,188,188,2,188,188,2,2,2,2,2,2,188,188,188,188,2,188,188,188,188,188,188,2,2,188,2,2,2,2,188,2,2,2,2,2,2,2,188,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,188,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1057,385,263,395,901,274,727,340,1117,263,813,870,858,429,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,903,2,903,2,2,2,2,903,903,903,2,2,2,903,903,903,903,903,903,903,903,947,903,903,2,2,903,2,903,903,2,903,903,2,2,947,2,2,2,2,2,2,2,2,2,2,2,2,947,947,947,947,947,2,2,2,2,2,2,2,2,903,2,2,2,903,2,947,947,947,947,947,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,903,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,947,2,2,2,2,2,2,2,2,2,2,2,2,947,2,2,2,2,2,979,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,947,2,2,2,2,2,2}, + {1102,846,985,1085,764,124,764,51,874,612,478,801,478,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,561,561,561,2,2,2,2,38,2,2,2,2,38,38,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,38,38,38,38,38,38,38,2,2,38,38,38,38,2,2,38,38,38,38,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1120,665,311,695,319,1033,511,297,602,1030,1030,714,240,240,2,2,2,2,2,2,2,2,2,2,2,2,2,953,2,2,2,2,2,2,2,369,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,369,2,369,369,369,369,369,2,2,2,2,2,2,369,369,369,953,2,953,369,2,953,953,953,2,2,369,369,369,953,953,369,2,2,2,2,369,369,2,369,369,369,2,2,369,369,369,369,369,953,2,2,953,953,953,953,369,2,953,2,2,953,369,2,369,2,369,369,369,369,369,2,2,2,369,369,2,369,2,2,369,369,2,2,2,2,2,369,369,369,369,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,369,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {814,293,763,661,575,631,524,636,112,691,595,1103,405,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,345,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,630,630,2,2,630,630,2,630,630,630,630,630,630,630,630,2,630,630,630,630,630,630,630,630,2,630,630,630,630,630,630,630,630,2,630,2,630,2,2,2,2,2,2,2,2,630,630,630,630,630,630,2,2,2,2,2,2,2,2,2,2,2,2,2,2,630,2,2,2,2,2,2,2,2,2,2,630,630,630,2,630}, + {1106,662,258,190,1315,214,530,263,318,904,877,1317,318,2,510,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,40,40,40,2,2,2,2,2,2,2,2,2,2}, + {1206,469,299,1052,655,114,189,213,321,188,64,475,475,2,2,662,662,662,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,824,2,662,662,662,662,662,2,2,2,2,824,824,824,2,2,824,2,2,2,2,2,2,2,2,824,2,2,2,2,18,2,2,2,2,2,2,2,2,2,2,824,2,2,2,2,2,2,2,2,662,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,824,824,824,2,2,824,824,824,824,824,824,2,824,824,2,2,2,2,2}, + {1120,1159,358,347,838,207,357,167,476,52,672,38,822,2,2,2,2,2,2,213,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,213,213,213,213,213,2,2,2,2,2,2,2,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,2,28,28,213,213,213,213,2,2,28,28,28,28,28,2,213,213,213,213,28,28,28,213,213,213,213,28,28,28,28,28,28,28,28,2,28,28,213,382,382,382,382,382,213,213,382,382,382,382,382,213,213,213,213,213,28,28,213,28,28,28,28,28,28,28,270,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,213,28,270,28,270,270,270,270,270,270,270,270,270,270,28,28,270,28,270,270,220,28,28,2,2,28,28,28,28,28,28,28,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,2,270,270,270,270,2,270,270,270,270,270,270,270,270,270,2,2,270,270,270,270,270,270,270,270,270,270,270,270,270,270}, + {1076,596,553,545,79,727,881,121,298,169,639,368,695,115,115,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,115,115,115,115,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,849,2,849,849,849,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,115,115,2,115,115,115,2,2,2,2,2,2,115,115,115,2,2,2,2,2,2,2,2,2,2,2,115,115,115,115,115,2,2,2,2,2,2,2,2,2,2,2,2,2,2,115,115,115,2,2,115,2,2,2,2,2,2,2,2,849,115,115,2,2,2,2,2,2,2,2,2,2,2,2,849,849,849,2,849,849,849,115,115,2,2,2,2,2,849,2,2,2,2,2,115,2,2,2,2,2,2,2,849,2,2,115,115,115,2,115,115,2,2,2,849,849,2,2,849,849,849,2,2,849,849,849,849,849,849,849,849,849,115,2,2,2,849,849,2,849,115,849,2,2,2,2,2,2,2,2,849,2,2,849,2,2,2}, + {1130,177,84,673,350,543,543,95,128,954,430,884,884,2,884,884,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,779,2,779,577,577,577,577,577,577,779,779,779,779,779,2,884,2,2,2,2,483,2,2,483,2,483,2,2,483,2,2,2,2,2,483,2,2,2,2,2,2,2,2,483,483,779,2,2,2,483,483,2,2,2,2,483,2,2,483,73,779,2,73,73,483,483,483,2,2,2,636,2,2,636,636,636,2,636,2,2,2,2,2,2,2,779,2,2,2,2,2,2,2,636,483,483,779,779,779,779,2,2,779,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,884,2,2,2,2,2,2,2,2,2,2,2,2,2,779,2,2,2,2,2,2,2,2,483,483,2,2,2,636,636,2,779,636,779,779,779,779,2,779,636,2,2,2,2,636,636,636,636,779,483,779,779,2,2,515,515,515,515,636,779,779,779,779,779}, + {1222,412,430,707,691,746,131,607,311,607,112,217,912,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,412,2,2,2,2,2,2,2,2,2,2,2,2,2,2,412,412,412,412,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,412,2,412,2,2,2,2,2,2,412,2,412,412,2,2,412,412,2,2,412,2,2,412,2,2,2,2,2,2,2,2,2,2,2,2,2,412,412,412,412,412,412,2,412,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,412,412,412,2,2,412,412,412,2,412,412,412,412,412,412,412,412,2,2,2,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412}, + {820,461,681,382,273,273,358,274,274,91,887,676,386,2,676,676,2,2,2,2,2,2,2,200,2,2,2,2,200,2,2,2,2,2,2,200,200,200,200,200,200,2,2,2,200,2,2,2,253,2,2,2,2,2,612,253,2,2,2,2,2,2,2,2,253,253,2,2,2,2,2,2,200,200,2,2,2,2,2,253,253,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,200,200,200,200,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1096,1166,209,407,1127,400,974,322,428,906,631,134,171,2,2,2,2,664,664,664,2,2,2,2,2,2,2,2,2,2,2,2,2,664,664,664,664,553,553,553,2,553,553,553,553,553,553,2,2,553,553,2,2,2,2,553,553,664,664,664,664,553,664,664,664,664,664,664,664,673,673,2,2,383,383,553,553,664,925,383,925,2,664,925,925,925,383,553,929,929,929,553,553,664,664,664,664,553,553,925,553,2,553,664,664,664,664,664,664,664,664,2,2,2,673,673,673,673,925,925,925,925,383,383,673,2,673,673,673,2,2,553,2,2,2,2,2,2,2,2,2,2,2,2,664,664,2,2,73,73,73,73,73,73,73,73,73,2,925,925,925,664,2,925,664,2,925,925,2,925,2,2,383,383,383,925,2,2,1316,1316,2,925,925,925,383,925,925,925,2,2,2,925,925,925,925,664,2,925,925,925,925,664,925,925,664,2,2,383,383,925,383,383,2,2,2,2,383,664,2,925,925,925,925,925,925,2,925,2,2,2,2,2,2,2,664,664,2,2,664,2,664,664,2,925,925,925,925,664,2,2,2,2,2,2,664,664}, + {1091,946,437,51,527,802,597,639,587,645,510,586,586,2,2,2,2,2,2,2,2,2,2,2,2,2,2,168,168,168,168,168,2,2,2,2,2,2,168,168,2,2,512,286,4,4,168,168,168,168,168,168,2,2,2,256,239,64,128,128,374,374,21,21,84,875,239,128,2,2,343,343,343,343,343,343,343,2,2,343,343,343,343,168,168,343,343,343,343,2,875,378,378,875,343,343,343,343,343,343,343,168,168,168,168,375,375,375,2,2,256,239,64,566,343,343,343,343,343,343,875,343,343,343,343,343,343,343,343,343,378,343,2,875,875,875,875,875,343,343,343,893,343,875,875,875,875,875,343,893,343,343,343,343,893,966,966,966,966,262,262,1308,23,23,23,636,432,432,311,311,1178,622,1178,1178,1178,622,262,893,893,893,483,262,483,483,511,483,427,427,378,92,92,92,92,92,432,432,432,686,686,547,172,378,378,378,378,378,378,378,378,1066,378,1066,1066,875,7,7,7,7,7,7,7,7,7,7,7,378,378,378,378,378,875,875,378,343,343,343,343,343,343,343,343,547,547,343,547,378,378,378,378,378,378,378,378,172,378,378}, + {1148,585,868,1282,666,417,733,1231,515,332,1213,337,337,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,393,393,2,2,393,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,862,2,862,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1103,276,174,408,233,170,955,108,530,354,585,38,677,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,476,627,2,2,627,627,2,2,2,627,627,476,627,627,627,2,2,2,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,2,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,476,476,476,2,627,627,627,2,2,2,2,627,2,2,2,2,627,627,627,2,2,2,627,627,627,627,2,2,2,627,627,627,2,2,2,627,627,627,2,627,2,2,2,627,627,627,627,2,2,2,2,2,2,2,2,627,627,627,627,627,627,627,2,627,627,627,627,627,2,627,627,627,2,2,476,627,627,627,2,2,2,2,627,2,627,2,2,627,627,627,627,627,627,2,2,627,2,2,2,2,627,627,627,627,627,627,627,627,627,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,627,2,2,2,2,2,2,2,2,2,627,2,2,2,627,627,2,2,2,627,627,627,627,2,476,627,627,627,627,627,627}, + {1167,478,1169,1053,563,371,108,772,413,497,1338,991,660,2,2,2,2,2,2,2,2,2,2,2,2,27,2,2,2,2,2,2,2,2,729,2,2,2,2,2,2,2,729,2,729,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,81,81,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,729,729,2,729,729,2,729,2,2,729,729,2,729,729,2,2,729}, + {1108,437,1160,324,868,686,361,399,786,1161,1161,707,731,731,655,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,731,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,731,731,2,2,2,731,731,731,731,731,2,731,731,731,731,2,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,2,731,731,731,731,731,731,2,731,731,2,731,731,731,731,731,731,731,731,731,2,2,2,2,2,731,731,731,731,731,2,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,2,2,731,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,731,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,731,2,2,2,2,2,2,731,2,2,731,731,2,2,2,2,2,2,2,2,2,2,2}, + {1116,331,280,422,1109,341,570,243,849,241,566,61,608,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,55,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,207,2,2,2,2,2,2,2,2,2,2,55,2,2,2,2,2,2,2,2,2,2,2,2,545,545,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {898,782,478,1208,196,983,608,537,196,1141,141,296,715,715,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1099,1187,300,240,268,413,1366,634,184,768,773,365,783,224,783,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,845,845,845,224,2,2,39,39,224,39,39,2,2,2,2,2,224,224,2,224,224,224,2,224,2,224,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,224,224,224,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,224,2,2,2,2,2,2,2,2,2,2,2,2,2,2,224,2,2,2,2,224,224,224,2,2,224,2,224,2,224,2,2,224,224,2,2,2,2,2,2,2,2,2,224,2,2}, + {1158,945,300,1115,205,495,435,302,187,774,774,843,843,284,284,2,2,2,2,909,933,933,933,2,2,909,909,2,2,2,2,909,909,909,909,933,2,2,933,933,2,2,909,2,2,2,2,2,909,2,2,2,2,2,2,909,909,909,909,909,2,2,2,2,2,933,2,2,2,2,933,933,2,2,2,2,933,2,933,2,2,2,2,2,2,2,2,2,2,2,933,933,933,933,933,2,2,2,933,933,933,933,933,2,2,933,2,2,204,204,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,933,2,2,2,933,933,933,2,933,2,2,933,2,2,2,2,507,507,2,2,2,2,2,2,2,2,2,2,2,2,2,2,933,933,2,2,933,933,933,933,933,933,909,933,909,909,933,933,933,2,933,933,933,933,933,933,933,2,2,2,933,933,933,933,933,933,2,933,933,2,933,933,933,933,933,933,933,933,933,2,2,933,933,933,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,933,2,2,2,2,2,2,2}, + {904,660,1283,46,33,124,416,218,152,970,1241,305,307,307,307,260,894,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,424,424,2,424,424,894,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,254,894,2,2,2,2,2,2,894,894,894,894,2,2,2,2,2,160,857,857,414,414,414,894,894,894,894,894,894,894,894,894,894,894,424,424,424,894,424,424,424,424,424,424,424,262,262,262,262,262,262,262,262,894,894,894,424,2,2,894,894,894,424,894,894,894,894,894,894,894,424,262,894,894,894,894,262,424,262,262,262,262,262,262,262,262,894,894,894,894,894,424,424,262,262,262,262,262,262,894,894,894,262,262,142,142,894,894,894,894,894,894,894,894,894,894,424,2,2,160,424,424,424,142,142,142,142,142,142,262,262,262,262,894,894,424,894,894,894,894,894,894,254,254,254,142,254,254,142,424,894,894,894,894,894,894,894,894,894,894,894,894,142,424,262,254,262,262,262,262,262}, + {1127,553,287,58,739,99,514,739,766,42,580,241,598,598,936,936,936,629,629,629,629,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,629,2,2,2,2,629,2,629,2,2,2,2,2,629,2,2,629,629,629,2,2,629,629,2,629,2,2,629,629,2,2,629,629,629,629,629,629,629,2,2,2,629,2,2,629,2,2,2,2,2,2,629,629,2,2,2,2,2,2,2,2,629,2,2,2,2,2,2,2,2,2,629,629,629,629,629,629,629,629,629,629,2,2,629,629,629,629,629,629,629,629,629,629,629,629,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,884,629,629,629,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,629,629,629,629,2,2,2,629,629,202,202,202,202,202,2,629,629,629,629,629,629,629,629,629,629,629,2,629,629,629,629,629,629,884,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,202,202,202}, + {1142,370,287,925,307,1232,129,11,1284,1056,33,33,536,521,2,1286,2,2,2,2,2,2,2,2,2,2,2,2,847,847,847,847,2,2,2,847,847,847,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,847,847,2,847,2,2,2,2,2,2,2,2,847,847,2,2,2,2,2,2,2,2,2,2,2,2,2,847,847,2,2,2,2,2,847,2,2,2,847,2,2,2,847,847,2,2,847,847,847,847,847,2,847,847,847,2,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,2,2,2,2,2,2,847,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1140,814,528,677,84,1192,305,637,335,451,103,325,77,969,2,651,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1106,1106,1106,1106,1106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,68,2,2,2,2,2,2,2,2,2,2,1106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,651,68,68,68,2,2,2,2,68,2,68,68,2,2,2,2,2,2,2,2,2,68,68,2,2,2,2,2,2,2,2,68,68,2,2,2,68,68,68,68,68,68,68,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1297,600,419,985,846,493,186,109,147,239,197,762,762,327,327,1004,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,553,553,553,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,995,995,2,553,553,553,553,2,995,995,2,995,2,2,995,995,995,995,2,2,2,2,2,2,995,2,2,2,995,2,995,995,995,995,2,995,2,2,2,995,995,995,995,995,2,2,2,995,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,995,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,995,995,995,995,995,995,995,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,995,2,995,995,2,995,2}, + {1181,615,482,653,238,130,313,506,98,1314,730,730,730,730,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,897,897,388,521,521,1135,1135,494,494,494,494,494,535,494,535,494,2,2,2,364,2,2,2,2,2,2,2,2,2,2,2,2,308,2}, + {921,613,628,1288,111,150,191,233,633,83,387,602,105,394,2,2,2,2,2,2,2,351,2,2,351,351,351,2,2,2,351,351,351,351,2,2,2,2,2,2,2,2,2,351,351,2,2,351,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,351,2,2,2,2,351,351,351,351,2,2,2,2,2,2,2,2,2,2,2,2,2,2,351,2,2,2,2,2,2,2,2,2,2,351,351,2,2,2,2,2,2,2,351,2,2,2,2,351,351,351,2,2,2,2,2,2,2,2,388,351,351,2,2,2,2,2,2,2,351,2,2,2,2,2,2,2,2,2,2,2,2,2,2,351,351,351,2,2,2,2,351,351,2,2,351,351,351,351,2,2,2,388,351,351,351,351,351,351,351,351,2,2,351,2,351,351,351,351,351,351,351,2,351,351,351,351,351,2,351,2,2,351,2,351,2,351,2,2,2,2,351,351,351,2,2,2,2,2,2,2,2,351,351,351,351,351,2,351,351,2,2,351,2,351,351,2,351,351,351,2,351,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1192,555,586,516,1288,733,64,653,364,273,421,215,75,75,2,2,2,2,2,2,953,953,953,953,8,383,383,2,161,383,953,953,383,953,383,383,383,2,2,953,383,383,395,395,395,395,2,383,576,953,953,953,953,2,383,383,2,2,383,383,383,235,235,235,235,235,235,161,161,161,40,40,2,953,235,235,2,2,128,32,32,128,205,953,953,953,953,205,205,205,205,205,2,2,953,953,953,953,953,953,235,953,953,953,953,383,383,383,383,953,383,383,383,383,953,953,953,953,383,953,953,953,205,205,205,953,37,37,953,953,953,953,953,953,235,235,953,953,953,953,953,953,953,953,383,383,953,383,383,383,438,438,424,53,53,53,228,228,228,228,228,228,449,449,449,57,57,57,167,1066,1066,576,576,576,235,235,235,953,576,953,576,576,576,576,198,198,953,953,953,953,953,198,235,235,235,576,576,576,576,576,576,576,576,198,576,576,576,576,161,161,161,161,161,161,161,383,576,198,953,953,953,576,576,576,235,235,235,235,235,235,235,198,161,161,161,161,161,161,161,161,161,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235}, + {1160,617,505,1205,374,906,23,408,194,91,91,91,585,984,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,421,2,421,421,421,2,2,2,421,421,2,2,2,2,2,2,421,2,2,2,2,2,2,2,2,421,421,421,421,421,421,421,2,2,2,2,2,421,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,151,151,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,421,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1203,1101,497,352,254,309,464,123,607,1080,265,1145,1145,1145,284,284,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,376,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,376,2,2,2,2,2,2,2,2,2,2,2,520,2,2,2,2,2,2,2,2,2,2,2,520,520,2,2,2,2,2,2,2,520,520,2,2,2,376,376,2,2,376,376,376,376,376,376,376,520,376,376,376,376,376,376,376,376,376,2,2,2,376,376,376,2,2,2,2,284,2,2,2,520}, + {1210,656,1026,782,802,442,1319,734,794,165,165,796,93,796,2,829,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,829,2,2,2,2,2,2,2,2,829,829,829,2,2,2,2,829,829,829,829,829,829,370,829,829,2,2,2,829,829,829,829,829,829,829,829,829,829,829,829,2,2,2,829,829,2,2,829,829,2,2,829,829,829,829,2,370,370,370,370,370,2,2,370,370,2,829,829,829,829,2,2,2,2,2,829,829,829,829,641,641,641,370,2,829,370,829,829,829,829,829,829,370,829,829,641,370,370,370,370,65,65,65,65,65,65,370,370,829,829,829,641,641,829,829,2,829,641,2,2,829,829,829,370,370,370,370,370,641,641,641,641,2,2,641,370,370,370,370,2,2,2,370,370,2,370,829,829,829,829,829,829,641,641,370,2,370,641,2,2,2,2,2,2,2,829,829,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,370,641,641,641,641,2,370,370,2,370,370,370,370,2,2,370,641,641,641,641,641,641,641,641,641}, + {963,646,721,1161,219,667,1088,485,692,692,663,535,553,662,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,686,686,2,686,686,2,2,553,2,2,2,2,2,2,2,2,2,2,553,553,553,553,553,2,2,553,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,553,553,553,2,2,2,2,2,2,2,2,686,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,553,553,2,553,2,2,2,2,2,2,2,2,553,553,553,553,553,2,2,2,2,1158,686,553,553,2,2,2,2,2,2,2,553,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,686,2,2,2,2,2,2,2,2,2,686,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {966,590,140,297,189,844,633,12,847,742,742,244,281,34,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1475,1475,1475,1475,1475,1475,1475,1475,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1208,1208,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,76,76,76,2,2,2,2,2,2,2,2,2,2,1208,2,2,2,2,76,76,76,2,1208,1208,2,1208,1208,2,76}, + {941,231,1038,309,173,770,413,560,855,660,721,1103,721,721,721,2,2,2,2,2,2,2,2,2,2,2,2,174,2,2,2,2,2,2,2,2,2,2,174,174,174,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,174,174,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,570,570,570,570,2,174,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,174,174,174,174,174,174,2,2,174,174,174,174,174,174,174,174,570,570,2,174,174,174,174,174,174,2,2,2,2,2,2,2,570,570,2,2,2,2,2,2,2,2,174,174,174,2,174,174,174,174,174,570,570,174,174,174,174,174,174,174,174,174,174,174,174,570,570,570,174,570,570,174,174,2,2,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,570,570,570,174,174,174,570,174,174,174,174,174,174,174,174,174,174,174,174,2,2,570,570,174,174}, + {1213,305,656,983,1399,1196,692,986,9,339,754,308,2,308,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1037,2,2,2,2,2,2,2,2,2,2,2,2,2,1037,1037,1037,1037,1037,2,2,2,2,128,128,512,1430,643,8,8,543,429,2,2,429,429,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1037,2,2,2,2,2,2,2,2,2,2,2,2,2,1037,1037,1057,1057,1057,2,2,2,2,482,482,512,512,1430,8,8,8,2,2,2,429,429,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1037,2,2,2,2,2,2,2,2,2,2,2,2,8,8,8,1057,1057,2,2,2,2,2,482,482,512,512,512,8,8,8,2,2,2,429,429,2,2,2,2,2,2,2,2,2,2,2,2,2,2,755,755,755,755,755,29,29,29,755,755,755,755,2,755,755,65,65,65,65,65,65,65,65,65,65,65,2,2,482,482,512,512,512,512,8,755,755,755,67,67,67,67,67,67,67,67,67,67,755,680,42,755,755,755,755,755,755,755,755,755,755,755,828,755}, + {972,768,1109,523,642,546,1452,29,1296,13,813,813,2,1496,2,2,2,2,2,2,2,165,165,165,165,165,165,2,2,2,2,544,165,2,2,2,2,2,2,2,2,2,2,2,165,165,2,2,2,2,2,79,79,544,544,544,165,165,165,2,2,2,2,544,544,544,544,544,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,165,165,165,165,165,165,165,2,2,2,2,2,2,165,165,2,561,2,2,2,2,2,2,165,165,544,2,544,2,2,2,544,544,544,2,2,2,2,2,2,2,2,2,2,544,544,884,884,544,544,544,544,544,544,544,2,2,544,544,544,561,165,165,544,544,544,544,544,544,544,544,165,165,561,544,561,561,561,561,165,544,544,544,561,561,165,544,544,544,544,544,544,544,544,544,544,79,79,79,79,79,79,79,79,79,79,79,544,544,544,165,165,165,165,165,544,544,544,544,544,544,544,544,544,561,544,544,544,544,544,544,544,544,165,165,165,544,544,544,544,544,544,544,544,561,561,561,561,561,561,561,561,561,561,544,544,544,544,544,544,544,544}, + {1330,671,528,831,1426,735,33,425,364,119,363,978,2,761,483,476,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,999,2,2,2,2,2,2,999,2,1043,2,2,1043,2,2,2,2,2,2,999,999,999,2,2,2,2,999,999,999,2,999,999,2,999,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,999,999,2,999,999,999,999,999,999,999,2,999,2,2,999,999,2,2,2,2,999,999,999,999,999,999,999,999,999,999,2,2,2,2,2,2,2,2,2,2,2,2,2,2,999,999,999,999,999,999,999,999,999,999,2,2,2,2,2,2,2,2,999,999,2,2,2,2,999,2,2,2,2,2,2,2,2,999,999,999,999,999,2,2,2,2,2,2,2,2,2,2,2,2,999,2,999,999,999,999,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,999,2,2,999,999,999,999,999,2,999,999,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,999,999,2,2,2,2,2,2,2,2,2,2,2}, + {1188,217,838,237,379,202,785,949,479,169,348,872,2,872,872,2,2,2,2,2,2,1028,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1028,1028,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,537,2,2,2,2,2,2,2,2,2,2,395,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,395,2,2,2,1028,1028,1028,395,2,2,866,866,866,866,2,395,2,2,2,2,207,207,207,395,395,207,207,2,2,2,207,207,207,207,207,207,2,207,2,2,2,2,2,2,2,2,2,2,2,866,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1190,286,513,881,390,215,387,130,749,554,1110,519,160,160,160,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,401,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1247,353,973,217,1044,1318,1115,319,203,390,1244,225,2,2,508,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,365,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,666,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,666,2,2,2,666,2,2,2,2}, + {893,560,132,1420,721,191,568,799,412,22,322,93,2,4,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,57,57,57,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {987,774,678,175,145,264,588,97,1308,6,828,1129,2,2,2,45,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {955,980,753,96,574,259,1327,556,342,1415,1036,1036,478,478,478,478,507,2,2,2,2,151,2,2,317,2,2,2,2,2,595,595,317,800,800,151,151,151,151,2,2,2,151,151,151,151,151,2,2,2,2,2,2,2,151,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,151,151,2,800,800,800,800,800,2,2,2,674,674,2,2,2,2,800,800,800,800,800,800,800,237,2,2,237,237,151,151,151,151,151,151,151,800,2,317,317,2,800,800,2,800}, + {882,1038,211,110,942,337,1305,1225,661,183,381,381,2,2,2,2,347,2,2,2,2,2,2,2,600,431,431,431,431,431,431,431,431,2,2,431,431,2,2,2,2,431,431,431,2,2,2,431,600,2,2,2,2,137,137,137,137,137,137,137,137,2,431,431,600,2,431,431,600,431,2,600,431,431,431,431,463,463,600,600,600,431,600,431,431,2,431,431,170,431,431,431,431,431,431,431,431,2,600,431,431,431,431,600,431,431,431,431,431,431,1329,431,431,431,431,431,431,431,431,431,600,600,600,600,600,600,431,431,465,465,465,431,431,600,600,600,600,600,600,600,600,600,600,600,600,600,463,431,431,431,431,431,431,431,431,600,600,2,600,600,600,600,431,431,431,431,2,600,463,600,600,600,431,431,431,431,600,600,600,431,431,2,170,600,431,600,431,600,431,600,431,600,600,600,600,431,431,431,431,431,431,431,431,600,600,600,600,600,600,600,600,463,463,463,463,463,463,2,2,600,600,600,600,600,600,600,600,170,600,600,600,431,431,431,600,2,600,431,431,431,431,600,431,2,2,600,463,463,463,431,431,463,600,600,600,600}, + {1208,486,343,725,677,1204,135,139,924,170,1111,317,2,2,2,2,202,706,202,107,107,107,2,2,706,706,107,107,2,2,2,706,706,2,706,706,2,2,2,706,706,2,706,706,673,673,2,2,2,2,2,2,2,2,2,2,2,2,107,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,673,2,2,164,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,706,706,107,107,164,164,706,343,2,2,164,2,2,673,673,673,164,107,164,164,2,164,164,164,2,2,2,2,107,107,2,2,2,2,2,2,2,2,2,2,2,2,107,107,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,107,107,107,2,2,2,107,107,2,2,107,107,107,107,107,107,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,107,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1259,1017,456,298,443,838,137,744,551,334,36,951,2,2,2,699,718,2,2,984,2,2,2,2,2,2,984,984,2,2,2,2,2,2,2,2,984,2,984,2,2,2,984,984,2,2,2,984,2,984,2,2,2,984,2,2,2,2,2,2,2,2,2,2,2,984,2,2,984,984,984,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,121,2,984,984,2,2,2,984,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,984,2,2,2,2,2,2,2,121,121,2,984,984,984,236,236,2,2,2,2,2,2,984,2,2,2,2,121,2,2,2,2,121,121,121,121,2,2,2,2,2,2,2,2,121,121,121,121,984,984,984,984,984,2,121,121,121,121,121,121,121,984,984,984,121,121,121,121,121,121,121,121,2,2,121,121,121,121,121,121,121}, + {1212,1186,641,284,565,636,895,82,690,117,184,184,2,2,2,397,902,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,902,902,902,902,902,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1263,370,132,635,381,47,537,179,1192,301,1282,33,2,2,2,1553,2,2,2,2,2,2,2,2,2,2,2,307,307,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,307,307,307,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,307,307,2,2,2,2,2,2,2,2,2,307,2,2,2,2,307,2,307,307,2,2,2,2,2,2,2,2,307,307,307,2,2,307,307,307,307,307,307,307,307,2,2,2,2,2,2,2,2,307,307,307,307,2,307,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,307,307,307,307,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,307,314}, + {1223,433,252,572,424,82,221,107,382,430,203,461,2,915,362,964,2,2,964,2,2,2,2,2,964,964,964,964,964,485,485,485,485,485,485,2,2,964,964,485,485,485,485,485,485,2,2,485,2,2,2,2,2,2,485,485,485,485,167,2,434,2,2,2,2,964,964,2,2,2,2,485,485,2,2,167,2,2,2,2,2,2,434,2,938,938,938,2,2,2,2,485,2,2,2,2,2,2,2,2,2,2,2,2,485,485,485,485,485,485,485,2,2,2,2,2,167,167,167,167,167,167,167,167,167,167,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,434,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1015,593,112,1408,51,104,199,221,931,1010,928,928,2,2,878,878,2,2,2,2,731,731,2,731,731,2,731,2,731,731,731,2,2,2,2,2,731,731,731,731,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,731,731,731,2,2,2,731,2,2,2,2,2,2,2,2,2,2,2,2,2,731,731,731,731,731,2,731,731,731,731,731,2,2,2,2,731,731,731,731,731,731,731,731,2,2,731,731,731,731,731,731,2,731,731,731,45,731,2,731,2,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,2,2,731,731,2,731,2,2,2,2,2,2,2,2,2,731,731,731,731,731,2,2,731,2,2,2,731,731,2,731,2,2,731,731,731,731,731,731,731,731,2,2,2,2,2,2,2,2,2,2,2,2,2,2,731,731,2,731,2,731,731,2,2,2,2,2,2,2,2,2,2,2,2,731,731,2,731,731,731,731,731,731,731,731,731,731,731,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,731,731,731,731,731,731,731}, + {1220,410,1193,352,260,434,469,41,1090,961,961,728,2,2,330,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,261,261,261,261,2,261,261,2,261,261,2,261,261,261,261,2,261,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,261,261,261,261,2,2,261,261,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,261,261,2,261,2,2,2,2,2,2,2,2,2,261,2,2,2,2,2,2,2,2,261,261,2,261,261,261,2,2,261,2,261,261,2,2,2,261,261,261,261,261,2,261,2,2,261,2,2,2,261,2,2,2,261,2,2,2,261,261,261,261,2,261,261,261,261,261}, + {898,1043,391,1289,29,830,184,321,1136,85,1133,1082,864,864,2,2,2,2,2,2,2,2,789,789,2,789,789,2,2,789,789,2,381,381,381,2,2,2,709,709,709,709,789,789,2,789,709,709,709,709,2,789,789,789,709,789,789,709,709,709,709,381,381,381,381,709,709,789,789,2,2,2,709,709,709,789,789,2,2,2,2,2,2,2,2,709,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,709,2,2,709,709,2,2,2,2,2,2,2,2,2,2,2,709,2,2,709,709,709,709,709,789,709,709,2,2,2,2,789,2,2,789,789,2,2,2,789,789,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,2,789,789,789,789,789,789,789,789,789,789,789,2,789,789,789,789,2,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789}, + {1223,434,851,152,140,1495,190,397,925,37,1080,430,2,2,204,2,759,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,982,2,982,2,2,2,2,2,2,2,2,2,2,2,982,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,486,486,486,486,982,486,486,2,2,486,486,486,2,2,2,2,2,2,2,744,2,2,2,128,128,441,441,441,710,710,710,710,364,486,486,2,982,982,982,982,982,278,278,2,486,2,2,2,332,2,2,332,278,2,2,2,2,278,278,2,278,486,486,486,486,332,332,2,2,2,332,332,332,278,278,332,278,278,278,278,278,332,486,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,278,486,486,278,332,486,486,486,332,486,332,332,486,486,486,486,486,486,332,332,332,332,332,278,332,278,2,2,128,486,486,486,486,486,278,332,278,278,278,486,278,486,486,486,486,332,332,332,332,332,332,486,486,278,278,278,278,278,486,486,278,486}, + {989,1043,184,232,64,403,284,745,171,171,995,223,380,380,1400,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,874,874,2,2,2,874,874,2,2,874,874,2,874,2,874,2,874,874,2,2,2,2,2,2,874,874,2,2,2,2,874,874,874,2,2,874,874,874,874,874,874,874,874,874,874,874,874,874,874,2,2,874,2,2,2,874,874,874,874,874,874,874,874,874,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,446,446,2,874,874,874,874,874,2,2,874,874,2,874,874,874,874,874,874,874,874,874,874,874,874,874,874,2,2,2,2,2,874,874,874,874,874,874,2,874,874,2,2,2,91,91,2}, + {939,1070,1288,254,973,901,321,109,568,713,336,988,2,946,262,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,235,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1226,1226,1226,1226,1226,2,1226,1226,1226,1226,2,2,2,2,2,1226,1226,2,1226,1226,1226,1226,1226,1226,1226,1226,1226,2,2,1226,1226,1226,1226,1226,1226,1226,1226,1226,1226,1226,2,2,2,1226,2,2,2,1226,1226}, + {1276,636,569,258,325,675,342,85,88,579,833,833,833,833,520,2,2,2,2,520,520,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1203,1203,2,2,2,2,520,2,2,2,2,520,520,2,2,2,2,2,2,2,2,520,2,2,520,2,2,520,520,520,520,520,520,520,520,520,520,520,520,520,520,2,2,520,520,520,2,2,1203,520,520,520,520,2,2,2,1203,1203,2,1203,1203,1203,1203,448,448,448,448,1203,1203,520,1203,520,2,2,520,1203,1203,1203,1203,1203,1203,1203,1203,2,2,2,2,2,2,2,2,2,2,1203,2,2,1203,1203,1203,1203,1203,1203,2,2,2,1203,1203,2,2,2,2,2,520,2,2,1203,1203,2,1203,1203,2,2,2,2,2,2,1203,1203,1203,1203,1203,1203,2,2,2,1203,1203,2,1203,1203,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {982,508,815,214,206,602,448,685,446,572,1549,8,1047,1047,1047,2,2,2,2,2,2,2,363,502,2,2,71,363,2,2,363,363,71,71,71,71,71,71,71,71,71,71,2,832,363,363,363,363,363,2,2,2,2,2,2,2,2,502,363,1433,2,2,2,71,71,832,502,502,832,832,832,832,832,832,502,832,502,2,502,502,502,71,2,2,392,392,392,28,28,28,448,363,363,502,363,363,363,363,363,2,2,363,363,71,502,363,502,502,502,502,502,363,363,363,1342,502,502,502,502,502,502,502,41,71,71,71,1156,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,982,982,982,982,982,982,982,502,502,502,41,41,71,568,527,235,235,235,502,502,502,502,502,502,502,502,982,982,982,982,982,982,982,982,1342,982,982,982,982,982,982,1342,1342,982,982,982,982,982,982,982,982,982,982,502,502,502,982,982,982,982,982,982,982,982,982,982,982,982,982,982,913,913,913,913,913,913,502,502,502,982,982,982,913,913,982,982,982,982,982,982,502,502,502,502,982,502,502,502,502,502}, + {1288,1398,789,514,151,600,1618,1194,1419,441,234,204,1191,438,828,2,857,857,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1110,1110,1110,2,2,2,2,2,2,2,2,1573,2,2,2,2,2,2,1110,2,1110,1110,2,2,2,2,2,2,1110,1110,2,2,2,1110,1110,1110,1110,1110,2,2,2,2,2,2,1110,1110,2,2,2,1110,1110,2,1110,2,2,2,1110,1110,1110,2,2,2,2,2,1110,1110,1110,2,2,1110,1110,1110,2,2,2,2,2,2,1110,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1110,1110,1110,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1110,2,2,2,2,2,2,2,1110,1110,1110,2,1110,1110,1110,1110,1110,1110,1110,2,1110,1110,1110,1110,1110,1110,1110,2,2,2,2,2,2,2,1110,2,2,1110,1110,1110,1110,2,1110,2,2,2,2,2,2,2,1110,1110,1110,1110,1110,1110,2,2}, + {1002,342,1045,757,1008,979,322,240,1211,171,552,123,2,129,129,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,309,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,15,15,15,15,15,2,2,2,2,2,2,2,2,2,2,2,309,2,2,2,2,2,882,2,2,2,2,2,2,2,2,2,2,2,2,2,309,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,309,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,294,294,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1401,402,525,293,97,223,452,808,61,169,1023,1023,886,886,1023,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,85,85,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1019,2,1019,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,773,2,2,2,1128,235,825,228,825,545,228,1202,1202,1202,1202,436,436,436}, + {1001,644,263,164,136,939,624,95,489,1023,1107,331,331,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,505,2,700,2,2,2,2,2,2,2,2,2,2,700,2,700,700,700,2,700,2,2,2,2,2,2,2,2,2,2,2,2,2,2,700,700,700,700,2,2,700,2,2,2,2,2,2,2,2,2,700,2,2,700,2,2,2,700,700,700,700,700,700,2,2,2,4,32,2,2,2,1107,376,376,94,376,201,201,201,201,418,726,201,726,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,700,2,2,74,74,2,2,2,2,700,353,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,700,74,223,223,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,2,2,1107,376,376,376,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378}, + {1011,475,845,532,567,951,663,295,877,1275,227,39,618,683,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,933,933,2,2,933,933,2,933,933,933,933,933,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,933,933,2,2,933,933,2,2,2,933,933,2,933,933,2,933,933,2,2,933,2,2,2,2,933,2,2,933,2,2,2,2,2,933,1393,1393,1393,933,933,933,933,933,933,933,933,933,933,2,2,933,933,933,2,933,933,933,933,2,933,933,933,933,933,933,933,2,933,933,933,933,933,933,933,933,933,933,933,2,933,2,933,2,2,933,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,933,2,2,2,2,2,2,933,933,933,933,933,933,933,933,933,933,933,933,933,933,933,933,933,933,933,933,933,933}, + {1401,741,509,797,47,157,1256,482,1513,899,736,780,780,210,2,2,2,2,783,783,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1047,880,369,402,641,446,639,586,277,396,419,275,825,820,2,2,2,238,238,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,238,2,2,2,281,2,2,281,2,2,2,2,281,281,281,281,281,281,221,221,221,221,221,221,281,2,281,281,281,281,281,281,281,238,281,238,281,2,2,281,281,281,281,281,2,281,281,281,281,281,281,2,2,281,281,281,281,281,281,238,238,238,238,238,238,238,238,238,2,2,2,2,281,2,2,2,2,2,2,281,281,238,238,2,2,2,281,281,2,2,2,2,281,281,2,2,2,2,2,2,281,281,281,2,2,2,238,2,2,2,2,2,281,2,2,2,281,281,281,281,281,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,281,281,2,238,2,2,2,2,2,2,2,281,281,2,281,281,281,2,281,281,2,2,2,2,2,2,2,281,281,2,2,2,281,281,281,281,281,281,281,281,2,2,2,2,2,2,2,2,2,281,281,820,281,2,820}, + {1273,701,831,1294,1580,137,162,415,563,11,92,116,116,116,2,2,2,2,2,2,1029,1029,1029,504,504,877,877,877,877,877,1029,1029,1029,1029,1029,1029,504,504,504,504,504,442,356,356,148,442,442,442,442,442,442,442,442,442,442,442,504,356,442,2,504,504,356,356,356,356,504,356,365,504,504,148,148,2,2,42,2,42,42,42,1346,1346,1346,2,2,2,2,442,442,877,1029,365,119,442,1029,2,1029,1029,365,2,2,2,1029,1029,2,2,504,504,504,1303,890,890,1029,1029,1029,877,877,1029,1029,1029,877,877,877,2,2,877,410,504,2,877,504,504,877,2,877,877,877,877,442,877,877,1029,877,877,877,1029,877,877,1029,877,877,877,877,877,1029,1029,1029,1029,1029,1029,877,1029,2,2,1029,877,877,1029,877,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,877,877,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,2,1029,1029,1029,1029,1029,1029,1029,442,2,2,2,442,1029,1029,2,1029,442,1029,1029,2,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,2,2,1029,1029,1029,365,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029}, + {1335,400,315,412,172,125,568,1024,58,601,398,985,640,577,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,195,195,195,2,2,195,195,2,2,2,195,195,2,2,195,195,195,195,804,195,195,195,110,110,110,110,195,195,2,195,195,110,2,2,2,2,2,2,110,2,110,2,2,195,195,110,195,195,195,195,2,2,2,2,804,804,804,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1453,947,486,485,453,415,1164,684,504,605,422,998,727,727,2,2,2,1136,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1136,2,2,2,1136,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1136,2,2,2,2,2,2,1136,2,2,1136,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1136,1136,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1057,1198,146,529,284,1286,160,135,75,686,648,1425,821,586,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,587,2,2,2,2,2,2,2,2,587,587,299,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,587,587,2,2,2,2,2,2,587,2,2,2,2,587,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,587,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,587,587,587,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,587,2,2,2,2,299,587,2,2}, + {1052,442,936,64,132,1378,1323,161,161,161,230,131,12,12,2,2,2,2,2,2,2,2,2,2,2,998,998,998,998,2,2,2,2,2,2,2,2,2,2,2,515,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,515,515,2,2,2,515,515,515,515,515,515,2,515,449,449,515,515,2,611,611,2,2,2,2,515,2,2,515,2,2,2,2,2,2,2,2,2,515,515,2,2,2,2,2,2,2,2,2,2,2,515,515,2,515,2,2,515,515,515,2,2,515,515,515,515,515,2,515,515,515,2,2,2,2,2,2,2,2,515,515,2,2,515,515,515,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,515,2,515,2,2,2,515,515,515,515,611,2,2,2,515,515,611,515,611,515,449,2,2,515,515,2,2,2,515,515,515,515,515,515,515,515,515,515,515,515,515,515,611,611,611,611,611,611,449,515,449,2,611,2,611,611,611,515,515,515,515,449,449,611,611,449,449,449,449,449,449,449,449,449,449,2,449,449,611,449,515,449,449,449,449,449,449,449,2,611,611,611,449,449}, + {1422,838,234,554,736,243,344,526,1108,33,1303,699,249,305,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1279,681,423,813,806,269,412,420,985,485,761,1013,649,796,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,796,796,2,2,2,2,2,2,796,796,796,796,796,2,796,796,796,796,2,796,796,796,796,2,796,796,796,796,796,796,796,796,2,2,2,796,796,796,796,796,796,796,796,796,796,796,2,2,796,796,796,796,796,1332,2,2,2,796,796,796,796,796,796,796,1332,1332,796,796,796,796,796,796,796,796,796,796,796,796,796,2,2,513,513,513,1332,2,513,796,513,1332,796,513,513,513,513,513,513,796,796,1332,1332,796,513,796,796,796,796,796,796,796,796,796,796,796,796,796,2,796,796,796,796,198,796,796,796,796,796,796,513,513,513,796,796,796,796,796,513,796,1332,2,796,2,1332,1332,1332,1332,796,796,796,796,796,2,796,796,796,796,796,796,796,796,2,796,796,796,796,796,796,796,796,796,796,2,796,796,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1332,2,2,2,2,2,2,2,2,2}, + {938,614,523,557,898,624,178,461,287,985,371,371,260,613,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,593,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,593,593,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,593,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,593,593,593,593,2,2,2,2,2,2,2,2,2,2,2,2,2,2,593,2,2,2,2,2,2,2,2,2,2,2,2,2,2,593,593,593,593,593,593,593,2,2,593}, + {1335,834,652,528,536,523,497,60,173,777,238,59,4,59,4,8,2,2,2,559,559,559,559,559,559,559,2,2,559,559,559,2,2,559,559,559,559,559,559,559,2,2,2,2,2,559,559,559,2,2,2,2,559,2,2,2,2,2,2,2,559,559,559,559,2,2,2,2,559,2,2,2,2,2,559,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,559,2,559,2,2,2,2,2,2,2,2,2,2,2,2,2,2,559,559,559,559,559,559,559,559,559,559,559,559,2,559,559,559,559,559,2,559,559,559,559,2,2,2,559,559,559,559,559,2,559,559,2,2,2,559,559,2,559,2,2,559,559,2,559,2,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559}, + {1040,998,324,93,887,497,1326,443,152,1193,595,80,80,80,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1420,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,221,221,2,2,2,2,2,2,2,2,2,2,1420,1420,1420,2,1420,1420,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1420,1420,1420,2,1420,1420,1420,1420,1420,2,1420,1420,2,1420,1420,1420,1420,1420,1420}, + {1302,1116,283,1006,891,838,768,373,468,968,1178,1178,1269,1269,876,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,663,663,2,2,2,2,2,2,2,2,2,2,2,2,2,663,663,663,2,2,2,2,2,663,663,663,663,663,663,663,663,663,663,663,663,663,663,42,663,663,663,663,42,663,663,663,663,663,42,42,42,42,663,663,663,42,663,663,663,42,42,42,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,42,663,663,2,2,42,663,663,663,2,663,663,663,663,663,663,663,663,663,663,663,2,2,663,663,663,1153,1153,1153,1153,1153,1153,2,2,2,2,2,2,663,663,663,2,2,2,2,2,2,2,2,2,663,2,2,2,2,2,2,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,2,2,663,663,663,663,42}, + {1027,1128,114,395,357,417,848,22,389,1257,734,838,838,301,900,2,90,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,821,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,821,821,2,2,2,2,2,2,2,821,2,821,821,2,2,2,2,511,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,821,42,42,2,2,2,2,2,2,2,2,821,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,821,821,600,600,600,600,600,2,2,821,2,821,821,821,2,821,821,2,2,2,233,2,821,821,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,821,821,821,821,821,821,821,821,821,821,233,2,2,821,821,821,821,821,233,2,2,2,2,2,233,2,233,233}, + {1072,724,717,877,873,369,1031,698,917,1641,1641,1641,53,549,549,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,201,201,201,201,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {987,1243,424,240,53,1150,558,292,1107,574,814,1474,1474,1068,1186,2,2,2,2,2,2,2,2,2,2,2,2,2,2,859,2,2,2,2,2,2,859,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,859,859,859,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,859,859,859,859,2,2,2,859,2,859,2,859,2,2,2,859,859,859,859,2,859,859,2,859,2,859,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,859,2,2,2,2,2,2,2,2,2,2,859,859,859,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,859,859,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1454,1228,375,267,72,301,51,1398,1378,168,838,360,853,853,172,2,2,2,2,2,2,2,2,2,2,2,760,466,466,466,2,2,466,760,760,760,631,631,466,2,2,2,368,368,2,2,2,2,2,2,2,368,638,638,638,368,368,368,368,2,2,2,62,466,2,368,368,368,368,368,368,368,368,368,368,368,2,2,368,368,2,368,368,368,2,62,325,2,2,2,2,2,2,2,368,368,2,2,368,368,368,368,2,2,368,631,2,2,368,2,368,368,368,368,368,368,2,2,374,374,374,374,374,374,368,368,368,368,368,52,52,52,52,2,368,368,368,368,368,368,368,368,851,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,760,368,368,368,368,631,631,631,631,368,368,368,325,368,368,368,325,325,325,325,679,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,325,325,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,760,760,760,760,368,368,368,368,368,368,368,368,368,368,62,62,368,368,368,631,368,368,368,368,368,368,368,368}, + {1040,420,960,882,64,661,292,146,976,427,689,248,248,248,638,2,2,2,2,2,2,2,2,2,2,2,2,861,861,861,2,861,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,861,861,861,2,861,861,861,861,861,861,861,861,861,861,861,861,2,2,861,861,861,861,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,638,2,2,2,2,2,861,861,861,2,861,861,861,861,861,2,2,861,2,2,2,861,861,2,861,861,861,861,2,861,861,2,2,861,861,2,2,861,861,861,2,861,861,861,861,861,2,861,861,2,861,861,2,2,2,2,2,861,861,2,2,861,861,861,861,861,861,861,2,2,861,2}, + {1040,522,666,398,78,208,293,818,134,867,147,147,482,2,4,629,629,629,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,792,792,792,792,792,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,122,2,2,2,2,2,2,2,2,2,2,2,2,2,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,122,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,122,122,122,122,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,122,122,122,122}, + {1041,1090,651,130,72,389,171,237,516,777,937,937,937,168,168,2,336,2,2,2,2,2,2,2,2,2,992,2,992,2,992,2,2,2,2,2,2,992,992,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,992,2,2,2,992,992,992,2,2,992,992,2,992,992,992,992,992,992,992,992,992,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,992,2,2,2,2,2,2,2,2,2,992,992,2,2,2,992,2,992,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,992,992,2,2,2,2,992,992,992,2,2,2,2,2,2,992,992,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,992,992,2,992,2,2,992,992,992,992,2,2,2,2,2,2,992,2,2,2,2,992,2}, + {987,1280,1245,1300,926,676,56,546,541,690,84,42,1000,1383,1383,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,778,778,2,778,778,2,2,2,2,2,2,778,778,778,778,2,2,2,2,2,2,2,2,2,2,2,2,2,2,778,778,2,2,2,2,2,2,2,2,2,2,2,2,778,2,2,2,2,2,2,778,778,778,778,778,778,778,2,2,778,778,778,2,2,2,2,778,2,2,2,778,778,778,778,2,2,778,778,778,778,778,2,778,778,778,2,2,778,778,778,778,778,778,2,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,2,778,778,778,778,778,2,2,778,2,2,2,2,2,2,778,778,778,778,778,2,778,778,778,778,2,778,778,2,2,2,2,2,778,778,778,778,2,778,778,778,778,778,778,778,2,2,2,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778}, + {1324,588,1378,592,1445,1029,759,1296,739,931,363,704,312,704,704,704,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,2,2,298,298,2,2,2,298,298,298,2,2,2,2,2,298,298,298,298,2,2,298,298,2,298,2,2,298,298,298,2,2,2,298,298,298,298,298,298,298,2,2,2,298}, + {1058,454,1557,191,129,297,695,1390,1274,460,923,923,923,2,4,1059,2,2,2,2,2,2,2,2,2,2,2,2,2,1059,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1059,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1059,1059,1059,2,1059,1059,2,2,2,1059,1059,1059,2,2,2,2,1059,1059,2,2,2,1059,1059,2,2,2,1059,1059,1059,1059,1059,1059,1059,1059,1059,1059,1059,1059,1059,947,300,300,300,300,1059,1059,1059,1059,947,1059,2,2,386,386,947,1059,386,386,386,386,386,386,386,386,386,1059,1059,1059,1059,300,1059,1059,947,947,947,2,2,2,2,947,947,947,947,947,1059,1059,1059,1059,947,947,947,1059,1059,1059,947,947,947,947,947,947,947,1059,1059,1059,1059,947,947,947,1059,1059,947,947,947,947,947,947,947,947,947,947,947,947,1059,1059,1059,947,947,947,947,947,947,947,947,947,1059,300,300,386,386,1059,386,300,2,1059,947,947,947,947}, + {1327,572,282,1022,907,1276,409,643,1050,633,187,187,187,2,228,45,2,2,2,2,2,2,320,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1119,2,2,2,2,2,1119,1119,1119,1119,2,2,320,2,2,320,2,2,2,320,1119,2,2,320,320,320,2,320,320,320,2,2,320,320,320,1119,320,320,320,320,320,2,2,320,320,320,320,2,320,2,320,320,2,2,2,2,2,2,2,2,320,2,2,2,2,2,2,2,2,2,320,2,2,2,2,2,2,2,1119,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1395,958,237,101,559,891,560,47,524,747,197,589,589,917,887,887,887,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,431,431,2,2,2,2,2,2,2,2,2,2,2,2,2,2,174,2,2,174,174,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,174,2,2,1086,2,174,2,2,174,174,2,431,2,2,2,2,2,2,2,2,2,2,174,431,431,431,431,174,174,174,174,2,2,174,174,174,431,431,431,431,431,431,431,431,431,431,431,2,431,431,431,431,431,431,431,431,431,431,174,174,174,174,174,174,431,431,431,431,431,431,431,431,431,431,431,174,431,431,431,431,174,174,174,174,431,174,174,174,174,174,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,174,174,1086,174,1086,1086,431,431,174,174,384,431,431,174}, + {1395,529,461,402,194,392,122,781,111,162,780,593,593,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1228,1228,1228,1228,2,2,1228,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1485,1041,1225,331,873,260,335,353,588,1254,1201,1245,1245,2,2,824,726,2,2,2,129,2,2,2,2,2,2,2,2,799,799,799,799,2,2,667,667,667,667,2,667,2,667,667,667,2,2,2,2,2,667,2,2,2,2,2,667,667,2,667,2,667,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,667,2,2,2,2,2,2,2,2,667,799,799,799,799,799,667,2,2,2,2,799,799,799,799,799,667,667,799,799,799,799,667,667,799,799,799,667,667,667,799,799,2,2,2,2,2,2,2,799,799,799,2,2,2,799,2,2,667,799,799,799,799,2,2,799,799,799,667,799,2,667,2,2,799,799,799,799,799,799,799,2,799,799,799,2,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,129,799,799,799,799,799,799,799,799,799,765,799,799,799,799,799,799,799,799,799,799,799,799,667,667,2,667,667,2,667,129,129,799,129,129,129,799,129,667,2,2,667,667,2,799,799,799,129,129,129}, + {1378,541,848,848,347,856,102,104,183,156,395,130,1377,2,2,2,159,159,159,2,2,2,772,2,2,2,2,2,2,2,2,2,2,2,2,772,772,2,772,772,2,2,772,2,2,772,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,772,772,772,772,772,772,2,2,2,2,2,2,223,223,772,772,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1062,212,784,63,252,873,1302,1108,1380,84,1375,1375,1375,2,2,2,375,374,2,980,2,2,2,980,980,980,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,630,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,980,2,2,2,2,2,2,2,630,630,630,630,2,2,2,2,2,2,2,2,2,2,630,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {830,995,146,112,467,345,1480,730,648,1453,1230,520,520,2,2,2,959,959,959,959,959,959,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1384,549,430,781,946,879,901,924,741,114,14,451,36,2,2,2,2,287,287,287,803,803,803,803,2,2,2,803,803,803,803,803,803,2,2,2,2,803,803,803,803,803,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,803,803,803,2,2,2,803,803,2,2,2,803,2,803,803,803,287,803,2,803,2,2,2,803,803,803,803,803,803,803,803,2,803,803,803,2,2,2,803,803,2,2,2,2,803,803,803,803,803,803,2,2,2,803,2,2,2,2,2,803,803,803,803,2,803,803,803,803,24,803,803,803,803,803,803,2,2,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,2,2,803,803,2,2,287,287,287,803,287,803,803,803,803,803,803,803,803,803,287,803,803,803,287,287,287,287,287,2,803,803,803,803,803,803,2,2,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,2,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,2,803,803,803,803}, + {1413,627,1329,1092,526,197,31,417,1149,981,964,1003,685,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,717,717,2,2,2,2,2,717,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,717,2,2,2,2,2,2,2,717,2,717,717,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,717,717,2,717,717,717,717,717,717,717,717,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,717,717,2,2,2,717,717,717,2,717,717,717,2,2,2,2,717,717,717,2,717,717,717,717,717,717,717,717,717,2,2,2,717,2,2,2,717,717,717,717,717,717,2,2,717,717,2,717,717}, + {1084,1174,1601,949,910,960,500,461,1290,23,1042,636,212,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,361,361,361,361,2,2,2,2,2,2,2,2,361,361,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,241,2,2,361,361,361,361,2,361,361,361,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,361,2,241,2,1456,1456,2,2,361,2,2,2,2,241,241,2,241,241,241,241,241,241,241,241,241,2,241,2,2,241,241,2,2,2,2,361,361,241,241,2,361,361,361,361,2,2,2,361,361,2,2,361,361,361,2,2,361,361,361,361,361,361,361,2,241,241,361,361,361,2,361,361,2,361,361,361,361,2,361,361,361,361,361,2,361,361,2,361,361,361,361,361,361,2,361,2,2,241,241,361,361,361,2,361,361,361,361,361,2,2,2,2,2,2,361,2,2,361,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1420,531,626,738,376,537,814,206,990,235,847,812,201,201,201,201,726,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1155,1155,1155,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,141,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,726,726,726,2,2,2,2,2,708,726,726,2,726,726,201,201,201,201,201,201,2,2,2,726,726,726,726,726,2,726,726,2,2,726,726,726,726,201,201,201,726,201,726,726,201,726,726,726,726,726,726,726,201,201,201,201,2,201,201,201,201,201,201,201,201,201,726,2,2,2,2,2,2,2,726,726,2,2,708,708,201,201,201,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,726,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,726,2,2,2,2,2,2,2,2,2,2,2,726,726,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,201,201,201,2,2,2,2,2,2,2,2,2,2,2,2,756}, + {1420,624,363,537,1436,278,292,377,263,820,376,382,382,2,654,655,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1198,2,1198,2,1198,1198,1198,1198,1198,1198,2,2,1198,2,2,2,2,2,2,2,2,2,1198,2,2,2,1198,1198,1198,1198,2,2,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,2,1198,1198,1198,1198,1198,1198,1198,2,2,1198,1198,1198,1198,1198,1198,1198,1198,318,318,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,2,2,1198,2,2,2,2,2,2,1198,1198,1198,1198,1198,1198,1198,1198,2,2,2,2,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,2,2,2,1198,1198,1198,1198,1198,1198,2,2,2,2}, + {1091,793,1353,208,506,599,846,503,1011,247,289,61,1050,61,61,61,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,349,349,349,349,2,2,2,2,2,2,2,2,2,2,2,349,2,349,2,2,349,349,349,349,2,2,2,2,2,2,2,2,2,349,2,2,349,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,349,349,349,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,349,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,349,349,349,2,2,2,2,2,365,365,365,2,2,2,2,349,349,349,349,349,349,2,2,349,349,365,365,349,365,365,349,2,2,2,2,2,2,349,349,349,2,349,349,349,349,2,349,349,2,2,349,349,2,2,2,2,349,349,2,2,2,1164,349,349,349,2,2,365,365,365,365,365,365,365,365,365,365,365,365,2,349,2,2,2,2,2,2,2,2,2,2,2,2,349,349,2}, + {1098,1323,120,1167,76,1111,128,716,739,490,114,338,566,2,178,228,2,2,2,2,2,2,2,2,2,572,2,2,2,2,2,572,572,572,572,572,572,572,2,572,572,572,572,572,572,572,572,572,2,2,2,2,2,2,2,2,2,2,2,572,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,572,2,2,2,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,2,572,572,572,2,2,2,43,2,2,2,2,2,2,2,2,572,572,572,2,2,2,2,2,2,572,43,43,43,43,572,43,43,43,572,572,572,2,2,572,572,572,572,572,572,572,43,43,572,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,572,572,572,572,2,2,572,572,572,572,2,572,572,572,572,572,572,572,572,572,572,572,572,572,572,43,2,2,2,2,2,2,2,2,2,2,2,2,572,572,572,2,572,2,43,43,2,2,572,572,572,2,572,572,572,2,2,2,572,572,43,572,572,572,572,572,572,572,2,2,572,2,2,572,572,572,572,2,2,572,572,572,2,2,2,572,572}, + {1533,978,284,156,914,162,685,1184,252,1375,189,256,640,2,640,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,521,521,2,2,1286,1286,1286,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,521,521,521,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,521,521,521,521,521,2,2,2,2,2,521,521,2,2,2,2,2,2,2,2,2,2,521,521,521,521,521,521,521,521,521,521,521,2,2,2,2,2,2,2,2,2,2,2,2,2,1286,1286,1286,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,521,521,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1531,692,414,277,541,1371,1447,682,536,109,432,1240,1240,2,1022,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1128,398,791,1170,76,661,408,259,756,495,79,553,10,10,1532,1532,1532,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1532,1532,2,1532,2,2,2,2,1532,1532,61,61,61,2,2,2,1532,1532,1532,1532,1532,1532,2,2,1532,2,2,1532,1532,1532,1532,1532,1532,1532,1532,1532,1532,1532,1532,61,61,61,61,61,1532,1532,2,61,1532,1532,1532,1532,1532,1532,1532,1532,2,1532,1532,1532,61,61,61,61,61,61,61,61,61,61,1532,1532,1532,1532,1532,1532,1532,1532,1532,1532,1532,1532,1532,1532,1532,1532,61,61,1532,920,1028,1028,1028,1028,1028,2,2,224,224,224,224,2,2,2,61,2,2,2,2,2,2,2,1532,1532,2,1532,2,1532,2,1532,2,2,2,2,224,2,2,2,2,2,1532,1532,1532,1532,1532,1532,2,2,2,2,2,224,224,224,224,2,2,1532,1532,2,2,2,224,224,2,2,2,224,2,2,2,224,224,1028,1028,1028,1028,224,224,1028,1028,1028,1028,224,224,920,920,920,2}, + {1106,523,1346,818,755,662,1137,234,822,62,459,163,163,577,40,2,2,2,1183,2,2,2,2,2,2,2,2,1183,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1040,704,618,854,374,1470,274,383,941,519,351,351,351,351,351,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1427,988,498,1529,99,678,1323,149,33,426,543,543,335,1507,772,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,613,613,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,613,2,2,2,2,2,2,2,2,2,2,613,613,2,613,613,613,2,2,2,613,613,613,613,613,613,613,613,613,2,2,613,613,613,613,613,613,613,613,613,613,613,613,613,613,2,2,613,613,613,613,613,613,1202,1202,1202,1202,1202,1202,613,613,613,613,613,613,2,2,613,613,613,613,613,2,613,587,613,613,613,587,587,613,613,587,613,613,613,613,613,613,613,613,613,613,613,613,613,971,613,613,971,971,613,613,613,613,2,587,587,613,613,613,613,613,613,613,613,613,613,613,2,613}, + {1102,349,490,266,144,220,599,437,743,764,647,1128,605,265,324,324,324,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1056,1056,2,2,2,1056,2,2,2,2,2,2,2,1056,2,409,1056,2,2,781,781,409,409,781,409,781,2,2,1027,1056,1056,1027,2,2,2,1027,1027,1056,1077,1077,2,1056,1056,1056,2,2,2,1056,1056,1056,433,1027,1027,1027,1027,257,1027,1056,257,1440,1440,1027,669,669,433,1056,1027,2,1440,1440,433,1056,1056,433,1440,1440,1056,642,642,642,642,433,433,642,642,642,642,433,433,433,433,433,433,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,33,33,1230,1230,611,980,318,1027,1027,1027,1027,642,642,1440,1440,1440,1440,1440,1440,1440,1440,1440,1440,1440,1440,433,1440,1440,1440,1440,1056,385,433,433,433,1440,1440,1440,1440,1440,1440,1440,1440,1440,1440,1440,1440,1440,257,257,1440,1440,1440,1440,1440,1440,642,165,433,1027,433,433,1440,1440,1440,1440,1440,1440,1440,433}, + {1118,496,645,592,354,1133,935,428,72,532,182,182,1370,660,123,2,294,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,393,2,393,2,2,393,2,393,2,2,393,393,2,393,393,393,2,2,393,2,393,393,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,393,393,393,2,2,393,2,2,2,393,2,2,2,2,2,2,393,2,2,2,393,2,2,393,393,393,393,393,2,2,2,393,393,393,393,2,393,393,393,393,2,393,393,393,2,393,393,2,2,393,393,2,2,393,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,294,294,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,393,393,393,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1102,1042,315,745,1006,771,630,68,587,1187,295,295,295,408,408,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1137,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,319,2,2,2,1137,1137,1137,2,319,319,2,319,319,319,319,319,319,319,2,2,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,2,2,2,2,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,2,2,2,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,2,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319}, + {1118,724,1322,405,199,614,1087,885,1313,317,769,660,660,1158,535,2,2,2,373,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,835,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,835,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,835,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1120,772,743,488,346,126,784,584,943,153,311,133,133,969,605,605,2,2,2,2,2,2,2,605,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1404,284,176,590,1128,1371,322,543,1136,546,1315,174,174,777,777,891,2,2,2,2,2,2,2,579,579,579,579,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,579,2,2,2,2,2,2,2,2,2,2,2,2,2,2,579,579,2,2,2,2,2,2,2,2,2,579,579,2,2,579,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,579,2,579,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,413,413,2,2,2,2,2,2,2,2,2,2,2,2,2,579,579,579}, + {1441,791,233,141,141,316,89,296,462,1263,758,482,599,599,578,341,2,2,2,2,2,2,2,2,2,2,2,525,525,525,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,185,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,185,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,126,126,2,2,2,2,2,2,2,2,2,2,2,2,126,126,2,2,126,126,126,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,185,185,2,2,647,126,126,126,2,2,2,2,2,2,2,2,2,2,2,126,126,126,2,126,2,2,2,2,2,185,185}, + {1413,406,700,547,1166,250,518,543,104,331,205,205,691,691,2,2,118,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,447,447,447,447,447,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1120,416,126,843,805,849,368,1396,1473,751,120,120,493,936,936,60,60,60,60,2,2,2,2,2,2,2,2,2,1086,1086,1086,1086,1086,1086,2,1086,1086,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,490,490,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1485,400,1497,168,82,680,1103,554,249,702,493,101,296,236,2,236,236,944,944,2,2,394,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,413,413,394,394,394,394,394,2,2,2,413,413,413,1499,1499,1499,1499,1499,413,413,413,413,413,413,413,413,413,2,413,413,413,394,394,413,413,413,1000,1000,1000,1000,1000,1000,413,413,413,413,165,165,165,2,2,2,2,394,394,394,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1499,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,413,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,413,2,2,2,2,413,413,413,2,2,413,413,413,2,413,2,413,413,413,2,413,413,413,413,413,2,2,413,413,413,413,413,413,413,413,413,413,413,413,413,413,413,2}, + {1127,869,558,533,1215,194,1762,784,593,777,1153,1079,1079,1079,2,2,2,330,1045,2,1045,1045,2,2,2,2,2,2,2,2,2,787,787,2,2,2,2,2,2,2,2,2,787,787,200,787,787,787,787,2,787,2,787,787,787,787,787,2,787,787,787,787,787,2,787,787,2,787,2,2,787,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1459,1243,467,533,266,1364,1031,890,1402,486,1678,1678,93,978,2,2,2,978,947,947,2,978,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,341,341,341,341,2,2,2,2,2,2,2,2,2,76,76,76,2,2,2,2,76,2,2,2,2,2,2,341,341,2,341,2,341,76,76,76,76,76,76,341,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,76,76,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1139,809,117,522,955,1096,1120,1470,116,184,1565,1565,557,557,2,2,2,2,2,829,1326,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1142,984,1044,590,340,241,662,357,366,1305,2,125,631,474,2,2,2,980,2,2,2,2,2,2,2,2,2,2,2,2,2,1273,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1273,1273,566,1273,2,2,1273,1273,1273,1273,1273,1273,2,1273,1273,1273,1273,1273,1273,2,1273,1273,1273,2,1273,1273,1273,1273,1273,1273,1273,1273,2,1273,1273,1273,1273,1273,1273,1273,1273,2,1273,1273,1273,1273,1273,1273,1273,1273,1273,2,2,1273,1273,1273,1273,2,2,1273,1273,1273,1273,2,2,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,2,2,2,1273,1273,1273,1273,1273,1273,1273,1273,2,1273,1273,1273,2,2,2,1273,1273,1273,2,1273,1273,1273,1273,1273,1273,1273,1273,1273,2,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,2,2,1273,1273,1273,1273,1273,1273,2,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,2,1273,1273,1273,2,2,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273,1273}, + {1469,1247,1277,616,209,486,106,552,219,217,471,272,272,1201,2,2,503,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1487,1010,320,966,785,847,954,1060,138,856,966,966,966,703,2,703,703,2,2,2,2,2,2,2,2,2,2,2,2,1279,2,1279,1279,2,2,1279,1279,1279,1279,1279,1279,2,2,2,2,302,302,302,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,475,475,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,475,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,302,2,302,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,148,148,128,128,2,128,128,128,128,128,128,148,2,2,128,128,128,128,128,128,128,185,353,297,128,148,148,297,35,128,35,148,148,297,148,148,148,148,148,148,148,148,148,148,1606,148,148,1606,1606,148,1606,148,148,1606,1606,1606,1606,1606,1606,148,148,148,148,148,148,148,148,148,1606,148,148,148,148,148,1606,1606}, + {1148,542,1478,496,950,464,1011,235,136,180,2,416,758,453,2,909,2,2,2,2,2,2,2,2,2,2,1019,1019,2,2,2,2,165,2,2,2,2,2,2,2,2,2,2,2,165,165,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1329,1019,1019,1019,1019,1019,1019,1329,1019,2,2,1019,2,2,165,2,2,2,1019,1019,1019,1019,1019,1329,1329,1329,1329,1329,1329,1329,1329,1329,2,1329,1329,2,2,2,2,2,2,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,334,2,2,165,165,165,165,165,165,165,165,165,165,165,165,114,1329,2,2,2,458,458,458,458,2,2,1329,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,165,2,2,2,845,2,2,2,1329,1329,2,845,845,2,2,2,2,2,2,458,458,2,1329,1329,845,845,845,458,458,458,458,458,458,458,2,2,2,2,2,2,2,2,2,2,2,165,165,165,165,2,165,165,165,165,165,165,165,165,165,165,165,165,165,2,165,165,165,165,165,2,165,2,2,2,2,165,458,1019,165,165,165,165,165,2,2,458,458,165,165,165}, + {1495,1178,874,415,1100,368,1057,1228,562,215,31,31,680,680,680,1208,2,2,2,2,2,2,2,2,1208,2,2,2,2,1208,1208,2,2,1208,2,2,2,2,2,2,1208,2,2,1208,2,1208,1208,1208,1208,1208,2,2,1208,2,2,1208,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1208,1208,2,2,2,2,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,1208,2,1208,1208,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1208,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1208,2,2,2,1208,1208,2,2,2,2,2,2,1208,1208,2,2,2,2,2,2,2,2}, + {1497,1166,1613,1403,107,803,993,539,1436,1289,2,240,334,634,532,1147,2,2,2,2,2,2,2,117,2,2,2,2,2,2,2,117,2,2,117,117,117,117,2,2,2,2,2,2,2,117,2,2,2,2,117,117,117,117,117,117,117,117,2,2,2,2,2,2,2,2,117,117,2,2,2,117,117,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,117,117,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,532,532,2,2,2,117,117,117,2,2,2,2,117,117,117,2,2,2,2,532,532,532,532,532,532,532,532,532,532,532}, + {1617,289,1033,169,355,260,30,45,721,906,88,44,44,418,417,218,2,2,846,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,846,2,846,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1642,766,1253,368,1344,282,1572,199,810,677,1182,1182,273,607,402,559,2,2,2,2,2,2,2,2,2,2,2,2,1182,2,2,2,2,2,2,1182,1182,1182,1182,1182,1182,2,2,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,2,1182,1182,1182,1182,1182,1182,1182,2,2,2,1182,2,478,478,478,478,478,1182,2,478,2,2,2,2,2,2,2,2,2,2,2,478,478,478,478,478,2,2,2,2,2,2,2,2,478,478,478,399,399,478,399,399,399,399,399,399,399,1182,399,399,1182,2,2,2,1182,1182,1182,1182,478,478,2,478,478,478,478,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,399,399,1182,1182,399,1182,1182,1182,1182,1182,2,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,1182,2,2,1182,2,2,2,2,1182,1182,1182,1182,1182,1182,1182,1182,1182,2,1182,2,2,2,2,2,2,1182,478,399,399,399,478,478,478,1182,1182,1182,1182,2,1182,1182,1182,1182,1182,1182,878,1182,878,878,1182,1182,1182,2,1182,1182,1182,1182,1182,2,1182,1182}, + {1515,1002,1117,1023,561,1334,363,946,1023,982,2,258,260,260,1049,260,2,2,2,2,2,2,1049,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1049,1049,2,2,2,2,2,2,2,2,2,2,2,1049,1049,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1696,1696,1696,2,2,2,2,1696,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1628,721,400,239,728,1336,984,425,65,120,1232,463,463,640,349,616,616,2,2,2,2,2,2,2,2,147,147,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,349,349,2,2,2,349,349,349,349,229,229,349,349,2,349,349,349,349,2,2,2,2,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,147,147,147,349,349,349,349,2,2,2,349,349,349,349,349,349,349,349,349,349,147,147,349,349,349,349,349,349,349,349,147,147,147,349,349,349,349,627,627,2,349,349,349,349,349,349,349,349,349,1505,2,2,2,2,349,147,147,349,147,349,349,349,349,349,349,229,229,2,229,229,2,2,2,2,2,2,2,2,2,2,2,2,568,2,2,2,2,568,2,2,2,2,2,568,568,2,568,568,2,2,2,349,349,349,349,349,349,2,2,2,349,147,147,147,147,1505,1505,1505,1505,2,2,2,2,2,2,2,2,2,2,2,2,229,229,229,229,229,229,229,229,229,229,229,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1623,499,308,1058,1184,1230,63,1515,433,110,763,763,422,954,954,954,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,133,133,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,133,133,2,2,2,2,2,133,2,133,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,133,133,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,133,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1628,286,541,530,1610,201,1220,1592,272,181,2,38,263,1586,1157,1157,1157,2,2,2,1157,1157,2,2,2,1157,2,2,2,2,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,2,1157,1157,1157,2,2,2,2,2,2,509,509,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1157,1157,2,2,1157,1157,1157,1157,1157,1157,2,1157,1157,2,1157,2,2,2,1157,1157,2,2,2,2,1157,2,1157,1157,1157,1157,1157,1157,2,2,1157,584,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,761,761,2,2,2,2,2,2,2,2,761,1157,2,2,2,2,2,2,2,2,2,2,2,2,2,1157,761,761,761,2,584,584,584,2,2,1157,2,218,2,2,2,2,4,262,22,761,2,2,1032,262,306,1162,1048,1048,1319,1162,82,761,761,761,761,218,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761}, + {1531,621,210,755,482,82,1308,317,427,168,2,232,116,190,701,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,701,701,701,2,701,701,701,701,701,701,701,701,701,701,701,701,701,2,2,2,701,701,701,701,701,701,701,701,701,2,1420,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1420,1420,1420,1420,1420,1420,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,993,993,993,993,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1420,1420,1420,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1532,575,1245,360,249,630,133,1406,920,1539,63,63,76,82,82,2,2,2,770,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,974,974,974,974,974,974,974,2,2,2,974,974,2,2,974,974,974,2,63,63,2,2,2,2,2,2,2,2,63,2,2,63,63,2,2,2,2,2,2,2,2,2,63,63,63,63,63,63,63,63,63,63,2,2,2,63,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,63,2,2,2,63,63,2,2,2,63,2,2,1356,2,2,974,974,2,1356,1356,974,974,974,2,2,2,2,63,2,2,2,2,2,2,2,63,63,63,2,1356,1356,1356,1356,1356,1356,1356,63,63,63,63,1356,1356,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,63,63,63,63,2,2,2,63,2,2,2,1028,2,2,2,2,974,974,974,974,974,974}, + {1102,785,118,93,1491,988,275,53,1328,26,2,2,240,647,240,761,761,761,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1478,722,113,1534,1751,115,1728,1234,777,282,508,508,1184,63,1184,855,855,2,2,2,738,738,578,578,2,2,2,2,2,2,2,2,2,2,2,2,2,704,704,578,2,2,2,2,2,2,2,2,2,2,578,2,578,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,578,578,2,2,2,2,2,2,2,578,2,2,578,578,578,578,578,578,578,578,578,578,2,2,578,578,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1268,1268,1268,1268,1268,2,2,2,2,2,2,2,2,2,2,2,2,1268,2,2,2,2,2,2,2,2,2,2,578,2,2,2,2,2,2,2,2,578,578,578,578,2,2,2,578,578,578,578,578,578,578,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1480,536,1421,164,429,84,970,1673,548,497,2,2,530,156,156,128,245,2,2,2,2,260,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,690,690,2,2,2,2,2,2,2,2,2,496,496,496,496,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,690,2,2,1719,257,2,257,257,2,2,2,2,2,2,257,2,2,2,2,2,690,690,690,690,2,690,690,690,690,257,257,257,257,257,257,257,2,2,2,2,1066,257,2,2,2,2,690,690,257,257,257,257,257,257,257,257,52,52,52,52,52,257,2,2,2,2,690,690,690,257,257,257,690,257,1719,1719,1719,1719,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,2,2,690,257,257,2,257,2,2,2,257,257,2,2,690,690,690,257,1719,1719,1719,2,2,1719,1719,2,1719,530,1719,1719,1719,2,1719,1719,2,2,2,2,2,2,2,2,2,2,2}, + {1533,1302,1286,538,619,526,1669,145,1034,125,2,1038,1038,388,388,387,729,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,261,261,261,2,2,2,1420,2,1420,2,261,261,261,261,2,2,2,2,2,1420,2,2,2,2,2,261,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1420,1420,1420,1420,2,2,2,2,2,2,261,1420,2,2,1420,1420,1420,1420,2,2,2,2,2,2,2,2,1420,1420,1420,1420,2,2,2,2,2,2,261,261,2,261,261,2,2,261,261,2,2,2,2,261,261,261,261,2,2,261,261,261,261,261,261,261,261,261,261,261,261,261,261,1420,1420,261,261,261,261,261,1420,261,1420,1420,261,261,261,261,261,1420,1420,1420,1420,261,261,261,261,261,261,261,261,261,261,261,261,1420,1420,1420,1420,261,261,261,261,261,261,261,261,261,261,1420,261,261,261,261,261,261,261,261,261,261}, + {1482,961,1093,556,1746,628,427,689,510,751,684,37,37,1229,1256,882,1507,1507,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1472,852,533,433,924,57,53,1036,410,675,1212,1212,1212,600,600,1212,1259,1245,1245,1245,1245,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1212,1212,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1259,1259,1259,1259,1259,1259,1259,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1245,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1080,1369,902,155,403,580,98,850,835,608,2,2,694,1028,199,199,2,121,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1228,425,1030,699,407,171,568,925,1104,97,2,2,1286,1286,1286,502,2,1219,1219,1219,1290,2,1219,1219,1219,1219,2,2,2,59,2,2,2,59,59,2,2,2,2,1219,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1219,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1219,1219,1219,1219,1219,2,1219,2,1219,2,2,2,2,2,1219,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1219,2,2,2,2,2,1219,2,1290,1219,1290,1219,1219,1219,1219,1219,1219,1290,1290,1290,1290,1290,1290,1290,1290,2,2,1219,1290,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1290,1219,2,2,2,1219,1219,2,2,1219,1219,1219,1219,1219,1290,1219,1290,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219,1219}, + {1547,657,777,695,1254,224,933,367,212,385,2,2,2,1422,749,245,885,710,2,2,710,710,710,45,710,710,710,710,2,336,710,2,2,2,2,710,710,2,710,710,2,2,2,2,2,2,2,2,710,2,2,2,2,2,2,710,2,2,710,710,781,2,2,2,710,2,2,710,710,710,2,2,2,710,710,45,45,710,2,2,2,710,710,710,710,710,781,710,710,710,710,710,2,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,2,2,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,2,710,710,710,710,710,710,710,710,710,710,2,2,2,1279,2,2,2,2,336,710,710,710,710,710,710,2,2,2,2,336,2,2,2,336,2,2,336,336,336,710,2,2,336,336,336,710,336,710,2,2,710,710,1279,336,245,2,2,2,336,336,710,336,336,336,2,710,336,2,710,2,710,710,710,2,2,2,710,2,2,710,710,2,710,710,710,710,2,2,2,2,2,710,2,710,2,336,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,2,119,119,119}, + {1678,466,549,145,351,816,1041,334,192,192,2,2,348,1017,130,4,4,180,180,180,180,512,2,2,2,512,512,512,512,512,128,8,8,1247,1247,2,2,1364,1364,1364,180,180,180,180,194,194,194,194,2,2,512,512,512,512,512,128,1247,1247,1247,1247,1247,1247,1364,682,682,682,682,575,575,575,399,859,297,297,297,549,594,594,594,594,594,859,594,859,859,859,575,575,575,575,575,575,913,549,549,1364,1364,549,2,549,549,549,1364,549,863,863,599,1247,1247,1364,1364,1364,1364,1364,1364,680,1364,194,194,194,194,194,194,1364,1364,1364,1364,1247,1364,1364,874,1247,1247,1247,1247,1364,682,1364,1364,1364,575,575,575,575,575,575,859,297,297,297,549,594,594,594,594,594,859,594,594,859,303,303,1110,1110,1110,1110,1110,1110,1110,1110,1110,154,1110,1110,1110,1110,154,154,154,154,154,154,154,154,154,154,194,1362,1362,194,194,194,194,194,194,194,194,194,194,194,874,590,590,590,194,590,590,590,590,590,590,85,85,1142,298,1375,555,939,939,1505,555,1423,85,85,85,314,628,157,874,1327,1327,1327,1142,1362,151,151,151,151,1050,1050,143,143,939,939,939,939,1086,939,939,1556,194,151,194,194,561,561}, + {1550,569,481,1041,1680,1114,1265,160,386,194,2,2,2,533,929,531,422,531,1355,1355,1355,1355,531,216,216,2,2,2,2,2,2,2,828,828,36,36,36,2,2,216,216,531,531,531,317,216,216,216,216,936,936,820,531,531,216,216,216,216,216,216,216,216,216,216,531,243,243,243,243,243,243,243,36,36,36,820,216,1764,1764,1764,1764,1764,1764,828,828,828,828,828,828,828,292,67,243,243,820,820,243,243,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,243,243,243,243,216,340,216,216,340,4,4,1764,1764,1764,1764,1764,1764,1404,1404,2,2,2,1029,1029,1029,1029,1029,334,334,334,334,334,334,334,2,2,162,162,162,162,162,54,54,54,54,334,340,340,340,340,820,820,820,820,1355,531,820,820,531,820,820,2,2,2,820,820,820,820,820,964,67,67,67,67,67,820,820,820,820,820,820,292,292,292,67,820,820,820,820,820,820,820,820,67,531,531,531,820,820,1029,820,419,419,419,419,419,828,419,594,594,594,594,594,594,594,594,594,1029,1029,67,67,67,387}, + {1559,462,850,289,1570,71,512,858,810,835,2,2,2,2,1028,1205,1205,546,546,546,1205,1205,1205,1205,1205,2,1205,1205,1205,1205,1205,1205,2,2,2,1205,1205,1205,1205,635,546,546,546,546,546,546,1205,1205,1205,1205,1205,1205,635,635,2,546,2,2,2,545,2,2,2,2,546,546,1205,1205,1205,1205,1205,1205,1205,1205,546,546,546,2,2,2,2,2,546,546,2,546,546,546,2,546,2,2,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,2,2,2,546,546,546,2,2,2,2,2,2,2,2,1205,1205,1205,1205,1205,1205,635,545,2,2,1205,546,1205,1205,1205,1205,1205,1205,1205,1205,1205,546,546,635,635,635,635,546,546,635,2,635,635,546,546,635,635,635,635,635,635,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,2,2,2,1205,546,546,546,546,546,546,546,546,546,546,546,1205,546,546,546,546,546,546,546,546,546,546,546,546,546,2,546,546,546,546,546,546,546,546,1205,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546}, + {1192,888,701,164,131,613,282,237,525,366,2,2,2,2,1737,845,845,750,2,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,2,1261,1261,1261,2,1261,1261,1261,1062,1261,1261,2,2,1261,2,2,2,1062,2,2,1062,1062,1062,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1261,1261,1261,1062,1062,1062,1062,2,1062,1062,1062,1062,1062,1062,2,1062,1261,1261,796,796,796,796,1261,1062,1062,1062,1062,1062,1062,1062,1261,1062,2,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,2,2,1062,1062,1062,1062,1062,1062,1062,1062,1062,2,1062,2,2,2,2,2,2,2,1062,2,2,2,2,2,2,2,2,1062,2,2,1062,1062,1062,2,2,2,2,2,2,2,2,1062,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1062,1062,1062,1062,2,2,2,1062,1062,1062,1062,1062,2,1062,2,2,2,2,1062,1062,1062,1062,1062,1062,1062,2,2,2,2,2,2,2,2,1062,1062,1062,2}, + {1208,426,412,1072,274,248,1544,627,9,458,2,2,2,2,2,2,270,270,270,150,715,282,150,150,150,150,150,150,150,150,150,150,150,150,39,39,39,39,39,2,39,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,2,2,2,715,715,715,715,715,715,573,573,573,573,573,2,2,573,2,2,2,2,150,173,173,173,173,173,2,173,173,2,335,2,573,335,2,2,2,335,335,2,2,2,715,715,715,715,715,715,715,715,715,2,769,769,2,2,2,2,2,2,150,150,715,715,715,715,2,2,715,715,2,2,2,2,2,335,335,335,335,335,715,595,2,2,715,715,715,715,715,715,715,715,715,715,150,335,335,335,335,335,335,715,715,715,150,173,173,715,715,715,715,150,150,2,150,150,150,150,595,150,150,150,150,595,595,595,595,595,2,595,2,2,2,2,715,2,715,715,715,150,150,715,715,39,39,39,39,39,39,39,39,39,39,335,335,2,769,39,39,2,2,769,150,150,715,2,2,715,715,2,2,2,150,150,2,2,2,2,2,2,715,715,715,715,715,715,2,2,2,2,2,2,2,2,173}, + {1210,806,162,569,861,1002,1048,55,98,112,2,2,2,2,2,2,844,844,149,529,529,529,2,2,2,2,2,119,119,17,17,714,584,119,2,2,2,119,119,119,119,119,119,119,119,119,2,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,1332,1332,1332,119,119,119,119,1332,1332,1332,1332,1332,1332,1332,1332,1332,1332,1332,1332,1332,1332,1332,1332,1332,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,119,119,119,119,119,119,119,119,119,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,119,119,119,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1128,393,1522,96,160,581,540,120,441,176,2,2,2,2,2,2,1427,551,1102,1102,328,328,592,592,592,592,592,592,592,592,592,592,592,592,2,2,2,924,924,592,451,451,451,924,924,924,924,924,924,924,924,924,924,924,924,924,451,451,451,451,451,451,451,451,451,451,592,924,924,451,592,592,592,592,924,451,451,924,924,2,924,924,264,264,264,264,264,264,264,264,451,451,451,924,702,924,924,924,924,924,451,451,451,451,451,451,451,451,451,451,451,924,924,924,2,2,2,451,93,93,93,2,2,2,2,2,592,592,592,2,2,924,2,924,2,2,2,924,924,924,924,924,924,924,924,924,924,2,2,924,2,592,2,2,2,2,2,592,2,2,2,2,592,592,2,2,2,451,592,592,592,592,592,592,2,2,2,2,592,592,592,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,592,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1202,538,171,1177,1090,690,1566,746,1012,1012,2,2,2,2,313,781,808,313,1125,1117,930,1117,1117,1117,1117,1117,1117,1117,1117,2,2,2,2,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,2,1117,1117,1117,1117,2,2,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,2,2,1151,766,766,766,766,766,766,766,766,2,766,766,766,766,766,766,2,2,766,766,766,766,766,766,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,766,2,1117,1117,1117,2,2,766,766,766,766,766,766,766,766,766,766,766,766,2,1117,1117,2,2,2,1117,1117,1117,2,2,2,2,2,2,2,1117,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1117,1117,2,1117,1117,1117,2,2,1117,1117,2,2,2}, + {1567,1265,372,1633,613,484,243,1523,21,275,2,2,2,431,431,431,431,2,2,978,489,889,889,889,889,889,889,889,2,2,2,2,2,2,2,2,2,203,889,889,889,889,889,889,889,889,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,889,889,2,889,889,889,2,889,1037,2,1037,1037,1037,1037,1037,2,2,1037,1037,1037,1037,889,1037,1037,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,889,889,2,2,2,2,2,2,2,2,2,889,889,889,889,889,2,2,203,203,578,578,2,578,578,578,578,578,578,578,578,578,578,2,2,2,2,2,2,2,889,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,203,203,203,203,203,203,203,2,2,2,2,2,2,2,2,2,2,2,2,203,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1707,577,414,457,554,146,230,446,629,283,2,2,2,1156,272,1582,1582,2,2,1260,1260,1260,1260,483,1260,1260,1260,1260,1260,1260,1260,2,2,749,749,1260,1260,1260,749,749,2,2,2,749,749,2,2,749,2,749,1260,2,2,2,749,749,749,749,749,749,2,2,2,2,1260,1260,2,2,2,2,2,1260,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,483,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1260,2,2,2,2,2,483,483,483,483,483,483,483,2,2,2,2,1260,2,2,2,2,2,2,2,2,1260,2,2,2,926,1260,483,2,749,2,2,1260,2,2,2,926,2,2,2,749,749,749,749,1260,2,2,1260,1260,1260,1260,1260,1260,2,2,2,1260,1260,1260,1260,1260,1260,1260,1260,2,1260,1260,2,2,1260,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1260,1260,2,1260,1260,2,2,1260,1260,2,2,1260,1260}, + {1566,982,815,133,891,412,1179,831,651,268,2,2,2,367,366,367,367,63,63,767,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,63,63,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1522,1422,1017,124,499,451,731,1112,1355,1355,2,2,2,854,854,336,854,336,1297,2,2,2,193,193,193,193,193,2,2,2,2,2,2,2,2,2,2,2,900,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,900,900,900,2,900,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1160,1331,917,1696,401,547,122,592,863,863,2,2,703,703,703,703,495,495,495,2,2,495,495,495,495,495,269,2,2,2,269,269,2,2,269,269,269,269,269,2,495,495,495,495,495,703,2,2,2,2,495,495,269,495,2,2,2,2,269,269,703,269,2,92,92,2,2,2,703,2,2,703,703,703,703,2,2,703,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,703,47,495,608,608,608,608,2,2,2,2,2,703,703,2,2,2,2,2,703,703,703,703,703,269,703,703,703,703,703,2,703,703,703,703,703,703,703,2,2,2,703,703,703,703,703,703,703,703,703,703,703,703,2,703,703,703,703,2,703,703,2,703,703,703,2,2,703,703,703,703,703,703,703,2,2,572,1353,1353,1353,1353,1353,1353,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,205,205,703,703,703,703,703,703}, + {1605,1499,454,1072,686,732,309,295,940,551,2,2,880,264,264,973,2,2,72,314,2,2,2,890,890,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,890,2,2,2,2,2,2,2,2,2,2,2,2,890,890,890,890,2,2,2,2,890,2,890,890,890,890,2,890,890,890,2,2,890,890,890,890,890,890,890,2,890,890,890,890,2,2,2,2,2,2,890,2,2,890,2,2,2,2,890,890,890,890,890,890,890,890,890,890,890,890,2,2,2,2,2,2,2,2,2,2,2,890,890,890,2,2,2,2,2,2,2,2,890,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,890,890,890,890,890,2,2,2,2,2,2,2,2,2,2,2,2,2,2,890,890,890,890,890,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,890,890,2,890,890,890,2,2,2,2,2,2,890,2,890,890}, + {1538,814,1027,677,524,226,756,202,242,102,2,2,912,564,1289,682,2,1125,1125,1125,1125,2,1289,1289,1289,1125,1125,1125,2,1289,1289,1289,1289,1289,1289,1289,1289,2,2,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,2,1289,1289,2,2,2,1289,1289,1289,1289,1289,1289,1289,1289,1289,1289,2,2,2,2,2,2,2,2,2,2,1289,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1598,397,1471,1471,1162,866,236,948,1557,737,2,2,153,737,1408,765,765,608,2,2,2,171,608,608,608,608,2,608,608,2,2,2,2,2,2,608,2,2,608,608,2,2,2,2,2,608,608,608,608,608,608,2,2,2,2,2,2,2,2,2,2,2,2,2,2,608,608,608,608,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,2,551,551,462,324,324,128,324,324,722,722,197,197,608,197,197,197,608,608,608,608,608,1865,867,867,765,765,765,765,765,2,765,608,765,765,765,765,765,1865,765,765,765,765,75,765,765,765,765,765,765,765,765,765,2,608,765,765,765,765,765,765,765,765,765,608,608,608,608,608,75,75,765,765,765,765,608,608,608,608,608,608,608,608,608,36,765,18,18,608,1187,424,424,424,1564,1564,1564,765,765,651,651,1341,876,41,41,765,765,765,765,765,1865,621,621,621,621,41,41,765,41,41,41,41,41,41,41,41,765,765,765,765,765,765,765,765,765,765,75,765,765,765,765,765,765,765,765,75,75,75,765,765,765,765,765,765,765,765,765,765,765,765,765,1637,1637,1637,765,765,765,765,765,765,817}, + {1598,434,107,270,148,1317,835,123,642,1236,2,2,67,633,771,878,771,878,878,2,2,2,771,2,2,2,2,2,2,2,2,2,217,217,217,217,217,217,2,2,771,771,771,878,2,878,878,878,748,878,2,2,878,878,878,2,771,771,771,2,2,2,2,2,2,2,2,2,2,2,2,2,2,771,2,2,2,2,2,2,2,2,878,771,748,878,771,771,771,2,771,771,2,2,2,748,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,771,771,2,2,2,2,771,771,771,2,771,2,2,2,2,2,2,2,2,2,2,2,771,748,748,771,771,2,748,771,2,771,771,771,771,771,771,771,771,748,2,2,748,771,2,2,2,2,771,2,771,771,771,771,2,2,771,2,2,771,771,771,748,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,748,771,771,771,771,2,2,771,771,2,771,771,771,771,771,771,771,771,771,771,771,2,771,771,771,771,771,771,771,771,771,771,771,771,771,771,2,2,771,771,771,771,771,771,2,2,2}, + {1628,1502,1042,822,80,403,1335,684,464,426,671,671,336,336,336,2,425,896,2,2,2,2,1337,1337,1337,1337,1337,1337,2,2,2,2,1337,1337,1337,1337,1502,1502,1337,1337,1337,1337,1337,1337,1337,1337,1337,1502,2,881,881,881,881,2,2,1502,1502,1502,1337,1337,1337,1337,881,2,1502,1502,1502,1502,1502,2,1502,1502,2,1502,2,1502,1502,2,2,2,1502,1502,2,2,2,1502,1502,1502,1502,1502,881,1502,2,2,881,881,2,2,45,45,147,1502,147,2,2,2,881,881,2,2,2,2,2,2,2,2,2,2,1337,2,2,2,2,2,2,2,2,2,1337,2,2,2,2,1337,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1337,2,2,2,2,2,2,2,2,2,1337,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1337,1337,1337,1337,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1337,1337,1502,1337}, + {1630,715,1368,1273,993,293,385,545,1267,896,1038,1038,270,1325,1325,2,2,961,961,961,961,961,961,2,2,961,961,2,2,961,2,961,2,961,2,2,2,2,2,2,961,2,2,2,2,2,2,2,2,961,961,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,961,961,961,2,2,961,2,2,2,961,961,2,2,2,961,961,2,2,203,961,2,2,2,2,2,2,961,961,961,2,2,2,961,961,961,961,961,961,2,732,732,961,961,732,2,2,961,961,961,961,961,2,2,2,961,961,961,2,961,961,961,961,961,2,2,2,2,961,961,2,2,2,2,2,203,2,203,2,2,2,2,2,2,2,2,2,2,961,2,2,2,2,2,2,2,2,117,117,117,2,2,2,961,2,2,2,2,2,961,961,2,2,2,2,2,203,2,2,2,2,2,2,2,2,2,961,2,2,961,2,2,2,2,2,2,2,2,203,2,203,961,2,2,2,2,961,961,961}, + {1612,723,409,641,796,1087,1228,1398,623,262,740,740,870,870,397,2,2,893,893,2,2,1367,328,2,328,2,2,2,2,2,2,2,328,328,328,328,328,328,2,328,328,328,2,2,2,2,1367,1367,1367,1367,1367,1367,1367,2,2,2,2,2,2,1367,1367,1367,1367,1367,1367,1367,2,1367,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1367,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,328,328,328,2,2,2,1367,1367,1367,2,2,2,2,1367,1367,1367,1367,1367,1367,2,2,2,2,328,2,2,328,2,2,2,2,2,328,2,328,328,328,2,2,328,328,328,2,2,328,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1614,588,652,105,441,844,734,912,532,878,1073,1073,62,1415,693,1431,1431,1431,1431,925,925,925,925,925,925,925,2,2,2,2,2,2,1431,1431,1431,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1607,1503,1072,471,221,277,854,1236,263,752,2,694,1657,934,553,2,2,2,498,498,2,802,2,46,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1568,1453,1203,661,421,977,373,631,336,1483,2,522,81,146,587,1235,1235,1235,2,956,2,2,2,956,956,956,956,956,956,956,956,956,956,2,2,956,956,2,956,2,2,956,1383,1383,1383,1383,1383,1383,956,2,2,2,2,2,2,1383,2,2,956,956,2,2,956,956,956,2,956,956,956,956,956,956,956,956,956,956,956,956,956,1383,1383,1383,1383,1383,1383,2,2,956,956,956,956,956,956,956,956,2,956,956,956,956,956,956,956,956,956,956,956,956,956,2,2,956,956,956,956,2,2,2,2,2,2,956,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1383,1383,2,2,1383,2,2,2,2,2,1383,2,2,2,2,2,2,2,2,2,2,1383,1383,2,1383,2,2,2,1383,1383,1383,1383,1383,1383,1383,1383,2,2,1383,1383,1383,1383,1383,956,956,1383,1383,1383,1383,1383,1383,1383,1383,1383,1383,956,1383,956,1383,1383,2,2,1383,1383,2,2,956,956,956,1383,1383,1383,1383,2,956,1383,1383,2,1383,1383,956,2,1383,956,956,956,956,956,1383,1383,956,1383,1383,1383,1383,1383,1383,1383,1383,956,1383,1383,1383,956,956,1383,2,2,1383,956,1383,1383,956,956,956,956,2,2,2}, + {1172,987,140,1964,584,600,852,1725,456,1199,718,718,791,981,791,2,2,2,2,2,1260,2,2,2,2,2,718,2,2,718,2,718,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1260,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,718,2,2,2,2,2,718,2,718,2,2,2,718,718,2,718,718,2,2,2,2,2,2,2,2,2,718,718,718,718,718,718,718,718,718,718,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,718,718,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1756,1359,698,1584,446,724,729,419,660,1305,2,244,244,244,540,540,540,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,308,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,308,308,308,308,2,2,2,2,308,308,308,2,308,2,2,2,2,308,2,2,2,2,2,2,2,308,308,308,308,308,2,2,2,2,2,2,2,2,308,308,308}, + {1746,771,620,415,1057,437,613,1034,1662,837,2,1149,1466,1149,1149,1149,1466,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1093,2,2,1093,2,2,2,2,2,1093,1093,2,1093,1093,2,1093,2,2,2,2,2,2,2,2,1093,1093,2,1093,1093,1093,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1093,1093,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1093,1093,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1647,1092,860,89,1514,1745,69,237,890,86,2,1629,48,482,392,2,1013,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1263,835,1533,789,1259,174,1497,557,644,203,2,289,604,434,434,434,2,844,844,2,2,2,1111,1111,1111,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1111,2,2,2,2,2,1111,1111,2,2,2,2,2,2,2,2,2,2,2,2,2,2,282,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1269,783,1045,429,1829,417,143,72,856,1152,941,1152,1171,175,59,1729,2,2,2,2,2,2,741,2,2,2,2,2,2,2,2,741,741,2,2,741,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,741,2,2,2,2,2,2,2,2,2,741,741,741,416,416,416,416,416,416,416,2,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,2,741,416,416,416,416,416,416,741,741,741,741,416,416,416,416,416,416,416,416,416,416,416,416,416,416,741,416,416,416,416,416,416,416,416,416,2,2,2,416,416,416,416,741,416,741,416,416,416,2,2,2,416,416,416,416,416,416,416,416,2,2,416,741,2,416,416,416,416,416,416,416,2,416,416,416,416,416,2,2,2,2,2,2,2,2,416,416,416,2,2,416,416,416,416,2,416,416,416,416,416,416,416,416,416,416,416,416,416,2,416,416,416,2,2,2,2,2,416,416,2,2,2,416,416,2,416,2,2,2,2,2,2,2,2,2,2,2,2,2,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,2,416,416,416}, + {1272,884,388,1889,956,159,1172,595,219,645,2,629,107,107,1279,75,2,2,2,211,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,589,589,2,2,2,2,2,2,2,2,2,589,2,2,589,2,589,589,589,2,589,2,2,2,2,2,2,1537,1537,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,589,589,589,589,589,589,2,2,2,589,2,2,589,589,2,2,589,589,589,2,589,589,2,589,589,589,589,2,2,2,2,589,589,589,589,589,589,589,589,2,2,589,589,2,2,2,2,589,75,75,75,75,2,2,2,2,2,589,589,589,2,589,589,589}, + {1797,904,172,659,349,177,692,448,1141,990,640,99,1073,806,640,640,2,640,640,911,911,911,640,640,640,640,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,640,2,640,640,2,2,2,2,2,2,2}, + {1276,442,1008,1352,243,162,711,301,552,1002,668,668,384,71,384,384,2,2,2,2,2,727,727,727,777,777,777,777,777,777,2,777,777,777,777,777,777,777,777,777,2,777,777,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,777,777,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1147,2,777,777,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,777,777,777,777,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,534,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1600,1130,171,1113,813,722,117,990,37,24,969,94,825,1398,1398,1398,1398,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,969,2,862,969,969,969,969,969,969,969,2,969,969,969,969,969,969,969,969,969,969,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,969,969,969,969,2,969,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,969,969,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1198,496,714,609,644,1159,873,249,186,1539,136,239,379,1994,2,68,68,68,68,68,2,2,192,2,969,2,2,969,2,2,969,969,969,969,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,969,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,969,2,2,969,2,2,2,969,969,2,969,969,2,2,969,2,2,2,2,2,2,969,969,969,2,2,2,2,2,2,2,2,2,969,969,969,2,969,969,969,2,2,2,2,2,2,2,2,2,2,2,2,969,969,2,2,2,2,2,2,2,2}, + {1678,1316,460,1133,1003,150,1236,1316,1417,218,1763,1763,77,77,2,1491,771,771,771,771,771,2,771,2,2,2,2,2,2,2,2,2,2,2,2,2,2,771,2,2,925,2,2,771,2,2,2,2,2,2,2,2,2,2,2,2,771,771,2,2,771,771,771,771,2,771,771,771,771,2,2,2,2,771,771,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,925,925,2,2,2,2,2,2,2,2,2,2,2,2,2,771,2,2,2,2,2,771,771,2,2,2,2,2,2,2,2,2,2,771,771,2,771,1604,2,771,771,771,771,771,80,771,771,2,2,771,771,2,771,925,2,2,771,771,2,925,771,925,1604,771,771,771,771,2,2,2,2,2,2,2,771,771,771,771,2,1604,1604,771,771,1604,771,771,771,925,771,1604,1604,1604,1604,1604,2,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,1604,1604,771,771,771,771,771,771,771,771}, + {1682,449,1067,393,136,854,36,492,637,1053,247,1111,1111,1111,2,247,247,247,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1288,1690,702,760,420,333,1213,1911,805,351,67,67,1568,1568,2,2,604,142,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,215,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,215,215,2,2,2,2,2,2,2,342,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,342,342,342,342,342,2,2,342,342,2,2,342,342,342,2,2,342,342,342,342,342,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,342,2,2,2,2,342,342,342,342,342,2,2,2,342,342,342,342,342,342,342,342,342,342,342,342,2,2,2,342,342,342,342,2,2,2,2,342,342,342,2,342,2,2,2,2,2,2,2,342,2,342,342,342,342,2,2,342,2,2,342,342,342,342,342,342,342,2,342,342,342,342,342,342,342,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1288,1858,152,894,346,104,997,203,249,1006,1278,1489,1489,555,2,2,2,1074,1074,518,2,2,518,2,2,518,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,518,518,2,2,2,2,518,518,518,2,518,518,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1601,697,532,408,697,1140,1568,47,1499,780,1171,318,318,318,2,2,2,2,318,318,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,782,62,2,2,2,2,62,62,62,782,2,782,2,782,782,782,782,782,2,782,782,782,782,2,2,2,782,2,782,782,782,2,2,782,782,782,782,782,782,782,782,782,782,782,782,782,782,2,2,2,2,2,2,2,2,2,2,62,62,62,62,2,2,2,2,2,2,2,782,782,2,2,782,782,2,782,782,782,2,782,2,2,2,2,782,2,782,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,782,782,782,782,782,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,62,62,62,62,62,62,62,62,62,62,782,782,2,2,2,782,2,2,2,782,782,2,2,2,2,2,62,62,62,62,62,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1283,1078,791,873,655,412,389,835,292,958,1245,678,1611,1519,2,2,185,2,2,2,2,2,2,1245,1245,2,2,2,2,2,2,1245,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1245,1245,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,470,470,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,470,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1685,1610,1447,1093,1255,937,703,431,522,1384,988,988,253,988,2,1892,1892,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,382,382,382,2,2,2,382,382,2,2,2,2,2,382,382,2,2,2,382,382,2,2,382,382,2,2,382,382,382,2,2,382,382,2,2,382,382,2,2,2,2,2,382,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,382,382,2,2,382,382,2,2,382,2,382,382,2,382,382,382,2,2,382,382,382,382,2}, + {1822,589,236,205,797,39,241,1048,181,386,102,102,102,111,1361,1361,1361,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,115,115,2,2,1454,1454,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1454,1454,2,2,2,2,2,2,1454,2,2,1454,1454,2,115,2,566,2,2,1454,2,2,1454,2,2,2,2,2,2,2,2,2,115,115,2,2,2,2,1454,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,115,2,115,115,2,2,1454,1454,1454,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,115,115,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1454,2,115,2,2,115,1454,1454,115,115,115,115,1454,1454,1454,1454,1454,1454,115,115,115,115,115,115,115,115,115,115,115,1454,115,115,2,115,115,115,115,115,2,2,2,2,115,115,2,1454,115,115,115,115,115,115}, + {1233,843,813,157,396,669,1531,439,640,733,996,996,996,1566,951,608,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,582,582,59,8,8,83,83,8,966,966,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1342,705,302,595,1200,52,83,647,519,139,103,103,103,513,2,513,2,2,2,2,2,513,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,496,496,496,496,496,2,496,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,496,2,2,2,2,496,496,496,496,2,2,2,2,2,2,496,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,513,2,2,2,2,2,2,1525,2,2,2,2,2,2,2,2,2,496,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1525,2,446,2,2,2,2,2,446,513,513,513,513,2,2,2,513,513,2,513,2,2,2,2,2,2,2,2,2,513,513,513,2,2,2,2,2,2,2,2,513,513}, + {1630,1244,142,767,1299,719,629,1716,419,837,1145,1136,1148,1405,1405,1405,2,2,2,2,2,309,309,309,309,309,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1405,2,2,2,2,2,2,2,2,2,2,2,2,309,1405,1405,1405,309,2,1405,1405,2,2,309,309,1405,1405,1405,1405,2,2,2,309,309,309,309,309,309,309,309,309,309,2,2,2,309,1405,1405,1405,1405,1405,1405,1405,2,1405,1405,1405,2,2,2,1405,1405,1405,1405,1405,1405,1405,1405,1405,1405,1405,1405,1405,1405,1405,1405,1405,1405,1405,1405,1405,1405,1405,1405,1405,2,1405,1405,1405,1405,1405,1405,2,2,2,309,1405,309,1405,2,1405,1405,1405,1405,1405,1405,2,2,2,2,2,1405,1405,2,1405,309,1405,309,309,2,1405,1405,2,1405,1405,1405,2,309,309,309,309,309,2,309,309,309,309,309,2,2,2,309,309,309,2,309,309,309,309,1405,1405,1405,1405,1405,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1684,561,1405,1118,960,686,1490,1490,992,153,1315,1315,1222,1222,804,1222,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,427,2,2,2,2,2,2,2,2,2,2,2,2,2,427,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,427,2,2,2,427,427,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,427,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,427,427,427,427,427,427,427,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1636,974,279,419,893,1608,1491,156,1486,115,730,730,863,509,924,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,271,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,271,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,271,2,2,2,2,2,271,271,271,271,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,271,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,271,271,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,271,271,2,271,271,271,271,271,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1708,237,748,68,1027,153,46,685,1370,1104,1131,1124,838,1289,1289,1288,2,1174,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,291,2,2,2,2,1131,1131,1131,291,291,291,291,291,1174,1174,1174,1174,1174,1174,1174,1174,291,291,1131,1131,1131,1131,1131,1131,1174,291,291,291,291,291,291,291,291,2,2,2,291,2,2,291,291,291,291,291,291,291,291,291,2,2,1174,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1174,1174,2,2,1174,291,291,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1318,1234,213,1089,1567,602,1330,404,467,718,249,215,354,177,59,332,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1446,1446,1446,1446,1446,1446,1446,2,2,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,2,2,2,2,332,332,332,332,332,1446,1446,1446,1446,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,168,168,168,168,168,168,168,2,168,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,1446,332,332,332,332,332,332,332,332,332,332,332,1446,332,1446,1446,168,168,168,599,332,332,332,1446,2,2,168,168,168,168,168,168,168,168,168,168,168,332,332,332,1446,599,599,599,599,599,332,332,332,155,155,155,155,155,155,2,2,2,2,155,1446,168,599,332,332,332,332,332,332,332,599,155,155,155,155,155,155,155,155,2,332,332,332,1446,2,2,155,332,332,332,332,1446,1446,1446,1446,1446,332,2,2,599,599,599,599,599,599,332,332,332,1446,599,599,599,599,599,599,599,599,332,332,332}, + {1732,1771,584,533,297,1056,669,293,146,311,1176,311,590,590,277,2,2,2,2,2,2,2,2,2,539,539,2,2,2,2,2,2,2,1137,1137,1137,142,142,142,142,142,142,142,142,2,2,2,2,2,2,2,2,2,744,2,744,744,744,142,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1238,1238,2,2,2,2,2,2,1238,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1238,1238,1238,1238,1238,1238,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,142,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1137,1137,2,2,142,1137,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1137,1137,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1137,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,142,142,142,142,142,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1137,2,1137,1137}, + {1026,512,1196,394,1259,1313,762,549,311,1576,1576,465,465,140,465,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,82,2,2,2,2,2,2,2,82,82,82,82,82,82,82,2,2,2,2,2,2,2,2,2,2,2,2,2,2,82,82,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,82,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1360,383,1470,502,1010,153,1588,619,1246,396,1107,1107,112,423,423,2,2,2,2,2,202,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,202,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,202,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,202,202,2,2,2,2,2,2,2,2,2,2,2,2,847,847,2,2,2,2,2}, + {1320,1636,858,1210,509,194,1575,154,1424,455,1860,832,1075,581,262,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,740,2,2,740,740,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,740,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,740,740,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1749,326,968,886,610,1588,1083,976,1551,602,558,245,99,711,485,485,485,485,485,2,2,2,2,2,2,2,2,1234,1234,1234,1234,1234,1059,2,1059,1234,2,4,2,4,2,4,4,8,2,2,2,648,324,780,128,128,554,512,554,8,108,108,108,108,108,108,108,108,108,108,108,108,108,1319,2,1869,1869,1869,2,1319,1319,1319,1319,1319,1319,1319,1319,1319,1319,1869,190,190,190,380,576,9,9,9,811,811,18,1591,1591,144,144,144,18,729,729,729,485,485,485,1869,1869,485,485,485,485,485,485,485,1869,1869,1869,108,1869,1869,1869,108,1869,108,99,549,549,407,549,1628,970,968,968,86,43,43,43,1761,1572,1572,1572,1572,1572,1572,1572,1572,1761,1761,840,1761,1761,99,485,485,485,485,633,1869,1869,1869,1869,1869,485,485,47,47,47,47,47,47,47,786,1319,1319,48,1112,48,48,6,24,24,3,3,3,216,108,108,432,432,432,432,432,1234,353,1234,520,353,353,353,353,520,520,520,485,485,485,1869,1206,1869,1869,1869,1234,485,485,485,485,485,485,485,1131,1869,1869,1869,1869,1869,1869,1869,485,485,748,748,748,748,748,748,748,748,748,748,748,1148,1148,1148,1148,1148,1148,1148,1148,1148,1148,296,485}, + {1670,1350,689,1074,437,956,587,642,1154,439,196,1108,1108,1108,990,2,2,2,2,2,1112,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,634,634,634,634,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,634,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,634,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,48,48,2,2,48,48,2,48}, + {1747,611,1788,1446,152,1335,710,1040,639,1279,788,788,265,1441,107,2,2,2,2,1441,1441,1441,1441,938,938,938,938,2,2,867,867,1441,1441,938,938,938,938,938,938,1441,2,2,2,2,1441,1463,1441,1441,1441,2,348,867,867,867,1441,867,867,867,1441,1441,2,1441,1441,1441,2,2,2,1441,1441,1441,1441,348,1441,1441,1441,1441,1441,1441,1441,1441,1441,1441,1441,1441,1441,2,2,867,1441,1441,1441,2,2,2,2,2,2,1441,2,2,2,2,2,2,867,867,867,867,867,867,867,1441,1441,1441,1441,1441,1441,1441,938,938,867,867,2,867,867,867,867,1441,867,867,1441,1441,867,2,2,867,867,867,867,867,867,867,867,867,867,867,867,1463,867,867,867,2,2,867,867,867,867,867,867,867,867,867,867,867,867,867,867,867,867,867,867,1441,1441,1441,1441,867,867,867,867,867,867,867,867,867,867,867,867,867,867,1441,1441,1441,2,867,867,867,867,867,1441,1441,1441,1441,1441,1441,1441,1441,1441,1441,867,1441,1441,1441,867,867,867,867,867,867,867,867,867,1463,1463,867,867,867,867,867,867,867,867,867,1441,867,867,867,867,867,867,867,867,867,867,867,867,867,1441,867,867,867,867,867,867,867,867,867}, + {1873,890,920,874,591,651,768,478,331,76,760,760,760,760,67,2,2,2,2,1241,1241,1241,1241,2,2,2,2,2,2,2,1241,1241,2,2,2,2,1241,1241,1241,1241,1241,1241,1241,1241,2,2,2,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,2,2,2,2,916,916,2,916,2,916,916,916,2,2,916,916,2,1241,1241,1241,2,2,916,916,916,916,916,2,2,916,916,916,1241,2,2,916,916,916,2,2,2,2,1241,1241,1241,2,2,2,2,2,2,2,2,2,1024,32,16,2,2,2,1483,1483,764,764,764,764,764,764,764,764,764,543,543,79,79,79,79,79,379,379,672,672,672,672,1024,1024,2,2,2,316,1241,1241,2,2,8,8,8,8,8,1241,1241,1241,1241,1241,2,2,2,1241,1995,1995,1995,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,1241,252,2,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,2,2,252,252,252,916,916,2,2,916,916,916,1241,2,916,916,916,916,2,2,2,2,1241,1241,1241,2,2,2,2,298}, + {1682,867,333,102,628,891,654,506,995,684,961,563,1313,1313,1313,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1073,1073,938,938,938,801,2,2,2,938,2,938,938,938,2,2,2,2,2,2,2,801,801,801,2,2,2,2,2,2,801,801,2,2,801,801,801,2,2,801,801,801,801,2,2,2,801,801,801,801,801,801,2,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,1397,1397,1397,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,1397,1397,1397,2,801,801,801,801,801,2,2,2,801,801,801,2,801,2,2,2,2,801,2,801,2,2,2,2,2,2,2,2,1397,1397,1397,2,2,1397,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1397,1397,1397,1397,1397,1397,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1397,1397,1397,1397}, + {1672,1248,429,813,262,92,809,1248,560,1365,1392,753,753,1259,1261,2,2,2,2,2,2,2,2,177,177,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,467,2,2,644,644,177,177,2,2,2,2,2,2,2,2,2,2,2,2,2,2,644,644,467,2,2,644,644,467,644,2,2,2,2,2,467,467,467,467,2,2,2,2,2,2,467,467,467,467,2,644,644,644,2,2,2,467,467,467,467,467,467,467,644,2,644,467,467,467,467,644,2,644,644,467,467,467,644,644,644,644,644,644,644,644,467,2,2,2,467,467,467,644,644,644,644,2,2,2,2,2,2,2,2,2,467,2,467,177,2,2,2,2,644,644,644,644,644,644,644,644,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,644,2,2,2,2,2,2,2}, + {1391,1598,1112,590,797,584,1354,47,1473,1291,1874,48,491,463,990,463,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,749,749,2,2,2,749,749,749,749,749,749,749,749,2,749,749,749,749,749,749,749,749,749,749,749,749,2,2,749,749,749,749,749,749,749,2,749,749,749,749,2,749,749,749,749,749,749,749,749,749,2,749,749,749,2,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749}, + {1875,1576,924,677,461,134,1525,1619,44,701,299,743,728,791,791,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,791,791,2,359,791,2,791,791,791,2,2,791,2,791,791,791,2,2,2,2,2,2,791,791,791,359,2,2,2,2,2,359,175,175,175,1606,2,791,2,175,2,175,175,175,175,2,175,2,2,2,791,2,2,791,2,2,2,2,2,2,791,2,791,2,2,2,791,791,791,2,791,2,791,791,791,791,2,2,791,2,2,2,2,791,791,791,791,1606,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1606,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1606,1606,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1267,904,1187,1595,765,1451,494,1573,950,909,87,1265,757,1371,1005,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,907,907,907,907,907,907,907,907,907,907,907,907,907,907,907,907,1725,1725,907,907,907,1725,1725,1725,1725,1725,1725,1725,1725,1725,1725,1725,1725,1725,1725,2,1725,1725,1725,1725,568,568,568,1725,1725,1725,1725,1725,568,568,1725,393,568,568,568,568,568,568,568,568,568,568,568,568,568,568,1725,1725,1725,1725,568,568,568,568,568,1725,1725,322,1725,1725,1725,1725,1725,1725,1725,1725,1725,1725,1725,2,1725,1725,1725,1725,1725,322,322,322,1725,1725,1725,1725,1725,1725,1725,322,322,322,322,322,322,322,1725,1520,1725,1725,1725,1725,1725,1725,2,2,322,322,322,1725,322,2,2,568,2,2,2,2,2,2,2,1520,1520,1520,1520,1520,2,568,568,568,1520,2,957,957,957,957,957,957,2,2,2,2,957,957,1520,1520,2,2,568,568,568,2,2,2,2,957,2,2,1520,1520,2,1520,393,1520,2,393,393,393,393,393,393,393,393,393,393,1520,2,1520,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1744,1011,935,492,158,1645,795,1056,74,679,367,675,675,1229,1229,1229,2,2,2,2,2,2,2,2,2,2,2,2,2,1229,2,2,2,2,2,2,2,2,2,2,1229,2,2,2,2,2,2,2,2,2,2,2,2,1229,1229,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,2,2,2,2,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,2,2,1229,1229,1229,1229,1229,1229,1229,2,1229,1229,2,1229,1229,2,1229,1229,2,2,1229,1229,1229,1229,1229,1229,2,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,2,2,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229,2,2,2,1229,2,2,2,2,2,2,2,1229,2,2,2,2,2,2,2,2,1229,2,2,2,2,2,1229,1229,2,2,2,1229,1229,2,1229,1229,2,2,1229,1229,1229,2,2,1229,1229,1229,1229,2,1229,1229,2,1229,1229,1229,1229,1229,1229,1229,1229,1229,1229}, + {1360,1091,1478,1237,97,578,1616,494,1422,223,865,1092,359,2,1080,4,2,2,2,688,1965,2,1965,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,201,2,2,2,2,2,2,201,201,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,201,201,201,2,2,2,2,2,2,2,2,2,2,201,201,201,688,688,688,2,2,688,688,2,688,688,2,2,2,2,2,2,688,688,201,2,201,1965,201,1965,1965,2,2,2,2,2,2,2,2,2,2,1965,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1750,386,393,840,723,791,1707,1319,1525,83,1302,571,280,2,280,73,2,2,2,1207,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1207,1207,1207,2,2,2,2,2,2,1207,1207,2,2,2,2,2,2,2,2,1207,2,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,1207,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1988,1988,1988,1988,1988,1988,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1207,2,2,2,2,2,2,2,1207,2,2,2,2,1207,2}, + {1763,1018,1859,432,717,723,874,1294,1050,1800,1237,619,1074,2,10,1237,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1376,652,461,225,361,936,1073,1279,149,619,983,511,1994,2,2,1076,1076,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1947,393,495,946,1375,391,2128,582,1143,695,1872,760,760,2,2,1456,974,974,435,974,974,435,974,2,974,974,2,2,2,2,2,2,2,2,2,974,974,974,974,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,974,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,974,974,2,735,735,2,2,2,2,2,974,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,974,974,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,735,735,735,735,735,735,2,2,2,2,2,2,2,2,2,2,2,2,735,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,974,2,2,2,974,974,2,2,2,2,2,2,974,2,2,2,2,2,2,2,2,2,735,735,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1297,943,275,618,180,460,370,1690,1406,1268,1325,356,428,712,712,712,712,2,2,802,802,2,1235,1235,1235,1235,1235,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1235,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1235,2,2,1235,2,2,2,2,2,2,2,2,2,2,2,1235,1235,2,1235,1235,2,2,1235,2,2,2,2,2,2,2,2,2,2,1235,1235,1235,2,2,2,1235,2,2,2,2,1235,1235,2,2,2,1881,2,2,1235,1235,1235,2,1235,1235,1235,2,2,2,2,2,2,2,2,2,2,2,2,2,1235,1235,1235,2,4,2,2,2,4,2,2,2,2057,213,213,1336,563,426,2057,2057,1339,1339,1339,1339,1339,2,1339,2,2,2,2,2,2,2,2,1235,1235,1235,1235,1235,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1235,1235,2}, + {1766,453,336,145,1519,1013,1243,569,1503,829,1401,1401,812,327,327,327,812,327,327,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,364,2,2,2,2,2,2,2,2,364,364,364,2,2,2,2,2,2,2,2,364,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,364,2,2,2,2,2,327,327,364,364,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,364,2,2,2,2,2,2,2,2,2,2,2,2,2,2,327,2,2,2,2,2,2,2,327,2,2,2,327,327,327,2,2,2,650,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,2,364,327,327,327,327,327,327,2,327,364,364,327,327,327,2,2,327,364,364,327,327}, + {1768,1463,531,1008,95,1677,362,1105,985,177,1682,1682,244,2,2,1234,1041,1041,1041,2,2,2,1041,1041,2,2,2,2,2,2,1894,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,370,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1041,1041,2,1041,1041,1041,1041,2,2,2,1041,1041,1041,1041,2136,2,2,115,115,115,115,115,115,2,2,2,2136,115,115,1720,1720,1041,2,2,1041,1041,2136,2136,2,2,1720,1041,1041,1041,2136,1041,1041,2136,2136,2,2,1041,2136,2136,1041,2,2136,2136,2136,2136,2136,2136,2136,2136,2136,2136,2136,2136,2136,1041,1041,1041,1041,2136,2136,1041,1041,115,1041,1041,1041,1041,1041,1041,1041,1041,1041,2,2,115,1041,1041,1041,115,115,1041,1041,2,2,2,1041,1041,1041,1041,115,115,115,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,2,2,1041,1041,1041,1041,1041,1041,1041,1041,1041,1041,2136,2136,2136,1041,1041,1041,1041,1041,115,115,115,1041,1041,1041,1041,1041,1894,1894,1894,1894,1894,2136,2136,2136,2136,1894,1894,1894,1894,1041,2136,1041,1041,1041,1894}, + {1912,489,572,826,1071,125,1508,49,512,437,20,48,884,1055,1055,1055,1055,1055,1055,1055,2,2,2,2,2,2,2,2,2,2,2,2,2,2,679,2,2,2,2,2,2,679,679,1736,1736,2,2,1736,2,2,2,2,2,2,2,2,2,2,2,2,2,729,2,2067,2067,1055,2,2,2,2,2,2,2,2,2,1055,2,2,2,2,2,2,2,2,2,729,729,2,2,2,2,1842,679,679,2,2,2,2,2,2,2,2,2,1055,729,2,2,729,1055,1055,1055,1055,1055,1055,2,1055,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,729,729,729,2,2,2,1055,2,2,2,1055,1055,1055,1055,2,2,1055,2,2,2,2,2,729,2,2,1055,2,1055,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,252,252,252,252,1238,1238,1238,252,337,337,337,337,337,679,679,2,2,2,337,337,337,2,2,337,337,337,2,2,2,337,1055,1055,630,630,630,630,630,630,630,630,630,630,630,630,337,2,1055,337,337,337,337,1055,337,337,337,1055,580,1055,1055,1055,1055,1055}, + {1780,1739,1357,1684,1586,736,208,966,1691,339,339,128,128,2,2,128,128,128,2,2,128,2,2,2,2,1929,2,2,338,2,2,338,338,2,2,2,2,2,341,2,2,2,2,2,338,2,338,338,2,2,2,2,2,2,338,2,2,2,2,2,2,2,2,338,338,2,2,338,338,2,2,2,338,2,2,338,338,338,338,338,338,2,2,338,338,338,338,338,338,2,2,2,2,2,2,338,338,2,2,2,338,338,338,2,338,338,338,2,338,338,2,338,338,338,338,2,338,338,338,338,338,2,2,2,2,2,2,2,2,2,2,2,338,338,338,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1387,1459,358,1409,1919,917,777,223,313,1847,1012,1024,1024,2,2,2,2,1420,1420,1428,1420,2,1420,1420,2,2,2,1420,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1117,1420,1420,1420,1420,1420,2,1420,1420,1420,1420,1420,1420,1420,1420,1420,1420,2,1420,1420,1420,1420,1420,1420,1420,1420,1420,1420,2,322,322,1420,1420,1420,1420,1420,1420,1420,1420,1420,1420,1420,2,1420,1420,1420,1420,1420,1420,1420,1420,1420,2,1420,1420,1420,1420,1420,1420,322,1420,1420,1420,1420,1420,1420,1420,1420,2,147,147,147,2,828,2,2,2,2,2,2,1420,1420,1420,1420,1420,1420,1420,1420,1420,2,303,303,322,322,322,322,1420,1420,322,303,303,1420,1420,1420,1420,1420,1420,2,2,2,2,2,2,2,2,2,2,2,2,2,2,303,303,2,2,1420,1420,1420,1420,1420,1420,1420,2,1420,2,2,2,2,2,2,2,2,2,2,1428,2,1420,1420,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1420,1420,1420,1420,1420,2,2,2,1428,1428,2,2,2,1420,1420,1428,2,2,1428,2,828,828,2,2,828,828,303,828,828,303,303,303,303,2,2,828,303,303,2,2,303,303,303,303,2,2,303,303}, + {1362,1383,1137,1633,361,1393,1942,68,42,1224,51,592,1318,2,2,2,2,2,1753,560,410,410,410,410,1215,2,1215,1215,1215,1215,1215,1215,1215,482,2,2,482,482,2,2,2,2,2,482,482,482,482,482,2,482,482,482,482,482,2,2,2,2,2,482,482,482,2,2,2,2,2,1215,2,2,1215,1215,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1215,1215,2,1215,1215,2,2,2,2,2,1215,1215,1215,1215,2,2,2,2,2,482,2,482,482,2,2,2,2,2,2,2,2,2,2,2,1215,2,2,2,2,2,2,2,482,2,2,2,2,2,2,2}, + {1289,907,228,665,1695,1735,489,214,762,1777,321,1674,932,2,2,2,2,1358,709,2,1959,1959,372,2,2,372,372,2,2,372,372,372,372,372,2,2,1959,1959,1959,1959,372,1959,1959,2,1959,1959,1959,372,372,372,372,1959,1959,1959,1959,372,372,372,372,1959,1959,1959,372,1959,1959,1959,1959,709,709,709,372,2,2,372,372,1959,1959,1959,1959,611,611,2,2,1959,1959,1959,1959,372,372,372,372,372,1959,1959,1959,1959,709,709,372,709,709,372,372,2,709,2,1959,2,2,709,709,709,709,709,709,709,709,2,372,372,372,372,2,2,2,2,372,2,2,2,372,2,1959,1959,2,2,2,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,2,372,372,372,2,372,372,372,372,372,372,372,372,372,709,709,709,372,372,372,372,372,2,2,1959,1959,2,2,2,2,2,2,372,372,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,709,709,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,372,2,2,2,2,2,2,2,2}, + {1378,680,1117,1367,759,62,319,563,505,1138,1093,345,693,2,2,2,780,780,2,2,2,729,729,729,2,2,2,2,2,2,729,729,729,729,729,2,2,729,729,729,729,729,729,2,2,2,2,2,2,2,2,2,2,2,2,2,729,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,729,729,2,2,2,2,2,2,2,2,729,2,2,2,2,729,2,2,2,729,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,729,729,729,729,729,729,729,729,2,2,2,729,729,729,729,729,729,729,729,729,729,729,729,729,2,729,729,729,729,729,729,81,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,2,2,2,2,2,2,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,2,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,2,729,729,729,729,729,81,81,81,81,729,729,729,729,729,729,729,729,729,729}, + {1802,1645,453,1079,604,618,334,855,541,167,37,88,849,2,2,518,518,2,2,530,2,2,2,2,2,2,2,119,119,2,2,2,2,530,2,2,2,2,2,530,530,530,530,530,530,2,2,530,2,2,530,530,530,530,530,530,2,530,530,119,522,530,522,2,530,530,2,2,2,530,530,2,2,119,530,530,530,530,530,530,530,2,2,810,2,810,2,2,2,2,2,2,530,530,530,2,2,2,530,2,530,530,2,2,2,530,530,530,2,2,2,2,2,2,2,530,2,2,2,2,2,2,2,2,2,530,530,530,2,530,530,2,2,2,2,2,2,2,530,530,2,2,2,2,2,2,2,2,2,530,530,530,530,530,530,530,530,530,2,2,2,530,530,530,530,530,2,530,530,2,530,530,2,530,2,2,2,2,530,2,530,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,530,2,530,2,2,2,2,2,2,2,2,2,530,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,530,2,530,530,530,530,530,530,2,2,2,2,2,2,2,2,2,2,2,2}, + {1275,1612,143,1586,502,987,555,436,2236,1826,494,494,358,2,2,213,2,2,2,2,2,2,1585,1585,1585,1585,1585,1585,1585,1585,1585,1585,2,1151,1151,1151,1151,1151,2,2,2,2,1151,2,2,2,2,2,2,2,2,2,2,2,2,2,2,425,1151,1151,2,2,2,2,2,425,425,425,425,425,2,2,2,2,2,1151,2,2,2,2,1151,2,2,2,2,2,2,425,2,2,2,2,2,1151,2,2,2,2,2,2,2,1151,1151,1151,1151,1151,1151,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1151,2,2,1151,2,2,2,2,2,2,2,2,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,1151,2,1151,1151,1151,1151,1151,1151}, + {1277,1672,348,357,66,728,79,1416,300,1527,1885,439,439,2,2,232,1281,2,2,2,2,2,2,2,2,2,2,2,2,157,2,2,2,1281,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1281,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1165,2,1165,1165,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1165,1165,2,2,1165,1165,1165,1165,1165,1165,1165,1165,2,1165,1165,1165,1165,1165,1165,1165,236,1165,1165,1165,1165,1165,1165,1165,1165,1281,1165,1281,1281,1281,1281,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1165,1268,1268,1268,1281,1268,1165,1165,1165,1165,1165,1281,1281,1281,1281,1281,1281,1165,1165,1281,1281,1165,1281,1165,1165,1165,1165,1165,1281,1281,1165,1165,1281,1281,1165,1165,1165,1165,1281,1281,1281,1281,1281,1281,1165,1165,1165,1165,1165,1165,1281,1281,1281,1281,1281,1281,1281,1281,1281,1165,1281,1281,1281,1281,1165,1165,1165,1165}, + {1322,512,560,432,365,87,1835,1137,515,1271,1739,309,309,1229,1229,1229,2,2,2,2,2,2,2,2,416,416,416,416,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,416,416,416,2,416,2,2,2,2,2,2,2,2,2,2,2,416,416,416,416,416,416,416,416,416,416,416,416,14,276,276,14,2,2,2,512,512,1334,1781,1781,137,1781,1781,137,612,612,1781,1781,1781,416,416,416,416,612,2,612,738,2,738,416,416,416,416,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,283,283,283,283,283,2,283,283}, + {1758,835,287,888,391,875,1834,516,1432,1171,98,408,302,976,976,1963,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1695,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1444,394,1613,796,645,1406,186,158,402,1364,314,588,606,2,577,117,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1845,1845,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,69,2,2,2,2,2,2,2,2,2,2,2,2,2,1845,2,2,2,2,2,872,2,2,2,2,2,2,2,69,2,2,2,69,69,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1845,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1845,1845,2,2,1845,1056,2,981,1845,981,2,2,981,2,2,2,981,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,981,2,2,2,2,2,2,2,2,2,2}, + {1337,1391,137,371,165,87,1026,20,419,99,572,572,918,854,918,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1150,2,2,1150,1150,1150,1150,1150,2,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,2,2,1150,1150,1150,1150,2,1150,2,2,2,2,1150,1150,1150,2,1150,1150,2,1150,1150,1150,2,2,2,2,2,1150,1150,2,1150,1150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1323,589,526,1555,1636,1172,86,42,1545,57,627,1769,1769,2,867,343,2,2,2,2,2,2,2,724,2,2,2,2,724,724,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,724,724,724,724,724,2,2,724,724,2,724,724,2,724,724,724,724,724,724,724,724,2,2,2,2,2,2,2,2,724,2,2,2,2,2,2,398,2,724,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,398,398,398,398,398,724,724,724,724,724,398,398,398,398,398,398,398,398,398,398,724,398,398,2,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,2,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,2,2,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,2,2,398,398,398,398,398,398,398,398,398,398,398,398,398,398,724,398,398,398,398,398,2,398,398,398,398,398,398,398,398,398,398,398,398,398}, + {1323,1647,384,301,270,549,1098,1144,1066,55,88,1805,683,2,945,120,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1858,1858,1858,1858,1858,1858,1858,1858,1858,1858,1858,1858,2,2,1858,1858,2,2,2,2,1858,1858,1858,1858,1858,1858,1858,1858,1858,2,1858,1858,1858,1858,1858,1858,1858,1858,1858,1858,1858,1858,1858,2,2,1858,1858,1858,1858,1858,1858,1858,1858,1858,2,2,2,2,2,2,1858,1858,2,1858,2,2,2,2,1858,1858,2,2,1858,1858,1858,1858,1858,1858,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1858,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1325,1300,1353,1575,33,730,46,1476,84,84,189,457,352,2,1479,2,2,2,2,2,2,2,2,2,2,2,2,1565,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1181,1181,1181,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1181,1181,2,2,2,2,2,1181,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1419,590,223,345,1505,1226,1788,848,671,731,931,593,723,723,723,2,2,2,2,2,2,2,2,2,2,2,879,879,879,879,879,879,879,879,879,879,879,2,2,879,879,879,879,879,879,879,879,879,879,2,2,2,2,2,2,2,2,2,2,2,2,791,2,2,2,2,2,2,2,2,2,2,2,2,2,879,879,879,879,879,2,2,879,879,879,879,879,879,879,879,2,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,879,2,2,2,2,2,2,2,2,2,2,2,2,2,879,879,879,879,879,879,418,418,418,2,418,2,2,2,879,2,2,2,2,2,2,2,2,879,417,417,417,417,417,417,879,2,2,2,2,2,2,2,2,1377,1377,2,2,1377,2,879,879,2,2,2,2,2,2,2,2,2,2,2,2,2,2,879,418,418,2,2,2,879,2,879,879,2,2,791,2,2,2,418,2,2,879,879,879,2,2,2,2,2,2,2,879,2,2,879,2,2,2,2,879,879,879,2,2,2,2,2,2,2,2,2,2,2,2,418,879,418}, + {1327,1075,539,1017,926,350,1102,236,494,1268,286,286,1293,267,227,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1533,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1533,1533,2,2,1533,1533,2,2,1533,2,2,2,2,2,2,2,2,2,1533,1533,2,1533,1533,1533,1533,2,2,1533,2,2,2,2,2,2,2,2,2,2,2,2,2,1533,2,1533,2,2,2,1533,2,2,2,2,2,2,2,2,2,2,2,2,2,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,2,1533,1533,1533,1533,1533,1533,1533,2,2,2,2,2,2,2,2,1533,1533,2,2,1533,2,2,2,1533,2,2,2,2,2,2,2,2,2,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,2,2,1533,1533,1533,2,1533,1533,1533,49,49,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,2,2,1533,1533,1533,1533,1533,2,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,1533,2,1533,2,2,2,2,2,2,2,2,2,2,1533,2,2,2,2}, + {1472,661,1538,487,94,2209,563,138,881,1735,718,203,1382,1473,1473,1473,1473,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1159,1159,2,1159,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1159,2,2,2,1159,1159,1159,2,2,2,2,1159,1159,2,2,2,2,2,1159,1159,2,2,1159,1159,1159,1159,2,2,1159,1159,1159,1159,1159,2,2,388,388,2,2,2,2,2,2,388,388,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,388,388,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1343,365,790,1047,983,1015,918,1469,1416,126,1238,1238,1238,1238,151,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1717,1717,1717,1717,1717,1717,2,2,2,1056,2,1056,2,2,2,2,2,2,1056,1056,1056,1056,1056,1056,1056,1056,1056,1056,1056,1056,2,2,2,2,2,2,2,2,2,827,827,827,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,525,525,525,2,2,2,1422,2,1422,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1422,1422,1422,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1422,1422,1422,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,525,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1422,85,85,85,85,2,1422}, + {1413,766,349,1471,45,625,733,1082,170,58,1268,207,1081,1081,1081,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1111,1111,1111,1111,2,2,1111,2,2,2,2,2,2,2,1111,2,2,2,2,2,2,255,2,1111,1111,1111,1111,2,2,2,2,2,2,1111,1111,1111,1111,1111,1111,1111,1111,1111,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1111,1111,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1111,1111,1111,1111,2,2,2,2,2,2,2,1111,2,2,1111,2,2,1111,1111,1111,1111,2,2,2,2,2,2,2,2,2,1111,2,2,2,2,2,2,2,2,1111,2,2,1111,1111,2,2,2,1111,1111,1111,1111,1111,1111,1111,1111,1111,1111,1111,1111,1111,1111,1111,1111,1111,1111,1111,1111,1111,1111,2,2,2}, + {1861,1487,419,97,799,1791,458,1029,370,627,57,414,414,1540,247,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1881,716,268,387,2138,1212,999,408,1363,434,1429,1429,1648,1648,1007,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,316,316,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,316,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,316,316,316,2,316,316,316,316,316,316,316,316,2,2,316,316,316,316,2,316,2,2,2,2,2,2,2,2,2,2,316,2,2,316,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,316,2,2,2,2,2,2,2,2,2,2,2,316,316,316,316,316,2,2,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,2,316,316,316,316,316,316}, + {1480,1131,1089,1688,340,962,505,1816,139,44,1350,403,1385,1996,173,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2018,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1868,650,1146,1690,948,43,497,692,1628,1302,1302,108,462,731,731,2,2,2,2,2,2,2,185,185,185,2,2,2,2,2,2,2,921,921,2,921,921,2,2,2,921,921,2,2,921,921,921,2,2,462,462,185,185,921,185,185,185,185,185,2,185,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,462,462,462,462,2,462,462,462,2,462,462,462,2,2,2,2,185,185,2,2,2,2,2,2,2,2,2,2,2,2,2,921,921,2,2,2,2,921,921,185,185,185,185,185,2,921,921,2,921,185,921,921,921,2,2,921,921,185,185,921,921,921,2,2,921,921,921,2,921,921,921,185,185,185,921,921,921,921,2,2,2,2,2,2,921,921,921,921,2,2,2,2,921,2,2,2,2,2,2,2,2,2,2,2,921,921,2,921,2,2,2,2,2,921,2,2,2,921,921,2,2,921,921,2,2,2,921,2,2,2,2,2,921,921,921,921,921,921,2,2,2,2,2,2,2,2,2,921,2,2,2,2,2,2,2,2,921,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,921,2,2,2,2}, + {2023,1204,531,733,1054,618,668,363,783,218,1302,2055,559,2055,2055,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,131,131,131,131,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1745,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1328,601,601,617,554,467,391,1545,162,1361,807,1565,1565,243,1344,2,725,510,510,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,510,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1808,1525,1129,652,1195,329,1410,558,1322,911,161,536,737,94,306,2,2,2,2,2,2,2,2,2,541,541,541,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,234,234,234,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,541,541,541,2,541,541,2,2,541,541,541,541,541,2,541,541,541,541,541,541,541,2,2,2,2,2,541,541,2,2,2,2,541,2,2,541,541,2,541,541,541,541,541,2,2,2,2,2,2,2,2,541,541,541,541,541,541,541,2,2,2,2,2,2,2,2,2,541,541,2,2,2,2,2,2,2,2,2,2,2,2,541,541,2,2,2,2,2,2,2,2,541,541,541,2,2,2,2,2,541,541,541,541,541,2,541,2,2,2,541,541,541,541,2,2,2,2,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,2,2,541,541,541,2,541,541,541,541,541,541,541,541,541,541,541,2,541,541,2,2,2,2,541,541,2,541,541,541,2,541,541,541}, + {1911,1338,639,1106,854,128,19,1353,847,253,618,517,2054,2054,93,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1554,2,2,2,2,2,2,2,1554,1554,86,86,86,86,2,2,2,2,2,2,2,2,2,2,2,2,2,2,86,2,1554,1554,1554,1554,1554,1554,1554,1554,2,1554,1554,1554,2,2,2,2,2,2,2,2,1554,1554,2,2,2,1554,2,2,1554,1554,1554,2,2,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,86,86,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,86,86,1554,1554,2,86,86}, + {1825,850,180,1483,864,953,50,81,106,432,1372,1372,1212,10,10,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2024,488,1184,1484,105,151,788,1657,568,353,577,461,425,425,784,425,461,461,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,879,2,879,2,2,2,2,2,2,2,2,2,2,2,2,2,784,2,2,2,2,2,2,784,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,879,879,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,879,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,879,879,2,2,2,2,2,2,2,2,2,2,2,2,2,2,879,879,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1892,441,977,228,1252,604,735,136,889,878,1319,1319,2127,2127,1963,367,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1289,1289,1289,1289,1289,2,348,348,2,2,2,2,348,2,2,2,2,2,2,348,348,348,348,348,1289,1289,348,348,348,348,348,348,348,348,2,1289,1289,348,348,348,348,348,348,348,348,348,348,348,1289,1289,1289,2,2,2,2,1289,1289,2,2,2,2,348,2,348,348,348,2,920,2,2,2,348,348,920,1289,593,348,348,348,348,348,348,348,348,348,348,920,920,920,920,920,657,920,920,920,920,920,2,2,593,593,593,2,593,2,593,593,593,593,593,593,593,593,920,920,920,348,920,920,920,920,920,920,920,348,348,2,2,920,920,920,2,2,920,920,2,920,1289,1289,1289,920,1289,2,593,593,920,920,920,2,920,920,920,2,2,920,593,593,2,593,593,593,593,593,593,2,920,920,920,920,593,2,2,593,593,593,593,593,593,593,593,2,593,593,920,593,593,348,348,593,348,2,2,348,348,2,593,2,2,593,2,348,2,2,920,920,593,2,593,593,593}, + {1912,769,703,1758,884,671,932,49,1943,138,480,1416,197,2211,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,693,693,693,693,693,2,693,693,2,2,693,2,2,693,693,2,2,2,2,693,693,2,693,693,693,693,693,693,693,2,2,693,693,693,693,2,2,693,2,2,693,2,693,693,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,693,2,2,2,2,2,2,2,2,2,693,693,693,693,693,693,693,693,693,693,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,693,693,693,693,2,2}, + {1820,1553,536,1351,425,1268,227,1742,429,348,1397,552,1151,1151,2,180,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1475,485,218,1200,613,489,1861,634,156,2299,950,1221,530,530,530,530,530,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,239,239,2,2,2,2,2,2,2,67,239,239,239,239,239,2,2,239,239,239,239,239,239,239,239,239,2,239,2,239,239,239,239,2,2,2,239,239,239,239,239,2,2,2,2,2,2,2,2,2,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,2,2,2,2,2,292,292,292,239,2,239,239,239,292,292,292,292,239,292,292,403,403,239,239,239,239,239,239,239,239,239,292,292,292,292,292,292,292,292,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,67,239,239,239,239,239,239,239,239,239,239,239,239,500,500,67,239,239,239,239,239,239,239,500,500,500,500,239,239,239,239,292,239,239,239,239,239,239,239,239,239,239,403,239,239,403,403,403,403,403,403,403,403,403,403,403,239,239,239,239,239,239,239}, + {1453,1044,556,833,305,1493,989,1158,726,1790,532,1229,1229,1229,2,2,2,2,2,2,2,2,2,2,259,2,2,2,2,2,420,2,2,2,2,420,420,2,259,259,2,2,2,420,420,420,2,2,2,2,2,2,420,420,420,420,420,420,420,420,420,259,2,420,420,420,420,420,420,420,420,420,2,420,420,2,420,420,420,2,420,259,259,259,420,420,420,420,2,420,2,2,2,2,2,2,2,420,420,420,420,420,420,420,420,420,420,420,420,420,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,420,420,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,420,420,420,2,2,259,259,2,420,420,420,420,420,420,2,2,2,420,420,420,420,420,420,420,420,420,420,420,259,259,2,420,420,2,2,2,420,420,420,420,420,420,420,420,420,420,259,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420}, + {1898,787,769,1166,799,479,1066,390,821,1061,201,201,1339,703,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,659,659,659,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,659,659,2,2,659,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,420,420,659,659,2,2,2,420,420,420,420,420,420,420,420,420,2,659,2,2,2,2,2,2,659,659,659,2,420,2,2,2,420,420,2,420,2,2,2,2,659,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,659,659,659,659,659,659,659,659,659,659,2,2,2,2,2,420,2,420,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2059,592,492,973,137,1331,392,334,635,1480,2254,1796,1796,284,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,377,2,2,2,2,2,2,2,2,2,2,2,377,377,377,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,377,377,377,377,377,377,377,377,377,377,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,377,377,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,377,377,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,287,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1460,986,709,268,755,824,83,893,115,656,2071,1323,1001,144,2,2,2,2,2,2,2,2,1527,1527,1527,1527,1527,1527,1527,2,801,801,2,2,801,1527,1527,1527,801,801,801,801,801,801,2,2,2,2,2,2,2,1527,1527,2,801,1527,2,2,2,2,2,2,2,1527,1292,1292,1527,1527,1527,1527,1527,2,1527,1527,2,2,2,1527,1527,801,2,2,1527,1527,1527,1527,1527,1527,1527,1527,801,801,801,801,1527,801,1527,1527,1527,1527,1527,1527,1527,1527,801,801,1527,1527,1527,1527,1527,1527,1527,1527,1527,801,2,2,2,1527,1527,801,801,2,1527,1527,1527,801,2,2,1292,2,801,2,801,801,2,801,801,2,2,1292,1292,2,2,2,801,2,2,2,2,801,801,2,2,2,801,801,801,2,2,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,1292,801,801,801,801,801,801,2,2,2,2,2,2,2,2,2,801,801,2,2,2,801,2,2,2,2,2,2,2,2,1480,1480,2,2,1480,1480,1480,2,1480,1480,1480,1480,2,2,2,2,2,2,2,2,2,2,731,731,2,2,801,801,1292,1292,1292,2,2,1292,1292,2,1292,1292,2,2,2}, + {1913,1311,498,499,287,603,677,1662,753,113,762,966,966,966,2,381,762,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,50,2,2,2,2,2,2,2,50,50,50,50,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,50,50,50,50,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,50,50,50,50,50,50,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1850,1476,792,840,2037,229,1578,526,431,1485,1450,1001,1001,1001,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1595,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1595,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,220,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,618,2,2,2,2,618,618,618,618,1595,2,618,2,2,1595,1595,2,2,2,1595,618,2,618,2,2,618,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,618,2}, + {2078,1296,1018,1176,881,1169,642,1221,948,1462,519,1584,374,374,2,2,181,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1653,1653,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,635,2,2,2,2,2,2,2,2,2,2,2,2,2,1653,2,2,2,2,2,2,2,2,2,2,2,2,635,635,635,635,409,635,635,635,635,2,635,409,409,409,2,2,2,2,2,2,2,2,2,2,635,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1653,1653,2,2,2,2,2,409,2,409,409,409,1653,1653,1653,1653,2,2,2,409,2,1653,1653,1653,1653,1653,1653,2,2,2,2,2,2,2,2,2,2,2,1653,2,1653,1653,1653,2,1653,409,409,409,1653,1653,1653,1653,1653,1653,1653,1653,1653,1653,1653,1653,1653,1653,1653,1653,1653,1653,1653,1653,1653,1653,1653,1653,1653,2,2,2,1653,1653,1653,1653,2,1653}, + {2103,1065,290,608,2281,338,259,1160,1355,1696,876,1023,1023,489,2,2,1615,2,2,2,2,2,2,2,2,2,2,2,2,2,1615,1615,1615,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1615,1615,1615,1615,2,1615,1615,2,1615,1615,2,2,1615,1615,1615,2,1615,1615,2,2,1615,1615,1615,2,1615,1615,1615,2,2,2,2,1615,1615,2,2,2,2,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,2,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,2,2,1615,1615,1615,2,2,2,2,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,2,2,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,2,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,2,2,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615,1615}, + {1922,1383,813,346,1247,666,1931,1111,2042,79,682,501,1349,1930,2,2,681,681,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1922,542,1739,625,88,1376,259,49,338,318,505,788,1314,657,2,2,2,1314,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,849,2,849,2,2,2,2,2,2,2,2,2,2,2,2,2,849,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,849,849,849,2,2,2,2,2,849,849,2,849,2,2,2,2,2,2,2,2,2,2,2,849,2,849,2,2,2,2,2,2,2,2,2,2,1350,1350,1350,1350,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,849,849,2,2,2,2,2,2,849,2,2,849,2,2,2011,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1948,1530,576,582,1069,119,2131,41,1178,1677,1677,1677,325,346,2,2,2,2,2,2,1401,2,33,2,2,2,2,2,2,71,71,71,71,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,71,71,2,71,71,71,71,71,2,2,2,2,2,2,2,2,2,2,2,2,65,2,71,71,2,2,2,2,2,2,2,2,71,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,71,71,2,2,2,71,71,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,71,71,71,188,188,2,188,188,71,71,71,71,188,71,71,2,188,188,2,2,2}, + {1928,1111,168,1252,1467,1083,1927,603,1278,714,1027,50,751,1970,2,2,2,2,621,2,100,2,2,10,10,2,2,2,2,793,793,793,793,793,2,2,2,793,793,2,2,793,2,2,2,621,621,2,621,621,2,2,2,2,793,793,2,793,793,793,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,793,2,2,793,2,2,2,621,621,621,621,621,621,793,793,621,621,621,621,621,2,2,793,2,2,2,2,2,793,2,2,793,2,2,793,2,793,793,793,793,793,2,2,2,2,2,2,2,2,2,2,793,2,2,2,2,2,2,2,793,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,793,793,2,2,2,2,2,2,2,2,2,2,2,793,2,2,2,793,793,793,793,793,793,793,2,793,793,793,2,2,2,2,2,2,2,2,793,2,2,2,2,2,793,793,793,793,793,2,2,793,793,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,793,793,793,2,2,2,2,793,793,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,793,2,2,2,2,2,2,2,2,2}, + {1394,896,674,2350,1375,1599,1858,135,762,722,628,685,705,28,2,2,2,2,2,2,2,2,2,2,2,855,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,855,855,855,855,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,855,2,2,2,2,855,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,855,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1540,791,518,419,1130,1068,299,1386,1378,134,859,859,71,162,2,71,71,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1719,1719,1719,2,1719,1719,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1832,471,500,447,1682,306,1146,545,1090,1787,1887,1039,430,321,1334,2,1395,2,2,2,2,2,2,2,2,2,2,559,2,2,559,2,2,2,2,2,1395,1395,2,1395,1395,2,766,2,2,2,2,1395,1395,1395,1395,2,2,559,2,2,1395,1395,1395,1395,1395,2,2,2,559,559,559,1395,1395,1395,1395,559,1395,2,559,559,559,559,559,559,559,559,559,559,1395,1395,1395,2,559,559,559,559,559,1395,1395,1395,1395,2,2,801,1395,1395,2,2,559,559,559,1395,1395,559,559,559,559,2,801,801,801,1395,801,1395,1395,1395,1395,1395,1395,1395,1395,1395,2,2,1395,559,559,559,2122,2,559,559,559,559,559,559,559,559,2,2,559,559,559,559,559,559,559,631,2122,631,631,1395,1395,559,559,2122,1395,2122,559,559,559,801,801,801,801,801,801,2,559,559,559,559,2122,1395,559,559,559,559,559,559,1395,2122,559,2,2,2,1395,1395,2,2,1395,1395,559,559,559,559,2,559,559,559,1395,1395,559,559,2122,559,559,2122,2122,2122,2122,559,559,559,559,559,559,559,559,559,559,559,1395,1395,559,1524,1524,1524,1524,1524,1524,559,1524,1524,1524,1524,1524,1524,1524,1524,1524,2,559,1395,1395,1395,1395,1395,1395,2}, + {2107,709,828,154,542,184,1094,1665,307,1549,177,2007,85,773,2,2,2,2,2,2,2,2,2,2,2,697,2,2,2,2,697,2,697,697,697,2,2,2,2,697,697,697,2,697,697,697,697,2,2,697,697,2,2,2,697,697,2,697,697,2,697,697,1163,1163,2,2,1163,1163,1163,697,697,697,697,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,697,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,691,2,697,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,697,2,697,697,697,697,2,2,2,697,2}, + {1882,1310,382,2087,769,1172,349,961,1479,76,1156,2264,1041,527,2,2,2,2,2,2,2,2,2,2,2,591,2,2,2,2,2,2,2,2,2,2,325,325,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,2,591,591,591,591,591,591,591,2,591,591,591,591,591,2,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,597,597,2,597,597,597,2,597,597,2,591,591,591,2,2,591,2,2,2,2,2,2,2,2,597,597,597,2,2,2,2,2,2,2,591,2,2,2,2,2,2,2,2,2,2,2,597,2,597,2,2,2,2,2,2,2,2,2,2,591,591,591,2,591,591,591,591,591,591,2,591,591,591,591,591,2,591,591,591,591,591,591,591,2,2,591,2,591,2,2,2,2,2,2,2,2,2,2,2,2,383,383,2,2,2,591,591,597,2,2,597,597,2,2,2,2,2,2,2,2,2,2,2,2,591,2,2,2,2,2,2,2,597,597,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1977,1218,244,365,576,666,761,238,629,913,1907,986,1351,986,704,1257,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,163,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,163,163,163,163,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1508,1501,1057,166,882,1562,90,614,165,1870,1370,1158,783,1230,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1336,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,157,2,2,2,2,2,2,2,2,2,1336,1336,1336,2,2,2,2,2,1336,1336,1336,1336,1336,2,1336,2,1336,1336,2,1336,1336,2,1336,1336,2,2,2,1336,1336,2,1336,1336,1336,1336,1336,1336,1336,1336,1336,1336,1336,1336,1336,1336,1336,1336,1336,1336,1336,1336,2,1336,1336,1336,1336,1336,1336,1336,1336,1336,1336,1336,1336}, + {1889,1210,1246,1326,668,1199,77,565,1277,1607,874,1433,1433,77,2,681,2,2,2,2,2,2,2,679,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,432,432,432,432,432,432,2,2,477,477,477,477,477,432,493,432,432,432,904,904,904,788,788,2,432,432,432,432,432,432,432,432,432,477,477,477,788,788,788,788,788,788,788,379,788,788,788,788,788,788,788,788,788,788,788,52,52,379,379,379,788,52,52,788,788,788,788,788,788,788,788,432,477,432,52,52,52,379,379,379,2,493,493,493,788,788,432,432,432,432,477,477,379,379,379,379,379,379,379,379,146,432,432,432,788,788,788,624,379,624,624,624,624,624,624,624,2,2,788,379,379,379,379,493,493,493,379,379,493,499,499,499,499,499,499,2,493,2,788,2,2,2,2,2,432,2,2,2,2,477,2,2,2,2,2,2,2,385,2,689,689,1713,1713,1713,1713,1713,1713,1713,1713,6,36,1713,2,2,1024,1024,137,2041,2041,2041,226,226,1258,1258,36,36,1642,904,748,379,624,624,624,379,379,379,379,379,379,379,379,379,379,379,379,379,2,2,2,2,624,624,624,624,493,379,379}, + {1496,1912,1291,1053,510,2322,1048,1530,2223,673,894,594,628,332,2,2,2,2,2,295,295,295,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,295,295,2,2,2,2,295,295,295,295,295,295,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,295,2,2,295,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,375,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1520,1107,1082,687,484,1732,676,1595,467,653,1091,428,2113,332,332,332,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,2,383,383,383,383,2,2,383,383,383,383,383,383,383,2,383,383,383,383,2,2,2,383,383,383,383,383,2,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,2,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,2,1247,1247,1247,1247,1247,1247,1247,1247,1247,2,2,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,2,2,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,1247,383,383,383,383,1247,383,383,383,383,383,383,383,383,383,1247,383,383,217,217,217,1247,383,1247,1247,1070,1247,1247,1247,1247,1247,217,217,1247,383,383,383,217,383,383,2,1247,383,383}, + {1905,612,920,848,562,2032,230,1305,1073,851,731,798,798,357,516,2,2,2,2,2,2,2,2,1465,1465,373,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,454,2,2,8,8,373,2,2,1816,78,454,454,649,312,312,1465,1465,312,373,454,373,1465,1465,1465,373,373,373,1465,1465,1465,1465,373,373,1465,373,373,373,373,1465,1465,373,373,373,1465,1465,1465,1465,1465,1465,1465,1465,373,1465,1465,1465,1465,1465,1465,1465,1006,1492,57,57,57,922,1630,1630,1630,1630,1630,1630,1630,1630,1630,1630,1630,1630,1630,1630,1630,373,373,315,315,315,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,373,373,373,373,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,373,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1465,1630,1492,57,57,57,922,1006,1630,1630,1630,1630,1630,1630,1630,373,1630,1630,1630,1630,1630,1630,373,1630,315,315,315,1630,1465,1465,1465,1465,1465,1465,1465,1465,315,1465}, + {1428,1062,1016,75,297,1130,533,768,464,753,48,1510,1510,418,375,1626,2,221,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,280,2,2,2,2,2,2,2,2,2,2,283,283,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,221,280,221,221,2,2,280,2,2,2,2,280,280,2,283,2,283,2,2,2,2,2,2,2,2,2,2,283,2,2,2,2,2,2,2,2,283,283,283,283,280,280,1449,2,2,2,2,2,2,2,283,283,2,283,283,2,283,2,2,2,2,2,2,2,283,283,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,283,2,2,283,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,283,2,2,283,1449,1449,1449,1449,1449,2,2,2,1449,1449,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1449,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1396,729,1710,337,371,489,1341,2117,132,1870,853,853,408,1079,328,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,999,999,2,2,999,999,2,2,999,999,999,999,999,999,999,547,547,999,999,999,999,2,2,2,2,2,2,999,999,999,999,999,999,999,999,999,999,999,999,999,999,2,2,2,2,547,547,547,547,494,999,999,547,547,999,999,999,2,2,999,999,999,999,999,999,999,2,2,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,2,2,2,2,2,494,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,999,2,2,2,2,2,2,2,999,999,999,999,999,999,494,494,2,494,999,999,999,2,999,999,2,2,999,999,2,999,2,2,999,999,999,999,999,999,999,999,2,999,999,2,2,999,999,999,999,999,999,999,999,999,999,2,2,999,999,999,999,999,2,999,999,2,2,2,2,494,2,494,2,494,494,494,999,999,999,999,999,999,999}, + {1978,1051,977,588,1423,1001,508,409,825,497,659,1063,384,463,463,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,765,2,2,2,2,2,2,765,765,765,765,765,765,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,765,765,2,2,765,2,2,2,2,2,2,2,2,765,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,765,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,765,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,765,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1534,854,2007,1207,947,1773,1571,1505,909,1471,1655,1655,2334,1327,409,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1548,1548,2,2,2,2,2,2,2,2,2,2,1548,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1548,2,2,2,2,1548,1548,1548,1548,1548,1548,2,2,2,2,2,2,2,2,2,2,2,2,1548,1548,1548,2,1548,1548,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1548,1548,1548,1548,1548,2,2,2,1548,2,2,2,2,2,2,2,2,2,2,1548,1548,1548,1548,1548,1548,1548,1548,1548,1548,2,2,2,2,2,2}, + {1520,1595,1238,1238,131,969,1745,1121,822,865,716,571,571,1679,1679,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,992,992,992,992,992,992,992,992,2,2,992,992,992,2,992,992,992,1605,1605,2,2,2,2,2,992,992,992,992,992,992,992,992,992,992,992,992,2,992,1605,1605,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,2,2,992,992,992,197,2,2,2,197,197,992,992,197,197,197,992,992,70,197,2,992,992,992,992,197,197,197,197,197,197,197,197,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,70,70,992,70,70,70,70,70,70,70,70,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,1620,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,70,992,992,992,992,197,197,197,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,992,1605,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263}, + {2157,2106,679,238,378,49,1101,588,811,1313,1556,2301,475,812,812,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,900,2,2,2,2,2,2,2,900,900,2,2,2,2,2,900,369,369,369,369,369,900,900,900,900,900,900,2,1429,1429,1429,900,900,2,2,900,900,900,900,2,900,900,900,900,900,900,900,900,1429,2,2,1429,1429,2,2,2,900,2,2,2,2,2,2,1429,2,1429,1141,1429,900,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,432,900,900,2,2,2,432,900,900,900,900,2,2,900,900,2,2,2,2,2,2,2,900,2,2,2,900,2,2,2,2,900,2,2,2,2,2,2,2,2,2,900,900,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,397,397,397,397,397,397,866,27,27,620,815,815,815,900,900,2,125,462,900,2,2,2,2,125,125,125,2,125,125,125,900,900,462,462,462,2,462,2,2}, + {2187,1515,549,1416,1073,1613,47,1046,390,252,1214,1404,1404,933,1013,2,2,2,1025,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2145,1069,662,709,737,1141,1737,827,1384,1628,107,107,1032,277,277,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1505,2,2,2,1505,2,1505,2,2,2,2,2,2,2,2,2,1505,1505,2,2,2,2,2,2,2,2,2,1505,2,1505,2,1505,2,1505,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1505,2,1505,1505,2,2,2,2,2,2,2,2,2,2,1505,1505,2,2,2,2,2,2,2,2,2,2,2,2,2,1505,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1505,2,1505,1505,2,2,2,2,2,1505,1505,1505,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1505,1505,489,1505,1505,1505,1505,1505,2,2,2,2,2,1505,1505,1505,1505,1505,1505,1505,1505,1505,1505,1505,1505,1505,1505,1505,2,2,2,2,1505,1505}, + {1547,928,196,464,373,1696,1395,1546,967,735,1126,878,878,919,358,2,2,2,2,2,2,2,2,2,2,558,2,2,558,2,2,2,1254,2,2,558,1254,1254,1254,2,558,558,2,2,558,558,1254,1254,2,2,2,558,558,558,558,1338,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,558,558,558,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,558,2,2,558,558,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,558,2,558,558,558,2,2,2,2,558}, + {2173,1379,155,393,1578,610,1911,899,697,58,185,597,597,1249,1369,2,2,2,2,1369,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1016,2,2,2,2,2,2,2,1016,2,2,2,2,2,1016,2,2,1016,1016,1016,2,2,2,1016,2,2,2,2,2,2,2,2,2,2,2,2,2,1016,1016,2,2,2,2,1016,1016,1016,1016,2,2,2,1016,1016,1016,1016,1016,1016,1016,1016,2,2,2,1016,1016,1016,1529,1016,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1016,1529,1529,2,1529,1529,1529,1529,1016,1016,1016,35,1016,1016,1016,1016,1016,1016,1016,1016,1016,1016,1016,1016,1016,1016,1016,1016,1016,1016,1016,1016,1016,2,2,1016,1016,1016,1016,1016,1016,1016,2,1016,1016,1016,1016,1016,1016,2,2,2,1016,1016,1016,1016,1016,1016,1016,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1016,2,2,2,2,306,1016,1016,1016,2,1016,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1016,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1016,2,1016,1016,2,2,2,1016,2,2,2,2,2,2,2,2,2,2,2,1016,1016,2,2}, + {1413,1589,1603,2268,520,333,1416,859,1619,867,1154,512,1291,413,413,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,262,262,262,2,2,1621,2,2,2,2,2,262,2,262,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1621,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1274,1274,2,2,2,262,2,2,2,262,262,262,262,2,2,2,1274,1274,1274,2,2,2,2,2,2,2,2,2,2,2,2,2,262,2,2,2,2,2,2,2,2,2,2,2}, + {1600,1823,1698,1268,623,583,1932,1674,522,529,1862,1281,246,989,246,2,246,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,601,601,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,601,601,601,601,2,2,801,801,801,2,2,2,2,2,2,2,993,993,993,993,2,2,2,2,993,993,993,993,993,2,2,601,993,993,993,993,993,993,993,993,601,2,601,601,2,601,601,601,601,993,993,993,993,993,601,2,601,993,993,601,601,601,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1017,993,993,993,993,993,601,601,2,2,2,2,601,601,601,601,601,601,601,601,601,601,601,601,601,601,2,2,2,801,801,801,801,801,801,2,801,2,2,2,2,2,2,2,2,993,2,2,993,2,2,2,2,993,993,801,801,801,2,2,801,601,801,801,801,801,801,801,801,801,801,601,601,801,801,801,801,801,801,601,2,801,801,801,801,801,801,801,801,801,801,801,601,801,801,801,801,801,801,801,801,801,801,801,801,801,601,801,801,801,801,801,801,801,801,801,601,601,801,801,801}, + {2212,842,1249,1202,1030,949,809,639,327,878,1241,1241,98,1542,1542,2,103,103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1591,1591,2,2,2,1591,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1591,2,1591,1591,2,1591,1591,1591,2,2,2,2,2,1591,1591,1591,2,2,1591,2,2,2,2,1591,1591,1591,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1591,1591,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1591,1591,2,2,2,2,2,2,2,2,2,2,1591,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1559,992,174,1313,612,1487,1487,461,702,37,1660,839,2,95,1628,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1029,1029,1029,2,2,2,2,2,2,2,2,2,2,2,1029,1029,2,2,2,2,2,2,2,2,2,2,2,2,1029,1029,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,89,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,1029,2,1029,1029,1029,2,2,1029,1029,2,2,2,2,2,89,89,2,2,2,1029,2,2,1029,2,2,2,2,2,2,1029,1029,89,89,1029,1029,1029,1029,1029,1029}, + {2066,1719,710,1294,2041,377,1005,690,132,756,1618,187,187,726,187,615,615,2,2,2,2,851,2,2,2,2,2,2,2,2,2,744,744,2,2,2,744,2,2,2,2,2,2,2,2,2,2,2,2,2,2,744,744,2,2,653,653,653,2,2,744,744,653,653,653,2,2,653,744,2,653,653,653,2,653,744,653,653,653,653,744,653,2,744,2,2,2,2,2,2,2,2,2,744,744,744,744,744,744,653,744,744,2,653,653,653,2,2,744,744,744,2,2,653,653,2,2,1486,744,744,2,2,2,744,653,653,2,2,653,653,2,2,744,744,744,744,744,744,744,744,744,2,2,2,2,2,2,2,653,653,744,653,653,653,653,653,2,2,2,2,2,2,2,2,2,2,2,851,851,2,2,2,2,2,744,2,653,2,653,2,2,2,653,653,744,744,635,2,1486,1486,2,1486,1486,1486,1486,1486,1486,1486,2,653,653,2,2,2,653,653,653,2,1486,653,653,2,2,2,2,1486,1486,1486,1486,1486,635,635,635,635,635,635,635,635,635,2,2,2,2,2,2,2,1486,1486,1486,2,2,635,653,635,635,635,1486,1486,1486,635,635,635,1486,1486,1486,1486}, + {1432,731,398,557,1903,1360,152,520,20,586,116,70,2,721,721,12,1557,2,2,2,2,2,2,2,2,2,2,2,2,687,2,2,2,2,2,2,687,687,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,687,687,2,2,2,2,687,2,2,2,687,687,2,2,2,2,2,2,2,2,2,831,831,831,2,2,2,687,687,2,687,2,687,2,2,2,2,2,2,2,687,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,687,2,2,2,2}, + {2192,1029,310,1609,592,1542,265,117,2006,82,162,205,2,2009,2009,1201,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1570,1504,1414,1143,1999,1932,1015,1015,556,514,626,79,2,79,1795,1461,1461,2,2,2,2,2,2,2,1461,1461,1461,1461,1461,2,2,2,2,2,2,2,2,2,2,1461,1461,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1461,1589,1461,2,2,2,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,1461,2,2,2,2,2,2,2,1510,1510,1510,1461,1510,1510,1461,1461,1461,1510,1510,1589,1589,1589,1461,1461,1461,1461,1461,1461,2,1461,1461,1461,1510,1510,1461,1461,1461,1461,1461,1461,1461,1510,1510,1510,1510,1461,1461,1461,1461,1461,1461,1510,1510,1510,1510,1510,1510,1510,1510,1510,1510,1510,1510,1510,1510,1510,1510,1510,691,691,1461,1461,2,2,1589,1589,1461,1510,1510,1510,1510,1510,1510,1510,1510,1461,1461,1461,2,2,2,1510,1510,1510,1589,1589,1461,1461,1461,1461,1461,1461,1461,1461,1461,1510,1510,1510,1510,1195,1195,1195,1195,1195,1510,1589,1589,1589,2209,2209,2209,1589,1589,1589,1510,1510,1510,1510,2209,2209,2209,691,1589,1589,1589,1510,1510,691,2209,1461,2209,1589,1589,2209,2209,2209,1510,1510,1510,1461,1461,1461,1510,1510,1510,1589,1510,1510,1510,1510,2209,2209,1589,1589,1589}, + {1562,937,1964,934,1349,378,459,109,1676,1655,1339,1809,2,768,768,188,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1965,949,1057,1043,2256,1571,970,348,69,1324,1174,485,105,105,105,2172,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1625,1625,879,879,2,2,1625,2,2,2,1625,1625,1625,879,879,1625,1625,1625,1625,1625,1625,1625,879,879,879,879,879,879,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1625,1625,1625,2,2,2,2,2,2,2,240,240,2,564,2,2,2,101,564,1024,1024,1024,1024,1217,1217,564,128,1625,1625,1625,1625,1625,1625,1625,1625,1625,1625,1625,1625,105,1625,1625,1625,2,2,2,2,726,726,726,726,726,2172,2172,2172,2172,2,2,726,726,1625,1625,1625,1625,1625,2172,199,1625,1625,726,2172,879,879,1625,1625,1625,1625,2172,2172,2172,726,1625,726,1625,726,726,726,726,726,726,726,726,726,1625,726,726,726,726,726,726,726,2172,2,2172,2172,2172,1625,1625,1625,1625,2172,2172,2172,2172,2,2,101,564,1024,1024,1024,1024,1217,2172,2172,2172,2172,2172,105,105,105,105,105,105,105,105,105,1625,1625,726,1625,1625,726,1625,726,726,726,726,1625,1625,1625,1625,1625,2172,2172,2172,726,726,2172,2172,1625,1625,1625,2172,1625,2172,726,726,726,726,726,1625,1625,1625}, + {2044,1869,838,1424,1097,155,1142,230,1335,420,235,1510,2,431,425,622,2,2,2,2,2,625,2,2,2,625,625,2,2,2,2,2,2,625,625,2,2,625,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,625,625,625,625,2,625,625,625,2,2,2,2,625,625,2,625,625,2,625,625,625,625,625,2,625,625,625,625,625,625,625,625,625,625,625,625,625,2,2,625,625,2,2,2,2,625,625,625,625,625,625,625,2,625,625,625,2,625,2,625,625,2,2,625,625,2,625,625,2,2,2,625,625,625,625,2,2,2,2,2,2,625,625,625,625,625,625,625,625,625,625,625,625,2,625,625,625,625,2,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,2,625,625,625,625,625,625,625,625,625,625,2,2,2,2,2,2,625,2,2,625,625,625,625,625,2,2,2,2,2,2,2,2,625,625,625,2,625,625,625,2,2,2,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,2,625,625,625,625}, + {1976,1433,820,504,421,1007,388,1083,635,82,1524,750,2,2,870,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1775,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1990,1948,1138,1787,253,115,312,1912,341,1624,260,1783,1315,1315,790,790,790,790,790,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,462,462,462,462,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1315,2,2,2,1315,1315,1315,1315,1315,1315,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1576,1286,934,661,1612,434,234,575,42,1431,333,1059,552,552,552,2043,2043,2,2,2,2,2,2,2,2,2,2,356,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,656,656,656,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,356,356,2,2,2,2,2,2,2,2,2,2,2,356,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1993,585,327,1393,1013,1671,1758,1436,1989,1217,1109,1476,2,2,1042,756,1042,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1765,2,2,2,2,2,2,2,1765,1765,2,2,1765,2,2,1765,2,2,2,1765,1765,2,2,1765,1765,1765,2,1765,1765,1765,2,1765,1765,1765,2,2,2,1765,1765,1765,1765,1765,2,1765,1765,2,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,2,2,2,2,1765,1765,1765,2,2,2,2,2,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,2,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,2,1765,1765,1765,1765,1765,1765,1765,2,1765,1765,1765,610,1765,1765,1765,1765,1765,1765,1765,2,2,1765,1765,1765,1765,1765,1765,2,1765,1765,1765,1765,1765,2,2,1765,1765,2,2,1765,1765,1765,2,2,2,2,1765,1765,1765,1765,1765,1765,2,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,1765,610,610,610,610,610,2,2,610,610,610,2,2,2,2,610,610}, + {2090,684,953,174,1349,182,1034,788,829,1296,1073,491,2,2,2,220,220,2,2,2,2,2,2,2,2,2,2,2,2,1776,1776,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,52,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,52,2,2,2,52,52,52,52,52,52,52,52,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,825,825,825,825,825,825,825,825,52,52,2,2,2,2,2,2,825,2,825,825,825,825,825,825,2,2,2,2,52,52,52,52,52,52,792,825,825,2,2,2,2,2,2,2,825,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,52,52,2,52,52,2,2,2,2,2,2,2,2,825,2,825,2,52,52,52,52,52,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1682,1682,1682,1682,1682,1682,2,1776,2,2,2,1776,1776}, + {2056,1062,1605,1943,680,445,113,857,650,1388,2016,1231,2,2,1292,1292,1292,2,1039,1039,1039,1039,1039,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1039,2,2,2,2,2,2,2,2,2,2,2,2}, + {2092,592,979,1733,2049,1251,673,1324,319,283,1212,1212,2,2,2,1363,1363,2,2,2,2,2,2,2,2,2,844,844,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,844,844,844,2,844,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1443,2,2,2,1443,1443,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,844,2,2,844,2,2,844,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1443,2,2,2,2,2,2,2,2,2,2,2,2,2,2,844,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,844,844,844,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,844,844,2,844,2,2,2,2,2,597,597}, + {2002,467,1228,150,1098,367,920,328,1204,276,685,1404,2,32,32,633,633,633,633,2,2,1024,32,32,16,16,32,32,32,2290,2290,2290,2290,32,2290,2290,2290,2290,2290,2290,2,2,1024,32,32,16,362,362,362,2290,2290,2290,2290,2290,2290,2290,2290,2290,700,700,175,175,175,181,362,181,1641,373,373,839,839,1311,1311,1311,1311,1311,1311,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,362,362,362,2290,2290,2290,2290,2290,2290,2290,2290,2290,700,700,175,175,175,181,362,181,181,362,373,839,839,839,1311,1311,1311,1311,1311,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,1796,2290,2290,2290,2290,1311,362,362,2290,2290,2290,2290,2290,2290,2290,2290,2290,2290,700,839,175,175,175,181,362,181,181,362,362,839,839,373,839,839,839,839,839,2290,2290,2290,2290,362,2290,2290,2290,2290,2290,2290,362,2290,2290,2290,2290,1796,2290,2290,2290,1796,2290,2290,2290,1796,1796,1796,2290,362,1796,1796,1311,362,362,2290,2290,2290,2290,2290,2290,2290,2290,2290,839,700,839,175,175,175,181,362,181,181}, + {2008,1773,416,1954,1314,742,1694,505,202,1747,785,375,2,2,2,477,1538,477,2,2,2,2,2,1309,1309,1309,1309,2,2,2,1309,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1309,1309,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1658,1008,258,749,427,1071,2052,263,1047,2152,1602,1602,2,2,2,1311,669,669,2,1897,1897,1897,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1557,1557,1557,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2286,1903,1793,1130,465,1956,651,220,1024,296,549,549,2,2,2,138,138,1034,180,180,2,2,1034,2,2,2,1034,1034,1034,1034,2,2,2,2,2,1034,1034,2,2,2,2,2,2,2,2,1940,1940,1940,1034,2,2,2,2,2,2,2,2,2,1034,138,1034,1034,1034,1034,2,2,1034,1034,2,2,2,2,1034,1034,2,2,2,2,1034,1034,2,1034,1034,1034,1034,1034,1034,2,2,2,1034,1034,1034,1034,1034,1034,1034,1034,2,1034,1034,1034,1034,1034,1034,2,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,2,2,2,2,1034,1034,1034,2,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,2,1034,1034,1034,1034,2,2,2,1034,1034,2,2,2,1034,1034,1034,1034,1034,2,1034,2,2,2,2,2,1034,2,138,138,138,138,138,138,138,138,138,1034,1034,2,1034,1034,2,2,2,2,2,2,1034,2,2,2,2,2,138,138,138,2,2,2,1034,1034,1034,1034,1034,1034,1034,1034,1740,1903,1034,1034,1034,1034,1034,1034,1034,2,1034,1034,1034,1034,1034,1034,1034,1034,799,799,799,1903,1034,1034,1903,1903,1903,1113,1113,1113,1034,1034,1034,1113,1113,1113,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034}, + {2285,396,182,1680,682,983,1634,1034,1304,1987,911,715,2,2,2,2,911,911,681,681,2,2,2,2,2,2,557,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,557,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2258,1887,1875,1021,863,604,543,1115,509,1243,312,213,2,2,2,2,335,770,770,2,1143,567,2,2,567,567,567,411,2,2,2,411,1143,1143,567,567,567,567,2,567,1143,567,567,567,411,1143,2,411,567,567,411,411,411,411,2,567,567,567,411,411,411,411,411,411,567,567,567,567,2,2,2,2,2,567,567,1734,1143,567,567,567,1143,567,567,1143,411,411,567,567,567,567,567,335,411,411,411,411,411,411,567,567,411,411,411,411,411,411,567,2,567,411,2,2,567,567,411,411,411,411,411,411,411,567,411,411,567,567,567,567,1734,567,567,567,567,567,567,567,567,567,411,411,411,411,411,411,567,567,567,567,567,567,567,567,2,2,567,567,567,567,567,1143,1143,567,2,2,2,1143,1143,2,1143,2,1143,567,2,2,2,2,2,2,2,2,2,2,2,2,2,411,567,567,2,2,2,2,1143,567,567,567,1143,1143,1143,1143,1143,1143,1143,1143,567,2,2,1143,1143,1143,1143,1143,1143,1143,1143,1143,1143,1143,1143,567,2,567,567,411,411,567,567,567,2,2,567,567,2,567,567,567,567,567,567,567,567,2,2,2,2,2,2,567,567,567,567,2,567,567,2,567}, + {2266,1872,991,1468,1168,939,907,833,624,701,386,1713,2,2,2,2,2,931,861,381,1299,2,861,2,2,2,861,861,861,861,861,2,2,861,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1299,1299,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,861,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,861,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,861,861,861,861,861,861,861,861,861,2,861,861,861,861,2,861,861,381,381,381,861,381,381,381,861,861,2,2,2,861,861,861,861,861,861,861,861,861,861,861,861,381,381,381,381,381,2,861,2,2,861,861,2,2,2,2,2,2,2,2,2,2,2,2,861,2,2,861,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2014,810,1106,470,299,1927,475,2123,958,367,1300,139,2,2,2,2,75,75,1443,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,108,108,108,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,108,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,985,2,2,2,985,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2273,1510,803,2278,842,1245,1389,230,822,1564,113,1276,2,2,2,2,1350,273,273,2,2,2,2,2,1281,1281,1281,2,2,1281,1281,1281,2,2,1281,1281,2,2,2,2,2,1281,1281,1281,1281,1281,2,2,2,1281,1281,2,1281,1281,2,1281,1281,1281,1281,1281,1281,1281,1281,1281,2,2,2,2,2,2,2,1863,1863,1863,1281,1281,1281,2,2,620,2,2,2,2,2,2,2,2,2,1863,1863,1863,2,2,2,2,1281,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1281,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1281,1281,1281,1281,1281,1281,1281,1281,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1281,1281,2,2,2,2,2,2,2,2,2,1281,1281,2,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,2,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,1281,2,1281,2,2,2,1281,2,2,2,2,2,1281,2,2,2,2,2,1281,1281,2,1281,2,2,2,2,2,2,2,2,2,1281,1281,2,2,2,2,2,1281,1281,2,2,2,2,2,2,2,2,2}, + {1480,807,1596,520,1139,213,1581,460,923,617,1305,939,2,2,2,2,53,53,1589,284,2,2,1589,1589,1589,1589,1589,1589,1589,1589,1589,1589,1589,1589,2,1589,2,2,2,1589,2,2,1589,1589,1589,1589,1589,2,2,1589,2,1589,2,2,2,2,2,2,2,2,1589,2,2,2,2,1589,2,1589,2,2,2,2,1589,1589,1589,1589,1589,2,2,1589,1589,2,1589,1589,1589,1589,1589,449,449,2,2,2,1589,2,2,2,1589,1589,2,2,1589,1589,1589,1589,1589,1589,1589,2,2,2,2,1589,1589,2,2,2,2,2,2,2,2,2,2,2,2,1589,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1589,2,2,1589,1589,2,2,2,1589,1589,1589,1589,1589,1589,1589,2,449,449,1589,1589,1589,1589,1589,2,1589,1589,1589,1589,1589,1589,1589,1589,2,1589,1589,2,2,2,2,2,2,2,2,2,2,2,1589,2,1589,1589,1589,1589,1589,1589,2,1589,1589,1589,1589,1589,1589,2,2,449,449,449,449,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2278,1028,548,373,190,1443,614,2386,1940,930,557,2069,2,2,2,558,112,103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,596,596,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1199,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1670,1730,153,1435,611,293,2077,1383,1353,1215,2031,1697,860,860,860,860,1172,1580,1580,2,2,1172,2,2,2,2,475,475,475,449,475,2,2,2,2,2,2,2,2,2,475,475,475,475,2,2,2,2,2,2,2,2,475,2,2,2,2,449,449,449,449,449,525,658,658,658,658,658,475,475,2,658,2,2,475,2,475,2,2,475,2,475,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,475,2,2,2,475,475,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,525,2,2,2,2,2,2,2,2,475,475,475,475,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,475,475,475,2,2,2,2,2,2,525,525,475,475,2,2,2,2,2,475,2,2,2,2,2,475,475,475,2,2,2,2,2,2,2,2,2,2,475,475,2,2,475,475,475,475,2,2}, + {2108,776,1568,342,2215,1882,681,1292,1601,586,1481,618,1930,1930,1930,1930,2146,89,89,2,2,2,2,2,2,2,1171,2,2,2,2,2,2,1171,1171,2,2,2,2,2,1171,1171,1171,2146,2146,2146,2,1171,1171,2,2,2,1171,1171,1171,1171,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1171,1171,1171,2146,2146,2,2,2,2146,2146,2146,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2146,2,2,2,2,2,1171,1171,1171,1171,1171,1171,2,2,2,2,2,2,2,2,2,2,1171,1171,1171,1171,1171,2,2,2,1171,1171,2,1171,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1171,1171,1171,2,2,2,2,2,2,2,1171,1171,2,2,2,1171,1171,1171,1171,1171,1171,1171,1171,1171,2,2,2,2,2,1171,2,1171,1171,2,2,2,1171,1171,1171,1171,1171,1171,1171,1171,1171,2,1171,2,2,1171,1171,1171,2,2,2,2,2,2,2,2,2,2,2,2,1171,1171,1171,1171,2,1171,1171,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1171,1171,1171,1171,1171,1171,1171,1171,1171,1171}, + {2139,2177,1652,392,715,605,778,632,472,1619,64,64,2,2,2,1747,859,2,2,2,2,2,216,216,216,216,1747,1747,1747,1747,1747,1747,2,1747,1747,1747,1747,1747,1747,1747,1747,1747,1747,1747,1747,2,2,2,2,2,2,2,2,2,2,216,216,216,2,2,2,2,2,1747,1747,1747,1747,1747,1747,2,2,2,2,1747,1747,1747,1747,1747,1747,1747,1747,1747,1747,1747,1747,2,2085,1747,2,1747,1747,1747,1747,1747,1747,2,1747,1747,1747,1747,1747,1747,1747,1747,2,1747,1747,1747,1747,1747,1747,1747,1747,1747,1747,1747,2085,1747,1747,1747,1747,1747,1747,1747,1747,1747,1747,1747,1747,1747,1747,1747,1747,1747,1747,2,1747,1747,1747,1747,1747,1747,1747,1747,1747,1747,1747,1747,1747,2,216,1747,1747,1747,216,1747,1747,1747,2,2,2,216,2,2,1747,1747,216,2,2,2,2,1747,1747,2,2,2,2,2,1747,2,2,2,2,1747,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1617,836,2067,259,810,1597,565,275,896,1474,415,1678,2,2,415,415,383,2,2,2,2,1205,1205,1205,1205,1205,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1205,2,2,2,2,2,2,2,2,2,91,91,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1205,1205,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,91,91,91,2,2,2,2,2,2,91,91,1205,1205,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1205,1205,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2158,632,1665,480,99,219,1268,31,852,486,1051,2164,2,1190,1190,1190,1179,2,2,2,2,2,2,2,2,2,2,2,2,1179,1179,1179,1179,1179,1179,2,1179,1179,2,1179,1179,1179,2,2,2,2,2,1179,1179,1179,1179,1179,1179,1179,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1492,448,271,135,1288,417,130,83,235,2313,482,746,2,2,746,609,611,611,611,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1881,1637,2,2,2,2,2,2,2,42,42,42,42,2,2,2,2,2,1637,1637,1881,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1881,1881,1881,2,2,2,2,2,2,2,2,1881,1881,1881,1881,1881,1881,1881,1881,1881,1881,2,2,2,2,2,2,2,2,1881,1881,2,1881,2,1881,1881,1881,1881,1881,2,2,1881,1881,1881,1881,2,2,1881,1881,1881,2,1881,1881,1881,1881,1881,1881,1881,1881,1881,1881,1881,2,2,2,2,2,1881,1881,1881,318,318,318,318,318,318,318,318,1637,1637,1637,1637,2,1306,1306,1306,2,2,1401,2,264,264,2,1881,1881,2,2,1881,1637,1881,1881,1881,1881,1881,2,2,1881,1881,1881,1881,1881,486,486,486,486,486,486,486,486,486,486,2,2,486,486,486,318,486,1306,318,486,1637,1637}, + {1628,846,1504,138,464,401,501,506,967,1027,1540,1035,2,1921,1539,1539,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1630,1677,1624,301,1038,909,887,374,411,143,1021,174,2,1393,19,634,2,2,2,2,2,2,2,873,2,2,873,873,2,2,2,2,2,2,2,2,2,2,2,873,873,873,2,2,2,2,2,2,2,2,2,873,873,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,873,873,2,873,873,873,873,873,873,2,2,873,873,2,2,873,873,873,2,873,2,2,2,2,2,873,2,873}, + {2117,1275,567,223,419,988,1996,88,1049,695,440,431,922,922,298,402,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,788,2,2,2,2,2,788,2172,1798,1798,2,1798,1798,788,1798,788,788,2,1798,1798,1798,2,2,1798,2,2,1798,1798,2,2,1798,1798,1798,1798,1798,1798,1798,1798,1798,1798,788,788,788,788,2172,2172,2,2,2,2172,760,788,2,2304,2304,788,2,788,788,788,2304,2304,2304,2304,2304,2304,2304,2,2304,2304,2,2,2304,2304,2304,2304,2,2304,2,2304,2304,2304,2,788,788,788,788,788,788,788,788,2304,2304,2304,2304,2304,160,2,2,2,922,922,922,922,922,922,2,2,2,2,2,2,2304,2,2,2,2,2,2,2,2304,2,2304,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,265,265,265,265,265,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,32,2,2,2,512,512,512,512,512,512,512,512,512,512,512,512,512,512,2,2,2,2,2,2,2,2,2,788}, + {1654,1131,2054,994,2170,548,801,252,87,219,488,2239,2,1232,1839,1822,2,2,2,968,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,291,291,291,291,291,141,141,141,141,141,141,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,141}, + {1648,669,1340,1345,1074,370,80,173,1160,1670,263,772,754,754,754,1166,2,2,2,2,1304,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1304,2,1304,1304,1738,1738,1738,2,2,2,2,2,2,2,2,1304,1738,2,2,2,8,8,32,128,2,2,2,1460,1460,1460,1460,512,512,512,512,365,1460,1460,1304,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,233,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,895,1738,1738,1738,1738,1738,2,2,365,1460,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,233,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,1738,233,233,233,1738,1738,1738,1738,1738,1738,1738,663,663,663,663,663,1738,1738,1088,1088,1088,1088,1088,272,17,17,17,1248,1248,1248,1552,97,97,97,97,97,78,78,78,286,286,286,286,286,286,286,286,286,895,895,1391,1391,1391,1391,1391,1391,1391,1738,1738,1016,233,233,233,233,1016,1171,1738,1738,1738,895,1738,1738,1738,2453,2453,2453,2453,2453,2453,1738,2091,2091,2091,2091,1016,2091,2091,2091,1171,2091,2091,1171,1171,1171,1171,1171,1171}, + {2065,1520,1423,1797,899,1425,1801,776,2365,58,646,695,2,998,998,1342,2,2,2,2,2,2,2,2,2,2,2,2,1150,1150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,218,2,2,218,2,2,2,2,2,2,2,2,2,1150,1150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,218,218,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1150,1150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2304,1948,316,1063,237,607,1143,2575,1388,1022,127,251,2,438,1570,1570,1570,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,75,75,75,75,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,75,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,75,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2177,710,1912,617,809,1078,199,905,673,519,457,52,2,1348,1348,410,2,2,2,2,2,340,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,765,765,765,765,765,765,2,2,1982,1982,1982,1982,1982,1982,1982,1982,1982,1982,1982,1982,1982,1982,1982,1982,1982,1982,1982,2,2,2,2,1982,2,2,340}, + {2073,1543,1586,1296,2466,753,455,46,119,1694,2035,1592,206,206,206,2,2,2,2,2,2,2,2,1172,2,2,2,2,2,2,2,2,2,589,589,589,589,589,589,589,589,589,589,589,589,2,589,589,589,1172,1172,2,1172,1172,1172,589,1172,589,589,589,2,2,589,589,589,589,589,589,589,589,589,2,2,2,2,2,780,589,589,589,589,2,2,2,2,2,2,2,780,527,527,589,589,589,589,2,2,589,589,589,589,589,2,2,589,589,589,589,2,2,2,2,2,1172,1172,1172,1172,1172,1172,1172,2,2,589,589,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,589,589,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,589,2,2,2,2,2,2,2,589,589,589,589,589,589,2,2,589,589,2,589,589,2,2,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589}, + {2075,1056,874,2101,566,1790,1333,386,538,1560,2254,331,717,717,717,454,454,2,2,2,2,2,2,2,2,2,2,2,454,454,2,2,454,454,454,454,454,454,454,454,2,454,454,2,2,2,454,454,454,454,454,454,2,2,2,2,2,2,725,725,725,2,2,2,2,454,254,254,725,725,725,725,725,725,454,454,2,454,454,454,454,454,454,454,454,2,725,454,454,454,454,454,725,725,725,725,454,725,725,725,725,454,454,454,725,454,454,454,454,454,725,454,454,454,454,2,454,454,213,454,454,725,725,454,454,454,454,454,454,454,454,454,454,454,454,454,454,254,2,725,725,725,2,2,454,454,454,2,2,454,454,2,2,2,454,2,2,454,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,454,2,2,2,2,725,454,454,454,2,2,2,2,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,2,725,725,2,2,2,725,2,725,725,725,725,725,725}, + {2078,815,288,730,994,1968,1721,1248,2330,1394,1042,2126,982,286,1943,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1167,1167,1167,1167,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1167,1167,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1167,2,1167,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2090,720,440,1851,579,2515,173,129,698,1225,695,1283,1897,1330,1330,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,470,470,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1670,977,1540,553,855,1729,239,757,191,62,732,549,1092,1092,199,199,199,199,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1433,1433,1433,2,2,2,2,1433,2,2,2,2,2,199,2,2,2,2,2,2,2,2,2,2,2,2,2,1433,2,2,2,1433,2,2,2,2,2,2,2,2,2,2,2,2,2,1433,1092,1092,1092,2,2,2,1433,2,2,1092,1433,2,2,2,1092,1092,1433,1433,1433,1433,1433,1433,2,2,1433,1433,1092,1433,1433,1433,2,1433,1433,1433,1433,1433,1433,1433,2,2,1433,1433,1433,1433,1433,2,2,2,1433,1433,1433,1433,1433,1433,1433,1433,1433,1433,1433,1433,1433,1433,2,2,2,2,2,2,2,2,2,1433,1433,1433,1433,1433,1433,1433,199,199,199,2,2,2,2,1092,2,2,2,2,1092,2,2,1433,1092,2,2,2,2,2,2,1092,2,1092,1092,2,2,2,2,1433,2,1433,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1433,1433,2,2,2,2,2,1433,1433,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2320,1529,674,1839,1633,244,281,1975,387,978,775,53,507,1527,298,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1630,1630,1630,1630,2,2,2,1630,2,2,2,2,1630,1630,2,2,2,2,2,2,2,2,2,2,2,1630,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1630,2,2,2,2,2,2,1630,1630,2,1630,1630,1630,1630,1630,1630,1630,1630,1630,1630,1630,1630,1630,2,2,2,2,2,2,2,2,2,1630,1630,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1630,1630,1630,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2096,1155,2257,125,1986,245,1208,2146,2287,680,1413,73,467,1410,1410,2,2,2,2,2,133,133,133,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,327,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,8,8,2,2,2,60,1800,2318,2318,532,1334,1334,578,1047,1047,1047,1047,333,333,333,2,2,2,2,2,2,1259,1259,2,2,1259,1259,2,2,2,2,2,2,2,2,2,2,2}, + {1538,1026,2157,1457,1784,2559,184,29,614,273,697,697,1922,697,697,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,525,525,2,2,2,2,2,2,525,525,525,2,525,525,525,525,525,2,2,525,525,2,2,2,525,525,525,525,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2173,2154,482,393,285,1418,1631,518,1156,32,67,352,352,352,1783,1500,1500,1500,1500,1500,2,2,2,2,2,2,2,2,2,2,2,2,2652,2652,2652,2652,738,2,738,2,2,2,2,160,160,160,160,160,160,160,2,2,2,1500,1500,1500,1500,1500,160,1500,1500,160,160,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,966,738,738,966,966,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1500,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1500,1500,1500,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2156,891,351,1633,81,1329,119,1150,679,673,1117,1785,1785,451,1927,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,737,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,516,516,516,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,66,66,66,66,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,66,66,66,66,66}, + {2106,856,1025,382,389,272,425,672,1021,216,601,292,510,510,876,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1662,608,2478,266,1330,505,40,2058,964,724,596,1221,1221,310,42,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,529,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,529,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,529,2,529,2,2,529,2,2,529,529,529,529,529,529,529,2,2,2,2,2,2,2,2,2,2,529,529,529,2,2,529,2,2,2,2,2,2,529,529,2,2,2,529,529,2,2,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2,2,2,2,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529}, + {2392,1719,1026,1290,844,1553,1421,1082,872,312,208,212,206,206,576,2,2,2,2,2,905,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,403,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,905,905,905,2,2,2,2,905,905,2,905,905,905,905,905,905,905,905,905,905}, + {1600,1338,196,1510,1371,1138,957,169,545,1176,1131,2460,1708,541,541,2,363,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1708,1708,1708,1708,2,2,2,2,2,2,2,2,2,2,2,1313,2,1313,2,2,2,2,2,2,2,2,2,2,1313,1313,1313,1313,1088,1088,2,2,2,2,2,2,2,2,1313,2,2,2,2,1313,1313,1313,2,2,2,2,1313,1313,1313,1313,980,980,1313,2,1088,1088,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1313,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1313,2,2,2,2,2,1313,1313,1313,2,2,2,2148,55,2,2,2,2,2,1088,2,2,2,2,2,2,2,2,2,1313,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,313,1414,1414,1414,1282,1857,1857,1857,18,506,18,2,2,2,2,2,1478}, + {2378,1005,1799,733,970,94,936,418,609,666,872,119,105,1051,142,2,284,284,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,398,2,2,2,398,398,398,398,398,398,2,2,2,2,2,2,398,398,398,2,2,398,2,2,2,398,2,2,2,2,2,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,2,398,2,2,2,2,2,2,2,398,398,398,398,398,2,2,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,2,2,2,2,2,2,2,2,2,398,398,2,2,398,398,398,398,398,398,398,398,398,2,398,398,398,398,2,2,2,2,2,2,2,398,398,398,2,2,2,2,2,398,398,398,2,2,2,398,398,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,398,398,2,2,2,2,2,2,2,398,398,398,398,2,2,2,2,398,398,398}, + {2132,756,1097,166,202,411,640,717,514,1389,633,633,633,633,633,633,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,566,566,566,566,566,566,566,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,566,566,566,566,566,566,2,566,566,566,566,566,566,566,566,566,566,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,566,566,566,566,566,566,2,2,2,2,2,566,2,2221,566,566,566,2,2,2,2,2,2,2,2,2,566,2,2,2,566,2,2}, + {2386,748,620,478,647,898,320,53,1115,190,60,1860,1860,802,802,2,2,2,2,1264,1346,1346,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1346,2,2,2,1346,1346,1346,2,2,2,2,2,1346,1346,1346,2,2,2,1346,1346,2,1346,1346,1346,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1346,1346,1346,1346,1346,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1346,2,2,2,2,2,2,2,2,2,2,2,2,2,1346,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2125,996,1081,124,1140,628,1668,1913,151,2495,523,430,260,708,2190,2190,2190,2,2,2,2,2,1660,2,2,497,497,497,497,497,497,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1056,1660,1660,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2433,531,2067,2273,2167,1673,964,130,1429,688,737,737,737,261,261,1586,2,1309,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1539,2,2,2,1539,1539,1539,1539,1539,1539,2,1539,1539,1539,1539,2,2,2,1539,1539,1539,1539,1539,1539,1539,1539,1539,1539,1539,1539,1539,1539,2,2,2,1539,1539,1539,1539,1539,1539,1539,1539,1539,1539,1539,2,2,1539,1539,1539,1539,1539,1539,1539,1539,1539,1539,1539,1539,1539,1539,1539,1539,1539,1539,1539,1539,1539,1539,1539,1539,1539}, + {1602,1489,895,383,56,698,2081,1728,794,789,16,16,797,302,52,2,2,2,2,2,2,2,2,2,2,797,797,797,797,797,797,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,2,1808,2,1859,1859,1859,1859,2,1859,1859,2,2,2,2,2,2,2,2,2,1859,1859,1065,1859,2,2,1859,1859,1859,1859,1859,1808,2,2,2,2,2,2,2,2,2,2,2,2,1808,2,2,2,1808,1808,1808,2,2,1808,1808,2,1808,2,2,1859,1808,1808,1808,2,2,2,2,2,1808,1808,1808,1808,1808,1808,1808,1808,1808,1215,1215,2,1215,1808,1808,1808,1859,1859,1859,1859,1859,1859,2,1808,1808,1808,1808,1808,1808,1859,1215,1808,1859,1859,1859,2,1859,2,2,2,797,797,797,797,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,797,2,2,2,2,1859,1859,1859,1859,1859,1859,1859,2,2,1859,1859,2,2,2,2,2,2,2,2,1859,2,1859,1859,2,2,2,2,2,2,1859,2,2,2,2,2,2,2,2,2,2,2,2,2,1859,1859,1859,797,797,797,797,1859,2,1859,1859,1859,1859,1859,1859}, + {1623,1362,1669,701,747,749,1302,129,296,17,642,1497,723,2101,1004,1004,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1605,1605,1605,1605,2,1605,1605,2,2,1183,1183,1183,1183,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1183,1183,1183,1183,1605,1605,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1183,2,1183,1183,1183,2,2,1605,2,2,2,2,1183,1183,1183,2,1183,1183,2,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1605,1605,1183,1183,1183,2,2,1183,1183,1605,1183,2,2,2,2,2,1183,2,2,2,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2210,606,901,547,131,1924,1852,1271,194,766,390,390,520,795,1429,1429,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1429,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2390,1692,1090,533,305,825,28,840,1810,475,869,2800,233,1585,63,1350,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,687,713,713,573,938,209,209,209,209,209,209,2,2125,2363,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2363,167,167,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2363,2125,2,2,2125,2363,2363,2363,2363,2363,2363,2363,2125}, + {1731,599,817,724,718,1038,1082,2503,1341,936,421,1802,1304,1304,1491,186,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,229,229,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,229,2,2,2,1150,1150,59,2,2,2,2,2,2,2,2,2,2,2,2,2,229,229,2,2,2,2,2,229,229,2,2,2,229,229,2,229,229,229,229,229,2,229,229,229,229,229,2,2,2,2,2,2,2,2,2,2,2,2,1382,2,2,2,2,1150,1150,1150,2,2,1382,1382,229,229,229,229,229,229,2,2,2,2,2,2,1382,1382,2,229,229,2,2,270,2,270,2,2,2,2,2,2,2,2,229,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1150,1150,1150,1150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2447,1389,2281,1282,374,308,1587,48,1137,1275,1980,713,713,713,2,960,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1225,1225,1225,2,2,2,2,2,2,2,1225,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1727,822,712,1351,240,451,1645,340,296,2524,47,1131,1876,581,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,339,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1876,2,2,2,1876,1876,2,1876,1876,1876,1876,2,1876,1876,2,2,2,1876,1876,1876,2,2,1876,1876,1876,1876,1876,1876,2,1876,2,2,2,2,2,1876,1876,1876,1876,2,1876,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1876,2,1876,2,2,2,1876,1876,2,2,2,1876,1876,1876,1876,1876,2,2,2,1876,1876,1876,1876,1876,1876,1876,1876,1876,1876,1876,1876,1876,1876,1876,2,1876,2,1876,1876,2,2,2,1876,1876,1876,1876,1876,1876,2,2,2,2,2,2,1876,1876,1876,1876,2,1876,1876,1876,1876,1876,1876,1876,1876,1876,1876,1876,1876,2,2,2,1876,1876,1876,2,1876,1876,1876,1876,1876,1876,1876}, + {2228,1000,544,327,2251,707,2235,598,1389,317,434,809,1560,1560,941,941,941,941,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2168,1532,769,2570,1303,357,1793,1633,1226,1025,205,1218,1984,764,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2335,2335,2335,2335,2335,2335,2335,2,2,2335,2335,2335,2335,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2234,1706,356,581,532,933,1704,387,1345,1345,34,135,350,307,614,614,307,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,87,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,909,909,909,909,909,909,909,909,1688,2,2,2,1688,1688,1688,1688,1688,621,621,2,909,1517,1517,909,909,1688,1517,1517,1517,1688,1688,1688,1688,1688,1688,1688,1688,1688,1688,1688,1688,2,2,1517,1517,909,909,909,621,909,909,909,1688,1688,621,621,909,909,909,909,909,909,909,909,909,909,909,1517,1517,1517,1517,621,621,621,1517,1517,1517,1343,909,909,909,909,909,909,909,2,2,2,2,909,1343,1517,1517,1517,1343,1343,1517,1517,1688,1517,1517,1517,1517,1517,1517,1517,1517,1517,1343,621,621,2,1688,621,2,1343,1343,1343,1343,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,2,2,2,1688,1688,621,1688,1517,1517,1517,1517,621,2,2,2,2,621,621,621,621,621,621,1688,1688,1688,1688,1517,2,621,621,621,621,621,621}, + {1750,1297,423,1018,963,2368,1854,722,139,221,945,1235,180,2704,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1455,1455,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1455,1455,1455,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1455,1455,1455,1455,2,1455,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1656,2093,354,310,306,1553,106,459,175,55,1482,958,254,254,2,356,356,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,224,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,224,2,2,2,224,224,2,224,224,2,224,224,2,224,224,2,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,813,813,224,224,224,224,2,2,2,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,2,224,224,224,813,813,813,224,224,2,813,813,813,813,813,813,813,813,813,813,813,813,813,224,224,813,813,813,813,813,813,813,813,813,813,813}, + {1654,1035,330,533,1446,953,499,142,1527,1748,265,1437,265,510,2,2,2,2,2,2,2,1835,1835,1835,1835,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1835,1835,1835,2,2,2,2,2,2,2,2,2,2,2,2,1835,2,2,2,603,603,603,603,603,603,603,603,603,2,2,2,2,2,1835,1835,1835,2,2,2,557,1835,2,1835,1835,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1600,479,1457,246,2025,618,1612,2139,169,1492,1097,1327,2007,2007,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,77,2,2,77,77,77,77,2,2,2,77,2,2,2,2,2,2,77,77,77,2,2,2,2,2,2,2,2,77,77,77,77,77,77,77,77,77,77,2,77,2,2,2,77,77,600,2,2,322,322,322,2,2,322,322,2,2,2,2,2,2,2,2,2,2,322,322,322,322,42,42,322,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,2,77,600,600,675,322,322,322,322,322,322,600,322,322,322,2,2,2,2,2,2,2,2,2,2,322,322,322,322,322,322,322,322,322,322,322,2,2,2,2,493,493,493,493,322,322,322,600,600,42,2,600,600,42,42,600,322,322,42,322,322,322,675,675,675,675,322,600,277,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,42,42,42,42,42,42,42,42,42,42,322,322,322,42,42,42,42,42,493}, + {2461,1123,1791,143,404,62,1381,185,691,115,357,692,357,357,2,2,2,2,2,2,2,2247,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,759,759,2,759,759,759,759,759,759,759,759,759,2,759,759,759,2,759,759,759,759,759,759,759,2,759,759,759,2,2,2,2,2,759,759,759,759,759,759,759,759,2,2,2,759,759,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,759,759,759,759,2,2,759,759,759,2247,2247,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,759,423,2,2,2,759,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2247,2,2247,2,2,2,2,2,2,2,2,2,2,759,2,38,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,759,759,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,490,2,2,2,2247,2247,2247,2,2247,2247,2247,2,2,2,2,2,2}, + {1744,447,845,2145,748,1555,1193,1312,916,1770,1294,546,794,323,2,2,2,2,2,1733,1733,2,2,1730,2,1733,1733,2,2,1733,551,551,551,551,1733,2,2,1730,1730,1730,2,551,59,1733,2,2,2,2,2,2306,2306,2306,2306,1733,1733,1733,2,2,1733,1733,1733,1733,551,551,551,551,551,551,551,1733,1733,2,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,2,1733,2306,2306,2306,1733,1733,2,2,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,2306,2306,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,2,1733,1733,2306,1733,1733,1733,1733,2,1733,1733,1733,1733,1733,1733,2,2,1733,1733,1733,2,1733,2,1733,2,2,1733,1733,1733,1733,1733,1733,2,2,2,2,2,1733,1733,1733,1733,2,2,2,2,1733,1733,2,2,2,1733,1733,1733,1733,1733,1733,2,2,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,2,1733,1733,1733,1733,1733,2306,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,1733,2306,1733}, + {1766,1558,1901,1393,987,1859,815,1165,50,2065,88,88,1453,1453,2,2,2,995,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1992,1992,161,1778,1813,1813,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1615,1267,1242,1494,399,663,68,1209,1573,528,640,1200,248,640,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1051,2,2,2,2,2,2,2,2,2,2,2,2,2,1051,1051,1051,1051,1051,1051,2,2,2,2,2,1051,1051,1051,1051,1051,1051,1051,1051,1051,178,178,1051,1051,1051,2,2,178,178,178,178,178,178,178,1051,1051,1051,1092,1051,1092,1092,1051,1051,1051,1051,178,178,1051,1051,1051,1051,1051,1051,178,178,1051,178,1051,1051,1051,1051,1051,1051,178,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,178,1051,1051,1051,2,1051,1051,1051,1051,1051,1051,178,178,1051,1051,178,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,178,178,178,1092,178,178,178,178,178,178,1051,178,1051,1051,1051,1051,1051,178,178,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178}, + {1678,592,1351,509,312,721,163,1597,1262,199,2643,1330,1661,992,2,2,719,2,2,2,2,2,2,2,2,2,2,2,2,2,1704,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,758,1704,1704,1704,2,2,2,2,2,758,758,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2207,970,838,2043,1016,561,267,329,584,608,679,303,832,1613,959,959,959,1409,1409,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,959,959,2,959,959,2,959,959,959,959,959,959,959,959,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,959,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,832,2,2,2,2,959,2,959,959,2,959,959,2,959,959,2,2,2,2,2,2,2,2,2,2,832,832,2,1409,2,2,832,832,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2217,352,447,914,1200,561,614,1616,509,2292,1114,1114,1229,52,1053,1053,1053,2,2,2,2,2,2,2,2,2,2,2,2,2,795,795,795,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2313,595,1593,1951,133,282,372,2396,1117,226,2104,267,374,267,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,951,2,2,2,2,2,2,2,1216,2,2,2,2,2,2,2,2,2,2,2,2,2,2,951,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2167,747,211,681,989,503,1630,477,436,2085,419,290,419,1674,837,837,1674,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,415,415,2,2,2,415,415,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,415,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,16,2357,2,2,2,16,16,467,1294,1294,1294,890,890,32,32,2529,2529,2,2,2,2,2,2,2,2,2,2,2,2,2,415,415,2,2,2,2,2,2,2,2,2,415,415,2,415,2,2,2,2,2,2,2,2,2,360,2,2,2,2,415,415,360,415,415,415,415,415,415,415,415,415,2,360,2,360,360,360,360,360,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,415,2,2,2}, + {1771,1441,594,613,1667,2388,961,1355,545,876,2175,2404,887,887,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,810,2,2,2,2,2,2,810,2,2,810,810,810,2,810,2,2,2,2,2,2,2,2,2,2,810,2,2,2,2,2,2,2,810,810,810,810,2,2,2,810,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,810,810}, + {2312,1231,1604,997,652,1096,1070,320,481,662,911,1610,342,2527,606,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,728,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,675,675,675,675,675,675,675,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2245,1541,1828,783,615,428,1282,1892,848,1219,2465,314,314,314,2,2,2,2,2,2,2,2,2,2,2,2,1323,2,2,2,2,1323,2,2,1323,1323,2,2,1323,2,2,1323,2,2,2,1323,2,2,2,2,2,1323,1323,1323,2,2,1323,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1323,2,2,2,2,2,2,1323,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1323,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1323,2,2,1323,1323,1323,1323,1323,1323,332,332,332,2,2,2,2,2,332,2,2,2,2,2,2,2,2,2,2,2,2,1323,2,2,2,2,2,2,2,2,2,1323,1323,1323,1323,1616,2,2,2,1616,1616,1616,2}, + {2354,1550,2394,1868,1418,2506,300,426,726,207,729,120,2152,951,235,927,927,1643,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1643,1643,1643,1643,1643,1643,1643,1643,1643,1643,927,1643,2,1643,1643,1643,1643,1643,1643,2,2,2,1643,1643,1643,1643,1643,1643,927,927,927,1643,1643,927,927,927,2,927,927,927,2,2,927,927,927,927,2,2,2,927,927,927,927,2,2,2,2,2,2,2,2,2,2,2,2,2,2,927,927,927,927,927,2,927,927,927,927,927,927,927,2,927,927,927,927,927,927,927,927,2,1643,927,2,2,2,927,927,927,927,927,927,927,927,927,927,927,2,1643,927,927,927,927,927,927,1643,927,927,927,927,927,927,927,927,927,927,927,927,927,927,927,927,927,927,927,927,1643,1643,1643,1643,1643,1643,927,927,1643,1643,1643,927,927,1643,1643,927,1643,1643,1643,1643,927,927,927,927,927,927,927,1643,1643,1643,1643,1643,1643,1643,927,927,927,1643,1643,1643,1643,1643,1643,1643,1643,1643,1643,1643,1643,1643,1643,1643,1643,1643,1643,1643,1643,1643,1643,1643,1643,927,927,927,927,927,927,927,927,927,927,927,153,153,1342,1342,1342,1342,1342,927,1342,1342,927,927,927,927}, + {2518,712,215,1937,1636,1101,340,2518,1093,2399,209,1986,1411,860,860,416,2,2,2,2,2,2,2,2,1693,2,2,1693,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1693,2,2,2,2,2,2,2,2,2,2,644,1693,644,2,2,1693,1693,1693,1693,1693,1693,1693,2,2,2249,1693,1693,2,1693,1693,1693,1693,1693,1693,1693,2,1693,1693,2,2,1693,1693,1693,1693,1693,1693,1693,1693,1693,1693,1693,1693,1693,1693,1693,1693,1693,1693,1693,2,2,1693,1693,1693,1693,2,1693,2,2,2,2,2,2,2,479,479,2,2,2,1693,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1374,2,2,2,2,479,479,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1374,1374,1374,1374,1374,644,1374,1374,479,479,479,479,1374,2,479,479,479,479,1693,1693,1693,1374,1374,1374,479,479,479,479,479,479,1374,1374,1374,1374,1374,479,2,479,479,479,479,479,479,479,479,1374,1374,1374,1374,1374,1693,1693,1693,1693,1693,1693,1693,2,2,2,644,644,644,2,644,644,2,2,2,644,644,2249}, + {2522,1030,324,1264,628,1339,480,234,2351,1085,1979,2333,1339,1356,1356,2286,2,2,2,2,2,2,2,2,2,2,2,2,2530,2,2,2,2,2,2,2,2,2,2,2530,2530,2,2,2,1981,1981,1981,1981,1981,1981,1981,1981,1981,2,2,2530,2,2,2,2,2,2,183,2,2,2,2,2,2,2,2,2,1981,1981,1981,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1981,1981,1981,1981,1180,2,183,2,2,2,2,2,2,2,183,2,1981,1981,1981,2,183,183,183,183,2,2,1981,2,1981,183,183,1981,1981,1981,1981,1981,1981,1981,1981,1981,183,2,2,2,2,1981,1981,1981,1981,1981,1981,1981,1981,2530,1981,1981,2,1981,183,183,2,183,183,2,2,2,183,1981,1981,183,2,2,2,1981,1981,1981,1981,1981,1981,1981,1981,1981,1981,1981,183,1981,1981,1981,1981,183,183,2530,2530,1981,1981,1981,1981,2530,2530,2530,1981,1981,1981,1981,1981,1981,2530,2530,183,1981,1981,1981,1981,183,183,183,183,183,183,183,1981,1981,1981,1981,1981,1981,1981,183,1981}, + {2518,750,591,854,454,1416,842,547,106,2496,786,878,2237,1024,1024,1024,2,2,2,2,2,2,1896,2,2,2,2,2,2,2,2,2,2,1896,1896,1896,2,2,2,2,2,2488,2488,2488,2,2,2,2,2,2,2,2,2,2,2,463,463,463,2,2,2,2,2,2,2,2,2,1345,1345,1345,2,2,2,2,2,1345,1345,463,1345,463,463,2,2,1345,1345,1345,1345,1345,1345,2,1345,1345,2,1345,1345,2,1345,2488,2488,2,2,1345,1345,1345,1345,2,2,2,2,2,2,2,2,2,2,1345,1345,1345,2,1345,1345,1345,1345,2,1345,1345,1345,1345,1345,1345,2,2,1345,1345,1345,1345,1345,1345,2,2,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,2,1345,2,1345,1345,2,2,2,2,2,2,2,2,2,2,2,1345,1345,2,2,2,2,2,2,2,2,1345,1345,1345,1345,463,2,1345,1345,1345,1345,1345,1345,463,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,2,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,2488,2488,2488,2488,2488,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,92,92,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345}, + {2519,1136,612,209,994,1179,1060,2621,130,485,661,1444,2122,124,258,1114,2,2,806,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,945,945,945,945,945,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1122,1122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2524,1894,253,2072,1242,355,888,1362,28,480,452,1216,595,545,354,1145,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,354,354,2,2,2,2,2,2,2,2,354,354,354,354,354,354,354,2,354,354,387,354,354,229,2,229,2,2,2,354,354,387,387,354,354,354,354,354,2,354,229,354,354,354,354,354,2,2,2,387,387,387,387,354,354,354,354,354,354,354,354,354,229,229,229,229,229,354,2,229,229,229,354,354,229,354,354,354,354,354,354,354,354,387,387,229,229,387,387,354,354,229,229,229,354,354,354,354,229,229,229,354,354,354,229,229,354,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,2,2,2,2,2,2,2,2,2,2,2,229,354,354,354,354,354,354,354,2,2,2,229,229,229,2,2,229,354,354,2,2,2,2,2,2,229,229,229,229,229,229,229,229,229,229,229,229,2,229,229,229,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2583,1475,879,503,672,392,470,1416,657,899,468,169,962,1263,1029,1029,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1077,1077,1077,1077,1077,1077,2,2,2,2,2,2,2,207,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,207,207,207,207,207,207,207,207,207,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,207,207,207,207,2,2,2,2,2,2,2,2,2,207,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,207,207,207,207,207,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,273,2,2,2,2,2,2,2,2,2,2,207,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1244,1244,207,207,207,207,207,207,207,2,2,2,2,2,2,2,2,2,2,2,273,2,2,2,2,2,2,1077,1077,1077,1077}, + {2569,1356,1053,410,437,58,1508,831,2272,383,1725,615,1191,1191,1191,2493,186,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,669,2,2,2,669,388,2,2,2552,2552,2552,669,669,669,669,2,2,2,669,669,669,2552,2,2,2,2,2,2552,669,669,669,669,669,669,669,2,2,2,2552,2552,2552,2,2,2,2,2,669,2,2,2,2,2,669,669,2,2,2,2,2,2,2,2,2,2,2552,2552,2552,2552,2552,2552,388,388,388,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,388,388,388,2552,2552,522,522,2552,2,2,2,2,388,388,388,388,388,388,388,388,388,388,2,669,2,669,669,2,2,2,2,2,2,2,669,669,669,669,669,669,2,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,2552,2552,2552,2552,2552,2552,2552,2552,2552,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669}, + {2368,2136,1457,268,2326,1306,1258,2108,345,1837,1066,2186,2186,650,222,2,2,432,2,2,686,2,686,2,2,1405,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,686,686,2,2,2,2,2,2,2,2,2,2,2,1405,1405,2,2,2,2,2,2,2,2,2,2,916,916,916,916,916,2,916,916,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,916,916,2,916,686,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,916,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2207,345,989,421,826,682,1888,476,144,912,654,1959,547,4,477,2,2,4,4,954,4,1099,4,1322,1099,1322,1322,1322,1322,1099,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,1322,2,1099,2,1099,1099,1099,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1099,1099,1099,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1099,1099,1099,1099,1099,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2386,1106,709,251,784,929,1551,2481,304,2148,1546,955,2453,866,866,2,2,2264,2264,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1314,1314,1314,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2317,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,549,2,2,2,2,2,2,2,2,2,2,2,2,2,549,2,2,2,2,2,2,2,2,2,2,2,1314,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1314,2,1314,1314,2,2,1314,1314,2,549,549,549,2,2,2,2,549}, + {2228,1163,1995,649,1000,680,325,1591,774,767,711,711,1418,524,711,401,976,2,2,2,2,2005,2005,2,2,2,2,2,2,1390,1390,2,2,1390,2,1390,1390,2,1390,2,2,2,2,2,2,2,2,418,418,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,418,1390,1390,1390,1390,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1390,1390,1390,2,2,2,1390,1390,1390,2,1390,1390,2,2,1390,1390,1390,1390,1390,1390,2,2,1390,1390,1390,2,1390,1390,2,1390,2,2,1390,2,2,2,1390,1390,2,2,1390,2,418,418,1390,1390,2,2,1390,1390,1390,2,1390,1390,1390,1390,2,2,2,1390,2,2,2,2,1390,2,2,2,2,1390,1390,1390,1390,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2362,1706,564,1088,1296,1267,70,1015,496,1298,758,154,240,240,154,154,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2079,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1715,2260,357,557,783,1195,2288,1997,1120,144,247,175,1277,203,203,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2385,2385,2,2385,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2385,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,641,641,641,641,641,641,2385,2385,2385,2,2385,2385,2385,2385,2385,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,274,274,2,2,274,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,274,274,274,274,274,274,274,274,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2385,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2290,2505,677,843,527,593,1401,2106,2481,1151,741,741,1557,1872,72,267,2,1344,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,267,2,2,2,267,2,2,267,267,267,2,267,2,2,2,267,267,267,2,2,2,2,267,267,2,267,267,267,267,267,267,2,267,267,2,267,267,2,2,267,267,2,267,267,2,2,2,267,267,267,267,2,2,2,267,2,2,2,2,267,2,2,2,2,2,2,2,2,2,2,2,2,267,2,2,2,2,2,2,2,2,2,2,2,2,267,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,267,2,2,267,267,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,267,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2271,2140,373,403,2489,1262,1166,1867,834,126,1837,1462,1837,1124,1665,1147,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,910,910,910,910,2,2,910,910,910,2,2,2,910,2,1708,1708,2,2,910,910,910,2,2,2,910,910,2,910,910,910,910,910,2,910,910,910,910,1708,910,2,910,910,2,2,2,2,2,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,2,2,910,910,910,910,910,910,2,910,910,2,910,2,2,2,910,910,910,2,910,910,910,2,2,2,2,2,2,910,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,910,910,910,910,910,910,910,910,910,1708,1708,2,910,1708,1708,1708,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1708,1708,1708,910,910,1708,2,2,2,2,1708,1708,1708,1708,1708,1708,1708,2,1708,2,2,1708,1708,2,2,2,2,2,1708,1708,2,1708,1708,1708,1708,1708,1708,1708,2,1708,1708,1708,1708,1708,1708,1708,796,796,796,1708,796}, + {2300,587,404,483,351,58,197,231,2093,1197,567,1197,2169,1197,1197,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1292,2,2,2,2,1292,1292,2,1292,1292,1292,357,357,357,2,357,357,357,357,2,2,2,2,357,2,2,2,2,2,2,2,2,2,2,2,357,357,357,357,357,2,2,2,2,2,1062,1062,1062,1062,1062,318,2,2,2,2,318,318,318,318,2,2,357,357,357,357,357,357,357,2,1292,1292,1062,2,1062,206,206,206,206,206,1292,206,2,357,357,357,357,2,2,1292,1292,2,2,2,2,1292,357,357,357,357,357,1292,1292,1292,1292,318,318,318,318,318,318,318,318,318,318,318,318,1062,1062,1062,318,318,318,318,1292,1292,318,318,2,1380,1380,1380,1292,2,1292,318,318,1292,1292,318,318,318,318,318,1292,1292,2,2,1292,1292,1292,318,318,357,71,318,1292,318,2,318,318,318,318,318,318,318,318,2,318,318,318,2,318,318,318,318,318,318,318,318,318,318,318,2,318,318,318,318,318,318,318,318,318,318,318,318,318,318,318,2,2,2,2,2,2,2,2,318,2,2,318,2,2,318,318,318,318,318,318,318,2,318,318,2,2,2}, + {2303,1018,316,280,1616,909,97,1126,1295,736,216,54,2045,726,1673,2,2,2,2,2,779,779,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2390,491,1217,1148,2314,2250,2180,308,613,662,1346,1346,1346,1280,778,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1227,1227,2,2,2,2,2,2,2,2,2,1227,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1227,2,2,2,2,2,1227,1227,1227,2,2,2,2,2,2,2,2,2,2,2,2,2,430,430,1227,2,1227,1227,430,430,2,1227,1227,430,1227,1227,2,2,2,1227,1227,1227,1227,1227,2,1227,1227,2,2,2,2,2,2,2,2,2,1227,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1227,2,2,2,2,2,2,2,2,430,430,2,2,2,2,430,2,430,430,430,430,2,430,430,430,430,430,430,430,430,430,430,2,2,430,2,2,2,2,430,430,430,430,2,2,2,2,1227,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1732,527,1303,664,71,294,404,917,1074,180,2618,2412,441,1987,1750,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1987,2,2,1987,2,2,1987,2,2,2,2,2,2,2,2,2,2,2,2,137,137,137,137,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,137,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,137,2,2,2,2,2,2,2,2,2,2,2,2,137,137,2,2,2,2,2,2,2,2,2,2,2,2,2,2,137,2,2,2,2,2,2,2,2,2,2,2,1987,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,137,137,137,137,2,2,2,2,2,2,2,1987,137,2,1987,1987,1987,1987,1987,2,2,1987,1987,137,1987,137,137,137,137,137,137,1987,1987,1987,1987,1987,1987,1987,2,137,137,2,137,137,137,137,2,2,2,2,2,2,137,137,2,2,137,137,137,137,137,137}, + {1429,534,1192,299,329,1918,2193,637,1013,123,1196,132,554,1471,767,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1302,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2069,2069,2,2,2,2,2069,2,2,2,2069,2069,2069,2069,2069,2069,2069,2069,2069,2069,2,2,2069,2069,2,2069,2069,2,2069,2069,2,2069,2069,2069,1302,1302,1302,1302,2,1302,2,2069,2069,2069,2069,160,2069,2,2,2,2,2,2,2,2069,2069,2069,2069,547,160,547,2,2069,2069,1302,2069,1302,2,1302,2069,2069,2069,2069,2069,2069,547,2,2,2,2,2069,2069,2069,2069,2069,2069,2069,2069,2,2,160,160,1302,2,2,1302,1302,2069,2069,1302,2,2,2069,2069,1302,1302,1302,1302,1302,2069,2069,2069,547,547,1302,1302,1302,1302,1302,2069,2069,1302,2,1302,160,160,1302,1302,1302,160,1302,1302,1302,1302,2,2,2,547,160,547,1302,1302,160,160,2,1302,1302,1302,1302,1302,1302,2,1302}, + {2302,1308,843,1865,922,1354,1609,744,880,1994,1556,1789,2769,762,762,2,2,2,2,2,2204,2204,2204,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2204,2204,2204,2204,2204,2204,2,2204,2204,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1695,1287,1346,1181,1412,1653,830,2025,957,1720,1614,887,964,964,964,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,440,440,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1756,2308,1986,101,957,633,1940,1002,390,1237,95,1441,95,95,705,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,596,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,596,2,2,2,2,2,2,596,596,596,596,2,2,2,596,596,596,2,596,596,2,2,596,596,2,2,2,2,2,2,2,2,2,2,2,2,2,2,234,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,596,2,2,2,2,2,2,2883,2,2,596,1150,234,596,596,596,596,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,596,2,2,2,2,2,2,2,2,2,2,2,2,2,2,596,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2327,1317,671,1992,261,1580,1903,72,778,1032,1812,1784,2319,2059,2319,2,1523,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,612,612,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,612,612,612,612,612,2,612,612,612,612,612,612,612,612,612,612,935,612,2,2,612,612,2,612,612,2,935,935,612,2,612}, + {2461,1412,540,1183,229,300,47,585,518,402,1863,1863,560,1326,1326,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,627,627,627,627,627,627,627,627,2,2,2,2,2,2,2,2,1673,2,1673,2,2,2,2,2,2,2,2,2,1673,2,2,1673,1673,2,2,2,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,2,1673,1673,1673,1673,1673,1673,1673,1673,2,1673,1673,1673,2,2,2,1673,1673,1673,1673,1673,1673,1673,1673,2,2,2,2,1673,1673,2,2,2,2,2,2,1673,1673,2,2,1673,1673,2,2,2,2,2,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,2,1673,1673,1673,2,2,2,2,2,1673,2,2,1673,2,2,1673,1673,1673,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1673,2,2,1673,1673,2,1673,2,2,2,1673,1673,2,1673,1673,1673,1673,1673,1673,1673,1673,2,2,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,1673,2,2,1673,1673,1673,1673,1673,1673,1673,1673}, + {1707,717,366,287,1883,50,599,1371,474,1551,947,2142,1885,947,2008,1004,1004,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,323,323,323,323,2,323,1173,2,2,1173,1173,2,2,323,2,2,323,323,323,2,2,2,2,2,2,323,323,323,323,323,323,323,323,2,2,2,1173,1173,1173,1173,2,2,1173,323,323,2,1173,323,323,1173,1173,1173,323,323,323,1173,1173,1173,1173,1173,1173,1173,1173,1173,1173,2,245,245,245,245,323,323,323,323,323,323,323,323,323,2,2,323,323,323,323,323,323,2,2,2,1316,1316,323,2,2,2,2,2,2,2,2,2,2,2,323,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,323,323,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,323,2,2,2}, + {2623,1543,652,1824,634,367,43,1229,233,963,1408,2367,2367,1109,1109,56,1468,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1943,1943,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1943,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1943,2,2,1747,1747,1747,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1747,1747,2,2,1468,1468,1468,2,2,2,1468,176,1468,2,1468,1468,1468,1468,1468,1468,1468,1468,1468,1468,2,1468,1468,1468,1468,1468,2,2,2,1468,2,2,1468,1943,2,2,2,1468,1468,2,2,2,2,2,520,520,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1943,2,2,2,2,2,2,2,2}, + {2632,567,1149,1227,1156,2052,643,1585,1197,581,63,718,699,149,149,1940,2,2,2,2,2,2,2,2,2,2,2,2146,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,149,149,149,149,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,149,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2146,2146,2146,2146,2146,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2146,2146,2,2}, + {1774,716,469,1436,190,728,1795,225,685,1187,2691,119,650,1130,1130,1130,1927,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1927,1927,1927,1927,2,2,1927,1927,2,1927,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1927,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1418,2,2,2,2,1418,1418,1418,2,2,2,2,2,2,2,2,2,2,2,1418,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1927,2,2,2,2,1927,2,2,1927,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1462,2,2,2,2,2,2,1927,2,2,2,2,2,2,2,2,1420,1927,1927,2,1420,1420,1418,1418,1418,2,1420,1420,1420,1927,1927,1927,1927,1927,1927,1927,1927,2,1418,1418,1927,1927,1927,1927,1420,1420,1420,1420,2,1927,2,2,2,2,2,2,2,1927,2,1927,2,1927,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2428,1343,459,220,1569,323,2615,1662,116,360,608,405,23,1836,875,2,2,2,2,2,2,2,2,2,2,2,2,825,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,128,512,512,512,2405,2405,611,611,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,650,137,137,137,548,137,137,956,956,956,956,956,137,956,956,1782,1782,1782,1782,745,1782,1782,1782,1782,1968,1782,1782,1782,1782,745,745,745,745,935,745,745,935,935,745,935,1782,1782,1782,1782,1782,1782,745,1782,1782,1968,745,745,1486,1490,55,55,55,880,880,880,220,880,880,880,880,263,880,263,880,935,935,935,1656,1968,1968,1968,1968,1968,1968,1968,1968,935,935,935,935,935,935,935,935,935,935,935,935,935,935,935,935,935,935,301,301,1453,847,847,602,1645,1645,57,57,57,1448,1448,1448,1576,1448,847,1885,1885,1885,1885,1116,1116,1116,1116,1116,1116,1116,1116,1116,1116,935,935,935,935,745,960,745,745,2003,2003,1782,935,1782,935,935,2003,2003,2003,2003,2003,935,935,935,1782}, + {2435,1920,394,1482,266,1637,911,1697,1689,1249,1085,1085,397,2292,1355,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2345,662,270,324,1061,1080,1952,593,1480,2111,2667,2093,2059,2120,955,1447,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,904,904,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1772,879,590,1348,820,891,1533,624,622,345,1054,105,55,55,55,347,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1777,455,1487,1190,455,1542,977,2308,437,1129,410,856,1420,412,412,766,2,2034,2034,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,811,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,811,2,2,2,2,2,2,2,2,2,2,2,312,2,2,2,2,1123,1123,1123,1123,1123,2,811,2,2,2,2,312,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,312,312,312,312,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1123,1123,2,2,1123,1123,1123,1123,1123,2,811,811,2,2}, + {2662,2224,1142,656,59,598,730,458,226,1151,741,1286,1015,2,688,2017,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2017,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2017,2017,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2017,2017,2017,2,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,1068,2,2,2,2,2,2,2,2,2,2,2,852,2,2,2,2,2,2,2,2,2,2,2,2,2,2,852,852,852,2,2,2,2,2,1349,2,2,2}, + {2666,768,529,990,2329,130,1678,2466,318,1083,387,1524,511,2,731,731,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,565,740,740,740,740,565,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,905,2,2,2,2,2,2,2,2,2,2,2,2,2,905,2,905,905,905,2,2,2,2,2,2,2,2,2,905,905,905,905,2,828,828,905,565,565,905,2,2,2,2,2,2,905,905,2,2,2,2,2,2,905,905,2,2,905,905,905,905,2,2,2,2,905,2,2,2,565,565,565,905,565,2,2,2,2,2,565,565,2,2,2,2,565,565,565,2,2,2,2,565,565,565,2,2,2,2,565,2,2,2,2,2,2,2,2,2,2,905,905,2,2,2,2,905,905,565,565,565,565,565,565,565,2,565,565,565,565,565,937,937,565,565,565,565,565,565,565,565,565,937,2,565}, + {2673,772,867,209,1487,657,1508,1333,1307,242,1588,1672,1329,1672,1672,1998,1672,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,789,2,2,2,2,789,789,2,2,2,789,789,859,859,859,2,2,859,2,859,2,2,2,859,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,859,2,2,2}, + {2501,1216,246,1278,718,704,2019,88,273,1203,67,1488,1828,2,2,1489,1489,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1808,667,1162,225,597,1410,1390,390,2207,968,1136,26,533,2,1807,1807,1397,1397,1397,1397,1397,1397,1397,1397,1397,2,2,2,2,1397,1306,1397,1306,2,2,1306,1306,1306,1306,1306,1306,2,2,2,2,1306,2,2,1306,2,2,2,1397,1306,53,1535,1535,53,2,2,2,2,2,2,2,2,2,2,2,2,1306,1306,2,2,2,1306,1306,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1306,1306,2,2,2,2,2,2,2,2,1306,2,2,2,2,2,2,2,2,2,2,2,1306,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1306,1306,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1306,2,2,2,2,2,2,2,2,2}, + {2474,2292,1818,2061,2833,751,2172,1708,1210,1675,370,131,163,2,2,163,163,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,267,2,213,2,213,213,267,2,2,2,2,2,2,2,267,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,213,213,2,267,267,2,2,2,213,267,267,267,213,213,2,2,2,2,2,2,2,2,2,2,2,2,2,267,2,2,2,267,267,2,213,213,213,213,213,213,213,213,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,213,213,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,267,2,2,2}, + {1751,1575,889,828,82,1956,712,499,1420,1686,339,2326,2035,2,2,558,558,2,1234,2,2,2,2,2,2,2,2,2,2,2,1239,1239,1239,2,2,2,431,1239,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1239,1239,2,2,1239,1239,1239,1239,1239,1239,1239,2,2,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1055,1055,1055,1239,1239,1239,1055,1239,2,1055,1239,1239,1239,1239,1239,1239,1239,1055,2,2,2,2,2,2,2,2,1055,1055,1239,2,2,2,2,2,2,2,2,2,2,2,2,2,1055,1055,1055,1055,2,2,2,2,1055,1055,2,2,1055,2,2,2,2,2,2,2,2,2,2,1055,1055,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1239,1239,1239,1239,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1239,1239,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2522,1148,1943,168,218,252,543,1535,2004,130,353,353,42,2,2,2,1173,1173,2,1547,2,2,2,2,2,2,2,1547,1173,1547,1547,2,2,2,2,2,2,1173,2,2,2,1547,1173,2,1547,1547,1547,2,1547,1547,1547,1547,1547,1547,2,1547,2,2,2,2,2,2,2,2,1547,2,1547,2,1547,1547,2,2,2,2,2,2,2,2,1547,2,2,2,2,2,2,2,1547,1547,2,2,1547,1547,1547,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1547,2,2,2,1547,1547,1547,1547,2,1547}, + {2695,432,1213,579,865,1637,1857,84,447,155,2492,347,1980,2,2,2,1155,1155,1155,2,1933,1933,1933,2,2,2,2,2,2,2,1901,1901,2,2,2,2,2,2,2,2,2,2,2,2,4,4,16,32,2,2,2,2387,1024,1024,2387,2387,2387,51,51,51,51,806,806,51,2,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,1907,1907,2,1907,1907,1907,1907,1907,81,81,81,2406,483,648,648,648,606,606,606,606,606,606,606,606,606,606,606,606,606,606,806,2523,2523,2523,2523,806,606,606,806,806,806,806,806,606,606,606,606,806,806,806,806,606,606,606,606,606,806,806,606,606,2,2,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,806,806,806,1156,1156,806,806,1055,1055,1055,1055,806,806,806,1055,1055,606,1907,36,36,36,36,36,36,9,9,9,918,36,2902,36,36,36,36,289,2947,2947,2947,289,289,289,289,289,289,289,36,36,1001,289,289,289,289,289,1001,606,606,289,2947,2947,2947,2947,2947,2947,606,606,606,606,606,606,606,606,606,1156,606,606,606,606,606,606}, + {1808,1683,474,1761,106,602,1416,217,1351,1602,366,393,1966,2,2,2,2,2,378,378,606,606,606,2,2,2,2,2,919,919,919,919,2,2,2,2,2,919,2,2,2,2,919,919,2,2,2,919,2,2,2,919,2,1963,919,919,919,919,919,919,919,919,2,2,2,919,2,2,2,2,919,2,2,2,919,919,919,2,919,919,2,2,919,919,919,919,919,2,2,2,919,919,919,2,2,919,919,919,919,919,2,919,919,2,2,919,919,919,919,919,2,2,2,2,2,919,919,919,2,919,2,919,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,919,2,2,919,2,2,2,919,919,2,2,2,2,2,919,919,919,919,2,2,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,2,919,919,919,919,919,2,919,919,2,919,919,919,919,919,919,2,2,919,919,919,919,2,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919}, + {2502,1713,1050,1694,1876,459,2000,674,2097,1461,2408,945,977,2,2,2,2,2,1263,1263,1263,1263,2,2,2,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,1263,609,1263,1263,1126,1126,1126,1126,1126,1126,1126,1263,1263,1263,1263,1263,1263,2,2,2,2,2,2,609,609,609,609,609,609,2,609,609,609,609,2,2,2,2,2,2,2,609,609,2,2,2,609,609,1263,1263,1263,1263,1263,1263,2,1263,1263,1263,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1263,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1263,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1827,651,1490,2046,484,1508,284,1993,2003,2072,2746,556,616,2,2,2,2,2,4,4,4,4,2027,2027,2027,2027,2027,2027,1618,1618,2027,2027,2027,2027,2027,2027,2027,108,108,2027,2027,2027,374,2,2,1082,36,36,374,374,374,36,708,2027,2027,2027,1082,374,708,708,708,708,708,708,708,708,708,708,708,708,708,4,148,108,108,108,108,108,108,108,4,4,108,4,2635,708,2635,96,2027,2027,2027,2027,2027,2027,768,4,4,2635,2635,2635,2127,688,339,232,232,232,232,232,232,232,232,232,232,232,232,2,2,96,1504,324,1504,1504,1504,232,236,236,236,232,232,236,2,2,2304,236,1504,2304,324,324,232,232,232,232,232,232,2127,1618,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,688,688,2027,2027,2027,2027,509,509,509,1082,1082,232,232,232,232,232,232,2027,2027,2027,2027,2635,2635,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,509,519,2178,2178,2178,1573,2127,2127,2127,339,339,339,339,339,339,339,339,339,339,472,472,310,310,472,472,472,872,59,59,1118,1118,559,559,559,1888,559,559,872,592,872,872,872,872,232,1082,1082,1082,1082,1145,1145,1145}, + {2428,1576,1692,449,2012,240,1167,418,272,1557,2197,645,645,2,2,2,2,2,2150,2150,2,2,562,715,2,2,2,81,81,2,2,2,2,2,2,2,2,2,2,2,2,2,349,349,349,349,349,846,846,846,846,846,846,846,349,349,846,846,349,2,2,2,2,2,2,2,2,2,2,1845,1845,1845,1845,1845,1845,1845,1845,2,2,2,2,2,1845,2,2,2,2,2,2,2,2,349,2,846,846,9,81,81,81,846,846,846,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,349,349,349,349,349,349,349,349,349,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,81,2,81,2,81,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2756,2,4,4,4,2,4,4,4,128,64,128,192,2,2,2,576,576,96,96,96,96,96,96,96,96,4,4,4,4,820,144,144,144,820,820,24,24,273,562,18,562,562,562,188,188,188,273,273,1431,1431,1431,135,135,135,135,135,135,135,349,349,349,349,846,846,846,846,846,846,846,2102,846,846,321,1100,321,321,1466,1466}, + {2721,1522,260,2512,2426,377,1659,704,323,1473,2020,395,306,2,2,2,2,886,886,2,805,2,2,2,2,2,2,1622,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,1852,1852,886,886,1852,1852,1852,1852,1852,1852,1852,1852,1852,1852,274,886,886,274,274,274,274,886,886,886,886,886,886,886,2,886,886,886,886,886,886,886,1852,2747,2747,1852,1852,2747,2747,2747,1852,2747,1852,1852,1852,1852,1852,578,2747,578,578,945,886,1852,1852,1852,1852,1852,945,945,945,945,945,945,945,945,945,945,945,1852,1852,1852,1852,1852,945,945,945,2,2,1852,1852,1852,886,869,869,2,869,869,886,886,2747,2747,2747,2747,2747,886,2747,2747,2747,886,886,1852,869,1852,886,886,886,2161,2161,2161,1852,2,1852,1852,2,1852,2,2,2,2,2,2,2,2,2,2,945,1852,1852,2,2,2,2,1852,1852,1852,2,2,2,1852,1852,1852,2,2,1852,2,1852,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1852,1852,1852,1852,1852,2,2,2,2,886,886,1852,1852,945,886,886,2,2,2,886,945,945,2,945,886,2,2,886,2,2,2,2,886,886,886,886,886,886,886,886,886}, + {1922,2418,759,2174,1560,472,1834,1133,327,183,782,782,1783,2,2,2,2,709,291,709,709,709,709,709,2,2,2,2,2,2,709,709,709,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,709,2,2,2,2,709,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,709,709,709,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2414,720,1022,2176,52,1108,2098,476,114,87,585,169,1201,2,2,2,1292,1292,1292,2,2012,2012,2012,2012,2012,2,2,2,2,2,2012,2012,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2012,2012,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2727,781,1689,1709,997,2563,1032,468,44,992,1214,725,75,2,2,2,2,360,360,380,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1458,1458,2,2,2,2,1458,1458,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,360,360,360,360,360,360,360,1458,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3003,2,2,2,2,2,267,267,267,360,360,360,360,360,267,267,577,577,2,267,577,360,360,360,360}, + {1948,1085,1344,2090,1435,2389,3193,1007,1003,244,667,1838,2062,2,2,2,1802,299,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,798,2,2,798,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,798,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,798,2,2,2,2,2,2,2,2,2,2,2,2,2,2,739,739,2,2,2,2,2,2,2,798,798,798,2,2,2,798,798,2,2,798,798,798,798,2,2,798,2,2,798,798,2,798,798,798,798,2,2,2,2,798,2,798,2,2,2,798,798,2,2,2,2,2,2,798,798,798,798,798,2,798,2,2,2,2,2,2,2,2,2,2,798,798,798,798,798,798,798,2,2,2,2,598,598,598,598,598,598}, + {1820,1726,1335,1818,2058,1579,2212,288,761,253,572,572,1836,2,2,2,1836,1196,2,1196,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1196,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2433,932,689,818,2014,1498,749,1645,867,1627,47,1766,2193,2,2,2030,2030,2,430,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1800,1800,1800,1800,2,2,2,1800,2,2,2,1800,1800,2,2,2,1800,1800,1800,1800,1800,1800,1800,2,2,2,1800,1800,2,1800,1800,1800,1800,1800,2,1800,1800,2,2,2,1800,1800,2,2,1800,1800,1800,1800,1800,1800,1800,1800,1800,1800,2,1800,2,2,2,2,2,2,2,2,2,1800,2,2,2,2,1800,1800,2,2,2,2,2,2,2,2,2,2,2,2,1800,2,2,2,2,2,1800,1800,1800,1800,1800,1800,1800,1800,2,2,2,2,2,2,2,2,2,2,2,2,1800,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2463,712,1525,2092,2942,352,761,242,2178,2339,483,1905,1347,2,2,65,529,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,811,2,2,2,811,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,811,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2547,920,386,925,74,579,323,2319,520,2332,1535,751,1591,2,770,770,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1804,1804,1804,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1804,1804,1804,2,1804,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1804,2,2,2,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,2,2,2,2,2,1804,1804,1804,1804,1804,1804,1804,1804,1804,2,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,1804,2,1804,1804,2,1804,2341,2341,2341,1804,1804,1804,1804,1804,1804,1804,2341,2341,2341,2341,2,1804,1804,1804,1804,1804,1804,1804,1804}, + {1947,718,981,2254,598,947,2091,1673,382,484,438,502,2169,2,766,766,766,2,2,2,2,2,2,2,2,2,2,2,2,1891,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1891,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1891,1891,2,1891,2,2,2,1891,1891,1891,2,2,1891,1891,1891,1891,1891,1891,1891,2,2,1891,1891,2,1891,2,1891,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1891,2,1891,1891,1891,1891,1891,2,2,2,2,2,2,2,2,2,2,2,1891,1891,1891,1891,1891,2,2,2,2,2,2,2,2,2,2,2,2,1891,2,2,1891,2,1891,1891,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1891,2,2,1891,1891,2,2,2,2,2,2,2,2,1891,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1891,1891}, + {2596,897,695,155,863,1307,190,381,356,1003,2596,3024,460,2,611,611,611,611,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1276,1276,1276,1276,1276,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2452,2588,2055,665,818,2622,413,1260,965,211,989,1219,166,2,1251,1251,2,1256,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1607,1607,2,1607,1607,2,1607,1607,396,2,2,396,396,2,2,396,396,396,1607,2,2,1607,396,2,2,2,2,1607,2,2,1607,2,1607,1607,2,2,2,1607,1607,2,2,2,2,2,1607,1607,1607,1607,2,2,1607,1607,1607,1607,1607,1607,1607,1607,1607,1607,2,2,2,1607,1607,1607,1607,1607,1607,1607,1607,1607,1607,1607,1607,2,396,396,1607,1607,1607,1607,1411,1607,396,1607,1607,1607,1607,1607,1607,1607,1607,1607,1607,1607,396,1607,1607,1607,1607,1607,1607,1607,2,1607,1607,396,1607,1607,1607,1607,1607,1607,396,2,396,396,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,396,396,2,396,2,2,2,2,2,1607,1607,2,2,396,396,2,2,2,396,396,396,2,2,2,2,1607,1607,2,2,401,2,2,2,2,1607,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1978,796,582,1580,436,927,2520,2677,1176,1991,1952,2781,2781,1379,1379,880,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,555,2015,2015,2015,2015,2,774,774,413,413,2,2015,2,2,2015,413,413,413,2,2,774,2,2,413,413,413,413,413,2,413,413,413,2,2,2015,2,2,2,2,2,2,2,2,2,2,413,483,2,413,413,413,2,2,2,2,2,2,2,2,413,413,774,774,774,774,774,774,774,2,774,774,413,2,2,2,2,774,774,774,2,774,774,774,2,2,774,2,2,2,2,774,774,774,774,774,774,2,774,774,774,2,774,2,2,2,2,2,2,2,2,2,774,774,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,774,774,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1957,2311,993,276,293,2826,1087,880,927,1811,1122,2974,2974,2,2,590,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1779,1779,1779,2,2,2,2,1779,1779,1779,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1779,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1779,1779,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2552,998,533,827,1619,831,1861,918,750,1955,241,1899,448,2151,2151,449,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2551,2123,2748,2283,1471,2939,1746,244,1212,1055,1602,896,765,765,765,149,2,2,2,2,2,2,2,2,2,2,641,2,2,2,2,2,641,641,2201,2,2,2,2,2,2,2,2,2,2,2,2201,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2201,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,641,2201,2201,2201,2201,2,2201,2201,2201,2201,2201,2,2,2,2,2,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2,2,2201,641,2201,2201,2201,2,2201,2201,2201,2201,2201,2201,2201,2201,641,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,2201,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641}, + {1860,579,1000,1575,898,170,185,1032,293,2754,438,459,459,2,1199,1199,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1668,1668,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1668,1668,1668,2,1668,1668,1668,1668,1668,1668,1668,1668,1668,1668,1668,1668,1668,1668,1668,2,1668,1668,1668,2,2,2,1668,1668,1668,2,1668,1668,2,1668,1668,1668,2,1668,1668,1668,1668,1668,1668,1668}, + {2602,2417,1888,2528,1410,669,1543,233,814,2478,225,1449,1449,224,1671,1671,2,2,931,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,457,2,2,2,2207,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2207,2207,2207,2207,2207,2207,2207,2207,2207,2207,2,2,931,931,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1977,1090,1949,3135,1816,896,2042,2686,780,2002,1823,1823,139,888,888,888,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2118,2118,2118,2118,2118,2,2,2,2,334,2118,2118,2118,2118,2,334,334,334,334,334,2,334,334,334,334,334,334,334,334,334,334,334,334,334,334,334,334,334,334,334,334,334,334,334,2118,2118,2,2118,2118,2118,2118,2118,334,334,334,334,334,334,334,334,334,334,334,334,334,334,334,1726,545,545,545,545,545,545,334,334,334,334,334,334,334,545,334,334,334,334,334,334,2059,2059,2059,545,545,917,1726,2059,1726,1726,1726,545,545,545,2059,545,545,545,2059,2059,2059,2059,2059,2,2059,2059,2059,2059,2059,2059,2059,2059,2059,2059,2059,2059,86,2059,917,1726,1726,1726,1726,1726,1726,1726,1726,1726,917,2059,334,334,2059,2059,2059,545,1726,2059,2059,1726,1726,1726,2059,2059,2059,2059,2059,2059,234,234,234,234,234,234,234,234,234,234,2059,2059,2059,2059,2059,2059,2059,1726,1726,1726,1726,1726,1726,1726,917,1726,2059,2059,2059,2059,2059,2059,2059,2059,2059,2059,917,917,917,1726,2059,2059,2059,2059,2059,2059,2059,1726,1726,1726,1726,2059,1726,1726,1726,1726,1726,1726,1726,1726}, + {1889,2527,1366,1371,387,925,1751,162,250,1064,292,467,467,546,1244,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1995,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1995,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2943,838,301,1319,859,2508,2032,902,1466,2979,170,503,503,503,176,2,2,2,263,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,263,263,263,263,263,263,2,2,2,263,263,247,247,2,247,263,263,263,263,263,263,263,263,263,247,247,2,247,247,247,247,2,2,2,2,2,263,2,2,2,2,2,2,2,1527,2,247,2,2,2,2,2,2,263,263,2,247,263,2,2,263,263,263,247,247,247,2,2,2,2,2,247,247,247,2,247,2,2,247,247,247,2,263,247,247,247,247,247,247,247,247,247,247,247,247,2,2,2,2,1527,2,1527,263,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,247,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1527,2,1527,1527,2,2,2,2,2,2,2,2,2}, + {2492,1186,1350,1616,2749,1962,33,708,279,813,1390,489,1203,268,173,2410,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2497,941,2366,712,1217,761,1798,208,1638,20,73,199,199,199,199,355,518,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,440,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,440,440,440,440,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,473,2,2,2,2,2}, + {2500,1575,423,541,561,380,262,1564,1923,1242,2084,1758,1283,2213,924,924,2,2,2,2,2,2,2,2,2,2,2,1827,1827,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,924,924,2,2,2,2,2,2,924,2,924,924,2,2,2,2,2,2,1827,1827,1827,1827,1827,2,924,924,924,924,2,2,2,2,924,924,924,924,924,924,924,924,924,2,2,2,2,924,924,635,635,924,924,924,924,924,924,924,924,924,924,924,924,924,1827,924,924,635,2,1827,1827,2,2,2,2,2,924,924,924,924,924,924,635,635,635,635,635,635,635,1302,1302,1302,1302,1302,1302,1302,1302,1302,1302,1302,1302,1302,1302,1302,924,1302,1302,1302,1302,1302,1302,1302,1302,1302,1302,1302,1302,1302,1302,1302,1302,1302,2,924,924,635,635,635,635,635,635,635,635,635,635,635,635,635,635,635,1302,2,2,2,1302,1302,1302,1302,1302,1302,1302,1302,1302,1302,1302,635,635,635,635,635,1302,1302,1302,1302,1302,1302,1302,1302,1302,1302,1302,2,2,2,2,924,924,924,924,635,2,2,2,635,924,924,924,924,924,924,924,924,1302,1302,1302,1302,1302,924,924,924,924,924,924,924,924,924,635,2,635,635,635,635,635,635}, + {1842,1736,489,743,1539,1681,683,1412,1418,312,2778,2778,1975,1975,803,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2025,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2025,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2025,2025,2,2025,2025,2025,2,2,2,2,2025,2,2,2025,2025,2,2,2025,2025,2025,2,2,2,2,2,2025,2025,2,2025,2025,2025,2,2025,2025,2025,2025,2025,2,2,2,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2,2,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2025,2,2,2,2,2,2,2,2,2,2025,2025,2025,2025,2025}, + {1843,1934,741,1145,177,650,766,332,832,441,1014,1616,1123,1123,1123,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1671,1671,1671,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1671,1671,1671,2,1671,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1671,2,2,2,1671,1671,2,2,2,2,2,1671,1671,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2824,1183,2201,278,241,2230,1591,1648,1036,818,1321,1312,754,813,813,813,813,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1253,1253,2,2,2,2,2,2,2,2,2,1253,1253,1855,1855,1855,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1253,2,2,2,2,2,2,2,1253,1253,1855,1855,1855,1855,1855,1855,1855,1855,1855,1855,1253,1253,1253,1253,1253,1855,1855,1855,1855,1253,1253,2,2,444,1253,1253,1253,1253,1253,1253,444,444,1253,1855,1855,1855,1253,1253,1253,1253,1253,1253,1253,1253,1253,1855,1855,1253,1253,1855,2700,2700,2,2,2700,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1855,1855,1855,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,444,444,1253,1253,2751,1253,2751,2751,1253,1253,2751,2751,1253,1253,1253,1253,1253,1253,1253,1253,1253,861,861,861,861,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253}, + {2617,617,259,1016,1473,1772,560,2415,370,207,1159,1349,2503,152,415,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1735,2,2,2,2,1735,2,2,2,2,2,2,2,2,2,2,2,2,2,1735,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,543,543,543,2,2,1735,2,19,19,19,19,2,1735,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1900,2506,952,1059,163,870,681,1235,1271,1188,2071,1705,1183,648,404,2,2,2,2,2,2,2,2,2236,2236,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2236,2236,2236,2,2,2236,2,2,2236,2,2,2,2,2,2,2,2,2,2,2,2,2,2236}, + {2662,1208,2848,426,2165,402,954,1804,555,41,916,724,674,1082,1783,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2662,1443,2327,132,490,1149,1572,744,429,621,1763,2383,1903,1246,964,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,337,337,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,337,2,2,2,2,2,2,2,2,2,337,2,2,2,2,2,337,2,337,2,2,2,2,337,337,2,337,337,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,337,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,337,337,337,337,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2673,2182,1307,1776,1233,1828,1828,340,249,216,503,160,160,582,926,2129,2129,2129,2129,2129,2129,2129,2129,2129,2129,2129,2129,2,1018,1018,1103,1103,1103,1103,1103,1103,1103,1103,1103,1103,2,2,2,2,2,2,2,899,899,899,899,899,899,1018,1018,899,899,899,899,899,899,2,899,2,2,2,391,391,391,391,391,391,391,391,2,2,2,391,2,2,2,2,1018,592,592,592,592,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1103,1103,2,2,2,594,594,594,594,594,2,1018,1018,2,1018,1018,1018,1018,1018,1018,1018,1018,1018,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1018,2,1018,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1018,1018,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1018,1018,2,2,2,2,2,2,2,2,2,2,1018,1018,1018,1018,1018,2,1018,1018,2,2,2,2,2,2,2,1018,1018,2,2,2,2,2,2,2,2,2,2,2,2,1018,1018,2,2,2,2,2,2,2,1018,1018,1018,1018,1018,1018,1018,2}, + {1912,1494,301,682,1524,2974,1138,330,1113,114,2687,234,442,442,606,2,2,2,2,2,2,2,2,2,2,2,1165,2,2,2,2,1165,1165,1165,2,2,2,2,2,606,1165,1165,2,2,2,1165,2,2,2,2,2,2,2,2,2,2,2,2,1165,2,2,2,2,2,2,2,2,2,2,2,1165,1165,1165,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1165,1165,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1165,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1165,1165,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1165,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2042,620,1074,2057,2758,859,815,1127,766,1693,252,808,981,416,416,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,452,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,452,452,452,452,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,452,452,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2102,881,2170,1673,705,101,58,1712,1568,214,758,488,1007,269,243,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,243,243,2,2,2,2,2,2,2,2,243,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,243,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,243,2,2,2,2,243,2,243,243,243,243,243,243,243,243,243,243,2,243,243,2,243,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,243,243,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,243}, + {1913,1232,1826,1053,2045,865,1492,789,1475,1985,2626,2830,1205,206,394,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2876,2190,1370,1614,1651,1936,1346,987,2412,1951,2275,15,1418,611,1876,2,1876,2263,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1291,1291,1291,2,1291,2,2263,2,2263,2,1291,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2692,2665,961,1478,324,429,1311,376,1648,130,2083,1047,409,343,343,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,587,2,2,2,2,2,2,587,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2116,2116,2,2,2,2,2,2,59,59,59,59,59,59,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2280,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,46,46,46,46,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2126,2895,2856,306,1475,1404,924,3236,2277,27,285,340,1560,335,2621,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1229,2,2304,2,2,2,2,2,2,2304,2,2,2,2,2,2,2,2304,2304,2,2,2,2,2,2,2,2304,2304,2304,2304,2304,2304,2,2,2,2,2,2,2,2,2,2304,2,2,2,2,2,2,2304,2304,2304,2304,1229,1229,1229,1229,2,2,2,2,2,2,2,2,2,2304,2304,2304,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2304,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2122,1087,563,1669,647,2996,151,2458,250,310,71,1348,355,965,2815,1333,1333,2,2,2,2,2218,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2218,2,2,2,2,2218,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2218,2218,2,2,2,2,2,2,2,2,2218,2218,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2218,2218,2,2218,2,2,2,2,2218,2218,2218,2218,2218,2218,2218,2218,2,2668,2,2,2,2,2218,2,2668,2668,2668,2,2,2,2,2,2,2,2,2223,2,2,2668,2223,2223,2668,2668,2668,2668,2,2,2,2,2,2,2,2,2,2668,2668,2668,2218,2,2,2,2,2,2,2,2,2,2218,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2223,2223,2223,2,2,2,2,2223,2223,2,2,2}, + {2582,1029,382,1035,39,962,892,1580,1357,741,1409,1184,2823,1747,775,2,2,2,2,2,2,2,1848,1848,1848,1848,1848,1848,2,2,2,2,1848,1848,2,1848,1848,1848,1848,1848,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1848,1848,2,2,2,1848,2,2,2,1848,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1848,2,2,2,2,1848,2,2,1848,2,2,2,2,2,2,2,2,2,2,2,2,2,1848,1848,2,2,2,2,2,2,2,2,2,2,2,2,1848,1848,1848,2,2,2,2,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,2,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,2,2,1848,1848,1848,2,2,2,2,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,2,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848}, + {1952,1968,2260,2945,2464,1055,2626,570,1316,1828,1828,970,970,221,220,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1813,1664,1664,1664,1664,1813,1813,2,1813,1664,1664,1664,1664,1664,2,2,2,2,1664,2,2,2,2,2,2,2,2,1664,2,2,2,2,2,2,2,2,1664,1664,1664,1664,1664,1664,1664,2,1664,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1813,1813,1813,2,2,2,1813,1813,1813,2,2,1813,1664,1664,1813,1813,1813,1813,2,1813,1813,1813,1813,1813,1813,1813,1813,1813,1813,1813,1813,1813,1813,2,2,2,1813,1813,1813,1813,2,2,1813,1813,1813,1813,1813,1813,2,1813,1813,1813,1813,1813,1813,1813,2,1813,1813,1813,1813,2,2,2,2,2,2,2,1813,1813,1813,1813,1813,1813,1813,1813,1813,1813,1813,1813,1813,2,1813,1813,1813,1813,1813,1813,1813,1813,1813,1813,1813,1813,1813,1813,1813,1813,1813,1813,1813,1813,1813,2,2,2,2,1813,1813,2,2,1857,225,427,1058,2048,2048}, + {2600,985,1174,2932,1567,1379,2566,1537,15,850,282,634,634,2267,226,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1194,2,2,2,2,1194,1194,1194,1194,1194,1194,1194,1194,1194,2,2,2,2,2,2,1194,1194,1194,1194,2,2,2,2,1194,2,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1194,2,1194,1194,2,2,1194,2,2,2,2,2,1194,1194,1194,1194,2,2,2,2,2,1194,1194,1194,1194,1194,1194,1194,1194,1194,2,2,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,2,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,2,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194}, + {2583,892,2011,697,2672,329,206,2725,2008,765,590,2233,1400,2591,1272,860,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,308,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,308,308,308,308,308,308,308,308,308,308,308,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,308,308,2,2,2,2,2,2,2,2,2,2,2,2,2,308,2,2,308,2,2,2,308,308,308,308,308,308,308,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,308,308,2,308,308,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2687,629,1634,712,512,363,1855,343,1002,161,1531,191,1515,967,1239,1239,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1345,1345,1345,1345,1345,1345,2,2,2,2,2,2,2,2,1345,1345,2,2,2,2,2,1345,1345,1345,1345,2,2,2,2,2,2,1345,1345,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,2,1345,2,2,2,1345,2,2,1345,2,2,2,2,2,2,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,2,2,1345,1345,1345,1345,1345,1345,1345,1345,1345,2,1345,1345,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1345,2,2,2,1345,2,2,2,2,2,2,2,2,1345,1345,1345,1345,2,2,2,2,2,2,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,2,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345,1345}, + {1947,1699,1341,486,1765,1960,264,899,1082,1674,987,1878,930,1008,930,930,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1637,2,2,2,2,2,2,2,2,2,1637,2,2,2,2,2,2,2,2,2,1637,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1329,1329,2,1329,1329,2,2,2,1637,1329}, + {1953,1527,1643,591,1517,2427,1232,1555,2542,495,675,2534,2534,3106,83,3106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1541,1541,2,2,2,2,2221,2,2,2,2221,2,2,2,2221,2221,2221,2,2221,2221,2,2221,2,2,2,2221,2221,2221,2221,2221,2221,2221,2,2221,2221,2221,2221,2221,2221,2,2,1622,638,922,1575,1575,1135,1783,1783,1783,82,82,2221,2221,2221,2221,2221,2221,1541,2221,2221,1541,769,769,2221,2221,2221,2221,2221,2221,2221,2221,2221,2221,2221,2221,2221,2221,1541,1541,1541,1541,1541,769,1541,1541,769,769,769,769,769,769,1541,1541,1541,1541,1541,1541,2221,769,2221}, + {2588,2051,794,2299,1480,1795,804,1763,1562,677,465,1404,271,271,1495,1645,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,947,947,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2744,1728,2213,792,761,1667,1908,31,447,442,815,2865,762,762,762,762,2,2,2,2,2,2,2,2,2,2,2,2,649,649,649,2,2,2,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,2,92,92,92,2,649,649,649,92,92,92,92,92,92,92,92,92,92,92,92,481,2,2,484,2,2,649,2,2,2,2,484,484,484,484,484,484,484,484,2,484,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,481,2,2,2,2,2,481,481,481,481,481,481,2,2,2,484,484,484,2,481,481,168,649,92,2,2,2,2,2,2,2,2,2,2,649,2,2,2,2,2,2,2,2,2,2832,2,2,649,649,649,649,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,649,484,484,484,2,2,649,649,649,649,649,2,2,2,2,2,2,2,649,2,2,2,2,2,2,2,2,2,2,649,649,649,649,649,649,649,649,2,2,2,2,2,649,2,2,2,2,2,2,2,2,2,2,649,649,2,649,2,649,649,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2722,1406,1257,807,2191,3017,1330,1023,602,2124,794,530,733,733,1083,2528,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1720,2,2,2,2,2,2,2,2,2,1720,1720,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,952,2,2,2,2,1720,1720,1720,2,2,1720,1720,1720}, + {2604,2214,2076,2441,2223,1489,424,117,1855,1391,1404,414,414,2048,2048,303,2,2,2,2,2,2,2,2,2,2,2,4,4,4,4,4,4,2,2,1418,2,2,2,2,2,2,2,2,2,2,2,1418,1418,433,2,2,433,433,433,433,2,2,2,2,1418,1418,1418,1418,1418,1418,1418,1418,1418,2,1418,433,433,433,433,433,433,433,433,433,433,433,2,2,433,433,433,433,2024,2024,2024,2024,2024,2024,2024,2024,2024,779,779,433,433,433,433,433,433,433,433,433,433,433,433,779,779,2,2,2,2,779,779,1418,2024,2024,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,779,2,2,2,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,406,779,779,433,779,2024,2024,433,779,779,779,779,779,1418,1418,779,779,1418,1418,1418,1418,1418,1418,433,433,433,433,433,433,433,433,433,1418,433,433,433,433,433,433,366,366,366,366,366,366,366,366,366,366,366,366,366,366,2,1418,2,2,2,779,2,2,2,779,779,779,779,779,779,779,779,2,779,779,779}, + {2720,1547,1527,1995,564,995,845,1152,395,848,483,2371,299,299,1000,1000,2,2,2,2,2,2,2,2,2,1375,1375,1375,1375,1600,2,2,1375,1375,1375,2,1600,1600,1600,1600,1600,1600,1600,1600,1600,1600,1600,1600,2,2,2,2,2,2016,2016,2016,2016,2,2,2016,2016,1600,1600,1600,2,2,2,1375,1375,1375,1600,1600,1600,1600,1600,1600,1600,1600,1600,1600,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1375,1375,1375,2,2,1375,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1375,1375,1375,2,1375,2,2,2,2,2,2,2,2,1375,1375,2,2,2,2,2,2,2,2,2,2,1375,1375,1375,1375,1375,1375,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2728,908,2523,497,1747,524,316,382,1156,274,50,1215,809,134,134,452,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1661,1661,1661,1661,1661,1661,2,2,1661,1661,2,2,2,2,1661,2,2,2,2,2,2,1489,1489,1489,1489,1489,1489,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1661,2,2,2,2,2,2,2,1661,1661,2,2,2,1661,1661,2,2,2,2,2,1661,1661,2,1489,2,2,1661,1661,2,1661,2,2,2,2,2,1661,2,2,2,2,2,2,2,2,2,1489,1661,2,1661,2,2,2,2,2,2,2,2,2,2,2,2,2,1489,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,771,771,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1661,1661,2,2,2,2}, + {2626,2468,2838,845,2060,218,1080,912,911,1973,1365,920,1316,1316,2,1316,1316,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1013,1013,2,2,2,1013,2,2,2,2,2,2,2,2,2,1013,1013,1013,1013,1013,1013,1013,1013,1013,2,1013,1013,1013,1013,1013,1013,1013,1013,1013,1013,1013,721,721,721,1013,2,1013,1013,1013,1013,1013,1013,1013,1013,721,721,1013,2,1013,1013,1013,1013,721,2,721,721,721,721,1013,2,2,2,1013,1013,2,2,2,2,2,1013,1013,1013,2,2,1013,1013,2,1013,2,2,2,2}, + {2734,1727,1743,1026,809,1154,779,244,1238,1616,812,784,825,1810,1810,1810,1810,1559,1559,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1559,2,2,1559,1559,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1559,2,2,1559,1559,2,2,2,2,1559,2,1559,2,2,2,2,2,2,2,2,2,1559,1559,1559,1559,2,2,2,2,2,2,2,2,1559,1559,1559,2,2,2,1559,1559,1559,2,1559,1559,1559,1559,1559,1559,1559,1559,1559,1559,1559,1559,2,2,2,2,2,2,2,2,2,2}, + {2947,875,1603,1364,2297,570,2949,1952,701,84,296,1958,2709,1958,144,144,605,2,2,2,2,2,2310,2,2,2,2,2,2,2,2,2,605,2,2,2,2,2,2,2,2,2,2,2,2,605,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,605,2,2,2,2,605,2310,2310,2,2310,2310,2,2310,2310,2,2310,2310,2310,2310,2310,2310,2,2,2310,2,2,2310,2310,2310,2310,2310,2310,2310,2,2310,2310,2,2,2,2310,2310,2310,2,2310,2,2,2,2310,2310,2310,2310,2310,2,2,2,2,2,2,2,2,2,2310,2310,2310,2,2,2,2,2,2,2,2,2310,2310,2310,2310,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2310,2310,2310,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2180,2262,1651,204,3193,2121,2725,1016,629,1834,603,2848,26,26,728,728,728,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,487,487,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,487,2,2,2,2,2,2,2,2,2,2,2,487,487,2,487,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2669,1418,506,671,2202,343,617,583,21,2496,983,449,1671,1193,2,2502,2502,2,2,2,2,2,2,2,2,2,2,2,2,2,384,384,2,2,2,2,2,1849,1777,384,384,384,384,2,2,2,2,2,2,2,1849,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1849,1849,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1777,1777,1849,1849,1849,1849,1849,1849,1849,1849,1849,1849,1849,1849,1849,2,2,1849,1849,1849,1849,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1515,1515,1515,1515,1515,2,1777,1777,1515,1515,1515,2,1515,1515,1515,2,2,2,2,2,2,2,2,2,2,2}, + {2131,752,2841,458,201,361,935,3205,2815,904,35,2699,555,1344,2,664,1377,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,264,264,264,2,264,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2330,2,2,2,2,2,2,2,2,2,2,2,2,2330,2330,1187,1187,1187,2330,2330,2330,2330,2,2330,2330,2330,2330,2330,2330,2330,2330,2,2,2330,2330,2,2330,2,2,2,2,2,2,2,2,2,2330,2330,2,2,2,2,2330,2,2330,2,264,264,264,264,264,2,2,2,2,2330,2330,2330,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2648,1328,2578,133,1377,105,2485,2139,323,1045,145,761,1201,1848,2,814,814,814,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1914,2,2,2,2,2,2,2,1914,1914,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,104,104,2,2,2,2,2,2,2,761,2,761,2,761,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,761,761,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,761,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2741,2814,691,1055,749,2147,821,1246,2190,453,1133,2673,1689,630,2,2,2274,2274,2,2,2,2,2,2,1423,1423,1423,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1423,1423,1423,2,2,2,2,1423,1423,1423,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1423,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1423,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1423,1423,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1423,1423,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1423,1423,1423,1423,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1423,1423,1423,1423,2,2,2,2,1423,2,2,2,2,2,1423,2,2,2,2,1423,1423,1423,1423,2,1423,1423,1423,1423,1423,1423,2,1423,2,2}, + {2999,358,250,1379,102,2349,1491,2074,42,376,2811,1220,296,296,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1844,1844,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1214,1214,1214,1214,1214,1214,2,1214,2,1214,1214,2,2,2,2,2,2,2,2,2,2,2,1214,2,2,2,2,2,2,1214,2,2,2,2,2,1214,2,1214,1214,1214,2,2,2,2,2,1214,1214,2,2,2,2,2,1214,2,2,2,2,2,2,2,2,1214,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2020,1662,656,1990,2334,1370,452,962,416,1709,1384,685,843,540,1193,1193,1193,1193,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1193,1193,1193,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2810,1274,499,742,1724,425,190,1561,1302,2603,2255,917,661,661,2,2,2,495,2,2,2,2,2,2,2,2,2,2575,2,2,2,2,2,2,2,2,2575,2575,2575,2575,2575,2575,2,2,2,2,2575,2575,2575,2575,2,2,2,2,2,2575,2575,2575,2575,2575,2575,2575,2,2575,2575,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2575,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2575,2,2,2,2,2,2,2,2,2,2575,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2150,589,876,1616,2655,432,902,1028,433,1375,574,1400,1400,1400,2,2,2,2,2,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,2,2,2,1529,643,643,643,643,643,643,643,643,643,643,643,643,643,643,643,643,643,1529,2,1529,1529,1529,1529,1529,1529,1529,2353,2,2,2,2,1529,1529,1329,1329,1329,1329,2,1529,1529,1529,1529,2,2,2,2,2,2,643,1529,58,58,2,58,58,58,643,643,2,643,643,1529,1529,1529,1529,1529,1529,1529,643,643,643,1529,2353,2353,1529,2353,2353,1529,2353,2353,2353,2353,1529,1529,1529,643,643,1529,1529,1529,1529,1529,1529,1529,1529,2,1529,1529,1529,2,2,2353,2353,1529,1529,1529,1529,1529,1529,1529,643,643,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,2353,2353,643,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,643,643,643,643,643,643,643,1529,643,643,643,643,643,643,643,643,2353,2353,2353,1529,1529,1329,643,643,643,643,643,643,1329,643,643,643,2,1329,1329,2353,2353,2353,2353,2353,643,643,643,643,643,643,1529,1529,1529,1529,2353,1529,643,1529,2353,2353,643,643,1529,1529,1529,1529,1529,643,643,643,1529,1529,1529}, + {1665,1856,201,824,796,249,1217,590,1375,1175,1599,824,824,3319,2,2,2,601,1961,1961,2,2,2,1961,2,2,2,2,2,2,1961,2,2,1961,2,2,2,2,2,2,2,2,2,2,2,2,1961,2,2,2,2,2,2,2,2,2,2,2,2,2,2,601,2,2,601,2,2,2,601,2,2,601,2,2,2,2,2,2,2,2,2,601,2,2,2,2,2,2,2,601,601,2,2,2,2,2,2,2,601,601,2,601,2,2,2,2,2,2,2,2,2,2,2,2,2,2,601,2,601,601,601,601,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1111,2,2,2,2,2,2,2,2,2,2,2,2,2,2,601,2,2,2,2,601,2,2,2,2,2,2,2,2,2,2,2,601,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2685,530,1962,387,1702,243,1766,189,762,448,1907,855,855,2022,2,2,2,2143,2143,2,2,2,199,199,2143,2143,2143,2143,2,2,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2,2143,2143,2143,2143,2143,2143,2143,199,199,2143,2,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2,2143,2143,2143,2143,2143,2143,2,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2,2,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2,2143,2143,2143,2143,2143,2143,2143,2143,2143,2,2143,2143,2143,2143,2143,2143,2143,2,2,2,2143,2143,2143,2143,2143,2143,2143,1782,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2143,2}, + {2684,2316,1226,578,1475,1871,1387,2840,775,1628,2327,1689,1930,1930,2,2,2,2,742,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1504,1504,1504,2,2,1504,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2704,2239,1260,140,2161,2781,1840,574,2353,343,3218,61,2108,2038,1873,2,1833,1408,2,2,2,2,2,2,2,2,2,2,2,2,2,2,671,671,671,671,671,660,660,2,2,671,2,671,671,660,660,2,2,2,671,671,671,671,671,671,671,671,671,671,671,671,2,2,2,671,671,2,2,2,671,2,398,660,660,2,2,2,2,2,671,671,660,1475,2,1475,1475,671,1475,2,2,671,671,660,660,1475,671,671,671,671,398,398,1475,1475,1475,398,398,671,671,1475,1475,2,671,671,671,671,671,671,671,660,2,398,2,2,1475,1475,2,660,660,660,671,671,2,2,2,671,671,671,671,671,671,671,671,671,671,671,671,671,2,2,2,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,398,671,671,671,671,671,671,671,671,671,671,2,398,671,671,671,398,398,398,398,398,398,398,398,398,671,671,671,671,671,1475,398,398,398,398,398,671,660,398,660,660,660,660,660,671,660,660,660,660,660,660,660,660,660,660,1873,660,660,660,660,660,1475,1475,660,660,660,660,660,1475,1475,671,660,660,671,671,671,660,660,660,660,660,660,660}, + {2692,1325,2489,1207,1705,1164,2582,2701,3300,703,214,501,1167,853,2,2,2,1642,2,2,2,2,1163,2,2,1163,1163,2,2,1163,1163,1163,2,1163,1163,1163,1163,1163,2,1163,1163,1163,1163,1163,1163,2,2,2,2,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,2,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,1163,2,1163,1163,1163,1163,1163,1163,1163,1163,2,2,2,2,2,2,2,2,2425,2425,2425,2425,2425,2425,2425,2,2,318,318,318,2,2425,2425,2,1163,1163,1163,318,2,2425,2425,2425,2425,2425,2425,2425,2,2425,2425,2425,2425,2,2425,2425,2425,1163,1163,1163,2425,2,2,2,2,2,2,2,2,2,1163,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1163,2,2,2,2,2,2,2,2,2,2425,1163,1163,318,2,1163,318,318,2,1163,1163,1163,2,1163,1163,1163,318,318,1163,318,318,2,1163,1163,1163,1163,318,318,318,318,318,318,318,2,1163,2425,2425,2,318,2,1163,1163,2,2,318,318,2,2,2,2,2425,2425,318,2,1163,1163,1163,318,318,1163,318,318,318,318}, + {3006,482,1886,648,2094,692,1169,810,39,667,1105,1454,724,724,1165,1165,1904,1762,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1614,1614,1614,1614,1614,1614,1614,1614,2,2,1614,1614,1614,1614,1614,1614,374,374,374,374,374,374,374,1165,1165,1165,1165,1165,1165,1165,1165,374,1614,374,1614,1165,1165,374,374,1614,2,374,1710,1710,1710,1710,2,2,2,1614,1614,2,1614,1614,1614,1614,1614,1614,1614,1614,1614,374,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1614,1614,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2173,876,802,2197,3338,176,1783,224,1763,1160,1264,1264,2864,554,2,552,552,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,710,2,710,710,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,710,710,710,710,2,2,710,2,2,2,2,2,2,2,2,2,2,2,2,2,710,710,710,710,710,2,2,710,710,710,2,2,710,710,710,2,2,2,2,710,710,710,2,710,710,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2023,2607,1499,456,670,882,1161,800,2412,398,96,1997,1342,338,121,121,81,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2708,1663,2279,824,836,1598,2101,1620,1202,1606,1368,1079,1167,1999,2848,2848,2848,1101,1101,1101,2,2,2,662,2,2,2,2272,2,2,2,2,2,2,2,2,2,2,2,2272,2,2,2,2,2,2,2,2,2,2272,2,2,2,2,2,2,2272,2272,2,2272,2272,2272,2,2,2272,2272,2272,2272,1101,2272,2272,2272,2272,2272,2272,2272,2272,2272,2272,2272,2272,2272,1101,2272,2272,2272,2272,2272,2272,2272,1101,1101,2272,2272,2272,2272,2272,2272,2272,2272,2272,1101,2272,2272,2272,2272,2272,2272,2272,2272,2272,2272,2272,2272,2272,2272,2272,2272,2272,2272,2,2272,2272,2,2,2,2272,2272,2272,2272,2,2,2272,2272,2,2,2,2,2,2,2272,2272,2272,2272,2272,2,2,2,2,2,2,2,2,2,150,2,150,150,150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2272,2272,2,2272,2272,2,2,2272,2272,2272,2272,2272,2272,2272,2272,2,2,2,1101,1101,1101,2,2,2,2,2,2,296,296,296,788,2,2,2,150,2,2,296,296,2,2,2,2,2,2,2,2272,2272,788,788,2272,2272,2272,2272,2272,2272,2272,2272,2272,2272,2272,2272,2272,2272,2272,2272,1101,1101,2272,2272,2272,2272,2272,2272,2272,2272,2272}, + {1987,1463,2328,1890,1443,2086,283,2895,522,1577,1514,1657,2605,891,2,1181,1181,2,2,2121,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2153,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2153,2,2153,2,2,2153,2,2,2,2,2,2,2153,2,2,2,2,2,2,2,32,128,1050,128,905,1050,1050,2417,2153,2153,2153,2153,2153,2153,2153,2153,2,2,2153,2153,2153,2,2153,2153,2153,2936,2153,2153,2153,2153,2153,2153,2153,2153,2153,2153,2153,1703,2153,2153,2153,2153,2121,2153,2153,2153,2153,2153,2153,2153,2153,2153,2153,2153,347,347,347,2153,2153,2153,2153,2153,2153,2153,2153,2153,2121,2121,2153,2153,2121,2121,2153,2153,2153,1703,1703,2121,2153,2153,2153,2153,2153,2153,2153,2121,2121,2153,2121,347,347,347,347,2153,2153,1009,1009,2153,1009,1009,2153,2153,2153,1009,1009,2153,2153,2153,2153,2153,1703,1703,1703,1703,1703,1703,347,1703,1703,1703,1703,2121,1703,2153}, + {2040,1634,930,2588,760,461,1059,78,1831,1413,1788,1788,1788,1788,663,2696,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,945,2,2,2,945,2,2,2,2,2,945,945,2,2,1159,2,945,2,2,2,2,2,2,2,2,945,945,945,2,2,2,945,945,945,945,945,945,945,945,945,945,945,2,945,2,2,2,2,945,2,2,2,945,945,945,2,2,2,2,2,2,2,2,2,2,945,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,945,945,945,945,2,945,945,945,945,945,2,2,2,2,2,2,2,2,2,2,2,2,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,2,2,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,2,945,945,945,945,945,2,2,945,945,945,945,2,2,945,945,945,945}, + {2173,1637,1139,905,1802,1378,296,439,1507,1017,1427,209,708,462,1508,1508,1508,2,2,2,2,2,2,2,2,2,2,2240,2240,1459,1459,1459,2240,2240,2,2,2,2240,2240,2240,2,2240,2240,2240,2240,2240,2240,2240,2240,2240,2240,2240,2240,1459,1459,1459,1459,1459,1459,1459,1459,1459,2,2,1459,2240,2,2,2,2240,2240,2240,2240,2240,2240,2240,2240,2,2,2,2,2,2,2240,2,2,2,2,2,2240,2240,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2240,2,2,2,2,2,2,2,2,2240,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2240,2240,2,2,2,2,2240,2240,2,2,2240,2240,2240,2240,2,2240,2240,2240,2240,2240,2240}, + {2206,1526,628,2877,802,2587,1253,1258,1044,2195,3246,40,2898,2898,1704,598,2,2145,2,2,2,2145,2,2,2,2,2,2,2,2,2,2,2,2,2,2145,2,2,2,2145,2,2,2,2,2,2,2,2,2,2,2,2,2145,2145,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2437,2,2,2,2,2,2,2,2,2,2,2,2,2437,2437,2,2,2,2,2437,2437,2437,2,2437,2,2145,2,2,2145,2145,2145,2145,2145,2145,2437,2437,2437,2,2,2,2,2437,2437,2437,2437,2437,2437,2267,2437,2437,2437,2437,2437,2437,2437,2437,2,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2,2,2,2,463,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,463,463,463,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2,2,2,2437,2437,2437,2437,2,2437,2437,2437,2437,2437,2437,2437,2,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2437,2,2,2,2,2,2,2,2}, + {2852,943,708,2224,1072,178,618,2577,1039,413,389,897,710,2541,131,2224,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2443,2443,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1099,2,2,2,2,2,2,2,2,2,2,2,2443,2443,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3133,2051,2507,1339,1775,149,1451,1638,1686,1716,555,1660,287,627,1929,1335,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1335,1335,1335,1335,1335,1335,1335,1929,1929,1929,2,2,2,2,2,2,1335,1335,1335,1335,1335,1335,1335,2,2,1335,1335,1335,1335,1335,1335,1335,1335,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1335,1929,1929,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1929,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1929,1929,1929,1929,1335,1929,1929,1929,1929,1929,1929,1929,1929,1929,2,1929,1929,1929,2,2,1929,1929,1929,1929,2,2,2,2,1929,1929,1335,1335,1335,1929,1929,1929,1335,1335,1335,1335,1335,1335,2,2,2,1929,1929,1929,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335,1335}, + {2182,618,1022,1433,1138,1580,2590,149,796,2090,743,294,294,1117,720,3003,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2765,757,915,2063,679,988,1224,776,3584,919,544,1248,129,2112,2112,1561,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2857,556,2345,1882,1856,558,1708,2532,619,755,2458,722,332,2752,1823,2248,2,2,2,2,2,2055,2055,2,2055,2,2,2,2,2,2,2,2,2,2,1707,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1707,2,2,2,1707,1707,2,2,2,2055,2055,2,2,2,1707,1707,1707,1707,2,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,2,2,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,2,2,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,1707,909}, + {2284,1034,1105,1724,446,1374,714,54,313,1383,665,2659,2659,904,904,1826,2,2,2,2,2,2499,825,2499,2,2,1210,1210,1210,1210,1210,1210,1210,1210,1210,437,437,437,437,437,1210,437,437,2,2,2,2,2,2,1210,437,1210,1210,1210,2,2,2,1160,1160,1160,2332,2332,2332,2332,2332,437,437,1160,1160,1160,1160,1160,1160,1160,2,2,2332,2,2,2,2,2,2,2,2,437,437,2,2,2,1210,1210,1210,1210,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,588,3226,3226,3226,3226,3226,3226,3226,3226,611,611,2659,1210,1210,1210,1210,2,2,1210,1210,1210,1210}, + {2773,672,462,2359,2988,1148,41,81,1615,1374,2005,2005,603,1648,660,180,2,2,2,660,540,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1521,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1521,2,2,2,2,2,2,2,2,2,1521,1521,1521,2,2,2,2,2,2,1521,1521,1521,1521,1521,2,1521,1521,1521,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1521,2,2,1521,2,2,2,2,1521,1521,1521,2,2,1521,2,2,2,2,2,2,2,2,2,2,1521,2,2,2,2,2,2,2,1521,1521,1521,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1521,1521,1521,1521,2,2,2,2,2,2,2,2,540,1521,2,540,540,540,540,540,1521,1521,1521,1521,1521,1521,1521,1521,2,1521,2,2,540,540,540,1521,1521,1521,2,540,2,2,2,1521,1521,1521,1521,2,540,2,540,2,2,2,540,2,2,2,2,2,2,540,540,540,540,540,540,540,540,540}, + {2231,1319,816,2030,1682,1751,1827,2319,1878,2483,2449,499,2122,203,1603,1065,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,127,127,127,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,127,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,127,127,127,127,127,127,127,127,127,127,2,2,2,127,127,127,127,2,2,2,2,2,2,2,2380,2,2,2,2380,2}, + {2234,1035,1239,696,2653,131,654,1615,3333,629,1687,1907,1907,1551,102,724,2,2,1641,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1665,1665,1665,2,2,2,1665,1665,2,1665,2,2,2,2,1665,1665,1665,1665,1665,2,2,2,1641,1665,1641,1641,1641,1641,1665,1665,1665,1665,1665,1665,2,2,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,1665,2,1665,2,2,2,2,2,2,2,1665,1665,1665,1665,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1665,1665,2,1665,1665,2,1665,2,2,2,2,2,2,2,2,2,2,2,2,2,1665,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2456,2456,2,2456,2456,2456,2456,2456,2456,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2083,1465,847,1450,502,447,2168,794,1761,1324,162,188,2853,2853,636,973,2,563,2,2,2,2,2,2,2,2089,2089,2089,2089,2089,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2089,2089,2,2089,2089,2,2089,3333,2,2,2,2,2089,2089,2089,2089,2,3333,3333,2089,2089,2089,2089,563,563,563,3333,3333,3333,2089,2089,2089,2089,2089,2089,2089,2089,2089,2089,2089,2089,2089,2089,2089,2089,2089,2089,2089,2089,2089,2089,2,2,3333,3333,3333,3333,2089,2089,2089,3333,2089,2089,2089,2089,2089,2089,2089,2089,2,2,2,2,2,2,3333,3333,563,2,2,2,2,2,3333,2,2,2,2,2,2,2,3333,3333,3333,3333,3333,3333,2,3333,3333,3333,3333,2,2089,2,2,2,2,2,2,2,2,2,2,2,2,3333,2,3333,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3333,3333,3333,3333,3333,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2089,2,2,2,2,2,2,2,2,2,2,2089,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2293,2688,1529,600,3219,80,167,3231,1004,3516,1792,1892,894,894,894,894,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,365,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,989,989,989,989,2,2,365,989,989,365,2,2,2,2,2,2,2,989,989,989,2,365,365,365,365,365,365,365,365,365,2,365,365,2,2,2,365,365,365,365,2,2,2,365,365,365,365,365,2,365,365,365,365,365,365,365,365,365,365,365,365,365,365,2,365,365,365,2,365,365,365,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,365,365,365,365,365,365,365,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2923,2303,203,508,472,648,3169,269,515,3147,2415,1700,1700,1700,1461,1461,1461,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1197,1197,1197,2,2,2,2,2,2,2,2,1197,2,1197,1197,1197,1197,2,2,2,2,2,1912,1912,2,2,2,2,2,2,2,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1912,1197,1197,1197,1197,2,1197,2,2,2,2,1197,1197,1912,1197,2,2,2,2,2,2,2,2,1197,1197,2,1197,2,2,2,2,2,2,2,2,2,2,2,1197,1197,2,2,2,1197,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1912,2,1912,1912,1912,2,1912,1912,1912,2,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,2,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,2,2,2,1912,1912,1912,1912,2,2,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912,1912}, + {2218,572,1615,1016,1397,39,1794,1089,1631,737,198,1122,728,832,832,1441,690,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1853,1853,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1853,1853,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2300,1116,1555,2794,1095,998,1999,894,963,753,324,2130,2675,2675,554,2045,2,2,2,2,2,2,2,2130,2130,2130,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2045,2045,2,2045,2045,2045,2,2,2,2045,2,2,2,2,2,2,2,2,2,2045,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2045,2,2,2,2,2,2045,2045,2045,2045,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2045,2,2,2045,2,2,2,2,2,2,2,2,2,2,2,2,2,2045,2,2,2,2,2,2045,2,2,2,2,2,2,2,2045,2,2,2,2,2,2,2045,2,2,2,2,2,2045,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2807,2008,2435,1197,1119,1799,631,281,2955,24,1729,527,1026,1026,1026,163,163,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,163,163,2,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,2,2,2,2,2,2,163,163,2,2,2,2,163,163,163,2,163,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,163,2,2,2,2,2,2,2,2,2,2,163,163,163,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,163,2,2,2,2,2,2,2,2,2,2,2,2,2,2,163,163,163,163,163,163,163,163}, + {2103,768,702,1548,1486,2228,2846,861,665,1497,1046,1046,2252,394,394,1901,1155,2,2,2,2,2,2,2,2,2,2,2,192,192,192,192,2,2,2,859,694,2,694,694,1025,2,2,2,2,859,859,859,859,859,2,859,859,859,2,2,2,2,2,2,2,2,2,2,2,859,859,859,2,2,859,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,859,859,859,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,859,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,859,859,859,859,859,859,2,2,2,2,859,2,2,2,2,2,2,2,2,2,2,859,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2909,706,323,605,540,2093,2474,255,2108,2456,2726,476,357,2039,357,2,641,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2923,640,661,2179,1207,182,872,171,738,269,1372,222,908,2069,2069,2,1550,516,2,2,2,2,2,2,2,2,2,2,1109,2,2,2,2,2,2,2,2,2,2,2,1109,1109,1109,1109,1109,1109,2,2,2,2,2,2,2,2,2,2137,2137,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2205,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1109,1109,516,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2137,2,2,2,2,1109,2,2,2,2,2,2,1109,1109,1109,1109,1109,2,2,2,2,2,2,2,2,2,2,2,2,2,1109,2,2,2,2,2,2,2,2,2,2,2,1109,2,2,1156,2}, + {2262,2121,2519,1460,1614,210,405,1605,592,365,1930,1496,220,3463,1700,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,686,2,2,2,2,2,2,686,2,2,2,686,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,686,2,686,2,686,686,686,686,686,686,2379,2379,2,2,686,686,2379,686,367,686,686,686,2379,2379,2379,2379,686,686,686,686,686,686,686,686,686,686,686,686,2379,2379,2379,2379,2379,2379,2,2379,2379,2,367,367,367,2,2379,2379,2,2379,2379,2379,2,2,2379,367,367,367,367,367,2,367,367,367,686,686,686,2379,367,367,367,367,2,367,686,2,2,2,686,367,367,2,2,686}, + {2957,1025,415,854,1866,364,176,275,1711,663,2645,2246,561,1232,1232,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1108,1108,2,2,2,2,2,2,2246,2246,2,2,2,2,2246,2246,2,2,2,2,2,2,2,2,2,2,2,2246,2246,2246,2246,2246,2,2,2246,2246,2,2,2,2,2,1108,1108,1108,1108,1108,1108,1108,1108,2,1108,2,1187,2,2,2,2,2,2,2,2246,2246,2246,2246,2246,2246,1108,2246,2246,2,2,2246,2246,2246,2246,2246,2246,2246,2246,2246,2246,2246,2,2,2,1108,2246,2246,2246,2246,2246,2246,2246,2246,2,2246,2246,2246,2246,2246,2246,2246,2246,2246,2246,2246,2246,2246,2,2246,2246,2246,2246,2246,2246,2,2,2,2,2,2246,2,2,2,2246,2,2,2246,2246,2246,2246,2246,2246,2,2246,2246,2246,2,2246,2246,2,2246,2,2,2246,2246,2246,2246,2246,2,2246,2246,2246,2,2246,2,2,2,2246,2246,2,2246,2,2,2246,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2246,2246,2,2246,2246,2246,2,2,2246,2246,1108,1108,2,2,2,2,2246,2,2,1187,2,2,2,2,1187,2,2,2,2,2,2,2}, + {2833,2005,387,733,562,468,317,224,94,478,1606,2522,1606,2001,1087,2,2,1087,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2247,2496,811,776,385,94,119,1880,1383,1250,2421,4,4,4,4,2,2,2406,1569,2,2,2,2,1569,2,2,2,2,1569,1569,1569,1569,1569,1569,1569,1569,1569,1569,1569,1569,356,356,1569,1569,2,1569,2,1569,1569,1569,1569,356,356,356,356,1569,1569,1569,1569,1569,1569,1569,2,1569,2,2,1569,2,1569,2,2,2,1569,1569,2,2,1569,1569,2,2,2,2,2,2,2,2,2,2,2,2,1569,1569,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1569,1569,2,2,2,2,2,2,2,1569,1569,1569,1569,1569,1569,1569,1569,1569,2,2,2,1569,356,2,356,356,356,1569,2,1569,2,1569,1569,1569,1569,1569,1569,1569,1569,1569,1569,1569,1569,1569,1569,1569,1569,1569,1569,2,2,2,2,1569,1569,1569,1569,1569,1569,1569,356,1569,2,356,356,2,2,2,2,356,356,356,356,1569,1569,2,2,2,356,356,356,1569,1569,1569,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356}, + {2920,2732,2654,1237,952,933,709,783,205,481,1763,966,966,3255,3255,2,2,1114,1114,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2281,2281,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3165,1977,628,168,1015,1174,954,1911,1211,2463,1624,563,233,1660,2424,677,677,677,677,677,677,2,2,2,2,677,677,646,646,646,646,646,646,646,646,646,2353,2,2353,2,2353,2,646,2353,677,677,2,2353,2353,2,2,2,2353,2353,2,2,2,2,2353,2,646,2,2,2353,2353,2353,2,2,2353,2353,2353,2,2353,2,2,2,2,2,2,2,2,2,2,2,2353,2,2353,2,2,2,2,2,2,677,677,2,2353,2353,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2353,2,2,2,2,2,2,2353,2353,2353,2353,2353,2353,2,2353,2353,2353,2353,2353,2353,677,677,2,2353,2,2,2,2,2,2,2,2,2,2353,2353,2353,2,2,2,2,2,2353,677,677,677,2,2353,677,677,2,2353,2353,2,2353,2353,2,2,2,2,2,2,2353,2353,2353,2353,2353,2353,2353,2,2,2,2,2353,2353,2353,2353,2,2,677,2,2353,2,2,2,2353,2353,677,677,2353,677,677,2,2353,2353,2353,2353,2353,2353,2353,2353,2353,2,2353,677,677,677,677,2353,2,2,2353,2353,2353,677,2,2353,2,677,2,2353,2,2}, + {2953,1059,205,3093,138,132,2148,1345,1499,216,151,1296,2446,1610,1632,2,2,2,2,4,4,2,2,2,987,987,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2286,1503,3217,2108,596,3099,729,2171,1337,938,99,869,245,245,33,2,2,2,2,2,2,398,398,398,2,2,2,2,2,2,2,2,398,398,2,2,2,2,2,2,2,2,398,2,2,2,2,2,2,2,398,398,2,398,398,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,398,2,2,2,2,2,2,1116,2,1116,1116,1116,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1116,1116,2,2,398,398,398,2,2,2,2,2,2,2,2,2,2,2,2,2,1116,2,1116,1116,398,398,398,398,398,398,398,398,398,398,398,2,2,398,2,2,2,1116,1116,1116,1116,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,398,2,1116,1116,2,2,2,2,2,2,1116,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1116,1116,615,2,615,398,398,615,615,615,398,398,1116,1116,398,398,615,2,2}, + {3199,1431,593,2050,2785,507,1540,1103,1740,459,62,1766,1781,1121,1600,2,1600,1600,125,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,208,2,2,2,2,2,2,2,890,2,2,2,2,2,682,682,2,682,682,2,682,682,682,682,682,682,682,2,2,2,2,682,2,2,2,2,2,2,2,890,890,890,890,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,890,682,682,682,682,890,2,2,682,890,890,890,2,2,2,2,2,2,2,2,2,2}, + {3244,1981,1089,1377,860,1568,2257,1890,1050,1179,1334,1049,957,888,393,2587,2587,2029,2029,2029,2,2,2,2,2,580,161,2,2,1150,2,1605,1331,2,2,2,2,2,2,2,2,1331,1331,1331,1331,1331,1331,1331,1331,2,2,1331,2,2,2,2,2,2,2,1331,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1331,2,2,2,2,2,2,2,2,2,2,2,2,2,1331,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1331,1331,2,2,1331,1331,2,1331,1331,1331,2,2,2,2029,2,2,1331,1331,1331,1331,1331,2,1331,1331,1331,2,1331,1331,2,2,1331,1331,1331,1331,2,1331,1331,1331,1331,2,1331,1331,1331,2,1331,2,2,2,2,2,1331,2,1331,1331,1331,2,2,2,1331,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1331,2,2,2,1331,1331,1331,2,1331,1331,2,2,2,2,2,1331,2,2,1331,2,2,2,2,2,2,2,2,1331,1331,2,2,2,2,2,2,1331,2,2,2,2,2,2,2,2,2,1331,2,2,2,2,2,2,1331,1331,2,1331,2,2,1331,1331,1331}, + {2258,1714,415,373,1919,2605,693,827,1918,496,1479,1903,86,1083,415,2,2,38,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,436,2780,436,436,2,2,2,2,2,436,436,2,2,2,2,2,2,2,2,2,2,436,436,436,436,436,436,436,436,1879,436,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,436,436,436,2,2,436,2,436,2,2,2,2,2,2,2780,2780,2780,2780,2780,2780,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1879,2,2,2,1879,1879,1879,436,436,436,1879,1879,1879,1879,1879,1879,1879,1879,1879,1879,1879,2,436,436,436,436,436,436,436,436,436,436,436,436,2,2,2,2,2,2,2,2,2,2,2,436,2,2,2,2,1879,1879,1879,1879,1879,2,2,2,436,2,2,436,436,436,436,436,436,436,436,436,436,436,436,2,2,436,2,2,2,2,2,436,436,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,436,2,436,436,436,436}, + {3216,628,748,1165,930,2158,369,79,2773,1095,1357,2586,2586,2205,2205,2205,2205,2586,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,334,334,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,334,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,334,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3289,2032,329,2169,2323,1599,517,1704,1847,804,632,40,40,40,40,40,40,40,40,2,2,1600,2,2,1600,2,2,2,2,2,2,2,2,2,2,2,2,2,2,963,1600,2,2,1600,1600,2,2,1600,1600,1600,1600,1600,1600,1600,1600,2,2,963,2,2,2,2,2,445,2,2,2004,2004,2004,2004,2004,2004,2004,2004,2004,2004,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,963,2,2,2004,2004,445,445,445,445,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,963,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2180,3153,1530,1799,1734,511,2146,400,802,1568,353,2565,2565,1282,1282,1282,1282,2,2,2,2,2,2,2,2,2,2,2,2,2,2052,2052,2,2,2,2,472,2,2,2,2,2,2,2,2,2,2,2,2,2,472,472,472,472,472,472,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1427,1427,1427,1427,1427,1427,2,2,2,2,1427,1427,2,1427,1427,1427,2,2,472,963,2,2,1427,1427,1427,2,472,472,472,472,472,2,1427,1427,1427,1427,2,1427,1427,1427,2,1427,472,1427,1427,1427,1427,1427,2,1427,1427,1427,472,1427,1427,472,472,2,1427,2,2,2,472,472,472,472,472,472,2,2,1427,2,472,472,2,2,2,1427,1427,1427,1427,1427,1427,1427,472,472,472,472,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1427,472,472,2,2,2,2,1427,1427,1427,1427,1427,1427,2,1427,2052,2052,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1427,1427,1427,2,2,2,2,1040,2,2,2,1427,1040,2,1040,1040,2,2,1040,1040,1427,2,2,2,2,2,2,2,2,472,2,1427,2,1427,2,2}, + {2165,2725,2293,368,705,3063,494,103,12,1332,175,2331,3144,2165,1709,1709,2090,2,2,2,2,1363,1363,2,566,2,2,2,2,2,2,2,1670,1670,2,1670,1670,1670,2,2,1670,1670,1670,1670,2,1670,1670,2,1670,1670,1670,2,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,2,1670,1670,1670,1670,1670,1670,566,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,566,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,566,566,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,2,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,566,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,566,566,566,1670,2,2,2,1109,1109,1109,1109,1109,445,445,445,445,445,445,445,445,445,445,445,566,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,1670,566,566,566,566,566,2,566,566,566,566,445,445,566,566,566,566,445,566,566,566,566,566,566,2,566,566,566,566,566,566,566}, + {2290,1042,276,872,642,603,1633,2704,978,2858,930,208,208,1091,1091,3443,245,2,2,2,245,245,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2882,2900,1219,1979,2296,361,1171,2061,1078,2232,2222,1109,1109,1788,2698,1380,2102,2,2102,2102,2,2102,2102,2102,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,623,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2102,2102,2102,2,2,2,2,2,2,2,2,2102,2,2,2,2,623,2,2,2,2102,623,623,623,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2102,2,2,2,2,623,623,2102,623,623,2,623,623,623,623,2,2,2,623,2,623,2,2,2102,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2102,2,2,2,2,2,2,2,2,2,2,2,2102,2102,2,2,2,2,2,2,2,623,623,2,623,623,2,623,623,2,623,623,623,623,623,2,623,623,623,2,2,623,623,623,2102,623,2,623,2102,2102,2102,623,2102,2,2,623,623,2,623,623,2,2,2,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,2102,1109,623,92,92,92,2102,2102,1109,1109,1109,1109,1109,623,2102,2102,2102,623,623,623,623,2,2,623,623,623}, + {2300,1070,2169,2540,734,1002,912,1386,2215,224,1285,880,2052,2052,1301,959,563,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,894,2,2,2,2,894,894,894,894,894,894,894,894,2,894,2,2,894,894,894,2,2,2,2,2,894,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1120,1120,2,1120,1120,2,2,2,2,2,2}, + {3292,1037,1080,993,1162,921,1618,2587,897,3059,2578,932,932,633,789,186,85,2553,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2553,2553,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2553,2553,2,2,2,2,2,2,2,2,2,2553,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2553,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2553,2,2,2,2553,2553,2,2553,2553,2553,2553,2553,2553,2553,2,2553,2553,2553,2553,2553,2,2553,2553,2553,2,2553,2553,2553,2553,2,2,2,2,2553,2553,2553,2553,2553,2553,2553,2553,2553,2553,2553,2553,2553,2553,2553,2,2,2553,2553,2553,2,2,2,2,2,2,2553,2,2,2,2,2,2,2553,2553,2,2553,2553,2,2553,2,2,2,2,2553}, + {3056,2180,3012,408,768,1019,1699,2418,88,236,1934,178,89,89,89,321,1180,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1812,1812,1812,2,2,1812,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1812,2,2,2,2,2,2,2,2,1812,1812,2,2,2,2,2,2,2,2,2,2,2,2,1812,1812,2,2,2,1812,1812,1812,2,1812,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1812,1812,2,1812,1812,1812,2,2,1812,2,2,2,2,2,2,2,1812,1812,1812,1812,2,2,2,1812,1812,1812,1812,2,1812,1812,2,2,2,2,1812,1812,1812,1812,1812,2,2,2,2,2,1812,1812,1812,1812,1812,1812,1812,1812,1812,1812,1812,1812,2,2,1812,1812,1812,1812,2,1812,1812,1812,1812,1812,1812,1812,1812,1812,1812,1812,1812,1812,1812,1812,1812,1812,1812,1812,1812,1812,1812,1812,2,2,2,2,2,2,2,2,2,2,1812,1812,1812,1812,1812,2,1812,1812,2,2,2,2,2,2,2,2,2,2,2,2,1812,2,2,2}, + {3267,1852,1037,648,611,1250,432,853,1467,179,715,2,2033,841,2607,2607,2607,2607,2,2,2,2,1874,1874,2,1874,899,2,2,2,2,2,2,899,2,2,2,1874,1874,1874,1874,2,2,2,1874,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1874,1874,1874,1874,2,2,2,2,2,2,2,2,2,2,2,1874,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1874,1874,1874,2,2,2,2,1874,1874,2,1874,2,2,2,2,2,2,1874,899,1874,1874,2,2,2,1874,2,2,1874,1874,1874,1874,2,2,1874,1874,1874,2,2,899,899,899,899,2,899,899,899,899,899,2,1874,1874,1874,1874,1874,1874,983,1874,1874,2,2,899,1874,1874,2,1874,1874,983,1874,1874,1874,983,2,2,2,983,983,1874,1874,983,983,983,983,1874,1874,1874,1874,1874,1874,1874,1874,1874,1874,1874,1874,983,983,983,983,983,983,983,983,983,983,983,983}, + {2901,2115,2771,1709,1398,1766,286,829,686,3018,89,2,667,1780,399,399,2,399,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1362,2,2,2,2,1362,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3068,1521,514,1664,1844,3890,1170,1091,2739,15,535,2,3345,1651,1651,1595,2,2,2384,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,89,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,89,89,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,89,89,89,89,89,89,89,89,89,2,2,2,2,2,2,2,2,2,2,2020,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2020,2,2,2,2020,2020,89,89,89,2020,2020,2020,2020,2,2,2,2,2,2,2,2,89,2,2,2}, + {2304,1840,264,171,928,320,231,200,248,1051,817,2,1789,837,837,912,2,2,507,507,2,1875,2760,2,2,1875,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1875,1875,1875,1875,1875,1875,1875,1875,1875,1875,1875,2,1875,1875,1875,1875,1875,2,1875,1875,1875,1875,1875,1875,1875,1603,1603,1603,1875,1875,1875,2,2,507,507,1875,1875,1875,1875,1603,1603,1603,1603,1603,1603,2,1603,1603,1603,1603,1603,1603,1603,1603,1603,1603,1603,1603,1603,1603,1603,1603,1603,1603,1603,1603,2,1603,1603,2,1603,2,2,1603,1603,2,2,1603,1603,1603,1603,1603,1603,1603,1603,1603,1603,1603,1603,2,1603,1603,2,2,2,2,2,2,2,2,2,2,2,1603,1603,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1875,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1603,2,2,2,2,2,2,2,2,2,2,1875,2}, + {3038,2399,1450,1276,1222,727,552,646,1055,2351,686,63,252,504,3166,1802,2,2,1165,1165,1165,2,2,2,2,1165,1165,1165,2,2,1165,2,2,2,2,2,2,2,2,2,2,2,2,2,1165,1165,1165,1165,1165,1165,1165,2,1165,1165,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1165,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1165,2,2,1165,1165,2,1165,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1165,1165,2,2,2,2,2,2,2,2,1165,2,2,2,2,2,2,1165,1165,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1165,2}, + {2351,895,559,487,668,1149,3552,761,479,935,1756,2,2530,2530,2092,75,2,2,738,738,738,2,2,2,738,738,738,738,2,738,738,2,2,2,738,738,738,738,2,2,1943,738,2,2,738,2,2,2,2,738,2,2,2,2,2,2,1943,1943,738,1943,1943,1943,1943,1943,1943,1943,738,1943,1943,1943,1943,2,2,1943,2,2,2,2,1943,1943,1943,1943,1943,1943,1943,1943,1943,1943,1943,2,2,2,2,2,1943,1943,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2684,2684,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3038,2519,1494,107,2597,802,535,1669,1695,1928,1940,1580,1580,85,2274,1551,2,2,2431,560,560,560,2,2,1098,2,2,2,2,2,2,2,2,2,2,522,522,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1098,1098,1098,2,2,1098,1098,1098,2,2,2,2,738,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3040,1044,1927,1952,1479,3124,1373,1990,588,2550,1277,2,629,2671,1842,2712,840,1702,2,1669,2,1347,2,2,2,2,1669,1669,1669,1669,2,1669,1669,1669,1347,1669,1669,2,1669,1669,1669,1669,1669,1669,1669,1669,1347,1347,1347,1347,1347,1347,1347,1347,1347,1347,1702,1702,1347,1347,1347,1702,1702,1347,1347,1347,1347,1702,1347,1347,2,2,2,2,2363,2,2,1347,1347,1347,1347,1347,1347,1347,1347,1347,1347,2363,2363,2363,1347,2363,2363,2363,2363,2,175,2,2,2,1572,1572,1572,2,1347,1347,1347,2,2,2,1347,1347,1347,1347,2,2,2,1347,1347,1347,1347,1347,2,2,1347,1347,1347,1669,1669,1347,1347,1347,1347,1347,1347,1347,1347,1347,1347,1347,1347,1347,1347,1347,1347,2,1347,2,1347,1347,1347,1347,1347,1347,1347,2,2,2,2,2,2,2,1347,2,2,2,2,2,2,1347,426,426,175,175,175,175,175,2,2,2,1347,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1347,1347,2,1347,2,2,2,1347,1347,1347,1347,1347,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2430,2849,3235,1857,2527,2042,720,817,250,1416,3197,2,2026,2026,2026,2628,2628,2628,2,2,2,1910,2,2,2,2,2581,2581,2,2,2,2581,2581,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1910,1910,2,2,1910,1910,1910,1910,1910,2,1910,1910,1910,1910,1910,2,1910,1910,1910,2,2,2,1910,1910,2,1910,1910,2,155,155,155,155,155,155,2,2,2,2,2,2,2,2,2,2,2,155,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1910,155,2,2,1910,1910,1910,1910,1910,2,2,2,2581,2581,2581,2581,2581,2,2,2,2,2,2,1910,2,1910,1910,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1910,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3312,1276,1851,912,3548,665,1170,3248,72,748,598,2,2753,2753,1922,2031,185,185,2,2,824,2,2,2,2,2,1964,1964,1964,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2061,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2061,2061,2,2,2,2,2,1964,2,2,2,2,2,2,2,2,1964,1964,1964,2,1964,1964,2061}, + {3044,1494,980,316,702,1657,225,3021,1936,838,436,1014,1014,907,907,907,907,478,478,2,2,2,2,2,2,478,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,478,478,778,778,778,778,778,2,2,2,2,2,2,2,778,778,778,778,2,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,478,778,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,478,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,778,2,2,778,2,2,2,2,2,2,778,778,778,778,2,2,778,778,2,2,2,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,2,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,2,778,778,778,778,2,778,778,778,778,778,778,778,778,778,778,778,778}, + {3056,1567,691,1243,653,751,248,842,1954,480,458,2,2,2451,934,3172,3556,2259,2312,2,2562,2562,2,2,2562,2562,2562,2562,2562,2,2,2,2,2,2,2562,2562,2562,2,2,2,2,2,2,2,2,2,2562,2562,2562,2562,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2562,2562,2,2,2,2,2,2,2562,2562,2562,2562,2,2,2,2,2,2,2,2,2,2,2562,2562,2,2,2562,2562,2,2,2,2,2,2,2,2,2,2,2562,2562,2,2,2,2,2562,2,2,2,2,2,2,2,2,2,2,2,2,2562,2,2,2,2,2562,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2245,639,1016,262,2452,78,144,833,204,725,2849,2,2,2014,2578,2959,369,2,371,371,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,796,796,796,796,2,2,796,2,2,2,2,2,2,2,2,2,796,2,2,2,2,2,2,2,2,2,2,2,796,796,796,2,2,2,2,2,2,2,2,2,2,2,796,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2959,2553,1333,877,2492,3169,2498,686,2030,2820,3233,1313,1313,1471,1471,1471,1471,2,2,1471,1471,2,2,1481,2,1887,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1471,1471,2,2,2,1471,2,1471,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1788,1788,1788,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1471,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2963,1521,3059,344,62,1511,805,73,1550,2603,1312,2,2,910,1651,1411,2484,2,2,2,2147,2554,2,2554,2,2,2,2,2,2,2,2,2,2,2,2,2,564,564,564,2,564,564,564,564,564,2,564,564,564,2,1584,1584,564,564,564,2,2,2,2,2,2,564,1584,1584,1584,564,564,564,564,564,564,2,564,564,1584,564,1584,1584,1584,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,1584,1584,1584,1584,1584,1584,2,2,1584,1584,1584,1584,1584,1584,1584,1584,1584,1584,1584,1584,799,799,799,799,799,2,2,799,799,799,799,1584,1584,1584,1584,1584,1584,1584,1584,1584,1584,1584,1584,1584,1584,1584,1584,564,564,564,564,564,564,1584,564,564,564,1584,564,564,564,564,564,564,564,564,564,564,564,564,564,564,799,799,799,2,2,564,564,564,564,1605,1605,1605,1605,1605,1605,1605,799,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,564,2,1605,1605,1605,1605,2,2,2,2,564,564,2,564,564,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,564,564,2,2,2,564,2,2,2}, + {2967,607,789,2376,2598,1067,327,363,854,1123,112,2,2,1895,2706,1313,2185,676,676,676,2,2,799,799,799,2,2,1765,799,799,799,2,2,2,2,2,2,2,2,2,2,2,799,799,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3396,1321,2380,1528,570,1064,1443,2214,3219,1167,1943,1715,1715,1715,1715,1715,1096,1096,1096,1147,1096,2,2,1096,1096,1096,1096,1096,2,2,2,2,2,2,2,2,2,2551,2551,1096,2551,2551,2551,1096,1096,2551,2551,2551,2551,1096,2,1096,1096,2551,2,2551,2551,1096,2551,2551,2551,1096,2551,2551,1096,1096,1096,2,2,2,2,1096,1096,1096,1096,1096,1096,1096,1096,2551,2551,2551,2,2,2551,2551,2551,2551,2551,2551,2551,2551,2551,1096,1096,1096,1096,1096,2551,2551,2551,2551,1096,1096,1096,2,2551,2551,2551,2,2551,2,35,2551,2,2,2,2,2,2551,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2551,1096,1096,1096,1096,2,1096,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2551,2551,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2977,924,2286,507,1083,660,3500,152,2838,986,2507,2875,2875,2875,1269,2351,1310,1310,655,2,655,2,2,2,2,2,1263,1263,1263,1263,1263,2,2,2,2,2,2,2,2,128,128,128,512,512,8,512,512,2,2,2,1007,1007,512,128,128,128,128,128,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,2875,1612,1612,1612,1612,1612,1612,1612,1612,1612,2,2,1007,1007,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,2875,2875,2875,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,2744,2744,1612,1612,1191,1542,1534,241,241,241,403,2774,2145,2145,403,403,403,403,403,2145,403,2875,2145,2145,2145,2197,403,2197,2197,2197,2197,2197,1612,1612,1612,1612,1612,1612,1612,1612,785,785,785,785,785,785,785,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,785,785,785,785,785,785,785,785,585,585,585,585,585,585,1612,1612,1612,1612,1612,1612,1612,1612,1612,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,1612,785,585,585,585}, + {3362,2797,1263,2886,845,2348,2064,2913,44,1990,2013,2,2,2,991,1024,1024,3074,1988,1988,1988,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2379,3034,166,302,2108,1078,2976,68,158,134,1567,2,2,1514,1514,1514,1883,1883,2,2,1883,1883,1883,1883,1883,1883,1883,1883,1883,2,2,2,2,2,2,2,2,2265,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2265,2,2,2,2,1883,2,1883,1883,2,2,2,2,2265,1883,2,2265,2265,2265,2265,2,2,2,1883,2,2,2,1883,1883,1883,1883,1883,1883,1883,1883,1883,2265,2265,2265,2265,2,1883,1883,1883,1883,1883,2,2,2,1883,1883,2265,2265,2265,2265,2265,2,2,2265,1883,1883,1883,2,2,2,2,1883,1883,1883,1883,1883,1883,1883,2265,1883,1883,1883,1883,1883,1883,1883,1883,1883,1883,2265,2265,2265,2265,2265,2265,2265,2265,1883,1883,1883,1883,1883,2265,1883,2265,2265,2265,2265,2265,1883,2265,2265,1883,1883,1883,1883,1883,1883,1646,1883,1883,2265,2265,2265,2265,2265,2265,2265,2265,2265,2265,2265,2265,2265,2265,2265,2,2265,2265,2265,1646,2,1646,1646,2265,1883,2265,2265,2265,2265,2265,2,2,2265,2265,2265,1883,1883,1883,1883,1883,2,1883,1883,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2471,2471,2,1646,1646,2471,2,2,1883,2,2,2,1646,1646,1646,1646,2265,1646,1646,2265,1646,2265}, + {2286,1268,1670,879,2377,993,363,1212,212,1282,3002,2,2,2,2,483,1872,483,2154,2154,2774,2154,2154,2154,2154,2154,2,2,2,2,2,1492,1492,1492,2774,2,2,1492,1492,1492,1492,2,2,1492,1492,1492,1492,2154,2,2,2774,1492,2154,2154,2154,2154,2154,2154,2154,2154,2154,2,2154,2,2,2,2,2,2,1492,2,2,2154,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2774,2,2,2,2,2154,2154,1492,2154,2,2,2154,2154,2154,2154,2,2,2,1492,2,2,2,2,2,2,2,2,1492,1492,1492,2,2154,1492,1492,2154,2154,2154,2154,2154,2154,2,2154,2,2154,2154,2,2154,2154,2,2154,2154,2154,2154,2154,2154,2154,2,2,2,2,2,2,2,2,2154,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2154,2154,2154,2154,2154,2154,2154,2154,2154,2154,2154,2,2,2154,2154,2,2154,2154,2,2,2,2,2,2,2,2,2,2154,2154,2154,2154,2,2,2,2,2,2,2,1492,1492,1492,1492,2,2,1492,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2386,1270,1204,1032,1474,224,496,2296,1536,1219,311,2,2,2,2,1238,2108,2108,2108,2108,2108,2108,2108,2108,1444,1444,1444,1444,1444,1444,1444,2,1444,1444,1444,1444,1444,2,2,2,2,2,2,1444,2,2,2,2,2,2,1444,38,38,38,38,485,485,485,485,485,485,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1444,2,2,2,2,2,2,1444,1444,1444,1444,1444,1444,1444,1444,1444,1444,1444,1444,1444,2,1444,1444,1444,2,2,1444,1444,1444,1444,2,1444,1444,2,2,2,2,1444,1444,1444,1444,2,2,2,1444,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1444,1444,1444,1444,1444,1444,2,2,2,2,2,1444,1444,1444,1444,1444,1444,1444,1444,1204,2,2,2,2,2,2,2,2,1444,1444,2,2,2,2,2,2,2,1452,2,2,2108,1444,1444,2,2,473,473,166,473,473,473,492,2080,492,1204,1204,2,1204,166,1204,1204,1204,38,1204,1444,1444,1444,1444,1444,1444,300,300,38,38,38,300,300,300,38,38,38,1204,1204,300,300,300,300,38,485,485,485,485,2108,2108,1204,1204,485}, + {2393,1288,306,720,1909,212,3187,1652,486,1612,1747,1659,1659,1659,1659,1659,1627,1627,152,289,170,2,289,560,560,560,560,560,560,560,2,560,3550,2,3550,2,3550,3550,289,289,289,289,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,152,152,2,2,152,2,2,2,2,2,2,2,2,2,2,2,2,2,289,2,2,2,2,2,2,2,152,152,152,2,152,152,2,2,1659,152,152,152,152,2,2,152}, + {3003,2560,1826,781,864,2791,1573,2539,2738,2560,2795,2,2,2,2,2,669,669,1660,1624,2943,2943,1794,1794,1794,1794,1794,1794,1794,1794,1794,1794,1794,1794,1794,1794,1794,1794,1794,2,2,2,2,2,2,2,2,2,2,2,3654,2,2,2,3654,3654,3654,2,2,3654,3654,3654,3654,3654,2,2,2,2,2,2,2,1794,1794,1794,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1794,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2431,739,2488,1386,1632,2107,2602,2139,1751,349,3147,2,2,64,16,8,32,4,4,32,728,728,728,728,2,2,64,16,8,180,180,180,180,180,180,364,45,45,45,728,1533,364,364,364,364,728,728,364,364,364,364,1440,1440,1456,1456,557,476,476,476,826,238,238,119,119,119,238,119,119,119,119,952,1009,119,119,721,721,45,45,1440,1533,728,728,364,214,714,2455,3141,214,107,107,107,3751,3751,1629,2137,2137,1343,1343,1343,1343,1343,1343,1343,1343,1343,2137,357,2137,2613,2613,2613,2613,2613,3453,61,61,61,3453,1285,1285,1285,1285,1285,383,383,3453,3453,3453,119,119,238,119,119,119,119,1009,1009,119,119,3357,721,3357,3357,2423,2423,2423,1952,1952,1532,605,605,605,605,605,605,605,486,486,486,486,486,486,486,486,1146,1146,1146,1146,214,214,214,214,214,214,214,214,2455,3141,214,107,107,107,689,3751,1629,3888,3888,1343,1343,246,332,1875,83,83,83,1718,1718,1718,2203,2203,2203,2203,333,1418,1418,1418,2638,2638,2638,1447,664,2638,664,664,664,2519,1718,166,166,166,166,621,621,937,166,166,2613,2613,166,166,166,166,61,61,3453,1285,1285,1285,1285,1285,383,383,3453,3453,3453,3453,3797,3797,3797,3797,1811,1811,1811,2608,1549,1549}, + {2287,740,1265,1600,629,2606,1636,3234,1013,285,938,2,2,2,2,2,1799,2747,2747,2563,2398,2398,1353,1353,1353,1353,1353,1353,1353,2398,2398,2398,2,1353,1353,2185,2185,871,871,871,871,871,2398,2398,1353,1353,1353,2398,1353,657,2398,2398,2398,2398,2398,2185,2185,2185,2185,2185,2398,2,2,2,2398,1353,2398,2398,2398,2398,2398,2398,2398,2,2,2,2,2,2,2,2,2,2185,2398,2,2,2398,2398,2398,2398,2,2398,2398,2398,2398,2398,2398,2398,2398,2398,2398,2398,1353,2,2,2398,2398,1353,2,2,2,2,2,1353,1353,1353,1353,1353,1353,2398,2398,2,2398,2398,1353,1353,1353,1353,2,2398,2398,1284,2185,1353,1353,2398,1353,1353,2398,1353,2398,1353,2,1353,2,2,1353,682,1353,1353,682,682,682,682,1353,1353,1353,682,2185,2185,1353,1353,1353,1353,2,2,871,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,2398,2398,1353,1353,1353,2398,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,2,1284,1284,1284,1353,2,2,2,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,1353,657,657,657,657,657,657,657,1353}, + {3139,519,716,3260,1763,1454,3070,2470,1889,979,645,2745,2745,2745,1798,1798,1798,1798,2718,1609,1579,1420,1420,2094,1420,1420,2094,2094,2094,2,2,2,2,2,2,2,2,975,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2094,2094,2,2,2094,2094,2094,2094,2094,2094,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2094,2094,2,2,2,2,2,2,2094,2094,2094,2094,2094,2094,2,2,2,2,2094,2,2,2,2,2,2,2,2,2,2,2,2,2,2094,2094,2094,2,2,2,2,2,2,2,2,2,2,2,2,2,2094,2,2,2,2,2,2,2,2,2,2094,2094,2094,2094,2094,2094,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2094,2094,2,2,2,2,2,2,2,2,2,2,2}, + {2428,2233,1420,270,3560,221,1568,213,1946,1404,430,2,2,2,2,3252,631,1642,1345,1270,567,2,2,814,814,814,814,814,2,2,2,2,814,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1159,2,2,2,2,814,2,2,814,814,2,2,2,2,814,814,814,814,2,814,814,2,814,814,814,814,814,2,2,2,814,814,814,814,814,814,814,814,814,814,814,2,814,814,814,814,814,814,814,814,814,814,2,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,2600,2600,2600,2,2600,814,814,814,814,814,814,2600,2600,2600,814,814,814,814,814,814,814,814,814,814,814,2,814,814,814,814,814,814,2,814,2,2,2,2,814,2,2,2,2,2,2,2,2,2600,2,2600,2600,2600,1159,2,814,1159,1159,1159,1159,2,1159,1159,2,2,1159,1159,1159,2,1159,1159,2,2,2,2600,2600,2600,2600,2600,2600,2600,2600,2,2,2,2,2,2,2,2,2,2600,2600,2600,2,2,2600,814,814,2600,1159,1159,1159,1159,1159,1159,2,2,2,2,2,2,2,2,2,2,2,2,814,814,814}, + {3452,1687,2969,2249,278,1777,2246,3491,934,1490,969,2,2,2,3251,935,1686,1686,1686,712,712,558,2,2,712,712,712,712,2,2,712,712,2,712,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,712,2,2,578,578,712,2,2,712,712,2,712,712,712,712,2,2,2,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,2,712,712,712,712,712,2,2,2,712,712,712,712,712,712,712,712,2,712,712,712,712,712,712,712,712,712,712,712,712,712,2,712,712,712,712,712,712,712,712,2,2,2,712,2,712,712,2,2,2,2,2,712,712,2,2,2,712,2,2,712,712,712,712,712,712,712,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,712,2,2,2,712,712,712,2,2,2,2,2,2,2,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,2,712,712,712,712,2,2,2,712,712,712,712,712,2,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712}, + {3157,1230,685,1513,663,1335,2100,1441,1826,1670,1539,2,2,2,2899,2899,1378,54,2,46,46,2,2,1362,1362,2,2,2,2,2,2,2,2,2,2,1362,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1362,1362,2,1362,2,1362,1362,2,1362,1362,1362,1362,2,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,2,1362,1362,1362,2,2,2,1362,1362,2,2,1362,1362,1362,2,1362,1362,2,2,2,2,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362}, + {2407,1424,989,848,1496,710,713,2778,947,2172,295,2,2,2,417,321,1507,1507,1507,3180,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2311,2385,967,2125,611,428,983,418,97,11,1971,2,2,2,136,2524,1341,1341,1341,2,2,1341,1341,2,1341,1341,1341,2349,1341,2,1341,1341,1341,1341,2,2,2,1897,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1341,1341,1341,2,2,2,2,2,2,2,1341,1341,1341,1341,1341,1341,1341,1341,1341,1341,2,1341,1341,1341,1341,1341,1341,1341,1341,2,2,1341,1341,1341,2,2,2,2349,1341,1341,1341,2,1341,1341,1341,2,2,2,2,2,2349,2,2,2,2,2,2,2,1341,2,2,2,2349,2349,2349,2,2,2,2349,2349,2,2,2,2,186,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,186,186,2,2,2,2,2,2,2,2,2,2,2,2,186,2,2,186,186,186,186,2,2,2,186,186,2,2,186,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1341,2,2,2,2,2,2,186,2,2,2,186,2,2,2,1341,1341,1341,1341,1341,1341,2,2,1341,1341,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2432,782,2478,2428,250,1111,1586,45,526,618,1242,2,2,2018,266,1342,265,265,265,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1745,1745,2,1745,2,2,1745,1745,1745,1745,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1745,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2457,2111,1929,2300,1182,612,2969,270,2062,2297,131,2,2,1968,1497,1157,1157,2,2,2234,2234,2234,2234,2234,2234,2234,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3243,1411,909,170,533,1548,181,403,1224,90,1243,3330,3330,1657,1657,1657,1657,2,2,595,1657,1657,1657,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2455,2,2,2455,2455,2455,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,8,2,2,2,317,1443,32,32,32,3031,3031,32,32,1305,32,875,875,875,875,875,875,875,875,875,2,875,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2463,2664,2825,1208,882,629,428,428,356,343,1730,2,769,769,769,1714,769,2,2,955,769,2,2,955,955,955,2,2,2,955,955,955,2,955,955,2,955,955,955,2,955,955,2,2,2,2,2,955,769,2,2,2,2,769,769,955,955,955,955,2,769,955,955,2,2,2,955,955,2,2,2,769,2,2,955,955,955,2,955,955,955,955,955,955,955,955,955,955,769,955,955,2,955,955,955,955,955,955,955,2,955,955,955,955,2,2,955,955,955,2,2,2,2,955,955,955,955,955,955,955,955,955,955,955,955,2,2,955,955,955,955,955,955,955,955,955,955,955,955,955,955,2,955,955,955,955,955,955,955,955,955,2,2,2,2,2,955,955,955,769,769,769,955,955,955,955,2,2,955,955,2,2,2,2,2,2,2,2,2,2,2,2,2,769,955,955,2,2,2,2,955,2,2,2,2,2,955,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,955,2,2,2,2,2,2,2,955,955,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,955,2,2,2,2,2,2,2,955,2,2,2,2,2,2}, + {3090,2601,190,314,1502,216,1865,1524,130,961,2128,1036,1036,1036,2298,99,2687,2485,2485,2,2,2601,1377,2,2,2,997,2,1377,1377,1377,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,997,997,997,997,2,997,997,997,997,997,997,997,2,2,2485,2485,2485,2485,2,2485,2,2,2,2,2,2485,997,2485,997,2601,2601,997,997,997,997,2485,2485,997,2,2485,2485,2485,2485,2485,2,2485,2485,2485,2485,2485,2485,2485,2601,997,997,997,1377,997,997,2,997,997,997,997,2,2,997,997,997,2,2,2,997,997,997,997,2,2,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,2,2,336,1520,1436,2809,132,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997,997}, + {2312,980,758,1732,694,158,629,1926,427,477,1576,2,2,3470,3470,3470,3470,3470,1706,2,2141,2,2,2,2,2,2,2,2,2,2,2,2,2,2141,2141,2141,2,2141,2,2,2,2,2,2,2,2,2,2,2,2,2,112,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2141,2,2141,2,2,2,2141,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,112,2,112,2,2,112,112,112,112,112,112,112,2,2,2,112,112,112,2,112,112,2,2,2,2,2,2,2,2141,2141,112,112,112,112,112,112,112,112,112,112,2,2,2,2,2141,2141,2141,2141,2,112,112,112,112,2,112,112,112,2,112,112,112,112,112,112,112,2,112,112,112,112,112,112,112,112,112,112,2,112,112,112,2,112,112,2,112,2,2,112,112,112,112,112,112,112,2,2,112,112,112,112,112,2,112,112,2,2,2,112,112,112}, + {3094,481,2710,1587,300,857,1509,1670,1227,1935,2620,2,1229,2070,2070,331,2557,2557,2,329,2,2,2,2267,2,2557,2557,2,2267,769,769,2,2,2557,2557,2,2,2,2,2,2,2,2,2,2,2,2,2557,2,2267,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2557,2,2,2557,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1165,1165,1165,1165,1165,1165,1165,1165,1165,2,2,2,2267,2,2,2,2,2,2267,2267,2,2,2,2,2,2,2,2,2,2,2267,2,2,2,2,2,2267,2267,2267,2267,2267,2,2267,2,2267,2267,2267,2,2,2,2,2267,2,2,2,2,2,2,2,2,2,2267,2267,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2267,2,2,2,2,2267,1140,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2453,3173,1281,806,2177,969,722,2107,2294,1458,923,2,2946,481,796,796,796,3043,2,2,2,2,2,2,267,2,2,2,2,2,2,2,2,2,2,2,2,2,2,267,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,267,267,267,267,2,2,267,2,267,2,2,267,267,267,2,267,2,267,267,2,267,267,2,267,2,2,2,2,2,2,267,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,267,267,267,2,2,2,2,2,2,2,2,2,2,2,267,267,267,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2548,872,623,700,804,472,1602,2985,631,2642,1320,2,2,1825,1825,1825,1825,3099,2,2,2,2,418,418,418,2,880,2,2,2,2,418,3370,3370,3370,3370,2,3370,418,418,2,2,2,2,2,2,2,3370,2,2,3370,2,2,2,2,2,2,2,2,2,2,418,102,2,418,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,102,3370,3370,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3094,1638,1514,843,1503,1884,1481,727,723,1319,226,2,676,2401,1699,562,639,639,1176,2,2,2,2,824,2,2,2,2,2,2,2,2,2,584,2,2,2,824,2,240,2,2,2,2,2,2,2,2,639,639,639,639,639,2,2,2,639,639,639,2,2,824,824,639,639,2,639,639,2,639,2,2,2,2,639,639,918,639,639,639,639,639,639,639,2,2,2,944,639,2,2,628,2,944,2,639,944,639,944,2,2,639,639,639,639,2,2,2,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,2,2,639,639,639,639,639,639,2,824,639,639,2,639,639,639,639,639,639,639,2,2,2,639,2,639,639,639,639,639,639,2,2,2,2,2,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,628,628,628,628,628,628,628,628,639,639,639,639,639,2,2,639,639,639,639,639,639,639,639,639,639,639,824,824,944,639,2,2,639,639,639,2,2,639,639,2,639,639,639,639,2,944,944,639,639,639,639,639,639,639,944,944,639,639,639,639,639,639,639,639}, + {3561,2048,3154,2336,581,1221,1351,1419,3362,785,1008,861,1722,1722,2191,2189,2,2189,569,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,569,569,569,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,569,569,569,569,2,569,569,569,569,2,2,2,2,569,569,2,2,569,2,569,2,569,2,2,2,569,569,2,569,569,569,2,2,2,569,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,569,569,569,569,569,569,569,2,2,2,1463,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3461,1029,2298,1057,2177,1518,728,728,452,1270,235,2,1794,765,765,1543,2,2,610,610,2,2,2,610,610,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,464,2,2,2,2,2,2,2,2,2,2,2,2,2,464,464,464,464,2,2,464,464,2,464,464,2,2,2,2,2,2,464,464,464,464,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,464,2,2,2,2,2,2,2,2,2,2,2,2,464,464,2,2,2,2,2,2,464,464,464,2,2,2,2,2,2,2,2,2,2,464,464,2,464,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1589,2,464,464,464,464,464,2,2,2,2,2,2,2,464,464,464,464,2,2,2,2,2,2,2,2,2,2,2,2,2,464,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,883,2,2,2,464,464,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3125,2004,547,2986,2919,471,948,1747,201,1862,802,2,1238,1277,1277,1277,2,2,1245,1245,1245,2,2,2743,1245,1245,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2743,2743,2743,2,1245,1245,1245,2,1245,1245,2,2,2,2,2,2,2,1245,2,2,2,2,2,2,2,2,2743,2,1245,1245,2,1245,1245,1245,1245,2,2,2,2,2,2,2,2,2,2743,1245,2743,2743,2743,2743,2,2,2743,2743,2743,2743,2743,2743,2,2743,2,2743,2743,2743,2743,2743,2743,2743,2743,2743,2,2743,2,2,2,2,2,2,2,2,2743,2743,1245,2,2743,2743,2743,2,2743,2743,2743,2743,2,2743,2743,2743,2743,2743,2743,2743,2743,2743,2743,2743,2,1245,2,2,2,2743,2743,2743,2743,2743,2743,2743,2,2,2,1245,1245,1245,2,2,2,2,2,2743,2743,2743,2743,2743,2743,2743,2743,2743,2,2,2,2,2,2,2,2,2,2,2743,2,2743,2743,2,2,2,2,2,2,2743,2743,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1245,1245,2,2,2,2,2,2,1245,2,2743,2,2743,2743,2743,2743,2743,2743,2743,2743,2743,2743,2,2,2,2,2}, + {3244,1348,2256,1262,586,1956,147,4014,1382,462,237,2,548,548,548,548,2,2,2,739,2,2,2,739,739,739,739,739,739,739,739,739,739,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,739,739,739,739,739,2,2,2,2,2,739,739,739,2,739,739,739,739,739,2,2,2,2,739,739,739,2,2,2,739,739,739,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2582,2469,533,1726,1575,1505,2448,2031,1257,427,588,1633,202,3553,1938,672,195,195,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,672,672,672,2,672,672,2,2,2,2,2,2,2,672,672,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3526,1264,2113,1020,2267,3486,1406,456,367,101,467,2272,2205,2205,2205,2205,2205,2205,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,269,269,269,2,2,2,2,269,113,113,2,2,2,2,269,269,113,269,269,269,269,269,113,2823,269,269,2,2,2,2,269,269,269,269,269,269,3546,269,269,269,269,113,113,113,113,113,113,2,113,2,2,2,2,113,113,113,2,2,2,113,113,113,2,2,2,2,2,2,2,2,2,2,2,269,2,113,113,113,269,269,2,2,2,2,2,2,269,113,113,113,113,113,2,2,2,2,2,2,2,2,2,113,113,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2823,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3148,954,954,397,2302,1820,762,3225,538,309,678,2575,2575,2575,2647,1938,2605,2605,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1659,2657,2,2,1659,2,1659,1659,1659,1659,1659,2,2,2,2,2657,1659,1659,1659,2,2,2657,2657,2657,2657,2657,2657,1659,1659,1659,1659,1659,1659,2657,2657,2657,2,2,2,2,2657,2657,2657,2657,2657,2,1659,1659,2657,2,2,2657,2657,2657,2,2,2657,2657,1659,1659,1659,1659,1659,1659,2657,2657,2,2,2,1659,2657,2,1659,1659,1659,1659,1659,2657,2657,2657,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2657,2657,2,2657,2657,2657,2,2,2657,2657,2657,1659,1659,1659,2657,1659,1659,1659,2,2657,2657,2657,2657,2657,2657,2657,1659,2657,2,2657,2657,2657,2,2,2,2657,2657,2,2,2,2,2,2657,2657,2,2,2,1659,1659,1659,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1659,1659,1659,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1659,1659,1659,1659,2,2,2,2,2,2,2657,2,1659}, + {2378,636,1958,1628,1255,2285,2208,1626,719,2944,1086,1436,1436,1719,2111,655,2637,2637,2,2,2,2637,2637,2,2637,2637,2637,2637,2637,2,2637,2637,2,2637,2,2,2,2,2,2637,2637,2637,2637,2637,2637,2,2637,2637,2637,2637,2637,2637,2637,2637,2637,2637,2637,2637,2637,2637,2637,2637,2637,2637,2,2,2,2,2,2,2637,2637,2637,2637,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2637,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2637,2,2,2,2,2,2,2,2,2,2,2,2,2637,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2637,2637,2637,2,2,2,2,2,2,2,1378,2,2,2,2,2,2637,1378,1378,2637,2637,2637,2637,2637,2,2,2637,2637,2637,2637,2,2,2,2,2,2,2637,2637,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2386,1298,3667,1448,442,939,293,1459,2060,512,66,210,210,1378,1378,1378,1734,1734,2,2935,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2039,2039,2,2,2,2,2,2,2,2,2039,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,196,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,196,2,2,2,2,2,2,196,196,196,196,196,196,196,196,2,2,2,2,2,196,196,196,2,2,2,2,2,2,2,2,2,2,2,2,2039,2,2,2,2,2,2,196,196,196,196,2,196,2,2,2,2,2039,196,2,2,2,2,196,196,196,196,2,2,2,2,2,2,2,196,196,196,196,196,196,196,196,196,196,196,196,196,2,2,2,2,2,196,196,196,196,196,196,2,2,2,2,2,2,2,2,2,2,196,2}, + {3248,1152,677,1852,368,590,1048,1469,578,578,1857,647,842,842,842,842,512,512,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,647,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,647,647,647,647,2,2,2,2,2,2,2,2,2,2,2,2,2,2,647,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,647,647,2,2,2,2,2,647,647,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,647,647,647,2,647,647,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,647,647,2,2,2,2,2,2,647,647,647,2,2,2,2,2,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,2,2,2,2,647,647,647,2,2,647,2,2,2,2,2,647,647,2,2,2,2,2,2,2,2,2,2,444,647,647,647,2,647,647,2,647,647,647,647,2,647,2,2}, + {2372,3079,2161,515,368,847,955,1257,1937,315,2666,1938,1723,1252,1252,362,362,2,2205,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,340,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3550,2364,2761,1050,1452,3139,1203,3135,259,1430,2768,1154,1154,1154,1098,1098,1098,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,179,179,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,179,179,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,179,179,179,179,179,179,179,179,179,179,179,179}, + {3283,1895,3287,884,1227,2089,1428,738,2392,1433,3204,65,65,2010,1412,1152,2693,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3526,2781,2027,3367,2471,2426,2023,287,2027,2500,1677,1982,1982,1982,1982,1067,1067,2,2,2,2,2,2,2,2,2,2,2589,2589,2589,2,2,2,2,2,2589,2589,2,2,2,2589,2589,2,2,2,2,2589,2589,2,2,2,2,2,2589,2,2,2,2589,2589,2589,2,2589,2589,2589,2589,2,2,2589,2,2,2,2589,2,2,2,2,2,2589,2,2,2,2,2589,2,2,2,2,2,2,2,2,2589,2589,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2589,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2589,2589,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2589,2,2,2,2,2,2,2,2,2,2,2,2,2,2589,2589,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2518,2060,1055,362,1455,1899,1105,1560,2237,2451,2080,181,2346,181,1829,1829,1829,2,2,1509,1509,1509,2,1509,2,2,2,2,2,2,2,2,2,1509,1509,1509,1509,2,1509,2,2,2,2,1509,2,2,2,1509,2,2,1509,2,2,2,1509,1509,1509,2,2,1509,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2019,2019,2,2,2,2019,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2405,2951,1024,864,3352,613,509,2752,1998,1315,704,558,2114,2114,2114,2114,2114,2,2,2,2,2,2,1686,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1686,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3092,3092,2,2,1686,2,2,1686,2,2,2,2,2,2,2,2,2,1686,1686,1686,1686,2,2,2,2,2,2,2,2,1686,1686,1686,2,1686,1686,1686,2,1686,1686,1686,2,1686,1686,2,1686,2,2,2,1686,1686,1686,1686,1686,1686,2,2,1686,1686,1686,1686,1686,1686,1686,1686,1686,1686,1686,1686,1686,1686,1686,1686,1686,1686,1686,1686,1686,2,2,3092,3092,3092,3092,3092,3092,3092,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1686,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1686,1686,1686,1686,1686,1686,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3572,3317,1644,1365,912,2200,1134,3115,1402,1456,2070,791,2291,1155,653,2572,1052,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,308,308,2,2,2,308,308,2,2,2,2,2,2,2,2,2,2,2,161,161,161,161,2,2,2,2,2,161,161,2137,2137,2137,2137,2,2,2,2,2,2,2,2,161,2,161,161,161,161,2,2,2,2,2,2,2,2,2,2,2,2,2137,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2137,2137,2137,2137,2,2,2,2,2137,2137,2,2,2,2,2,2,2,2,2,2,161,2,2,161,161,2,2,2,161,161,2,2,2,161,161,161,2,161,2137,2137,2137,2,2,2,161,161,2,2,2,161,2,2137,2,2,2137,2137,2137,2,2,161,161,2137,2137,161,161,161,161,2137,2137,2,2,161,2137,2137,161,161,161,161,2137,161,161,2137,2137,161,2137,2137,161,2137,2137,161,161,161,2137,2137,161,161,161,161,161,161,161,161,2137,2137,2137,2137,161,161,2137,2137,2137,2137,2137,2137,2137,161,2137,161,161,161,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,161,2137,2137,2137,2137}, + {2335,881,3740,2147,2388,1267,355,326,1183,688,359,865,86,1341,1699,457,66,132,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3017,3017,3017,3017,2,3017,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3592,2125,3245,1071,1973,453,396,3339,90,2128,349,772,141,2454,777,2,911,911,2,2,2,2,2,2,2,2,2,2,2,2,2,2005,2,2,2,2,2,2,2,2,2,2,2,2005,2,2005,2005,2,2,2,2,2005,2005,2005,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2005,2005,2005,2,2005,2005,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2005,2,2005,2005,2005,2005,2005,2005,2,2,2005,2,2,2,2,2,2,2,2,2}, + {3186,809,1534,1060,1206,2817,1214,1285,1367,1155,2023,943,2165,405,2850,2,2850,2850,2,2,2,2,2,2,2,2,2,2,2,2,2,1195,1195,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,489,489,128,489,1793,3011,3011,3011,1195,1195,1195,1195,1195,1195,1195,2147,1195,2147,1195,2147,2147,1195,2147,2147,2147,1195,2147,2147,2147,2147,2147,2147,2147,2147,2147,2147,2147,2147,2147,2147,1195,1195,1195,2147,2147,2147,2147,2147,2147,2147,2147,2147,2147,2147,2147,2707,2707,2707,879,93,93,93,1649,1649,1649,2707,1649,1649,259,259,1782,1782,1782,1782,1782,2147,2147,2147,2147,2147,2147,586,2147,586,2147,2147,2147,586,586,2147,2147,586,726,726,726,726,2465,2465,2465,2465,2465,726,726,726,2147,2147,2147,2147,699,2147,364,364,364,364,364,364,364,364,364,829,1195,2147,2147,2147,364,2147,2147,2147,2147,2147,1260,1260,2147,2147,663,663,663,663,663,663,663,2147,829,829,829,829,829,829,829,829,829,829,829,829,663,44,2147,2147,663,663,44,663,663,663,663,44,663,663,663,663,663,663,663,663,663,663,663,663,663,663,1902,1902,1902,1902,93,93,1902,1902,1902,1902,1902,829,829,829}, + {3362,1718,1285,290,2071,2685,2040,1046,513,1743,2093,3399,488,1536,2181,2,2,334,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3574,1205,2862,1345,667,1230,1023,512,2015,1045,2343,1819,372,675,2577,2,2577,2577,1298,2,2,2,2,2,1298,2,2,1298,1298,2,2,2,2,1298,1298,1298,2,1298,2,2,1298,1298,1298,2,2,1298,2,2,2,1298,1298,1298,1298,2,2,2,2,2,2,2,2,2,772,2,2,2,772,772,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,245,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,245,245,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3617,3106,427,3428,751,1008,1505,2329,1848,1122,1163,1355,2151,187,296,2,2,2,1772,1772,2,2,1465,1465,2,1465,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,385,2,2,2,2,2,385,385,2,2,2,385,385,385,385,2,2,2,2,2,2,2,2,2,385,385,385,385,2,2,2,2,2,385,1772,2,385,385,385,385,2,2,2,385,385,385,385,1465,1465,1465,1465,385,385,385,385,385,385,385,385,385,385,385,385,385,385,2,385,385,2,385,385,385,385,385,385,385,385,2,2,385,2,2,2,2,2,2,385,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,385,385,2,2}, + {2560,1281,3140,2453,1350,2580,872,1188,3052,3003,745,4,4,2107,2107,2,2,2,2,2,2107,2107,2107,368,2,2,2,2,2107,1721,1721,1721,368,368,368,368,368,1721,1721,1721,368,368,368,368,368,2,2,1721,1721,368,368,368,368,1721,1721,1721,1721,1721,1721,1721,1721,368,368,368,368,2646,368,368,368,368,2,710,2646,2646,2646,2646,2646,368,368,2646,2646,2646,2646,2646,2,2646,2646,1721,1721,368,368,2646,1721,368,368,368,368,2,1721,368,368,1721,368,2646,2,1721,1721,1721,1721,1721,2646,2646,2646,2646,2646,2646,2646,2646,2,2646,2,2,2,2,2,2,2,2646,2646,2646,2646,2646,2646,2646,2646,2646,2646,2,2,2,2,2,880,2646,2646,2646,2646,2646,2646,2646,2646,2646,2646,2646,2,2,880,880,2646,2646,2,2646,2646,1721,1721,1721,1721,710,2646,2646,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,710,2,2,2,710,2,710,1721,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1721,2,1721,2,2,2,2,2,2,2,2,2,2,2}, + {3215,2004,3333,2271,3283,1660,2135,1696,1413,1362,834,253,253,253,3802,2,2,2,1881,690,690,2,2,2,1881,1881,1881,1881,1881,2,1881,1881,2,2,1881,1881,1881,1881,1881,1881,1881,1881,2,1881,1881,1881,1881,1881,2,2,2,2,1881,1881,1881,1881,1881,2,2,1881,1881,2,2,2,2,2,1881,1881,2,2,2,2,2,2,2,2,2,2,2,2,1881,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3346,2602,959,3774,734,1363,2513,1183,93,196,887,1084,1195,386,386,137,137,137,137,137,137,137,2,2,2,2,2439,2439,2439,2439,2,2439,2439,2,2439,2439,2439,2439,2439,2,2439,2439,2,2,2,2,2439,2439,2439,1261,1261,1261,1261,1261,1261,2439,2439,2439,2439,2439,2,2439,2439,2,2,2,2,2439,2,2,2,1261,2,2,2,2,2439,2439,2439,2439,2439,2439,2439,2,2439,2439,2439,1261,2439,2439,2439,2439,2439,930,930,2439,2439,2439,2439,2439,2439,2439,2439,940,940,2439,2439,2439,2439,2439,2,2439,2,2,2439,2439,2439,1261,2439,1261,1261,2439,2439,2439,2439,2439,2439,2439,2439,2,2,2,1011,2,2,2,2,2439,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2439,2439,2,2,2439,2,2,930,930,2439,2,2,2439,2439,2,2,2,2439,2,2439,2,2439,2,2,2,2,2439,2,2,2,2439,2,2,2,2,2,2,2,2,2,2,2,2439,2439,2439,2439,2439,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3227,1852,987,168,1032,2586,1325,1717,2411,2150,182,3216,3029,3740,454,2,66,66,2,2,2,2,2,2,2,703,703,703,703,703,703,703,703,906,906,906,906,906,906,906,906,906,906,2,906,906,2,906,906,906,906,906,2,906,906,906,906,906,906,906,906,906,2,2,2,2,2,2,2,2,2,2,2,2,906,906,2,2,906,2,906,906,2,2,2,2,2,2,2,2,2,2,906,906,906,2,2,2,2,2,906,906,2,2,2,906,906,906,906,906,2458,2,906,906,906,2,906,906,2,906,906,906,906,906,906,906,906,2,906,906,906,906,906,906,906,906,906,906,2783,2,2,2783,906,906,2,906,2,2,2,2,2,2,906,2,2,906,906,2,2,906,906,2,2,2,2,2,2,2,2,2,2,2,2,2,2,906,2,2,906,906,906,2,906,906,2,906,906,906,906,906,906,2,906,906,906,2,2,906,2458,2458,2458,2458,2458,2458,2458,2458,2458,2458,2458,906,906,906,906,906,906,2,2,906,906,2,906,906,906,2,906,906,906,906,906,2,2458,2458,2458,2458,2458,2458,2458,2458,906,906,906,906,906,906,906,906,314,314,314,314,906,906,2,2,2,2}, + {3362,1624,1609,972,1056,598,1108,871,3438,473,2253,1396,308,2053,2053,2,2,491,1202,2,2,2,2,2,2,2,2,2,2,1202,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3365,1995,213,1204,2954,858,2100,1428,2033,1185,1904,3415,2297,1656,294,2,1518,1182,2,2,2,311,2,2,2,2,2,842,2,2,2,2,2,842,2,842,2,2,2,2,2,2,2,2,2,2,842,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1182,1182,1182,1182,1182,2,1182,2,2,2,1182,1182,842,842,842,2,2,2,1182,1182,2,842,842,842,2,2,2,2,2,2,1182,842,842,842,2,842,2,2,2,2,2,2,2,2,2,2,2,2,2,1182,1182,2,2,1182,2,2,2,2,2,842,842,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3417,1145,2444,1131,1503,578,1177,2790,1481,479,727,2319,173,1123,229,2,709,709,2,2,2,2,2,2,709,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,709,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,709,709,2,2,2,2,2,2,2,2,1244,709,2,1244,1244,1244,2,1244,1244,1244,1244,2,2,1244,1244,709,709,709,709,1244,1599,1244,1244,1244,1244,1244,1244,1244,1244,1244,1244,1244,1244,1244,1244,1244,1244,1244,1244,1244,1244,1244,1244,1244,2,2,2,2,2,1244,1244,709,709,709,1244,2,1244,1244,709,2,2,1244,1244,1244,709,709,709,709,709,709,709,1244,1244,1244,1599,1244,1244,1244,1244,1244,1244,1244,1244,1244,1244,1244,2,1244,1244,1244,1244,1244,1244,1244}, + {3620,1734,917,337,1356,2011,1576,1762,2739,3686,486,1461,1461,694,694,2687,1426,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1821,1821,1821,1821,1821,1821,2,1821,1821,2,2,2,2,1821,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,612,612,612,612,612,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3125,3125,3125,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1200,2,2,2,2,2,1200,1200,1200,1200,1200,2,1200,1200,2,2,125,125,2,2,2,2,2,2,2,2,2,2,2,2,2,612,612,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1821,1821,1821,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3125,3125,3125,3125,2,2,2,125,125,125,125}, + {3249,1309,1232,472,711,2557,1479,1027,145,489,1377,2928,2928,3522,3522,3522,968,415,415,2,2,2,2,1332,1332,1332,2,1332,2891,2,1332,2891,2891,2,2891,1332,1332,1332,1332,1332,1332,1332,1332,1332,2,2,2,1332,1332,1332,2,2,2,1332,1332,2,2,2,2,2,2891,2891,1332,1332,1332,2,2,2,2891,2891,1332,2891,2891,2891,2891,2,2,2,2,1332,2,2,2,2,2891,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1332,1332,1332,1332,2,2,2,2,2891,2891,1332,1332,1332,2,2,2,2,2,2,2,2,2,2891,2891,2,2,2891,2891,2891,2891,2,2,2,2891,2891,2891,2891,2891,2891,2,2,2,2,1332,2891,2891,2891,2,2,2,2,2891,2891,2891,2891,2891,2,1332,2891,2891,2891,2891,2891,2,2,2,2,2,2,2,2,2,2,2,2,1332,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2891,2891,2,2,2,2,2,2,2891,2891,2891,2891,2891,2,2,2,2891,2,2,2891,2,2,2,2,2,2,2,2,2,2,2891,2,2891,2,2,2,2,2,2891,2891,2891,2891,2891,2891}, + {3427,790,950,2728,1624,2759,1506,2317,2025,640,1156,230,2803,593,3028,44,2156,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1431,1431,1431,1431,1431,1431,1431,1431,1431,1431,1431,2,2,2,2,1431,2,1431,1431,2,2,2,2,2,2,2,1431,1431,2,2,1431,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1431,1431,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1431,1431,1431,1431,1431,2,1431,2,2,2,2,2,2,2,2,2,1431,773,1431,1431,1431,2,2,1431,1431,2,2,1431,2,2,1431,1431,1431,2,2}, + {3296,2249,454,1782,1084,2273,2336,107,2220,2220,779,589,1578,595,595,396,1171,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1088,1088,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1088,2,2,2,2,1088,1088,1088,2,2,2,2,2,2}, + {2628,2163,1961,3271,1440,247,3837,1621,1449,1449,1570,1450,2900,2900,1964,1964,1964,2,2,2,2,2,2,2810,2810,2,2810,2810,2810,2810,2810,2,2,2,2,2,2810,2810,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2810,2,2,2,2,2,2,2,2810,2810,2810,2810,2810,2,2,2,2810,2810,2,2,2810,2,2,2,2,2,2,2810,2810,2810,2,2,2,2,2,2,2,2,2,2,2810,2810,2,2,2,2,2,2,3236,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2462,1962,257,2244,1966,1905,204,262,799,319,752,1696,971,971,3781,1426,1426,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1196,1196,1196,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1196,1196,1196,1196,1196,2,1196,1196,2,2,2,2,2,2,2,2,2,2,2,2,2,1196,1196,2,2,2,2,1196,1196,1196,2,2,1196,1196,2632,2,2632,1196,1196,1196,1196,2,2,2,2,1196,2632,2632,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,2632,1196,1196,1196,1196,1196,1196,2,2632,2632,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,2,1196,1196,1196,1196,1196,1196,1196,1196,1196,2632,2632,2632,1196,2632,2632,2632,2632,2632,2632,2632,1196,1196,1196,1196,1196,82,82,2632,2632,2632,2632,2632,2632,1196,1196,2632,2632,2632}, + {2407,2157,3828,1024,570,3052,906,2923,3303,1624,1070,2059,1442,516,516,516,516,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,438,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,438,438,2,2,2,2,2,2,2,2,2,2,438,438,2,2,2,2,2,2,2,2,2,2,438,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,438,438,438,438,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,438,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2475,1006,2721,2591,2253,3513,2591,2297,1110,135,1045,629,533,3647,761,761,2693,2693,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1103,1103,2,2,2,2,2,2,1718,2,1103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2713,409,2186,1816,1653,744,2899,2899,796,1925,378,3807,1372,1594,1594,207,2,2,1636,1636,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,740,740,740,2,2,2,2,2,2,2376,2376,2376,2,2,2,2,2,2,2,2,1636,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2376,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3434,3131,1399,3413,1533,281,3288,1242,810,135,2506,2506,1742,946,1015,1044,1044,1044,2,2,2,2,1044,1837,1837,1837,1837,1837,2,2,2,2,2,2,2,2,2,2,2,2,2,1837,1837,1044,1044,1044,1044,1837,2,1044,1044,1044,1044,2,2,2,2,2,2,1837,1837,1837,1837,1837,1837,1837,1837,1837,1837,1837,2,2,2,1837,1837,1837,1837,1837,1837,1837,1837,1044,1044,1837,1837,1837,1837,2,2,2,2,2,1837,914,1837,1837,1044,1044,1837,1837,1837,1837,1044,1044,1837,1837,1837,1837,1837,1837,1044,1837,1837,1837,1837,1837,1837,1837,1837,1837,1837,1837,1837,914,914,914,914,1837,1837,1837,1837,2384,1044,2384,2384,2384,1044,1044,1044,1044,1044,1044,1837,1837,1837,1837,1837,1837,1837,508,1837,914,1044,1044,1044,914,914,1044,914,914,914,914,914,914,914,914,914,914,3615,3615,3615,3615,3615,3615,3615,3615,1044,914,914,1837,1837,1837,1837,1837,1837,1837,1837,1044,1044,1044,1044,1044,1044,1044,1044,1044,1136,1136,1136,1136,1136,1136,1136,1044,1136,1136,1136,1136,1136,1136,1136,1044,1044,1044,1044,1837,1044,1044,1837,914,914,914,1837,914,914,914,914,914,914,1136,914,914,914,914,914,914,914,914,914,914,914,1044,1044,508,508,2,2,2,2,2,1044,1044,1044,1044,1044,1044}, + {2623,549,625,327,1654,329,2282,2056,3059,2037,273,2669,701,162,162,1643,2,1643,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2976,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,116,2,2,2,2,2,2,2,2,2,2,2,2,116,116,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3437,1647,471,1736,2343,847,1051,2890,2223,131,80,629,629,2490,717,717,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2187,2187,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2187,2187,2,2187,2187,2,2187,2187,2187,2,2,2,2,2,2,2,2,2,2,2,2,2,2187,2187,2,2187,2,2,2,2,2,2,2,2187,2,2,2,2187,2187,2,2187,2187,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3798,2207,1470,1527,1851,496,1578,1221,143,2273,684,744,660,555,555,618,2,2,3011,3011,3011,3011,3011,3011,3011,3011,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3335,455,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,455,2,455,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,455,2,2,2,2,2,2,2,2,2,2,455,455,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,455,455,2,2,2114,2114,455,455,455,2114,455,455,455,455,455,2,2,455,455,455,455,455,455,455,455,455,455,455,455,2,2,2,2,2,2,2,2,2,2,2027,2027,2027,2027,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2027,2027,2027,2,2,2,1204,2,2,2,2,2,2027,2027,2,2027,2027,2027,2027,455,455,455,455,2,2027,2027,2027,2027,2,2}, + {3334,1429,2637,986,2601,774,162,1400,1649,1844,118,1732,1022,1659,1659,1659,2,2,2,1334,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1071,1071,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1358,2,2,1071,163,163,163,163,2,163,163,2,2,2,1071,2,1358,2,2,1358,1358,2,2,2,2,1071,1071,1071,2,2,2,2,2,2,1358,1358,2,2,1358,1358,1071,1071,1071,1071,2,2,2,1071,2,2,1358,2,1071,2,1071,1071,2,2,1358,2,2,1071,1071,1071,1071,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2518,1200,631,596,1946,365,2960,413,592,3878,242,2714,2364,1402,1402,2322,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1591,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1591,1591,1591,2,1591,1591,1591,1591,1591,1591,1591,1591,1591,2,1591,1591,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1591,1591,2,2,2,2,2,2,1591}, + {2522,1382,2025,1057,2443,1252,339,1116,576,922,2814,2528,2819,225,1642,261,2,2,2,2,2,2,1523,1523,2,2,2,2,2,2,2,2,2,1647,1647,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1523,1523,1523,2,2,2,1523,1523,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3268,1529,1522,1096,2152,3137,1015,1440,3464,313,2250,3108,2250,1339,636,2782,2,2,2,1014,2,2,2,2,2,2,2,2,1856,2,1014,2,2,1014,1014,2,2,1014,1014,435,435,1014,1014,1014,1014,1014,1014,1014,1014,1014,1856,1014,1014,1014,1014,2,2,2,2,1856,1856,1856,1856,1856,1856,1856,2,2,2,1856,2,2,1856,1014,1856,1856,1856,1014,1014,2,2,2,2,2,2,2,1014,1014,1014,1014,1014,2,2,1856,2,2,2,2,2,2,2,2,1856,1856,1856,1856,1856,2,2,3412,3412,3412,3412,3412,2,435,435,2,2,1856,2,2,2,1014,1856,2,1856,1856,1856,1856,1856,1856,1856,1014,1014,1014,1014,1014,1014,1014,1014,1014,1014,1856,1856,2,2,1856,1856,2,2,1014,1014,1856,1856,2,1856,2,2,2,2,2,2,2,2,2,1014,1014,1014,1014,1856,1856,1856,1856,1856,2,1014,1014,1014,1014,1014,1014,1014,1014,2,2,1014,1014,2,2,1014,1014,1014,1014,1014,1014,1014,1014,2,2,2,2,2,1856,1856,1856,1014,1014,3412,3412,1856,1856,1856,1856,1856,1856,1856,1014,1856,1856,2,2,1856,1856,1014,1014,1014,1014,1014,1014,1014,1014,1856,1856,1856,1856,1856,1856,1856,1856,1856,1014,1856,1856,1856,2,3412,3412,3412,1856,1856,1856,1856,1856,3412,3412}, + {2546,3445,689,3696,1988,1922,62,1371,1353,162,674,278,278,278,278,1425,1786,1786,1786,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,547,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2058,2058,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,547,2,2,2,2,547,547,547,547,547,547,547,2,2,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,2,547,547,547,547,547,547,547,547,547,547,547,547}, + {3362,2012,1759,2002,1365,150,3120,471,1590,3246,1296,196,196,196,2984,2323,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1920,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1920,2,2,2,2,2,1920,2,2,2,2,1920,2,2,1920,2,1920,1920,2,1920,2,2,2,2,2,2,2,2,2,2,2,2,1920,2,2,1920,1920,2,1920,2,2,1920,2,1920,1920,1920,1920,2,2,2,2,1920,2,2,1920,2,1920,1920,1920,2,2,1920,1920,2,1920,2,2,2,1920,1920,1920,1920,1920,2,2724,2323,2,1920,2,1920,1920,1920,1920,1920,2,1920,2,1920,2,2,2,2,1920,1920,1920,1920,1920,2,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,2,2,1920,2,2,2,2,2,2,2,1920,1920,2,2,2,2,1920,1920,1920,1920,2,2,2,1920,1920,1920,2,2,2,1920,1920,2,2,2,2,2,2,2,2,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920,1920}, + {2667,2308,2618,396,844,797,709,1580,1014,201,3198,3529,1002,393,1907,393,2,2,2,2,2,1907,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2618,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1907,1907,1907,1907,1907,2,2,2,1907,1907,1907,1907,2,2,2,2,2,2,2,2,2,2,2,2,2,1907,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3365,1395,2404,569,570,1941,97,1216,225,3465,2116,2455,1323,1974,1974,330,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,379,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1311,2,2,2}, + {2547,3409,1956,1219,820,1321,2253,1431,378,3135,1484,4056,4056,4056,4056,4056,2,2,2,2,2,2,2,2,2,2,2,2756,2756,2756,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,615,615,2,2,2,2,2,615,615,2,2,2,615,615,2,2,2756,2756,2756,2756,2756,2,2,615,615,615,615,615,615,615,615,615,615,615,2,615,615,615,2756,2756,2,2756,2756,2756,2756,2756,615,615,615,615,615,615,615,2756,615,615,2,2756,2756,2756,2,2,2,2,2,2,2,2,2,2,2756,2,2756,2756,2,2756,2756,2,2,2,2,2756,2756,2756,2756,2,2,2,2,2,2,2,615,615,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,615,615,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,615,2756,2,615,615,615,2756,615,2,615,2756,2756,615,615,2,2,2,2756,2,2,615,615,2,2,615,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2756,2,2,2756,2756,2756,2756,2756,2756,2,2}, + {2702,1950,1347,2470,1230,334,1565,785,3725,161,1816,389,3102,2874,1866,1866,1866,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1866,1866,2,2,2,2,2,2,2,2,2,2,2,2,1866,1866,1866,1866,1866,1866,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1675,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1866,1866,1866,2,1866,1866,1866,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1866,2,2,2,2,1866,2,2,2,2,1675,1866,2,2,1675,1866,1866,2,2,2,2,1866,1866,1866,1866,1866,1866,1866,1866,1866,1866,1866,1866,1866,1866,1866,1866,1866,1866,1866,1866,1866,1866,1866,2,1866,1866,1866,1866,1866,1866,1866,1866,1866,1675,1675,1866,1866,1866,1866,1866,1866,1866,1866,1866,1866,1866,1866,1866,1866,1866,1866,1866,1866,2,2,2,2,2,2,1866,2,1866,2,1866,2,1866,1866,1866,1866,2,1866,1866,2,2,2,2}, + {2536,2188,2575,581,2585,987,2538,1244,2800,2617,2491,3490,223,462,1563,4295,1925,2,2,2,2,2,2,2,1925,2,2,2,2,1925,1925,1925,2,2,2,2,2857,2,2,2,2,2,1925,2,2,2,2,2,2,2,2,2,2857,2857,2,2,2,1925,1925,1925,1925,2,1925,1925,1925,1925,1925,1925,1925,1925,1925,2857,2857,2857,2857,932,2857,2857,2857,932,932,1925,932,2857,2857,2857,2,2857,2857,2857,2,2,2857,2,2,2857,2857,2,2857,2857,2,2857,2857,2857,2,2,2857,2,2,2,2857,1925,1925,2,2857,2857,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,932,932,932,932,932,932,932,1925,2,2,2,1925,1925,1925,1925,1925,1925,1925,1925,2,1925,1925,1925,1925,1925,1925,1925,1925,1925,1925,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,932,932,2857,2,2,2,2857,2857,2,2,2,2,2,2,2857,2857,2857,2857,2857,2857,2857,2857,2857,2857,2857,2857,2857,2857,2857,2857,2857,2857,2857,2857,2857,2857,2857}, + {3554,2059,585,409,1280,620,1669,98,2768,2102,1458,2515,893,893,1111,2556,1229,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1205,1205,2,1205,1205,1205,1205,2,1205,1205,1205,2,2,2,2,1205,1205,2,1205,1205,1205,2,1205,1205,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1205,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1205,1205,1205,2,1205,2,2,2,2,2,2,1205,1205,2,2,1205,1205,2,2,1205,1205,2,2,2,1205,1205,1205,1205,1205,2,2,2,1205,1205,1205,1205,2,1205,2,2,2,2,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,1205,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1205,2,2,2,2,2,2}, + {3561,1030,476,1998,2687,490,262,3659,1029,1010,1861,1326,1326,1326,1326,16,16,2,2,2,2031,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2031,2031,2,2,2,2031,2031,2031,2,2960,2960,2,2,2,1107,784,2960,2031,2031,784,2031,784,784,2,784,784,2,2,784,2031,784,784,2,2,2,2,2,2,2,1845,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2031,784,2,2,2,2031,2031,2031,2031,1845,784,784,2031,2031,784,2960,2960,2960,784,2,2031,2031,2031,1845,2,2031,2031,2031,2031,2031,2031,2031,2031,2031,2031,784,2031,2031,2031,2031,2031,2,2031,784,2,2,2031,2031,2031,2031,2031,2031,2031,784,2031,2031,2031,784,2031,2031,2031,2031,2,784,784,784,2,2031,2031,2031,2031,2960,2031,2960,2031,784,784,784,2031,2031,2031,2031,2,2960,1107,1107,784,784,784,2031,2031,2031,2031,2031,2031,2031,2031,2960,2960,784,784,784,784,784,784,784,784,2960,2960,2960,2960,2960,2960,2960,2960,2960,2960,2960,1845,784,784,784,784,784,1845,2031,1845,1845,2960,1845,1845,1845,2960,2960,2031,1845,2960,2960,2960,2960,2960,2960,2960,2960,2960,2960,1845,1845,2960,784,784,2,1845,2960,2960,2960,2960,1949,1949,1949,1845,1845}, + {2547,3563,2848,1569,632,2183,3303,536,620,1267,2349,1888,878,878,2,349,517,2,2,2,2,2,2,2,2,2,2,2,2,2,618,618,1592,1592,1592,618,618,618,618,618,618,618,2,2,2,2,618,618,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1592,1592,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1592,1592,1592,1592,1592,1592,2,1592,1592,1592,1592,1592,1592,1592,1592,1592,2,1592,1592,1592,1592,1592,1592,1592,2,2,2,2,2,1592,1592,1592,2,2,2,2,2,2,2,2,2,1592,2,2,2,1592,2,2,2,2,2,2,2,2,2,2,2,2,2,1592,1592,1592,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2697,587,2342,1952,1828,2352,1269,2395,1111,1071,169,1840,2612,2612,2,751,3246,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,997,997,997,997,997,997,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,997,997,997,2,997,997,997,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,997,2,997,997,997,2,2,2,2,2,2,2,2}, + {2728,1334,274,1330,2674,2614,931,2250,883,1506,2193,1345,1089,500,2,219,390,2,2,2,2,2,2,2,390,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3057,3057,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3057,3057,3057,3057,3057,390,2,2,2,2,2,2,2,2,2,2,2,2,3057,3057,2,2,2,2,2,390,390,2,3057,390,390,390,390,390,390,3057,390,390,3057,3057,3057,3057,390,390,390,3057,2,2,2,2,2,390,390,390,390,2,2,2,2,3057,390,390,390,390,390,390,390,390,390,2,2,390,3057,390,2,2,390,3057,3057,3057,3057,390,390,390,390,390,390,390,2,390,390,390,3057,390,390,390,2,2,2,390,390,390,390,390,390,390,390,390,390,390,390,390,3057,390,390,390,390,390,390,390,390,390,390,618,618,618,618,618,618,618,618,618,618,3057,390,390,390,618,618,2,390,618,3057,3057,618,390,390,390,3057,390,390,390,390,2,390,390,390,390,390,3057,3057,3057,3057,3057,3057}, + {3568,1820,2374,2294,3151,665,1172,3639,3261,2752,48,288,708,3016,2863,2863,2863,2,2,2,2,2,2,2863,2863,2863,2863,1610,2863,1610,2,2,2,2,2,2,2,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,2863,2863,2863,1610,2,2,2,1610,1610,1610,1610,1610,2402,1610,2402,2402,1610,811,811,811,1610,1610,1610,1610,1610,1610,2,2,1610,1610,1610,1610,1610,1610,1610,1610,1528,1610,1610,1528,1528,1610,1610,1610,1610,1610,811,811,811,1528,1610,1528,1528,1610,1610,1528,1528,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1528,1528,1528,1528,1528,1610,1610,1610,1610,1528,1528,3332,3332,3332,3332,3332,1610,1610,1610,1610,1610,1610,1528,1528,1528,1528,1528,3930,3930,3930,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,1610,3930,3930,3930,3930,811,811,811,811,3930,3930,3930,3930,1610,1610,811,1610,1528,1528,3332,1528,1528,3930,3930,3930,3930,3930,3930,3930,3930,3930,3930,3930,3930,3930,495,3930,568,811,811,811,3930,1610,3930,1610,3930,3930,3930,3930,3930,3930,3332,3332,3332,263,263,3332,263,263,263}, + {3841,1526,728,371,165,240,35,1761,2632,646,1427,554,554,554,554,554,554,4343,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3063,3063,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,180,180,2,2,180,180,180,180,180,2,180,180,2,2,2,2,2,2,2,180,180,2,2,2,2,2,180,180,180,180,180,2,2,2,180,180,2,2,2,180,180,180,180,2,2,180,180,180,180,180,180,180,180,180,180,180,2,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,2,2,180,180,180,180,180,180,180,180,180,180,180,180,180,180,3063,3063,180,180,180,180,180,180,4408,4408,3063,3063,180,180,2,180,180,180,180,2,180,180,180,180,180,180,180,180,3063,3063,180,180,3063,3063,3063,2,2,180,180}, + {2743,1720,981,308,637,2946,3695,2641,1928,658,343,1763,746,746,2,2,1703,3478,2,2,2,2,2,2,2,2,499,1672,1672,1672,1672,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1672,1672,1672,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1672,1672,2,2,2,1672,1672,1672,1672,2,3534,1672,2,2,2,499,499,2,2,2,2,2,2,2,2,2,2,2,2,2,499,499,499,499,499,499,499,499,499,2,2,2,2,2,2,2,2,1672,2,2,3534,3534,3534,3534,3534,3534,3534,2,2,2,2,2,2,2,2,499,499,499,3534,3534,3534,3534,3534,3534,3534,3534,3534,3534,3534,3534,3534,3534,3534,3534,3534,3534,3534,827,827,1754}, + {2743,3246,1716,1257,201,1379,265,475,639,2737,466,2517,3336,496,2,2,378,3723,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2318,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2239,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2727,2610,1614,2813,315,2920,1987,1311,550,632,1360,555,2151,1266,2,2,705,1266,1266,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2436,2436,2436,2436,2436,2436,2436,672,2436,2436,2436,2,2436,2436,2436,2,2,2,2,2,2436,2436,2,2436,672,2436,2436,672,2436,2,2,2,2436,2436,672,672,672,672,672,672,672,672,672,672,672,672,672,2,2,2436,2436,2436,2436,2436,2436,2436,2436,2436,2436,2436,2436,2436,2436,2436,2436,2436,2436,2436,2436,2436,2436,2436,2,2436,2436,2436,2436,2436,2436,2,2,2,2,2436,2,672,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,672,2,2,2,2,2,2,2,2,2,672,672,2,672,2,2,2,2,2,2,2,2,2,2,672,672,672,2,2,2,2,2,2,2,672,672,672,672,2,672,672,672,672,2,672,672,672,672,672,672,672,672,672,2,672,672,2,2,672,2,2,2,2,2,2,672,672,672,672,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2436,2436,672,2,2,2,2,2,2,2,2,672}, + {3855,2471,1322,4343,678,3880,1418,1892,703,2657,886,2938,2464,134,2,2,2,699,3472,2,2,2,2,2,2,2,2,2,2,2,2,2,869,2,2,2,2,2,2,2,2,2,2,2,2,869,2,869,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3428,2242,1311,1602,2823,4010,466,1697,1227,864,2416,94,2416,651,2,2,2,2617,2617,2617,2,2617,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,770,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,770,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2584,1707,1569,1370,2947,836,2055,1055,2862,495,1058,641,1557,44,2,2,2,2,1634,3041,713,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3563,1502,254,2975,1699,1872,1542,3067,1993,485,122,739,2029,2821,2,2,2,2,2217,2217,1835,2217,2217,1835,2,2,2,2,2,2,2217,2217,2217,2217,2217,2,2,2,2,2,2,2,2,2,2,2,1835,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2217,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2217,2217,2217,2,2217,2,2,2,2,2,2,2,2,2,2,2,2,2217,2,2,2,2,2,2217,2217,2,2,2,2217,2217,2,2,2,2,2,2,2217,2217,2217,2217,2217,2,2,2,2,2,2,2,2,2217,2217,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1835,1835,2,2,2,2,2,2217,2217,2217,2,2,2,2,2,2,2217,2,2,2,2,2217,2217,2217,2,2,2217,2217,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1835,1835,2,2,2217,2,2,2,2,2217}, + {2583,1148,1816,822,4422,130,3844,2715,1288,1245,2737,2162,1609,3467,2,2,2,2976,2976,2976,2976,2976,2,2,2,1160,2,2,2,2,2976,2976,2976,2,2976,1896,1896,2976,2976,2976,2976,2,3980,3980,3980,3980,3980,3980,3980,3980,3980,2,2,2,2976,2976,2976,2,2976,2976,2976,1896,1896,1896,2976,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3980,3980,3980,3980,3980,2,2,2,895,895,1160,2,2,3980,3980,895,895,895,895,2,1620,1490,1490,1490,2976,1160,1160,2,2,1620,1620,1620,2,3980,3980,2,3980,3980,3980,3980,3980,3980,3980,3980,3980,1160,1160,1160,2,2,2,2976,2,1160,2,1620,1620,2,2,1160,1160,2,2,2,1160,1160,2976,1160,3980,3980,3980,3980,2976,2976,2,1160,3980,3980,3980,3980,3980,3980,3980,3980,2976,2,3980,3980,3980,3980,3980,3980,3980,3980,2,3980,2976,2,2,2976,2,2,2,2,2,2976,2,3980,3980,3980,3980,3980,3980,3980,2,2,2,2,2,2,3980,3980,3980,3980,3980,3980,2,3980,3980,3980,3980,3980,2,3980,3980,1620,2976,2976,2976,1160,3980,3980,3980,3980,2976,2976,2976,2976,2,3980,3980,1160,1620,2,2,1620,1620,1620,895,2976,1620,1620,1620,1160,2976,2976,2976,2976,1160,2976,2976,2,2,2,2}, + {3475,932,501,2551,500,77,1485,388,2432,545,82,1851,2435,2435,1175,1175,1175,1175,1175,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1696,1696,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1696,1696,1696,1696,2,1696,1696,1696,1696,1696,2,1696,1696,1696,1696,1696,1696,2,2,1696,1696,1696,1696,1696,1696,1696,1696,1696,2,1696,1696,1696,1696,1696,1696,1696,2,2,1696,1696,1696,1696,1696,1696,1696,1696,1696,1696,1696,1696,1696,2,1696,2,2,2,1696,1696}, + {2757,3466,1411,1168,340,2760,1053,524,53,2090,1227,26,260,830,2,2,2,1139,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3154,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3154,3154,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2120,2120,2,2,2,2,2,2,2,2,2}, + {3872,1852,1020,3421,1850,2159,1511,901,55,384,308,3338,288,456,1211,1211,1211,1211,2,2652,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1211,1211,2,2,2,2,2,2,2,2,2,1211,1211,2,2,2756,2,1211,1211,1211,1211,1211,1211,1211,2,2,2,2,1211,2,2,2,2,2,1211,1211,1211,2,2,2,2,2,2,2,2,2,1211,1211,2,2,2,2,2,2,2,1211,1211,2,1211,1211,2,1211,1211,1211,1211,1211,1211,1211,1211,2,1211,1211,1211,2,2,1211,1211,2,1211,1211,1211,1211,1211,1211,1211,2,362,362,1211,1211,1211,1211,1211,1211,1211,1211,1211,2,2,1211,1211,130,2,1211,1211,1211,1211,2,1211,1211,2,2,2,1211,1211,2,2,2,2,2,2,2,2,1211,2,2,2,2,2,2,2,2,2,2,2,2,3309,2,2,2,2,2,1211,1211,1211,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1211,1211,1211,1211,1211,1211,2,2,2,2}, + {2804,3002,554,1797,347,1895,76,965,926,2807,283,40,2433,2433,2,2,168,1971,2,2,2,2,2073,2,2,2,2,2,2,2,1483,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1483,2,1483,1483,2,2,1483,1483,2,1483,1483,2,2,2,2,2,2,1483,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1903,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3964,1838,1032,1785,835,2026,1883,801,1408,631,195,3076,3076,3076,2,523,1511,1511,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2557,1972,1743,4367,1391,662,1037,1098,3607,2537,1474,902,1364,1301,2,1917,1646,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1373,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,627,2,2,1373,1373,1373,2,1373,1373,2,2,627,627,1373,1373,1373,2,2,2,1373,627,627,1373,1373,1373,1373,1373,1373,627,627,627,1373,1373,1373,1373,1373,1373,1373,1373,1373,1373,1373,1373,1373,2,2,1373,1373,2,2,1373,2,2,2,2,1373,2,2,2,2,2,2,2,2,2,2,2,2,2,2,627,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1373,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3623,1074,201,1409,3910,2611,2343,1134,1280,2994,2243,1914,15,28,2,741,1612,2,2,2,2,2,2,2,2,764,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3673,537,872,1983,2478,2297,1613,1535,1360,736,2586,623,1819,1819,2,907,907,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2913,2913,2913,2,2,2,2913,2,2913,2,2,2,2913,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1927,1927,1927,2,2,2,2,2,2,2,2,2,2,2,1927,1927,1927,1927,1927,1927,1927,2,2,2,2913,2913,2913,2913,1927,2913,2913,2913,2913,2913,2913,2913,2913,2,2913,2,2,2,2,2913,2913,2,2,2,2,2,2,2,2,1927,2,1927,1927,2913,2,2,2913,2913,1927,1927,1927,2,2,2913,2913,2913,2913,2913,2,2,2,2,2}, + {3680,637,4064,1504,1531,1271,2659,2881,1792,178,2794,2747,912,2141,2141,1682,2141,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,169,169,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,169,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1319,1319,32,1319,32,32,2514,1501,1501,1501,2,2,169,2,2,2,2,169}, + {2662,902,2371,1920,1097,1476,1008,1012,3556,468,3374,2560,591,1446,2,298,298,149,149,149,149,149,3135,3135,3135,3135,3135,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2826,3005,1262,3027,2874,816,1460,40,957,492,4067,100,84,84,2,541,1266,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,835,835,835,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,835,2,2,2,2,2,2,2,2,2,835,835,2,2,2,2,2,2,2,835,835,835,2,2,835,835,2,2,835,835,835,2,2,835,2,2,835,835,835,835,835,2,2,835,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,835,835,2,2,2,2,2,2,2,2,835,835,835,835,835,2,835,1129,1129,1129,2,2,2,835,835,835,835,835,2,2,384,384,2,835,2,2,2,2,2,835,2,835,835,835,835,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1129,2,2,2,2,2,2,2,835,1129,1129,2,835,835,835,835,835,835,835,835,835,2,835,2,2,2,2,2,835,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1129}, + {2673,1823,1673,332,1828,100,1262,1108,863,2148,16,2861,123,2861,2861,2861,2,2,899,2893,2893,2,2,2,2,2,2,2,2,2,2,2,2893,4061,4061,2,2,2893,2,2,2,2,2,2,2893,2893,2893,2893,2893,2,2,2,2893,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4061,2,2,2,4061,4061,2,4061,2,2,2,2,2,2,4061,2893,2,2,2893,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3713,1569,2869,1783,2294,613,2857,2210,1851,2060,710,3457,662,2079,2344,3094,1761,1466,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1761,1761,1761,1761,1761,1761,1761,1761,2,2,2,2,2,2,2,2,2,2,2,2,485,485,2,2,2,1761,1761,485,485,485,485,1761,1761,1761,1761,1761,1761,1761,1761,1761,2,2,2,2,2,2,2,2,2,1761,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,485,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1761,2,2,2,1761,1761,1761,1761,1761}, + {3554,3047,2524,365,4249,2531,430,3815,301,1103,1159,3122,70,203,2448,2448,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3458,1992,2688,355,1542,1642,1448,371,805,1593,1593,924,924,198,198,3602,390,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3053,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3053,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3053,3053,2,3053,2,2,2,2,2,2,2,2,3053,2,2,3053,3053,3053,3053,2,2,2,2,2,2,3053,3053,3053,3053,3053,3053,2,2,3053,3053,3053,3053,2,1533,1533,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1533,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3735,1183,2701,1627,2274,384,2540,1176,457,2678,4107,27,27,27,3857,3857,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,101,101,101,101,101,101,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,101,101,2,2,2,2,2,2,1632,1632,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1632,2,2,1632,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1632,1632,2,1632,1632,2,2,2,2,2,2,2,2,2}, + {4034,1737,713,630,1446,1119,1569,311,311,1603,570,297,523,2099,2099,2099,2,2,2,2,2,2,2,2,2,2,2,2,2,1747,1747,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1747,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1747,1747,1747,1747,2,2,2,2,2,1747,1747,1747,1747,1747,2,2,2,2,2,1747,1747,1747,2}, + {2852,1709,2792,619,1259,436,118,1947,4133,594,875,69,181,840,948,2555,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3703,909,3204,468,3987,486,1684,2060,1723,2755,1255,455,276,1639,1639,307,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2141,2,2,2,2,2,2,2,2,2,2,2,2141,2141,2,2141,2141,2,2,2,2,2,2,2,2,2,2141,2141,2141,2,2,2,2,2,2,2141,2,2,2,2,2,2,2,2141,2141,2,2,2,2,2,2141,2,2141,2141,2,2,2,2,2,2,2141,2,2141,2,2,2,2,2,2,2,2,2,2,2,2141,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2861,1407,1848,245,2186,1209,164,2577,625,132,657,2333,2333,2213,2213,2213,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1823,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,591,2,2,591,1823,2,2,2,926,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,926,1823,1823,1823,1823,1823,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3586,1682,414,683,2259,102,3055,2722,74,1814,1814,3582,110,116,970,779,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2192,2192,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2192,2,2,2192,2,2,2,2,2,2,2,2,2,2,2,2,2192,2192,2,2,2,2192,2192,2192,2192,2192,2192,2192,2192,2192,2,2,2,2192,2192,2192,2192,2192,2,2,2,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,400,400,400,400,2192,2192,2192,2192,2192,2192,2192,2192,2069,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2,2192,2029,2029,2029,2029,2029,2029,2029,2192,2192,2192,2192,2192,2192,2192,2192,2192,2192,2029,2029,2029,2029,2029,2192,2192,2,2192,2192,2029,2192,2192,2192,2192,2192,2069,2069,2069,2069,2069,2069,2069,2069,2069,2069,2069,2069,2069,2029,2069,2069,2192,2192,2192,2192,2,2,2069,2069,2192,2069,2192,2571,2571,2192,2192,2192,2192,2192,2192,2192,2192,2192}, + {2967,3127,2698,2547,2618,3281,1906,796,2265,3752,44,2657,1535,1535,2657,2657,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,327,327,327,327,2,2,2,2,1027,1027,2,2,2,1027,1027,2,2,2,2,327,327,2,2,2,2,327,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,832,2,832,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,832,2,2,2,2,2019,2379,2379,2379,832,2019,2019,2,832,832,832,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,327,2,2,2,327,327,327,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,832,2,2,2,2,2,832,2,2,1027,2,2,2,2,2,832,2,832,2,2019,2}, + {4020,3512,326,1782,2738,298,2949,376,1624,1085,329,1161,2014,2014,369,3628,2,2,878,878,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2889,2889,2889,2,2,2,2,2,2,2,2,2,2889,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2889,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2889,3231,3231,3231,3231,3231,2,2,2889,2889,2889,2,2889,2,3231,3231,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,878,878,2,878,878,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4096,1167,2529,1528,1143,960,1993,15,119,795,1064,1064,2835,2367,3836,3836,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,847,847,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,847,847,847,847,847,847,847,847,847,847,2,2,2,2,847,847,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2703,3042,1879,490,418,3773,3382,1756,2631,1500,4288,1530,2180,2180,652,652,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2191,2,2,2,2191,2,2,2,2191,2,2,2,2191,2191,2191,2191,2191,2,2191,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2966,2966,2,2,2,2,2,2,2966,2,2,2,2,2,2,289,2784,2,289,2,2,2,2,2,2,2784,2,2784,2784,2784,2784,2,2,2,2,2,2966,2966,2966,2966,2966,2,2966}, + {3715,1366,2348,1698,1521,1521,2348,584,584,2102,3667,1917,592,2363,2363,2363,2363,2363,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3083,1034,2,2,3083,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2137,2,2,2,2,2,2,2,1034,2,2,2,2,2,3083,2137,2137,2,2,2137,2137,2137,2137,2137,2137,3318,2137,2,2,2,2,2,2137,2,2137,392,392,2,2,2,2137,2137,1700,2,2,2,3083,3083,2,2137,2,3083,2,2,2,2,1034,1034,1034,2,2,2,2,2,2,2,2,2,2,2,1700,3083,3083,2,3083,1700,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,1034,2137,2137,2,2,2,2,2,1199,1199,1199,1199,1199,2,2,2,1199,1199,1199,77,2,2,1034,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3083,3083,1034,1034,1034,1034,1034}, + {2646,2049,300,479,1950,1168,789,1246,238,860,3202,1238,165,3078,1948,2957,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,99,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1555,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2876,3171,3052,820,344,277,2596,748,2791,3647,102,2053,2053,2464,2464,2356,2,2,2,2,2,2,2,2,2,2,2,1501,1501,1501,2,2,2,1501,1501,2,1501,1501,2,2,2,2,1501,1501,1501,1501,336,336,336,336,336,336,336,2516,1501,2516,2516,336,2516,2516,1501,1501,1501,1501,1501,1501,1501,1501,1501,1501,1501,1501,1501,1501,1501,1501,1501,1501,336,336,336,336,1501,336,336,336,2516,2516,2516,2516,2516,2516,2516,2,2516,2516,2516,2516,2516,2,2516,2516,2,2,2516,2516,2,2,2,2516,2516,2,2,2516,2516,2,2,2,2516,2516,2516,2516,2516,2516,176,2516,2516,2516,2,2,176,176,1501,336,336,336,336,336,2,336,2231,2,2,2,2,1501,1501,2516,2516,2516,2516,2516,2516,2516,2516,2516,2516,2516,336,1501,2516,336,2516,2516,336,336,336,336,336,2,336,336,336,336,336,2,336,336,336,336,336,336,336,336,336,2516,2,336,2,336,336,336,2,2,2,2,2,2,2,2,2,336,2,2,2,2,2,336,336,336,336,336,336,336,336,176,176,176,176,176,176,336,336,336,176,176,176,2,2,336,336,2,2,2,336,336,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2909,2526,2521,897,489,3799,1599,1316,848,1788,2192,1082,735,533,1397,1397,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1533,1533,2,2,2,2483,2,2,2,2,2,2,2,2,2,2,2,1533,1533,1533,2,2,2,2,2,2,2483,2,2,2483,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2483,2483,2,2483,2483,2483,2483,2,2,2,2,2,2,2,2483,2,2,2,2,2483,2483,2483,2483,2483,2,2,2483,2483,2,2483,2483,2,2,2,2,1533,2,2,2,2483,2,2,2,2483,2483,2483,2483,2483,2483,2483,2,2,2,2,2483,2483,2,2,2,2,2483,2483,2483,1533,1533,2483,2483,2483,2483,2,2483,2483,2483,2483,2483,2483,2483,2483,2483,2483,2483,2483,2483,2483,2483,2483,2483,2483,2483,2483,2483,1533,2483,2483,2483,2483,2483,2483,2483,2483,2483,2483,2483,2483,2,2483,2,2,2,2483,2483,2,2483,2,2,2,2,1533,2}, + {2908,880,2377,2070,175,2199,2074,585,81,2646,3447,565,99,4735,4165,4165,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,995,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,995,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,995,995,995,995,995,995,995,995,995,995,995,2,2,995,995,995,2,995,3460,995,2,2,995,995,2,2,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995,995}, + {2883,3203,1862,572,2683,4862,130,173,832,825,195,1184,2151,2151,60,1063,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1321,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,311,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1321,1321,2,2,2,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,1321,2,2,2,2,1321,1321,2,2,2,2,2,2,2,2,2,1321,1321,2,2,2,1321,2,1321,2,2,2,2,1321,1321,1321,2}, + {2738,2414,2332,135,1239,507,1909,1026,629,1075,297,247,2209,2585,2704,682,2077,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2077,2077,2077,2077,2,2,2,2,2,2,2077,2077,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2077,2077,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2077,2077,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2077,2077,2077,2077,2077,2077,2077,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2077,2077,2077,2077,2077,2077,2,2077,2077,2077,2077,2077,2077,2077,2077,2077,2,2,2077,2077,2077,2,2,2,2,2,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,133,133,133,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,133,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077,2077}, + {2927,1924,419,310,309,1727,394,19,1212,95,3764,2221,2221,642,1452,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2656,1922,1914,585,636,1819,668,479,2085,3809,739,693,2308,529,647,647,2343,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,939,2,2,2,2,939,2,2,939,939,939,939,2,2,939,939,939,939,2,939,939,939,939,939,939,939,939,939,939,939,939,2,2,2,2,939,939,939,939,939,939,939,2,939,939,2,2,2,2,939,939,2,939,939,2,2,2,939,939,939,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,939,939,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,939,2,2,939,2,939,2,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,2,2,2,2,2,939,939,939,939,939,939,939,939,939,939}, + {2908,887,2514,568,547,2994,465,1913,1522,1029,4149,1585,1585,224,1600,2,2103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1836,1836,2,1836,1836,1836,2,2,2,2,2,2,2,2,3109,2,2,2,2,3109,3109,2,3109,3109,1836,3109,3109,3109,3109,2,2,2,2,3109,1836,3109,2,1836,2,2,3109,3109,3109,2,2,2,2,1836,2,2,1836,1836,1836,1836,2,1836,3109,2,2,2,2,1836,2,2,2,2,1836,1836,1836,1836,1836,1836,2,2,2,2,3109,1836,1836,1836,3109,3109,3109,3109,3109,3109,3109,1836,3109,3109,3109,3109,3109,3109,3109,3109,3109,1836,2,3109,3109,3109,1836,1836,1836,3109,2,3109,3109,3109,3109,2,2,1517,4418,4418,4418,128,3109,3109,1836,3109,3109,3109,3109,3109,3109,1836,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,1836,1836,1836,1836,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,1836,1836,1836,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,3109,1836,1836,1836,440,3109}, + {2941,1122,3674,2894,3555,865,1461,1236,1571,4709,103,737,667,1446,3578,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2786,819,1803,1811,1615,2270,1788,311,3586,175,854,733,240,2390,506,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1519,1519,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2757,1597,915,3952,276,2516,3009,1503,2377,795,2023,1374,367,1374,942,2,2797,2797,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,846,2,965,2,2,2,2,2,2,2,2,2,2,2,2,2,1811,1811,1811,1811,1811,2,1811,2,2,846,2,2,2,2,846,846,846,846,846,846,1811,846,846,2,2,1811,1811,1824,2,2,2,2,2,2,2,965,965,2,1811,1811,1811,2,2,1811,1811,1811,1811,965,965,965,965,965,1811,1811,1811,1811,1811,2,846,2,2,2,2,1811,1811,2,2,2,2,2,2,2,2,846,2,846,846,1811,1811,2,2,2,2,2,1824,1811,1811,2,2,846,846,846,1824,846,846,965,2,2,965,2,2,2,2,2,2,1811,1811,2,2,1811,1811,1811,1811,1811,1811,2,846,2,2,846,846,1824,2,2,2,2,1811,1811,1824,1824,1824,1824,1824,1824,1824,1811,1811,2,2,2,2,965,1811,1811,1824,1811,1811,1824,1824,1811,846,846,846,1824,1824,1824,846,846,846,1824,1811,1811,1811,1811,1811,1811,1811,1811,1811,846,846,1811,846,1824,1824,1824,1824}, + {3822,544,1206,198,2240,2304,436,470,1554,480,1004,684,684,1447,857,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2641,2641,2641,2641,2641,2641,2,2641,2641,2641,2641,2641,2641,2641,2,2641,2641,2,2641,2,2,2641,2641,2,2641,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2641,2641,2641,2,2,2641,2641,2,2641,2641,2,2,2,2,2,2,2,2,2,2,2,2,2641,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2065,2065,2065,2065,2065,2065,2065,2065,2065,2065,2065,2065,2065,2,2,2,337,2641,2641,2641,2,2,2641,2641,2641,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2641,2641,2641,2641,2641,2641,2,1286,2641,2,2,2,2,2,2,2,2641,2641,2641,2641,2641,2641,2641,2641,2641,2641,2641,2641,2641,2641,2641,2641,2641,2641,2641,2641,1286,1286,1286,1286,2641,2641,2641,2641,2641,2641,2641,2641,2641,2641,2641,2641,2641,2641,2641}, + {3037,2253,481,1560,1445,662,1851,646,1118,483,1026,3500,1610,1020,1569,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2835,2835,2835,2835,2835,2,2,2795,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2795,2835,2795,2795,2,2795,2,2,2,2,2,2,2795,2795,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2795,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2795,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2795,2795,2,2795,2,2,2,2,2,2795,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3713,1290,2595,2244,1373,567,1413,2920,2171,2125,1438,1438,1521,325,195,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1197,1197,2,1197,2,947,2,947,1197,1197,2,1197,1197,1197,2,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,2,2,1197,1197,1197,1197,1197,1197,2,2,1197,2,1197,2,1197,1197,1197,1197,1197,1197,947,947,947,947,2,2,2,1197,1197,1197,1197,2,2,2,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,2,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197}, + {3817,3054,2707,854,1986,902,1940,712,1172,1792,725,1060,1906,1173,1173,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2783,2783,2,2,2,2,2913,2,2,2,2,2783,2913,2783,2,2913,2913,2,2783,2783,2,2,2,2783,2783,2783,2783,2913,2783,2913,2913,2913,2913,2913,2913,2913,2783,2783,2783,2783,2783,2783,2,2,2783,2783,2,2,2783,2913,2783,2783,2783,2783,2783,1648,1648,1648,1648,1648,1648,1648,2913,2783,3834,2783,2783,2783,2783,2783,2783,3834,3834,3834,3834,2783,2783,2783,2783,2783,2783,2783,2783,2783,2783,2913,2913,2783,2,2,1440,1440,1440,2,2,2,2,2,2,3834,2,3834,3834,3834,2913,2913,2913,2,2783,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2783,2783,2,2,2,2,2,2913,2913,2913,2913,2913,2,2,2,2,2783,2783,2,2,2,2783,2783,2783,2783,2783,2,2783,2783,2783,3834,3834,2783,2783,2783,2783,2783,2783,2783,2,2783,2783,2783,2783,2,2,2,2783,2,2783,2783,2783,2,2,2,2783,2783,2783,2783,2783,2,2783,2783,2783,2783,2783,2783,2783,2783,2783,2783,2783,2783,2783,2783,2783,2783,2783,2783,2783,2783,2783,2,2783,2783,2783,2,2}, + {3850,1354,2055,1817,836,816,1573,1220,2033,1981,675,3143,3056,2729,2603,2,2,2,2,1689,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1210,1210,1210,2,1210,1210,1210,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1210,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1210,2,2,2,1210,2,2,2,2,2,2,2,1210,2,2,2,2,2}, + {2784,1092,1665,1465,4427,67,1038,1041,215,13,1066,1719,239,183,3253,2,2,2,2,2,2386,2386,2386,2,1190,2386,2,1190,1190,2,2,2,1190,1190,1190,1190,2,2,2,1190,1190,2,2386,1190,2386,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1710,1190,2,2,2,1190,2,1190,1190,2,1190,2,2,2,2,1190,1190,1190,1190,2,2,2,2,2,1190,1190,2,2,2,2,2,1190,1190,2,2,2,2,2,2,2,2,2,2,2,1190,1190,2,2,2,2,2,2,2,2,1190,1190,1190,2,2,2,2,2,2,2,2,2,2,2,2,1190,1190,1190,1190,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1190,1190,1190,1190,1190,1190,1190,2,2,2,1190,2,2,2,789,1190,1190,2,2,2,2,2,1190,1190,2,2,2,1190,1190,1190,2,2,1190,2,2,2,1190,1190,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1190,1190,2386,2386,2,2,2,2,2,2386,2386,2386,2386,2386,2,2,2386,2386,2,1710,2,2,1190,1190,2,2,1190,1190,1190}, + {2957,2072,1889,972,2900,2193,2533,150,1468,459,459,982,422,2027,2027,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3071,3016,1170,3432,1426,816,1935,110,787,1891,1338,2533,3141,851,3040,2,2,2,2,2,2,2,2,2,2,2,2,3143,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2312,1890,3591,553,532,2974,1292,4516,4456,875,3883,135,1944,1680,1680,2,2,1533,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1771,2,1771,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1771,2,2,2,1771,1771,2,2,2,2,2,2,1771,1771,1771,1771,1771,1771,1771,2,2,2,2,2,1771,1771,1771,2,2,2,2,2,2,2,2,2,2,2,1771,2,2,2}, + {2827,1081,795,1356,1066,516,2526,25,1481,1481,2438,2438,1230,110,756,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3929,1885,555,1295,141,2892,885,422,4016,43,1671,536,774,1219,1219,2,2,1167,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2367,2367,2,2,2367,2367,2,2367,2,2,2,2,2,2,2367,2,2,2,2367,2367,2,2,2367,2367,2,2,2367,2,2,2,2,2367,2,2367,2925,2925,2,2,2,2,2367,2,2,2,2,2,2,2367,2367,2367,2367,2367,2367,2367,2367,2,2367,2367,2367,2367,2,2,2,2,2,2367,2367,2367,2367,2367,2,2,2,2367,2367,2367,2367,2367,2367,2367,2367,2367,2367,2367,2367,2,2,2,2,2,2,2925,2367,2367,2367,2367,2367,2,2,2,2367,2367,2367,2367,2367,2367,2,2,2,2,2925,2925,2925,2925,2925,2925,2925,2925,2925,2367,2367,2367,2367,2367,2367,2367,2907,2907,2367,2367,2367,2,2367,2367,54,2367,2367,2367,2367,2367,2925,2367,2925,2925,2367,2367,2367,2367,2367,2367,2367,2367,2367,2925,2925,2925,2925,2925,2367,2367,2925,2367,2,2367,2367,2367,2367,2367,2367,2,2367,2367,2367,2367,2367,2367,2367,2367,2367,2,2,2367,2367,2367,2367,2367,2367,2367,2367,2907,2907,2907,2,2,2,2367,2367,2,2367,2367,2925,2925,2925,2,2,2,2,2925,2367,2367,2925,2367,2367}, + {3740,2476,4480,2009,1139,3887,1813,1090,587,1480,688,1392,925,3285,2521,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,991,2,214,2,991,991,991,2,2,2,2,2,2,2,2,2,2,2,214,214,214,214,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2419,2,2419,2419,2419,2419,2419,2419,2,2,2,1822,1822,1822,1822,2,2,2419,2419,2,2,2,2,2,2,2,2,2419,1822,2,1822,1822,2,1822,2419,2,2419,2419,2419,2419,2419,214,2,1822,2,2,2,1822,214,2419,2419,2419,2419,2419,2419,2419,2419,2419,2419,1822,2,2,1822,214,214,2,2,2,2419,2419,2419,2,2,2,214,214,991,991,991,991,991,991,991,991,214}, + {3893,2617,1958,2430,111,131,3612,960,2822,1651,3680,1718,3985,3105,3105,2,1407,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,721,721,2,2,2,2,2,2,2,2,2,2,2,721,721,2523,721,721,721,2,2523,721,2,721,721,721,2,721,721,721,721,721,721,721,721,721,721,721,721,721,2523,721,721,2,2,721,2,2,2,721,721,721,721,721,721,721,721,2,2,2,2,2523,2,2,721,721,2,721,721,2,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,2523,2,2,721,721,721,2,2,2,2,2,721,721,721,721,721,721,2,2,2,2,2,2,2,2,2,2,2,2,2,721,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2523,2,2,2523,721,721,721,2}, + {4220,2077,1066,4432,821,1617,1025,2112,3111,842,3421,2571,2571,272,272,2,3721,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3663,3663,3663,3663,3663,2,2,3663,3663,2,2509,2,2509,2509,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2509,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3663,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4281,1769,1413,381,1071,3091,2349,3044,2706,1888,350,1794,4058,521,2799,2,88,2,2,2,2,2,2,760,760,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,760,760,2,2,760,760,760,760,760,760,760,760,760,760,2,2,760,760,760,2,2,760,2,760,760,760,760,760,2,2,2,2,2,2,2,2,2,760,760,760,760,760,760,760,2,767,767,767,803,803,803,760,760,760,2,2,2,2,2,2,760,760,2,803,767,767,767,767,767,2,2,767,767,760,760,760,760,760,760,760,760,3481,3481,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,3481,3481,3481,3481,760,760,760,418,418,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,767,2,2,2,3481,3481,3481,3481,3481,2,2,3481,685,685,760,2,3481,3481,3481,3481,3481,3481,3481,3481,3481,3481,3481,3481,3481,3481,3481,767,767,760,3481,3481,767,767,767,767,767,767,767,767,767,767,767,767,767,767,3481,3481,767,767,767,767,3481,3481,3481,3481,3481,3481,3481,3481,3481,3481,3481,3481,3481,3481,3481,3481,3481,3481,3481,3481}, + {3044,903,2580,421,1005,3176,993,1860,1266,764,1719,696,2157,16,537,2,696,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,925,2,2,2,2,2,2,925,925,2,2,2,925,2,2,2,2,925,925,2,2,925,925,925,2,2,2,2274,2274,2274,925,925,925,925,2,925,925,925,2,4465,4465,2,2,2,925,925,2,2,2,925,925,2,2,2,2,2,2,2,2,2,2,2,2,2274,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3793,1510,4182,3018,280,1377,1215,2989,2326,364,1120,2103,2465,1295,1295,3252,3252,2,2,2,2,2027,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2027,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3778,2242,2108,1380,1643,2739,1533,1053,59,2127,778,2679,2679,2679,1324,1330,296,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1729,1729,2,2,2,2,1729,1729,1729,1729,1729,1729,1729,2,1729,1729,1729,2,2,1729,1729,1729,1729,1729,2,2,2,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,2,2,1729,1729,1729,1729,1729,1729,2406,2406,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,2908,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,1729,2,2,2,2,2,2,2,2,2,2,2,1729,1729,1729,2,2,2,1729,2,2,2,2,2,2,1729,1729,1729,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3118,728,620,1332,409,4537,668,2938,443,738,1562,616,642,423,811,811,1590,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2849,3597,1986,3387,3239,1197,4305,2790,639,2883,164,3397,2905,2849,4119,3660,2359,3485,3485,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3311,2,2,2,2,2,2,2,3311,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3311,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3311,2,2,3229,2,2,3229,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3229,2,2,2,3229,3229,3311,3229,2,2,3229,2,2,2,2,3229,2,2,2,3229,3229,2,2,2,2,3229,3229,2,2,3229,3311,2,2,2,3229,3311,3311,3311,3229,3229,3229,3229,3229,3229,3311,3311,3311,3311,3229,3229,3229,3311,3311,3311,3229,2,2,3229,3229,3229,3229,3229,3229,3229,3229,3229,3229,3229,3229,3229,3229,3229,3229,3229,3229,3229,3229,3229,3229,3311,3311,3229,3229,3229,3229,3229,3229,3229,3311,3229,3229,3229,3229,3229,3229,3229,3229,3229,3229,3229,3229,3229,3229,3229}, + {4279,1202,2743,1390,117,400,1525,1642,1013,3177,445,1524,227,3847,3161,1319,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,889,889,2,2,2,889,631,631,631,889,889,889,889,889,889,889,2,2,2,2,2,2,2,2,2,889,889,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2889,2748,1621,1037,2858,797,3236,4003,1111,562,1801,465,465,930,1644,934,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2083,2083,2,2,3267,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2083,2083,2083,2083,2,2,2,2083,2083,2083,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2083,2,2,2,2,2083,2083,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2083,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2083,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2083,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3967,1825,792,1863,2341,632,214,1720,274,387,2240,382,1508,571,705,776,3045,3045,2,2,2,2,2,2,2,2,2,2,2,2,2,4677,2,4677,2,2,2,2,2,2,2,2,2,3054,3054,3054,2,2,3054,3054,2,2,2,2,2,2,2,2,2,3054,2,2,2,3054,2,2,3054,3054,2,2,2,2,2,2,3054,3054,3054,2,2,2,2,2,2,72,3054,72,2,3054,2,2,2,3054,3054,3054,3054,3054,3054,3054,3054,3054,3054,3054,3054,3054,2,2,2,3054,3054,3054,3054,3054,3054,3054,3964,3964,3964,2,2,2,2,2,3054,2,2,2,2,2,2,2,3054,3054,3054,2,2,2,2,72,72,72,72,72,72,2,3964,3964,2,2,4677,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3964,2,3964,3964,3964,3964,3964,3964,3964,3964,2,3964,3964,3964,2,2,3054,72,4677}, + {3086,2303,2196,3389,1223,1070,3437,4307,690,919,2013,2640,954,954,816,2209,2,680,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,305,305,305,305,305,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,680,680,680,2,680,680,2,680,680,680,680,680,680,680,680,680,680,680,680,2,680,680,2,680,680,680,680,2,2,2,2,2,680,680,2,2,2,2,680,680,680,680,680,680,680}, + {3979,2529,771,1317,685,1603,2910,3278,539,2573,728,501,1044,1002,2004,1002,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3185,3185,2,2,2,2,2,2,2,2,2,2,2,2,2,3185,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3185,3185,3185,3185,3185,2,2,3185,3185,3185,3185,2,2,2,2,3185,3185,3185,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3185,3185,2,2,2,2,2,2,3185,2,2,2,2,3185,2,2,2,2,3185,2,2,3185,3185,3185,2,3185,3185,3185,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4309,2339,547,854,1172,522,1792,473,795,2158,981,1685,1685,1685,1685,1685,1588,1588,1588,2,2,2,2,2,2,2,1808,1808,2,2,2,1808,2,2,2,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,2,1808,1808,1808,1808,1808,1808,2,1808,2,1808,1808,2,2,2,216,2,2,1808,1808,1808,1808,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1808,1808,2,2,2,502,502,1808,2,2,2,2,216,2,2,216,216,216,216,1808,2,2,2,1808,2,2,1808,2,2,2,1808,1808,2,2,2,1808,1808,1808,216,1808,1808,1808,1808,2,2,1808,1808,1808,216,1808,1808,1808,2,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,1808,2,1808,2,1808,2,2,2,1808,2,1808,1808,1808,2,1808,2,2,2,2,2,2,2,1808,1808,1808,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,216,2}, + {2914,2810,976,986,1009,170,337,4358,2455,3232,648,648,1708,161,161,1205,2,2,2,2,2,2,2,2,2,2,2963,2,2,2963,2963,2963,2,2,2,2,2,2,2,2787,2787,2963,2787,2,2787,2787,2,2,2,2,2,2,2787,2787,2787,2,2,2787,2963,2,2,2,2,2,2,2787,2787,2,2,2,2,2,2,2,2787,2787,2,2787,2,2,2,2,2,2,2,2,2,2787,2787,2,2,2787,2,2,2,2,2,2,2,2,2787,2787,2,2,2,2,2,2787,2787,2787,2787,2787,2787,2787,2787,2787,2,2,2787,2787,2787,2787,2787,2787,2787,2787,2787,2787,2787,2787,2,2787,2787,2787,2787,2,2787,2,2787,2,2787,2787,2,2,2,2,2,2,2,2787,2787,2,2787,2787,2787,2787,2787,2,2,2,2,2,2787,2787,2787,2787,2787,2787,1220,1220,1220,2787,2787,2787,2787,2787,2787,2787,2026,2026,1220,2,2,2,2787,2787,1220,2787,1220,1220,1220,1220,1220,1220,2787,2787,2787,2,1220,1220,2787,2787,2787,2787,2787,2787,2787,2787,2787,2787,1220,2787,2026,2026,1220,2026,2026,2026,2026,2787,2963,2963,4161,2787,2787,2787,2787,1220,1220,1220,2787,2787,2787,2787,2787,1220,1220,1220,1220,1220,1220,1220,4161,1220,2512,2512,2787,2787,2787,1220,2787,1220,1220,1220,1220,1220}, + {2919,2029,2784,1475,3857,413,3489,327,439,1429,119,930,198,222,3409,3392,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3836,1091,2137,3008,2859,1937,2540,2048,2657,1786,60,4519,2935,3585,1117,1117,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2931,1188,4468,518,1131,335,958,2312,4013,1466,1026,824,2024,2024,3130,869,2,2,2,2,2,2,1540,909,909,1277,2,2,909,909,909,909,909,845,1277,909,909,1277,1277,2,1277,1277,1277,2,2,433,2,2,2,2,2,2,909,909,909,909,909,2,2,909,2,909,2,2,909,909,2,2,2,2,2,2,2,433,2,2,2,2,2,433,2,2,2,909,2,2,909,909,2,2,2,1277,1277,2,1277,1277,1277,1277,2,1277,1277,1277,2,1277,1277,2,2,1277,1277,1277,2,2,2,1277,1277,1277,1277,1277,1277,1277,2,2,2,2,909,1277,1277,1277,1277,1277,1277,1277,1277,1277,1277,1277,1277,1277,1277,1277,1277,1277,1277,1277,909,1277,4235,4235,4235,4235,1277,1277,1277,1277,1277,1277,2,1277,1277,2,2,2,2,1277,1277,1277,2,1277,1277,2,2,2,2,2,2,2,2,2,1277,2,2,2,1277,2,2,2,2,2,1277,1277,2,909,909,1277,2,2,2,2,1277,1277,2,1277,1277,2,2,2,2,1277,1277,1277,1277,2,2,2,2,909,909,909,909,909,909,909,909,909,909,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4061,2448,1182,361,2559,331,117,1934,2666,2443,972,2592,644,1577,1283,1283,2,2,2360,2360,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4003,2758,3675,2506,2313,547,1993,1923,3153,998,1718,3236,3236,4393,4393,4393,2,2,2,2,2029,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1955,2,2,2,1955,1955,1955,1955,2,1955,1955,2,2,2029,2029,2,2,1534,2,2,2029,2029,1955,2,2,2,2,1955,1955,2029,1955,1955,1955,1955,2,2,2029,2029,2029,2,2,2029,1955,1955,2,1955,1955,2029,2029,2029,2029,2029,1955,2029,2029,2029,2029,2029,1955,2,2,1955,1955,1955,1955,1955,1955,1955,2029,1955,1955,1955,1955,1955,1955,1955,1955,1955,1955,1955,1955,1955,1955,1955,1955,1955,1955,2029,1955,1955,1955,1955,2029,1955,2029,2029,2029,2029,2029,2029,2029,2029,2029,2,2,2029,2029,2029,2029,2029,2029,2029,2029,2029,2029,2029,2029,2029,1955,2029,2,2,2,2,2,2,2,2029,2029,2,2,2,2,2,2,2,2029,2,2,2,2,2,2,2029,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3865,1665,1709,3099,1335,924,2281,2239,244,2497,24,2006,1364,1364,1071,1675,2,2,2,2,2,2,2,2,2,2,2,2,2,722,722,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1264,1264,1264,1264,1264,1264,1264,1264,1264,2790,2790,2,2,2,2,2,2,722,722,722,722,722,722,722,722,2790,2790,2790,722,722,722,722,2,722,722,2,722,2,2,722,722,2,2,2,2,2,2,2,722,722,38,722,722,722,722,722,722,722,722,722,722,2365,722,722,722,2790,2790,722,722,2,722,2,2,2,722,722,2,2,1526,1526,1526,2,2,2,2790,2790,2,722,722,722,722,722,722,722,722,722,2,2,2,2,1264,2,2,2,2,2,1526,1526,2,2,1526,1526,2,2,2,2790,2,2,2,2790,2790,2790,2790,2790,2790,2790,2790,2,2,2,2,2,722,722,2,2790,2,2,2,2790,2790,2790,2,2,2,2,2,2,2,2,722,2,2,2,2790,2790,2,2,2,2,2790,2790,722,2,1526,1526,1526,1526,722,722,2,2,722,722,722,2,2,2,722,722,722,722,722,722,722,722,2,2,2,2,2,2,2,2,2,2,2}, + {3117,2133,1835,2144,758,3030,2342,609,1867,702,1924,3379,607,2939,1240,473,3178,3178,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3178,3178,3178,2,2,3178,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2606,2606,2606,2606,2606,2606,2606,2,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,1009,2,2606,2606,2606,2606,3178,2606,2606,2606,2606,2606,2606,2606,2606,2606,1009,1009,1009,1009,2606,2606,1488,2,2,2606,2606,2606,2606,2606,2273,2606,2606,2606,2606,3178,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,1009,1009,2606,1009,1009,2606,1009,2606,1009,2606,2606,2606,2606,1009,2606,2606,1009,1009,1009,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,2606,1009,1009,2606,2606,2606,2606,2606,2606,2606}, + {2960,1023,3429,2869,274,476,2469,2574,694,2021,3344,3052,4080,2918,2176,101,2741,2741,2,2,2,2,1056,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4029,3266,4148,1744,5028,220,1274,3538,1038,2060,102,803,2841,3030,2346,283,805,805,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2318,2318,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3926,1121,661,2102,238,1768,1074,632,2422,1627,1627,1734,2298,574,2629,4123,2628,2,2,843,843,843,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1988,2,2,2,2,1988,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3927,2090,603,1313,3378,133,915,200,2193,486,2989,4632,2383,2383,2383,944,944,2,2,2341,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2341,2341,2,2,2,2,2,2,2,2,2,2,319,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,319,319,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2341,2341,2,2,2,2,2,2,2,2,2,2,2,319,319,2,2,2,2,2341,2341,2,2,2,2,2,2341,2341,2341,2341,2341,2341,2341,2341,2341,2341,2341,2341,2341,2341,2341,2341,2341,2341,2341,2341,2341,2341,2341,2341,2,2,2341,2341,319,319,319,319,319,319,319,2341,2341,2341,2341,2341,2341,2341,2341,2341,2341,2341,2,2341,2341,2341,2341,2341,2341,2341,2341,2341,2341,2341,2341}, + {3151,2448,2450,553,500,1174,1063,1150,1782,746,1624,5060,419,2,852,3115,330,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2847,2,2847,2847,2,2,2,2,2,2}, + {4124,4475,2691,816,164,1400,2574,2093,2607,2418,3275,411,2807,2436,2436,1871,1300,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3507,3507,2,3507,3507,3507,3507,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4063,771,1807,4122,831,1529,1979,1472,481,581,1011,123,2317,2,300,40,40,1670,1670,1670,1670,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,407,2,2,2,2,2,2,407,407,407,407,2,2,2,2,2,2,2,2,2,2,2,2,2,2,407,407,2,2,2,2,2,407,407,407,407,2,2,407,407,407,407,2,407,407,407,407,407,2,2,2,2,407,407,2,407,2,407,2,407,2,407,407,407,2,407,407,2,2,407,407,407,407,407,407,2,407,407,407,407,407,407,2,2,2,407}, + {2947,3808,1269,2495,3122,2381,1435,1247,288,953,5041,461,461,2,932,932,579,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1033,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,466,2,2,2,2,2,2,2,2,2,466,2,2,2,2,2,2,2,2,2}, + {2882,1818,3965,375,1684,2011,2654,4758,1735,4774,1834,912,912,2,167,2879,2879,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3330,3330,3330,3330,3330,3330,3330,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,659,391,2,2,2,2,2,2,2,659,659,659,659,659,2,2,2}, + {4103,1234,2410,2882,3267,2090,1213,615,1821,1645,1225,1542,3789,2,1578,1990,2840,1209,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,885,1177,1177,1177,1177,2,2,2,2,2,2,2,2,2,2,2,2,2,885,2,885,2,2,2,2,2,1177,1177,885,2,2,2,885,885,2,2,1177,1177,1177,885,2,2,2,2,2,2,2,2,2,1177,1177,2,2,2,1177,2,2,2,2,2,2,2,2,885,885,1177,1177,1177,1177,1177,2,2,2,1177,1177,1177,1177,885,885,885,885,885,885,2,2,885,885,885,885,885,885,885,885,885,1177,1177,1177,1177,2,1177,1177,1177,1177,1177,1177,1177,1177,2,1177,885,885,885,2,1177,1177,1177,2,1177,1177,1177,2,2,2,2,2,2,2,2,2,2,1177,2,2,2,2,2,2,2,2,1177,1177,2,2,2,2,885,885,2,2,885,1177,1177,2,2,1177,1177,1177,1177,1177,2,2,1177,1177,1177,1177,1177,1177,1177,1177,1177,1177,1177,814,814,1177,1177,1177,1177,1177,814,814,814,885,1177,1177,885,885}, + {2977,2211,1109,1245,4545,508,1234,1697,2354,3065,234,3101,3973,2,2,1301,1301,2405,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2405,2405,2405,2405,2,2,2,2405,2405,2,2,2405,2,2405,1040,2,2,1040,2405,2,2,2,2405,2405,2405,2,2405,2405,2405,2405,2,2,2,2,2405,2405,2405,2405,2405,2,2405,2405,2,2,2405,2405,2405,2405,2405,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2,2405,2405,2,2405,2405,2405,2405,2405,2405,2405,2405,2405,2,2,2,2,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2,2,2405,2405,2405,2,2,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,606,606,606,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2405,2,2,2405}, + {3957,2654,1394,1232,3151,735,557,2919,4475,134,3155,373,357,2,2369,2369,2369,2369,2369,2369,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3086,3086,2,3086,3086,2,3086,3086,2,2,2,2,2,2,2,3086,3086,2,2,3086,2,2,2,2,2,2,2,3086,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4525,1142,664,807,2035,1848,4105,1969,972,4246,1353,1405,1405,2,2,3387,2631,2631,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3149,2305,1769,836,2421,2534,3437,4108,1011,1939,2073,2421,3867,2,2,4271,4271,4271,1976,1976,2,1976,2,2,2,2,2,2,2,2,2,2,1976,1976,1976,1976,1976,2,1976,1976,1976,2,2,1976,1976,1976,1976,1976,1976,1976,1976,1976,1976,1883,1883,1883,1883,1883,1883,1883,1883,1883,3215,2,2,1976,1976,1976,1883,1883,2,2,2,2,2,3215,1883,1883,1883,1883,1883,1883,1883,1883,1883,3215,3215,3215,1883,2,1883,1976,1976,1883,1883,1883,1883,1883,1883,1883,1883,1883,1883,1883,1883,1883,1883,1883,1883,3215,3215,3215,1883,3215,3215,3215,3215,3215,2,2,3215,3215,3215,3215,3215,3215,1976,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,1883,1976,1883,3215,2,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,3215,1883,1883,2,2,2,2,2,2,1883,1883,2,878,878,878,878,878,878,878,878,878,878,878,2,2,1883,1883,2,1883,2,1883,1976,1976,2,2,2,2,2,2,1976,1976,2,1976,2,2,2,2,2,2,2,2,2,1976,1976,1976,1976,2,2,2,2,2,2,2,2,1883,2,2,1976,1976,1976,1976,1976,1976,2,2,1883,1883,2,1976,1976,1976}, + {3985,640,1503,3318,1146,365,2600,1834,2010,1058,335,4213,242,2,2,499,499,499,499,499,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4145,1636,3109,710,2245,2940,3513,2900,2396,1887,2137,3397,1126,2,2,2,3033,3071,3071,2,2,2,2,2,2,2,3071,3071,3071,3071,3071,3071,3071,3071,2,2,2,2,3071,3071,3071,3071,3071,3071,3071,3071,3071,3071,3071,3071,3071,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,542,542,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,542,542}, + {4000,1861,1086,427,245,1445,4145,1532,2038,2188,326,3180,848,2,2,2,4541,2270,3529,1085,2907,2,2,2,2,2,2,2,2907,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2907,2,2,2907,2907,2907,2907,2907,2,2907,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2907,2907,2907,2,2907,2,2,2907,2,2,2,2,2,2,2,2,2,2907,2907,2907,2,2,2,2,2,2,2,2,2,2,2,2907,2907,2,2,2,2,2,179,179,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2907,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2907,2,2,2,2,2907,2907,2907,2907,2,2907,2907,2907,179,179,179,179,179,179,2,2907,2907,2907,2,2,2,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2907,2,2,2907,2907,2907,2,2907,2907,2,2907,2907,2907,2907,2907,2907,2907,2907}, + {4141,2797,3009,4138,573,2805,2158,1116,3330,1879,332,2489,2489,2,2,2,2,1779,719,3236,2,3236,3236,2,2,2,3236,2,3236,3236,3236,3236,3236,2,2,2,2,2,2,2,2,3236,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3236,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3236,3236,2,2,3236,3236,3236,3236,2,2,3236,3236,3236,3236,2,2,3236,3236,3236,3236,3236,3236,3236,3236,2,3236,2,2,3236,2,3236,2,3236,2,2,3236,2,2,2,2,3236,3236,3236,2,3236,2,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236,3236}, + {4029,1132,524,2837,802,961,627,892,3173,809,837,1290,4920,2,2,2,2,2,1419,1419,1419,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3249,2480,4274,713,4323,5144,3733,3948,1815,2310,2943,4193,4193,2,2,2,2,2,3263,3263,3263,2,2,2,2,1022,1022,3263,3263,3263,3263,3263,3263,3263,2,3458,2,2,2,2,2,2,2,3458,3263,3263,3263,495,3458,2,2,2,2,2,2,2,2,2788,2788,2788,2788,2881,2881,2,3263,2881,2,3458,3458,3263,3263,3263,3263,3263,2,3263,2,2,3263,3263,495,2,2,3263,3263,3263,3263,2,2,3263,3263,3458,3458,3458,2,2,2,2,2,2,2,2,2,2,3263,3263,3263,3263,3263,3263,3263,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3263,3263,3263,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2096,2096,3263,3263,3263,3263,3263,3263,1022,2,495,495,495,2,1022,1022,1022,1022,3263,3263,3263,3263,3263,3263,2788,2,1022,3263,3263,2788,3263,3263,1022,3263,3263,3263,2,2,2,1022,3263,3263,3263,3263,3263,2881,2881,1022,3263,3263,2788,2788,1022,1022,1022,3263,3263,3263,3263,3458,3263,3263,495,495,495,3263,2,3263,3263,3263,3263,3263}, + {4048,2412,1756,924,1633,446,934,2031,2387,178,220,1936,1202,2,2,2,1937,2450,2450,2450,2,2,1675,2450,2,2,2,1675,1675,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1173,1173,1173,2,2,2,2,2,2,2,2,2,525,525,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,525,525,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,525,525,1173,1173,1173,1173,2,2,2,2,2,1173,1173,2,525,525,525,525,525,2,2,2,525,525,525,2,2,2,2,2,2,525,2,525,525,525,525,2,2,2,2,2,2,2,2,1173,1173,1173,2,2,2,2,525,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,525,525,2,525,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1173,1173,1173,2,525,525,525,525,525,525,525,525,525,525,525,525}, + {2963,2817,543,1151,326,2434,890,1958,104,104,3763,88,1444,2,2,2,2711,4019,4019,4019,4019,4019,2,2,2,2298,2298,2,2,2,2,2,2,2,2,2,2,2,2,2298,2,2,2,2,2298,2,2,2298,2298,2,2,2,2,2,2,2,2,2,2298,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2298,2,2,2,2,2,2,2,2,2,2298,2,2,2,2,2,2,2,2,2,2,2,2}, + {4058,2056,5016,3532,966,3023,3095,1597,161,293,3349,530,2470,2,2,2,1261,775,1061,2,1756,2,2,2,2,2,2,2,2,2,1756,1756,1756,885,2,1756,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1756,1756,1756,1756,1756,1756,1756,1756,1756,2,1756,1756,2,1756,1756,1756,2,2,2,2,1756,1756,1756,1756,1756,1756,1756,1756,2,2,1756,1756,1756,1756,1756,1756,1756,1756,1756,1756,1756,1756,1756,1756,2,1756,1756,1756,2,2,2,2,2,1756,2,2,1756,1756,1756,2,1756,2,2,2,2,2,2,2,2,2,2,1756,2,2,2,2,2,2,2,2,1756,2,1756,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4253,3758,1702,2698,310,2361,929,642,3072,1046,573,5000,5000,2,2,2,886,760,364,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1179,1179,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,246,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,246,246,246,246,246,246,246,246,2,2,246,246,246,246,2,2,2,2,246,246,2,246,2,2,2,2,2,246,2,246,246,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,246,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3231,3353,4269,4866,3076,2434,761,208,3119,1209,1773,3363,3022,2,2,2597,1903,1495,2,2,689,2,2,560,560,560,560,2,2,2,560,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,105,2,2,2,2,2,2,2,2,2,105,105,105,105,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4221,724,426,529,1809,4609,1953,191,1416,668,2635,494,494,2,2,3247,3247,1535,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,673,673,2,2,2,2,2,2,2,673,673,673,673,2,2,2,673,2,2,2,2,2,673,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,673,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,673,673,2,673,673,2,2,2,2,2,2,2,2,2,673,673,673,673,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,673,673,673,673,673,673,673,673,2,673,673,673,673,673,673,673,673,673,673,673,2,673,673,673,2,673,673,673,673,673,2,2,2,673,673,2,2,2,2,673,2,2,673,2,673,2,2,2,2,2,673,673,673,2,2,673,673,2}, + {4093,3585,818,3430,1179,4367,1162,209,3785,2224,3241,1180,3875,2,2,801,2409,801,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,522,522,522,522,2,2,2,2,2,2,2,2,2,2,2,2,2,522,522,2,2,2,2,2,522,522,522,2,522,522,522,522,522,2,2,2,2,2,2,2,2,2,2,2,2,522,522,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4235,3546,3425,134,1242,949,598,3132,397,1314,2020,2838,1245,2,2,3559,3559,3559,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3630,3630,2,2,3630,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3630,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3630,3630,2,2,2,2,3630,3630,3630,3630,3630,3630,3630,3630,3630,3630,651,3630,3630,3630,3630,3630,3630,3630,3153,3153,3153,3630,3630,651,651,651,651,651,3153,3153,3153,3630,3630,2,3153,3153,3153,2,2,2,2,3630,651,651,651,2,651,2,2,2,651,651,3630,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3630,3630,3630,3630,3630,2,2,2,2,2,2,2,2,2,3630,2,2,2,3153,3153,2,2,2,651,651,651,2,3153,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2587,2176,3080,3000,1886,3313,4523,130,474,232,242,4700,3388,2,75,2220,2481,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3306,3306,3306,3306,3306,3306,3306,2947,2947,2947,2,3306,2,2947,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2947,2947,2947,2947,2947,2947,2947,2947,2947,2947,2947,2947,2947,2947,2947,2947,2947,2947,2947,2947,2947,2947,2947,2947,2947,2947,2947,2947,2947,2947,2039,2947,2947,2,2947,2947,2947,2,2947,2947,2947,2,2947,2,2,2,2,2,2,2,2947,2947,2,2,2039,2039,2039,2039,2039,2947,2947,2,2,2947,2947,2,2,2,3306,2,2,3306,3306,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2947,2947,2947,2947,2947,2947,2,401,401,401,2,401,401,3581,2,209,209,648,648,2,2,2,2,2,2,3581,2,2,3581,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4303,2053,3511,2890,1223,100,4246,2124,1137,3974,1840,1652,5119,696,435,435,435,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,435,435,435,435,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,435,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3108,2288,1189,1259,985,486,953,4524,3134,3684,883,2589,5237,2,780,780,780,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4106,703,1448,1245,2892,2305,490,4924,797,1130,140,1298,3585,2,3150,3150,3150,2,2,3383,3383,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3383,3383,3383,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3383,3383,2,2,3383,2,2,2,2,2,2,2,2,2,443,443,3383,3383,3383,3383,3383,3383,3383,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,443,443,443,2,443,443,443,443,2,2,2,2,2,443,2,2,2,2,2,2,2,3383,2,2,2,2,2,2,2,2,2,443,2,443,443,443,2,2,2,443,443,2,2,443,443,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,443,2,2,2,2,2,2,2,2,2,2,2}, + {4251,1365,1222,1793,1149,2572,5022,95,904,732,94,2017,2845,2845,2845,3613,1105,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4259,2030,795,440,2164,4790,1308,1880,1768,150,161,3148,1199,2099,972,753,753,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,889,889,2,2,2,2,2,2,2,2,2,2,2,2,889,2,2,2,2,2,2,889,2,2,2,889,889,889,2,2,2,2,2,889,889,889,889,889,889,889,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,889,2,2,2,2,2,2,120,120,889,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,120,2,889,889,889,889,889,2,2,2,120,120,120,889,889,889,2,889,889}, + {3094,2441,2347,1668,2733,2457,1097,3305,498,3614,1525,3660,1524,994,994,497,497,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,480,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,480,480,2,2,2,2,2,2,480,480,480,480,480,2,2,480,480,2,2,2,2,5227,5227,2,2,2,2,2,480,2,2,2,2,2,2,2,2,480,2,480,480,480,480,2,2,2,2,2,2,2,480,480,480,480,480,480,480,480,480,480,480,832,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5227,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,480,480,2,2,2,2,2,2,2,2,480,480,2,480,2,2,2,2,2}, + {4131,3529,3105,2584,2938,232,408,640,1759,3125,1292,3851,3652,1129,1792,1792,3881,3881,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,75,75,1018,2,75,75,75,75,75,75,75,75,75,75,75,75,2,2,2,2,2,2,2,75,75,75,2,2,2,2,2,2,2,2,2,2,2,2,1678,2,2,1678,2,2,2,2,75,75,75,75,75,75,75,75,75,75,75,75,1678,1678,1678,1678,1678,1678,1678,1678,1678,1678,1678,1678,1678,1678,1678,1678,1678,1678,1678,2,2,486,2,2,3889,3889,3889,3889,3889,3889,1678,486,3889,3889,3889,3889,3889,3889,75,75,2,2,2,2,2,2,2,2,2,2,2,1678,1678,1678,1678,1678,1678,1678,1678,1678,1678,1678,1678,2,2,1678,2,2,2,2,1678,2,2,2,2,2,2,1678,1678,1678,1678,1678,1678,2,1678,2,1678,1678,1678,1678,2,2,2,1678,2,2,2,2,2,2,1678,486,486,486,486,486,486,486,486,486,486,1678,2,486,2,2,2,3889,1678,1678,1678,2,2,2,1678,1678,1678,2,2,3889,2,2,2,2,2}, + {4307,3017,4154,1460,3163,489,751,4514,703,3418,3995,3815,1943,428,428,428,2,2,2,2,2,3410,3410,3410,2,2,2,2,2,2,2,2,3410,3410,2,3410,3410,2,249,249,3410,3410,3410,249,3410,2,2,3410,3410,2,3410,3410,3410,3410,3410,2,3410,3410,2,3410,3410,3410,2,249,2,2,2,3410,3410,3410,3410,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3410,2,2,3410,2,2,3410,3410,3410,3410,3410,3410,2,2,3410,3410,3410,2,3410,3410,3410,3410,3410,3410,3410,2,2,3410,3410,249,249,249,249,249,249,3410,3410,3410,2,2,3410,2,3410,3410,2,3410,3410,3410,3410,3410,3410,3410,3410,3410,3410,3410,2,3410,3410,3410,3410,3410,2,2,2,3410,2,2,3410,3410,3410,3410,2,2,3410,2,2,2,3410,3410,3410,3410,249,2,2,2,2,2,249,249,249,2,2,2,2,2,2,249,249,2,2,2,2,2,249,2}, + {3110,1665,2544,745,1280,2888,2889,3423,2544,693,1179,355,2346,3437,3640,1635,1635,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4368,2924,3970,4785,215,1847,715,3260,2119,2101,152,2149,209,2515,1296,2302,2302,2302,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2302,2302,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4646,2149,329,3876,2159,1008,1579,89,1344,4359,774,2390,5589,2133,2373,1053,2,2849,2849,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1101,1101,2,2,2,2,2,2,2,2,2,2,1471,2,1471,2,2,2,2,2,2,2,821,1101,2,1101,1101,2,1101,1101,1101,1101,1101,1101,1101,1101,1101,2,1101,1101,2,2,2,1101,1101,1101,1101,1101,1101,919,2,2,2,2,1101,1101,1101,1101,914,2,1101,1101,2,2,1101,1101,1101,1101,1101,1101,1101,1101,1101,1101,4465,1101,1101,1101,2,1101,1101,1101,1101,2,1101,1101,1101,914,914,914,2,2,914,2,2,1101,1101,914,914,2,914,914,914,914,914,914,914,914,2,914,914,1101,2,1101,1101,1101,1101,914,2,2,2,2,914,1471,1471,1471,2,2,914,914,914,914,914,914,914,914,914,914,2,914,914,914,1101,1101,1101,1101,1101,914,914,2,914,914,914,2,2,2,821,1101,1101,2,2,2960,524,524,1150,2700,512,512,512,512,914,914,3471,3471,3471,3471,3471,3471,3471,914,1101}, + {3359,2319,3814,767,2963,2993,2755,949,2863,2723,673,1738,3078,1628,3602,3946,511,511,2,2,2,2,2,2,2,2,2,2,2,2,2,2361,2,2,2,2,2361,2,2,2,2,2,2361,2361,2361,2361,2361,2361,2,2361,2361,2361,2361,2361,2361,2361,2361,2361,2361,2361,2361,2361,2361,2361,2361,2361,2,2,2,2,2,2,2,2,2,2,2,2,2,2361,2361,2361,2361,2361,2361,2361,2361,2,2,2,2,2361,2361,2,2,2361,2,2361,2361,2361,2361,2,2361,2361,2361,2361,2361,2361,2361,2,2361,2,2,2,2,2361,2361,2361,2361,2361,2361,2361,2361,2,2,2,2,2,2,2361,2361,2361,2361,2361,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2361,2361,2361,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4174,3328,616,4311,300,1370,2404,1307,3341,248,2506,1474,840,5080,1877,426,2,2,2,2,2,2,2,2641,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1773,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1773,1773,1773,2,2,1773,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1773,1773,1773,1773,1773,1773,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1773,1773,2,2,2,2,2,2,2,2,1773,1773,2,2,2,1773,1773,1773,2,1773,1773,1773,1773,1773,1773,1773,1773,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1773,2,2,2,2,2,2}, + {4327,4495,472,2331,2366,701,357,1676,1766,2775,935,659,622,496,2937,2937,2,2,2,2,2760,1731,1731,2,1731,2,2,2,1731,1731,2,2,2,2,539,539,539,1731,1731,2,1731,1731,1731,1731,1731,1731,1731,1731,1731,1731,1731,1731,1731,1731,1731,1731,1731,539,2,2,1731,1731,1731,1731,1731,1731,1731,373,2,2,373,373,373,373,373,2,2,373,2,2,1731,1731,1731,2,2,2,2,2,1731,1731,1731,1731,373,373,373,373,373,373,373,373,373,539,539,373,373,1805,1805,1805,1805,1805,1731,1731,1731,1731,1731,2,1731,1731,1731,1731,1805,1805,1805,539,539,1731,1731,1731,1731,1731,2,2,2,2,1731,1731,1731,1731,1731,1731,1731,1731,1731,2378,1805,1805,2378,2378,539,2378,2378,2378,1805,1805,2378,2378,2378,1731,1731,1731,1731,1731,1731,1731,1731,1731,1731,1731,1731,1731,1731,1731,1731,1805,1805,1805,1805,1805,1805,1093,1093,1093,1093,1093,1093,1093,1805,1805,1805,1805,1805,1805,1805,1093,1093,1093,1093,2378,2378,2378,2378,2378,2378,2378,2378,3487,2378,1805,1805,1805,1805,1805,2378,2378,1805,1805,1805,1805,1805,1093,3586,3586,546,1093,1093,1731,1093,1093,1093,2378,2378,2378,2378,2378,2378,2378,1093,373,373,1093,1731,2378,2378,2378,2378,2378,2378,373,1731,1731,2378,2378,373,373,373,373}, + {4321,1288,1049,620,262,2606,1427,2019,566,683,752,447,287,1167,5054,5054,2,2,2,1130,1130,2,2,2,2,2,2,2,2,2,2,2,2,2,2899,2899,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,864,864,864,864,864,864,2,2,2,2,864,864,864,2899,2,2,864,864,864,864,864,864,864,864,2,2899,2899,864,2899,864,864,864,864,864,864,864,864,864,864,864,864,2,864,2,864,864,2899,864,2,2899,2899,2899,864,864,2899,2899,2899,864,864,2899,2899,2,2899,2899,2899,2899,2899,2899,2899,2899,2899,2899,2899,2899,2899,2899,2899,2899,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,864,2,864,864,864,2,859,859,859,859,859,864,864,864,864,864,864,864,864,2,864,864,864,864,864,864,864,864,864,2,864,864,864,864,864,2899,2899,2899,2899,864,864,864,864,864,2899,2,864,864,864,864,864,2}, + {4331,680,703,2747,700,4787,818,875,1521,1758,1691,2925,2925,2925,2130,1134,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4444,2743,3035,2582,2170,2917,289,2906,375,810,3764,2960,79,151,3561,3561,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1929,2,2,2,2,2,1929,1929,1929,2,2,2,2,1929,2,2,2,2,2,1929,1929,1929,1929,1929,1929,1929,1929,1929,1929,1929,1929,1929,1929,1929,4693,4693,4693,2,1929,1929,1929,1929,1929,2,2,1929,1929,1929,2,2,1929,1929,1929,2,2,2,2,2,2,2,2,2,1929,1929,1929,2,2,2,2,2,1929,2,2,2,2,2,2,1929,1929,1929,1929,1929,2,1929,1929,1929,2,1929,1929,1929,2,1929,1929,1929,1929,1929,1929,2,1929,1929,1929,1929,1929,1929,1929,1929,1929,1929,1929,2,1929,1929,2,2,2,2,1929,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1929,2,2,2,2,2,2,2,2,1929,1929,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4223,2572,1394,1562,4430,2932,888,1376,1437,1082,2056,1082,1301,3364,204,3364,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4276,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4744,3698,1767,2534,1226,3419,1776,2628,4687,660,711,4962,1340,4962,4962,1104,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,597,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,597,597,597,2,2,2,2,2,2,2,2,2,2,2,2633,597,2,2,597,2,2,2,2,2,2,2,2633,2,2,2,2,2633,2,2,2633,2633,2633,2,2,2633,2,2,2,2,2,2,2633,2,2,2,2,2,2,2,2,2,2633,2633,2633,2633,2633,2633,597,597,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,597,597,597,597,597,597,2633,2633,597,597,597,597,2633,597,2633,597,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,597,2633,2633,597,2633,2633,2633,2633,597,2633,2633,2633,2633,2633,2633,2633,2633,2633,597,597,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,597,597,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2633,2}, + {4771,2156,4334,2205,2377,2852,848,2798,3197,1382,2039,2222,1005,1005,1005,1005,2,3270,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,917,917,2,2,2,2,2,2,2,2,2,2,1588,2,2,2,917,917,2,2,917,2,2,2,917,2,2,2,2,2,917,2,2,2,2,2,2,2,2,2,917,917,917,917,917,917,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,917,2,2,2,2,2,2,2,2,2,2,917,917,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,917,917,2,2,2,2,2,2,917,917,917,2,2,917,2,2,2,2,917,917,2,917,917,2,2,2,917,917,917,917,2,917,2,2,917,917,2,917,2,2,2,2,2,2,2,917,917,917,2,2,917,917,917,917,2,2,2,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,917,2,2,2176,2176,917,917,917,917,917,2176,917,1588,2,2,917,2,2,2,917,1588}, + {3363,1627,2360,4953,3960,1918,3364,1295,1539,2678,680,591,4068,16,738,738,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1204,1913,2,1913,1913,1913,2,2,2,1913,1913,2,2,2,2,1913,1913,2,2,1913,1913,1913,1913,2,2,1913,1913,1913,2,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,2,1913,1204,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1204,1204,1204,2,1204,1204,1204,1204,2,1204,1204,1272,1272,1272,1913,1913,1913,1913,1913,1913,1913,2,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,2,2,2,2,2,2,1204,1204,2,2,2,2,2,2,2,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,2,2,2,2,2,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1913,1204,1204,1204,1204,1913,1913,1204,2294,1913,1272,1272,1204,1204,1272,1272,1272,1913,1913,1913,1913,1913,1913,1272,1913,1913,1913,1913,1913,1913,1204,1204,1204,1204}, + {3191,1484,856,1118,1315,2931,3575,1068,3816,1317,2951,495,1696,255,255,1789,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,76,76,76,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2463,2463,2463,2463,2463,2,2,2,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2,2,2,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463,2463}, + {4258,1372,2035,1344,4398,3198,797,179,1561,544,3992,1745,1221,2452,3124,3124,1562,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2986,2986,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2986,2,2986,2986,2,2,2,2,2,2,2986,2,2,2986,2,1544,2,2,2,2,2986,2986,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2986,2986,2986,2986,2986,2986,2986,2986,2986,2986,1544,2986,2,1544,1544,2,2,1544,2986,2986,2986,2,2,2,2,2,2,2986,2986,2986,1544,2986,2986,2986,2986,2986,2986,2986,2986,2,2986,2986,2986,2986,2,2,2986,2986,2986,2986,2986,2986,2986,2986,2986,2986,2986,2,2,2986,2986,2986,2986,1544,1544,2,2986,2986,2986,2986,2986,2986,2986,2986,2986,2986,2,1544,1544,2986,2986,2986,2986,2986,2986,2986,2986,2986,2986,2986,2986,2,2,1544,2,2986,2986,2986,2986,2986,2986,2,2,2,2,2986,2986,2986,2986,2986,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3451,2156,3807,2475,1923,620,715,1020,1213,84,2809,1641,254,824,824,1212,1212,2,2,2,2,2,2,3393,2,2,2,2,2,3547,3547,3547,3547,3547,3547,3547,2,2,2,2,2,2,2,2,2,2,2,2,3393,3547,2,3393,3393,3393,3393,3393,2,2,2,1352,278,278,278,278,278,2,2,2,2,2,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,2,3393,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2725,2,2,2,2725,2725,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3393,3393,2,2,3393,2,2,2,2,2,2,2,449,449,449,449,2,2,2,449,449,449,449,449,449,2,2,2,2,2,2,2,2,2,2,2,2,2,2,449,2,1352,1352,1352,1352,2,2,3393,3393,2,2,2,2725,2725,3393,3393,3393,3393,3393,2,2,3393,3393,2,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393,3393}, + {3407,4018,3750,1764,653,3122,1071,4341,3483,361,1921,674,674,58,1638,2121,510,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3097,3097,2,2,3097,3097,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3097,2,3097,2,2,3097,3097,3097,3097,3097,3097,2,2,3097,3097,2,3097,3097,3097,3097,3097,3097,3097,3097,2,3097,3097,3097,3097,3097,3097,3097,3097,3097,2,3097,3097,3097,2,2,3097,3097,3097,3097}, + {4447,1190,950,4349,3246,755,475,4183,2708,1739,3188,1542,1826,1341,2002,2002,2002,2,2,2,2,3751,3751,3751,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3751,3751,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,187,187,187,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,187,187,2,2,2,187,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3751,2,2,2,2,2,2,3751,3751,2,2,2,2,2,2,1642,2,2,2,2,1642,1642,1642,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4220,1731,1633,3483,97,1506,4029,3010,813,2764,582,2865,145,1624,787,812,1046,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4478,1850,4006,2865,2234,994,5022,519,2719,3495,3570,409,1221,5141,2794,5141,5141,3241,3241,2,3241,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1439,2,2,2,2,2,1580,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1439,2,2,1439,1439,1439,2,2,2,2,2,2,1439,1439,1439,1439,1439,2,1439,2,2,2,1580,1580,2,2,2,2,1439,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1439,1439,1439,2,1439,1439,1439,2,2,2,1439,1439,1439,2,2,1439,1439,2,2,1439,1439,2,1439,2,2,2,2,1439,1439,1439,1439,1439,1439,1439,2,2,2,1439,1439,2,2,1439,1439,2,2,2,1439,1439,2,1439,2,2,1439,2,2,1439,1439,2,1439,1439,2,2,2,2,2,2,1439,1439,2,2,2,2,2,2,2,2,2,2,2,1439,2,2,2,2,2,2,2,2,2,2,2,2,2,1439,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3267,3968,350,2514,2909,2516,214,2131,1573,4844,4156,1574,117,87,3020,3020,3020,3020,3020,2,2,2,2,2,2,2,2,2,2,2,2,2,645,645,2,2,2,2,2,2,645,645,2,645,2,2,2,2,2,645,645,645,645,645,645,645,645,645,645,645,645,645,645,645,645,645,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,645,645,645,645,645,645,645,645,2,645,2,645,2,645,645,645,645,2,645,645,645,2,645,645,645,645,645,645,645,645,645,645}, + {4337,2884,2692,1450,472,2264,5178,443,14,3878,674,3294,3294,153,1286,306,306,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1375,1375,2,2,2,2,2,1375,2,2,1375,1375,2,1375,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3730,2,1375,1375,1375,2,2,2,1375,2,2,2,2,2,2,1375,1375,1375,1375,1375,1375,1375,2,2,1375,1375,1375,2,1375,1375,2,1375,1375,1375,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1375,1375,1375,2,2,1375,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1375,2,2,2,2,1375,2,2,1375,1375,3730,3730,2,2,2,2,2,1375,2,2,1375,1375,2,2,2,2,2,2,2,2,2,2}, + {3245,4095,3066,1805,3205,307,337,3581,3581,427,440,497,1128,840,3227,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1300,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,775,775,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,775,775,775,775,1300,775,775,775,775,775,2,2,3210,775,775,2,1902,1902,1902,1902,1902,1902,1902,775,775,2,2,2,775,2,2,2,2,545,1300,545,545,545,545,2,2,2,2,2,775,2,2,2,2,1902,1902,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,775,1300,2,2,2,2,2,2,2,2,2,2,2,2,2,775,2,2,2,2,2,2,2,2,2,2,2}, + {4333,994,618,1741,1163,436,978,2745,1988,1247,3020,3541,2553,452,400,2,1939,3100,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,947,947,947,947,947,947,947,947,947,2,947,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3275,3275,3275,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1316,3275,3275,3275,3275,3275,3275,3275,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3275,2,2,2,3275,947,947,947,3275,2,2,2,2,2,2,2,2,2,2,2,2,947,2,2,2,2,2,2,2,2,2,2,2}, + {4576,3009,3125,2268,3797,174,503,990,1801,2840,377,333,1703,3179,3179,532,532,532,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3103,2,3103,2,3103,3103,3103,3103,2,2,2,532,2,2,2,2,2,3103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4574,1251,1066,787,2570,3266,219,773,2719,2912,2912,620,2524,4568,1068,361,361,361,2,2,2,2,2,2,2,2,2,1194,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1194,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1194,1194,2,2,2,2,2,2,2,2,2,2,2,2,1194,1194,1194,1194,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1194,1194,2,2,2,2,2,2,2,2,1194,2,1194,2,1194,1194,2,2,1194,2,2,1194,1194,1194,1194,1194,1194,1194,2,1194,1194,2,1194,1194,1194,1194,1194,1194,1194,1194,1194,2,2,2,2,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,2,2,1194,1194,1194,1194,1194,1194,1194,1194,1194,2,2,2,2,1194,1194,1194,2,2,2,2,2,2,2,2,2,2,2,1194,1194,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4387,4158,960,1305,1353,4386,2402,3590,1150,895,914,914,4708,2843,2843,2,2,2903,2903,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1959,2,2,1959,1959,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1959,1959,2,1959,1959,1959,1959,2,2,2,2,2,2,2,2,2,2,2,2,1959,2,2,2,2,2,2,2,2,1959,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4365,3433,4140,536,1112,656,3135,73,1538,1231,2169,999,1066,1066,2852,2,2,2,3775,3775,2,2,2,2,3682,3682,3682,2,2,2,2,2,3682,3682,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3682,3682,2,2,2,2,2,2}, + {4375,2791,1011,516,841,3025,912,2200,3429,1324,2873,605,2136,1268,4710,2,2,2,2,1771,1771,2,4710,4710,4710,4710,4710,4710,1771,1771,1771,1771,1771,1771,1771,2,2,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,2,2,2,2,2,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,2,1771,1771,1771,2,1771,1771,1771,2,2,2,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,2,1771,1771,2,2,2,2,2,2,2,2,2,1771,1771,2,2,2,2,1771,2,2,2,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,2,1771,1771,2,1771,1771,2,2,1771,1771,2,2,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,2,2,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,2,2,2,2,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,1771,2}, + {3202,2928,3842,4419,1803,933,1743,4021,2695,1659,506,4379,4379,541,541,745,745,745,745,745,745,2678,2678,2678,2,2,2,2,2,2,2,2,63,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5051,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3339,1529,585,386,2258,2921,1719,2957,1730,2035,1062,932,1508,118,470,2,2,2,3861,987,2,2,3631,2,2,2,2,2,3631,3631,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,987,3631,3631,3631,987,2641,2641,2,987,987,2,987,987,987,3631,3631,2,3631,3631,3631,2,987,2,2,987,987,987,987,2,987,987,2,987,987}, + {4553,1855,2366,1715,3628,2259,1675,3754,1385,1201,625,1872,97,520,520,2684,2684,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3853,3853,3853,2,3853,3853,3853,2,2,2,2,2,2,134,2,2,2,3297,2,2,2,2,2,2,2,2,2,134,134,2,2,2,2,2,2,2,2,2,3853,2,2,2,3853,3853,2,2,2,2,2,2,2,2,2,2,2,2,2,3853,3853,3853,3853,3853,3853,3853,3853,3853,2,3853,3853,3853,3853,3853,3853,3853,3853,3853,134,134,134,134,134,134,134,134,134,134,3853,3853,3853,3853,3853,3853,3853,3853,3853,134,134,134,3853,3853,3853,2,2,2,3853,3853,2,3853,3853,3853,2,3853,3853,3853,3853,3853,3853,3853,3853,3853,3853,3853,3853,2,2,3853,3853,3853,3853,3853,3853,3853,3853,3853,3853,3853,3853,134,134,134,134,134,134,3853,3853,3853,3853,3853,3853,2,3853,3853,3853,3853,3853,2,2,2,2,2,3853,3853,3853,2,2,2,3853,3853,3853,3853,3853,2,3853,2,3853,2,3853,3853,3853,2,4365,134,4365,4365,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3853,3853,3853,2,2,3853,2,2,2,2,2,2}, + {4964,1353,4940,1474,2521,519,1956,161,590,2047,5037,1519,3729,5581,5581,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3444,2,2,2,2,3444,3444,3444,3444,2,3444,2,2,2,2,2,3444,3444,2,3444,3444,2,3444,3444,3444,3444,3444,2,2,2,2,3444,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3444,3444,3444,2,3444,3444,3444,3444,2,2,2,2,3444,3444,3444,3444,3444,2,2,2,2,2,2,2,2,2,3444,2,3444,3444,3444,2,2,2,2,2,2,2,2,2,3444,3444,2,3444,3444,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3444,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3444,2,2,2,2,2,2,3444,2,3444,2,2,2,2,3444,3444,2,3444,3444,3444,2,2,2,2,2,2,2,2,2,2,2}, + {4436,2901,1282,1057,649,1997,3072,927,899,2289,3196,1044,786,2574,2374,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4469,3924,568,3100,1594,1858,123,929,4647,382,2485,2342,189,1506,3139,2,2,2,2,2,2,2,2,663,663,2,2,2,2,2,2,2,2,2,2,2,2,663,2,663,663,2,2,2,2,2,2,663,663,663,663,2,663,2,2,2,2,2,663,663,663,663,663,663,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1558,1558,2,2,2,2,2,2,2,2,2,2,275,275,275,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,275,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,663,2,2,2,2,2,2,2,2}, + {4677,1743,1166,2283,3170,3228,4905,850,1162,1149,978,282,1104,2585,2972,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,453,453,453,453,453,453,453,453,453,2713,2,2713,453,453,453,453,453,453,453,2713,2,2713,2713,2713,2713,2,2713,2,2,2,2,2,2,453,2,2,2,453,453,453,453,453,453,453,453,453,453,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5076,5076,453,453,2713,2713,2713,2713,2713,2713,2,2,453,453,453,2,2,2,453,2,2,453,2,2,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,2,2,453,453,453,453,2,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,2,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,2,453,453,453,453,453,2,2,453,453,453,2,2,2,2,2}, + {3671,3092,3442,640,3586,227,4981,5389,92,637,1235,2625,2300,380,380,1740,1596,1596,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,291,291,291,2,2,2,339,339,339,339,339,339,339,2,2,2,2,2,2,2,2,2,291,291,291,291,339,339,339,339,291,339,339,339,339,339,339,339,339,2,2,2,2,2,2,2,2,2,2,339,2,2,291,2,2,2,2,291,2,2,2,2,2,2,2,291,291,339,2,2,2,2,339,339,2,339,339,2,2,2,2,2,291,291,291,339,339,339,339,339,339,339,2,2,2,2,2,2,2,2,2,2,2,291,291,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,291,291,291,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4493,5031,3310,1700,3980,136,1041,3523,2789,328,4698,3898,504,504,637,637,3271,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1709,2,1709,2,2,2,2,2,2,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,2,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,2,1709,1709,1709,1709,1699,1699,1709,1709,2,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,1709,3238,3238,3238,3238,3238,3238,3238,3238,3238,3238,1699,1699,1699,1699,1699,1699,2,2,2,1699,1699,1699,1699,1699,1699,1699,1699,1699,1699,1699,1699,1699,1699,1709,1699,1699,1699,1699,1699,1699,1699,1699}, + {3357,1862,1879,545,2113,2652,4639,1793,2530,647,3530,3964,123,3760,2746,2746,2746,2,2,2,2,2,2,2,2,2,2,2,2,2,2413,2413,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4276,2,2,2,2,2,2,2,2,2,2,2413,2,2,2,2,2413,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4276,4276,4276,2,4276,2,4276,4276,2,2,2413,2413,2}, + {3392,3970,2069,874,4556,3459,1396,4343,1022,2204,1382,673,3367,1908,1389,350,350,4197,4197,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1404,2,2,2,2,2,2,2,2,2,2,2,2993,2,2,2993,2,2,2,2,2,2,2993,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1404,1404,1404,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2993,2993,2993,2,2,2,2,2,1404,2,2,2,2,2,2993,1404,2,2,2,2,2,2,2,2,2,2,2,458,458,2,458,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1404,1404,2,2,2,2,2,2,2,2,2,2,2}, + {4718,4329,359,2450,5093,1145,3855,1909,2524,471,702,2756,1292,5052,3740,5052,5052,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2837,2837,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2837,2837,2,2,2,2837,2837,2,2837,2837,2837,2837,2837,2,2,2,2,2837,2837,2837,2837,2837,2837,2837,2837,2837,2837,2837,2837}, + {3406,2184,545,2340,1975,1455,1667,801,1811,2903,1189,3378,3858,3858,1690,2361,2361,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2361,2361,2,2,2,2,2,2,2361,2361,2,2,2,2,2,2,2,2,2361,2,2,2361,2361,2,2,2,2,2,2,2,2,2361,2361,2,2,2,2,2,2,2361,2361,2,2,2361,2361,2361,2361,2361}, + {4521,4410,2184,934,578,735,2914,1319,2497,664,2218,155,4688,3798,1295,739,2243,2243,2,2,2,2,2,3384,2,2,3384,2,2,2,2,2,2,2,2,2,2,3384,3384,3384,3384,2,2243,2243,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3384,3384,3384,3384,3384,2,2,2,2,3384,3384,2243,2243,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3384,2243,2243,2,2243,3384,3384,3384,3384,2,3384,3384,3384,3384,3384,2,2,2243,2243,3384,3384,2,3384,3384,2,2,3384,3384,3384,2,2,3384,3384,3384,3384,3384,3384,955,2243,2243,2243,2243,2,2,3384,3384,3384,2,3384,3384,3384,3384,3384,3384,3384,2,2,2,2,2,2,3384,3384,2,2,2243,2,3384,2,2,2,2,955,955,955,3384,2,3384,3384,2,2,2,3384,3384,2243,2243,2243,2243,2,3384,3384,3384,2,3384,3384,3384,3384,3384,3384,2,955,955,2243,955,955,955,3384,955,955,955,2,2,2,3384,2243,2243,3384,3384,3384,3384,3384,3384,3384,955,955,3384,3384,3384,3384,3384,1219,1219,1219,1219,3384,3384,3384,3384,2,2,3384,3384,3384,3384,2243,2243,2,3384,3384,2,2,3384,2,3384,2243,3384,2243,1018,2,2,2,1710}, + {3740,754,2658,1308,1461,3975,4453,873,256,1392,521,521,460,3347,3316,3316,1532,3316,3316,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3139,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3139,2,2,2,2,3139,2,2,2,2,3139,2,2,2,2,2,2,2,2,3139,2,2,2,2,3139,2,2,3139,2,3139,2,3139,2,2,3139,3139,3139,2,3139,3139,3139,3139,3139,2,3139,2,2,2,2,2,2,2,2,2,2,3139,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3139,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3139,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3139,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3139,3139,2,2,2,2,3139}, + {3748,2490,1212,408,4308,1499,722,2994,2082,2694,1061,763,1098,701,3188,739,3534,2,2,2,3534,1767,1767,1767,1767,1767,2,1550,1550,1550,2,2,2,1550,1103,2,2,2,2,1103,1103,2,2,2,2,2,1103,1103,1103,1103,1103,1550,1550,1103,1103,1103,1103,2,1103,1377,1377,1377,1377,1103,1103,1103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1103,1103,2,1103,2,1103,1103,1103,1103,2,2,1103,1103,2,2,2,2,2,2,2,1377,1377,1377,1377,1377,1377,1377,2,2,1103,1103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4552,2806,1749,1749,3634,3866,3039,4403,1120,996,236,2685,72,3962,3084,2891,2891,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,111,111,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4714,798,822,855,243,1136,2984,2036,1213,1475,3699,1361,570,94,94,975,3989,1181,2,2,2,2,2,2,3592,3592,3592,3592,3592,3592,3592,3592,3592,2,1804,1804,2,1181,1181,1181,1181,1181,1181,2,1181,1181,2,2,2,1181,3840,3840,3840,3840,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2755,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4670,2,4670,1181,2,4670,4670,4670,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1181,2,2,2,2,2,1181,1181,2,1181,1181,1181,1181,2,1181,1181,2,2,2,1181,1181,2,2,1181,1181,1181,1181,1181,1181,1181,1181,2,2,1181,1181,1181,1181,2,1181,1181,2,2,2,1181,1181,1181,1181,2,2,2,2,2,2,2,2,1181,2,2,1181,2,1181,1181,2,2,1181,1181,1181,2,2,1181,2,2,1181,1181,1181,1181,1181,1181,1181,1181,1181,2,2,1181,1181,2,2,2,2,2,2,1181,2,2,2,2,1181,1181,1804,4670,4670,2,1181,1181,1181,2,1181,1181,1181,1181,1181,1181,1181,1804,1804}, + {3322,879,1863,1460,2369,3954,1029,65,4978,2465,2404,176,176,5178,1622,3682,3682,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3461,2642,1761,4171,1064,900,163,4640,209,209,2363,2363,623,623,623,2659,2,208,208,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,504,504,504,1071,2,2,2,2,2,2341,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1071,1071,1071,1071,2,2341,2,2341,2341,2,2,2,2,2,2,2,2341,2,2,2,2341,2341,2341,2,2341,2341,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2341,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1071,2,2,2,2,2,2,2,2,2,2,2,2,2,1071,1071,1071,2341,2341,2341,2341,2341,2341,2,2,2,1071,1071,1071,1071,2,2395,2395,2395,2,2341,2341,2341,2,2,2341,2341,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2341,2341,2,2,2,2,2,2,320,2,2,2,2,2,2,2,1071,2,2,2,2,1071,2341,2341,2,1071,2341,2341,2341,2,2,2,2,2,2,2,2,2,2}, + {4606,3202,2286,726,282,250,3044,1348,3081,323,2412,2785,5435,2075,5435,5435,616,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4260,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2251,124,124,124,124,2251,2251,2251,124,2251,2251,2251,2251,2,2,2251,2251,2,2,2251,2251,2251,2,2,2,2,2,2,2,2251,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4260,4260,4260,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3677,1025,1094,947,1906,2329,3995,2019,4080,2362,960,4152,1665,1665,998,1065,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,641,641,641,641,641,641,641,2,2,641,641,641,641,2502,2502,2,2,641,641,641,641,641,641,641,641,2,641,641,641,641,2502,2502,2502,2502,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,229,229,229,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2502,2502,2,2,2,2,2,2,2,2502,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,229,229,229,229,2,2,2,2,2,2502,2502,2,641,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,229,2,2,2,2502,229,2,2,2,229,229,229,229,2502,2502,2502,2502,2502,2,2502,641,2,2,2502,2502,2502,2,2502,2502,641,641,2502,2502,2502,2502,2502,2502,2502,2502}, + {3452,1199,1617,1009,990,101,2436,3960,3407,2709,2709,578,1568,4341,1167,3392,2,2,2,2,2,4643,4105,2,2,1601,1601,1601,2,1601,1601,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4105,4105,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4105,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3604,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4753,4427,313,1014,1463,1987,4152,2101,3059,732,1048,912,818,970,3758,282,2,2,2,2,2440,2,2,2,2,2,2,2,2,2849,2849,2849,2849,2849,1003,1003,2849,2849,2849,2849,2849,2849,2849,900,2849,1003,1003,2849,2849,2849,1003,1003,2849,1003,1003,1003,1003,2,1003,2849,2849,1676,1676,2,1676,1676,2,2,2849,2849,2849,2849,2849,900,900,900,900,900,900,900,900,2,900,900,900,900,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,4740,2849,2849,363,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2,2,2,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2,2,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2849,2,2849,2849,2849,2849,2,2,2,2,1676,1676,2849,2849,2849,2849,2849,2,2,2,2849,2849,2849,2849,2849,2849}, + {3673,4536,2243,2107,1113,893,339,1615,3920,2473,4471,278,1304,1700,414,1499,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3991,3991,2,3991,2,2,2,2,2,2,3991,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3991,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3991,3991,3991,3991,3991,2,2,3991,3991,2,2,2,2,3991,3991,3991,3991,3991,3991,3991,3991,3991,3991,3991,3991,3991,3991,3991,3991,3991,3991,3991,3991,3991,3991,3991,3991,3991,3991,2,2,2,3991,3991,3991,3991,2,2,2,2,2,2,2,2,2,2,2,3991,3991,2,2,2,2,2,2,2,2,2,2,3991,3991,3809,2,2,2,2,3991,2,3991,3991,3991,3991,3991,3991,3991,3991,2,2,2,2,2,2,2,2,3809,3809,2,2,2,2,2,2,2,2,3991,2,2,2,3809,3809,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3991,2,2,3809,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3809,2,3809,3809,2,2,2,2,2}, + {3474,2211,1349,413,725,4174,1121,3265,301,2283,909,732,3530,2317,2180,2180,2,2180,1437,2,2,2,2,2,2,2,2,1437,2,2,2,2,3436,3436,2,1437,2,2,2,2,2,2,2,2,2,2,2,2,3436,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3436,3436,3436,3436,2,2,2,2,2,2,2,3436,3436,3436,3436,3436,3436,3436,2,2,2,2,2,3436,3436,2,2,2,2,2,2209,2209,2209,2209,2,2,3436,3436,2,2,3436,3436,3436,3436,3436,3436,3436,2,3436,3436,3436,3436,3436,3436,3436,3436,2,2,2,3436,3436,2,2,3436,3436,3436,3436,3436,3436,3436,3436,3436,3436,3436,3436,3436,3436,3436,3436,3436,3436,2,2,2,3436,3436,3436,3436,3436,3436,2,2,3436,3436,3436,3436,3436,3436,3436,3436,3436,3436,2,3436,3436,3436,3436,3436,3436,2,2,3436,3436,3436,3436,3436,3436,3436,3436,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3679,1883,1599,3412,1759,1902,64,798,5786,1874,3821,731,731,1841,2015,3121,2,2,2628,2,2,2,2,2,2,2,2,2,2,2628,2,2628,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,805,2,805,805,2,805,805,805,805,805,2,805,2,2,2,2,2,805,805,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,805,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,805,805,2,805,2,2,805,805,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2786,2,2,2,2,2,2,2,2,2,2,580,2,580,580,580,805,805,805,2,805,805,805,805,805,805,805,805,805,805,805,805,2,2,2,805,805,805,805,805,2243,2243,2243,2,2243,580,580,580,580,580,580,580,580,580,2786,2786,2,2,805,805,805,805,805,2786,2786}, + {3516,887,520,2062,209,736,2202,175,2778,2857,4609,4609,774,3765,712,712,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3018,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2179,2179,2,2,2179,2179,2179,2179,2179,2179,2179,2179,2179,2,2,2,2179,2,2,2,2,2179}, + {5295,916,2098,175,1340,684,2313,5211,2472,1855,3676,161,207,2000,3541,6015,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {5347,2686,1873,5422,4072,3384,79,1487,3174,1541,1206,935,1618,1618,812,812,2,1939,1939,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1939,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1939,1939,1939,1939,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4659,1616,5129,1168,2057,1048,2234,485,2202,3677,3654,589,1276,595,2343,2343,1667,2,2,2,1667,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1667,1667,1667,1667,2,2,2,2,2,2,2,1667,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,382,2,2,2,2,2,2,2,2,2,2,2,2,2,2,382,382,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,382,382,382,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,382,382,382,382,382,382,2,2,382,382,382,382,382,382,382,382,382,2,382,2,382,382,2,382,2,2,382,2,2,382,2,2,2,2,2,2,2,2,2,2,2,382,2,2,2,2,2,2,382,2,2,2,382,382,2,2,2,2,2}, + {3516,2623,413,5566,1015,457,490,3052,2585,79,88,2559,2954,55,4465,4465,870,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,870,870,870,870,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1532,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4605,3269,2100,548,3619,627,2450,2218,3850,4055,2488,405,1326,876,2609,846,1462,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3793,2,2,2,2,168,732,732,2,2,2,2,2,2,2,2,2,3793,3793,2,2,2,2,2,2,2,2,3793,2,2,3793,3793,2,2,2,2,2,2,2,2,3793,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3793,3793,3793,2,2,2,2,3793,3793,3793,3793,3793,2,2,2,2,2,2,2,2,2,2,732,732,2,2,732,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,732,2,2,2,2,2,2,732,2,732,2,2,2,2,2,2,1144,1144,1144,732,732,1144,732,1144,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,3793,3793,732,732,732,2,732,732,732,732,732,732,732,3793,3793}, + {4985,1954,4596,1454,3611,187,1897,1134,3237,1722,1532,2908,195,195,4045,4045,270,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4964,4109,2421,1581,4255,1687,1630,99,1178,2380,595,3355,2977,624,1089,965,2651,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1722,1722,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1722,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1722,1722,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1722,2,1722,1722,2,1722,2,2,2,1722,1722,1722,1722,1722,1722,1722,1722,1722,1722,1722,2,2,1722,1722,1722,1722,1722,1722,1722,1722,2,2,2,2,1722,1722,1722,2,2,2,2,2,1722,1722,1722,1722,1722,2,2,1722,1722,1722}, + {5272,2169,2186,718,289,675,1481,4386,3173,3326,3609,498,1049,1643,3505,4136,4136,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1233,1233,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2595,2,2159,2,2,2,2,2,2,2,2,2,2,2159,390,2,2,2,2,2,2,2,2159,2,2,2,2,2159,2,1233,2,2,2,2159,2159,2159,212,212,1233,2,1233,1233,2,2,2159,2159,2159,2159,2,2,2,2159,2159,2159,212,2,2,2159,2159,2159,2,2,2159,2159,2159,2159,2159,2159,212,2159,2,2,2,2159,390,390,390,2,2,2159,2159,2159,1007,1007,1007,1007,1007,1007,1233,1233,1233,2,2,2,1233,1233,1233,1233,1233,1233,1233,2159,2159,2159,2159,2159,2159,1233,3505,3505,3505,212,212,1717,2159,2159,212,212,212,212,212,212,212,212,1233,1233,1233,1233,1233,1233,1233,1233,2159,2159,2159,2159,1233,2159,2159,2159,2159,2159,2433,3505,3505,878,3505,2433,3505,1233,3505,3505,3505,1233,1233,1233,1233,1233,1233,1233,1233,1233,390,390,390,390,390,390,3505,2,3505,3505,3505,3505,3505,3505,3505,3505,3505,3505,4576,4576,4576,2159,2159}, + {4924,4842,2789,4577,2328,194,5654,2541,963,3120,983,2348,123,498,3119,3119,3307,2,3119,2,2,1129,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1848,2,2,2,1848,1848,1848,2,1848,1848,2,2,1848,2,2,1848,1848,1848,1848,1848,1848,387,2,2,1848,1848,1848,1848,1848,1848,1848,1848,1848,387,1848,387,387,387,387,387,1848,1848,2,2,2,2,1848,1848,1848,1848,1848,387,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,2235,387,387,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,2,2,1848,1848,1848,1848,1848,1848,2,2,2,2,2,2,2,1848,1848,1848,1848,1848,1848,2235,2235,1848,1848,1848,1848,2235,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848,1848}, + {3776,1505,2635,1017,3761,939,389,4325,4589,1118,3324,2557,2557,1700,1700,1700,1700,1771,2,2,2,2,2,4214,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4214,2,2,2,2,2,2,4214,4214,4214,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4214,912,2,2,2,2,2,2,912,912,912,912,2,912,912,912,2,2,912,912,912,912,912,912,912,2,912,912,912,912,912,912,912,912,912,912,912,912,912,912,912,912,912,912,912,912,912,912,912,2,2,912,912,912,912,2,912,912,912,912,912,912,912,2,2,2,2,4214,2,2,2,2,2,2,2,2,2,2,2,4214,4214,4214,2,2,2,2,2,2,2,2,2,2,4214,4214,4214,4214,4214,4214,2,4214,4214,4214,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4214,4214,2,2,2,2,2,4214,2}, + {5355,3004,2566,368,2515,932,5320,460,3175,2725,776,738,952,1179,2,1179,416,416,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1227,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1227,1227,2,2,2,2,1227,1227,2,2,2,2,2,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,2,2,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,2,2,2,1227,1227,1227,1227,1227,1227,1227,2,2,2,2,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,2,1227,1227,1227,1227,2,2,1227,1227,1227,1227,1227,1227,1227,2,1227,1227,1227,2,2,1227,1227,2,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,1227,2,1227,4937,4937,4937,4937,4937,4937,4937,4937,2,2,1227,2,2,1227,1227,2,2,2,2,2,1227,1227,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3950,1886,684,840,89,1886,2007,997,717,1347,2023,2987,4027,44,2,5003,5003,5003,2,2,2,2,2,2,2,2,2,1999,1999,1999,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1999,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1999,1999,1999,2,2,2,2,2,2,2,2,1999,1999,1999,1999,2,2,2,2,1315,1315,1315,2,2,2,1315,1315,1315,1315,2,1315,1315,2,1315,2,1315,1315,2,1315,1315,2,2,2,2,2,1315,1315,1315,1315,1315,1315,2,1315,2,1315,1315,2,2,1315,1315,1315}, + {3617,3159,5361,2098,2990,659,5373,1727,2989,860,1289,974,4247,2053,2,2,5453,3711,2,2371,2,2,2,2371,2,2,2,2,2,2,2,2371,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3804,3139,1695,3525,2932,632,178,435,951,281,1555,1404,1952,1089,2,2,1408,250,3586,2,2,981,981,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3586,2,2,3586,3586,2,2,2,2,2,2,3586,3586,3586,3586,2,3586,3586,3586,3586,3586,3586,3586,2,2,2,2,2,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,547,547,547,547,3586,3586,3586,547,547,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,547,547,547,547,547,547,547,547,3586,3586,3586,3586,3586,3586,3586,3586,547,3586,3586,547,547,547,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,547,547,547,547,547,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,1476,1476,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,2,547,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,1476,1476,1476,547,3586,3586,547,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,3586,5955,5955,5955,5955,5955,3586,3586,3586,3586,3586,3586,547,3586,3586,547,3586,3586,547,547,3586,547,3586,3586,3586,3586,3586,3586,547,547,547,547,547,547,547,547,547,547,3586,3586,3586,3586,3586}, + {4963,3808,1792,2748,2553,685,1168,4592,1146,2631,1868,798,406,406,2,2,2,1688,3380,2517,2517,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2517,2,2,2,2,2517,2517,2,2,2,2517,2517,2517,2517,2517,2517,2,2517,2517,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3380,110,110,110,3380,110,2,2,2517,2517,2517,2517,2517,2517,2517,2,2517,2517,2,2517,2,2517,2517,2517,2517,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3652,3712,3890,3158,2100,4805,4384,2700,2199,1094,173,3014,2117,2117,2,2,2,2,3998,3998,3998,3998,2139,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2139,2139,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3313,3313,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2139,2139,2,2,2,2,2,2,2,2,2,2,3313,2139,2139,3313,2,2139,2139,3313,3313,3313,3313,3313,3313,3313,2,2,2,2,2,2139,2139,2,1597,2,2,2,2,2,2,2,2,2,2,1597,1597,2,2,2139,2139,2139,2,2,2,2,2,2,2,2,2,2,2,1597,1597,1597,2,2,2,2,2,2,2,1597,1597,2,2,2,1597,1597,2,1597,1597,1597,1597,2,2,1597,2,2,1597,1597,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1597,1597,1597,1597,1597,1597,1597,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1597,2,2,2,2,1597,1597}, + {4979,1811,2448,4842,4884,2488,948,497,2529,1597,3299,2499,2980,2980,2,2,2,2,4199,4199,4199,4199,4199,4199,4199,4199,2,2475,2,2,2,2,2,2,2,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,2,4841,4841,4841,4841,4841,4841,2,2,2,2,2,2,4841,4841,4841,4841,2,4841,4841,4841,4841,2475,2475,2475,2475,2475,2475,2475,2475,2475,2475,2475,2475,2475,4841,4841,4841,4841,4841,4841,4841,4841,2475,2475,4841,2475,2475,4841,4841,4841,2,4841,4841,1935,1935,1935,1935,1935,1935,1935,2475,1935,2475,2475,2475,2475,2475,4841,2475,4841,4841,2,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,2524,2524,2524,2524,2524,2524,2524,4841,4841,4841,4841,4841,4841,4841,4841,4841,2,2,2475,2475,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,2,4841,4841,4841,4841,2,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,2,4841,4841,4841,2,2,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,4841,2,2,2,2,2,2,2,2,2,2,2,2,2,4841,4841,4841,4841,4841,4841,2,2,2,2,2,2,2,2,2,2,2}, + {5023,1540,927,245,2075,2301,5467,4874,3291,3051,3294,760,2306,1312,2,2,2,590,590,590,2,2,2,2371,2371,2,2,2,2,2,2,2,2,2597,2597,2597,2597,2597,2597,2597,2597,2,2597,2597,2597,2597,2597,2597,2597,2371,369,2371,2597,2597,2597,2597,2597,2597,2597,2597,2597,2597,2597,2597,2597,2597,2597,2597,369,369,2597,2,2,2597,2597,2597,2,2371,2371,2,2,2,2,2597,2371,2371,2371,2371,2371,2371,2371,2597,2597,2597,2597,2597,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2371,2,2371,2371,2371,242,242,242,242,242,242,242,242,242,242,242,2597,2597,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2597,2597,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2371,2597,2,2597,2597,2371,2,2371,2371,2371,2,2597,2597,2597,2,2597,2,2,2597,2597,2597,2597,2597,2597,2597,2597,2597,2597,2597,2597,2597,2597,2597,2597,2597,2597,2597,2597,2,2,2,2,2,2,2597,2597,2597,2,2,2,2,2,2,2,2,2,2,2,2597,2,2597,2597,2,2,2,2,2,2597,2597,2597,2597,2,2,2,2}, + {5443,2941,347,1060,5432,5651,301,2162,665,2055,4381,98,2739,3194,2,2,2,4969,227,2,2,2,2,2,2,2,2,2,2,2,1870,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1870,1870,2,2,2,2,2,2,2,2,2,2,2,347,347,347,347,2,2,347,347,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1870,1870,2,1870,1870,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1870,1870,1870,1870,2,1870,1870,1870,1870,1870,1870,1870,1870,1870,1870,1870,1870,2,2,2,2,2,1870,2,2,2,2,2,2,1870,1870,2,2,2,1870,2,156,156,2,2,2,1870,1870,1870,2,2,1870,1870,2,1870,1870,1870,1870,2,2,2,2,2,1870,1870,2,2,2,2,1870,1870}, + {3658,1253,870,2758,2146,2477,2412,4259,3502,398,868,3053,449,1881,2,2,958,4704,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3985,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,799,799,2,799,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3333,3333,2,2,2,2,2,2,2,2,2,3333,2,2,2,2,2,2,2,2,2,2}, + {5067,2597,6011,2402,413,3512,2653,4334,390,2692,5283,3178,1799,4788,2,2,1641,2691,2691,3929,2,2,2,2,2,3145,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3145,3145,2,2,2,521,521,2,521,2,521,2,2,2,2,2,2,2,521,2,2,2,521,2,2,2,521,2,2,2,521,2,2,2,2,2,2,2,521,521,521,521,521,521,2,521,521,521,2,2,521,2,521,2,521,521,521,521,521,2,521,521,521,2,2,2,2,2,521,2,2,2,2,2,2,2,2,2,521,521,2,521,521,521,521,521,521,521,521,2,2,521,521,521,521,521,521,521,521,521,2,521,521,521,521,521,521,521,521,521,6065,521,521,521,521,521,521,2,2,521,521,521,521,521,521,521,521,521,6065,6065,6065,6065,521,2,2,521,521,521,521,521,521,521,521,521,521,521,521,2,521,521,2,2,2,2,2,6065,521,6065,521,6065,521,521,521,521,2,2,6065,6065,6065,521,521,6065,2,6065,6065,6065,6065,6065,6065,6065,6065,6065,6065,6065,6065,6065,6065,6065,6065,521,6065,6065,6065,6065,521,521,521,6065,521,521,521,521,521,521,521,521,521}, + {3885,3052,2835,523,2045,83,2098,4007,3517,1262,981,4508,2609,2609,2,2609,4534,4534,2,2,2,2000,2000,2,2000,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2000,2000,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2000,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {5055,3401,2410,1529,394,1543,1133,1103,3701,3966,2974,3068,677,677,2,677,1879,1822,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5098,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4001,4001,4001,4001,4001,2,5098,2,2,5098,5098,2,5098,5098,5098,2,2,5098,5098,2,5098,4001,2,4001,4001,5098,5098,5098,5098,5098,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4001,4001,4001,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4001,4001,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5098,2,5098,2,5098,2,5098,2,2,2,2,2,5098,5098,2,2,2,2,4001,5098,2,2,5098,5098,2,2,2,2,4001,4001,4001,5098,2,2,5098,4001,4001,4001,4001,5098,5098,5098,5098,5098,5098,5098,5098,5098,5098,5098,5098,5098,5098,5098,5098,4001,4001,5098,4001,4001,4001,5098,5098,5098,5098,5098,5098,5098,5098,2,2,2,5098,5098,5098,5098,5098,5098,5098,5098,5098,5098,5098,5098,5098,5098,5098,5098,2,2,5098,5098,2,5098,2,5098,2,2,2,2,5098,2}, + {4048,3672,616,1520,2274,3021,4421,4072,152,1312,609,2967,716,978,2,659,4216,2,2881,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,245,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,245,2,2,2,2,2,245,245,245,245,245,2,2,245,2,2,245,245,245,245,245,245,245,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,245,245,245,245,245,245,2,2,2,245,245,245,245,245,245,2,2,2,245,245,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3916,1447,3984,2374,3691,4938,5363,1530,245,2887,2776,2026,410,1152,2,1513,1815,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,16,4,4,2,2,2,2048,2048,6034,6034,6034,6034,6034,6034,6034,6034,6034,638,638,638,638,638,16,16,16,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,16,4,4,2,2,2,2048,2048,6034,6034,6034,6034,6034,6034,6034,6034,638,638,638,6034,6034,638,638,638,638,2,638,638,2,2,2,2,2,2,2,2,2,2,2,2,2,6034,4,4,2,2,2,2048,2048,6034,6034,6034,6034,6034,6034,6034,638,638,638,638,6034,6034,6034,638,638,638,2,16,16,638,638,16,2,256,2,2,2,2,2,2,2,2,6034,4,16,2,2,2,2048,2048,6034,6034,6034,6034,6034,6034,6034,638,638,638,638,6034,6034,6034,638,638,638,2,16,16,638,638,638,638,256,2,2,2,2,638,638,2,2,6034,4,16,2,2,2,2048,2048,6034,6034,6034,6034,6034,6034,6034,638,638,638,638,6034,6034,6034,638,2,638,2,2,16,638,638,638,638,256,2,256,2,2,638,638,2,2,2,4,16,2,2,2,2048,2048,6034,6034,6034,6034,6034,6034,6034,638}, + {3919,1125,5765,2380,668,2948,502,1883,69,60,690,1095,1095,1095,952,32,2203,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1573,2,2,2,2,2,2,2,2,1573,1573,1573,1573,1573,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1573,1573,1573,1573,2,2,2,2,2,2,2,1573,2,1573,2203,2203,2,2,1573,1573,1573,1573,2203,2203,2203,2203,1573,1573,1573,1573,1573,1573,2,1573,2,1573,1573,1573,1573,1573,2,2,1573,1573,1573,1573,1573,1573,1573,2,2,2,2,2,2,2,2,2,1573,2,2,1573,1573,1573,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1573,1573,1573,1573,1573,2,2203,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1573,1573,1573,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1573,1573,1573,1573,2,2,2,2,2,2,2,2,2,2,2,2,2,1573,2,2,2,1573,1573,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1573,2,2}, + {3715,3458,1970,870,1037,758,115,197,2841,2644,3665,109,109,404,2170,3221,3221,2,2,2,2,2,4255,3021,3021,3021,4255,4255,4255,2,4255,2,2,2,2,2,4255,3021,3021,4255,4255,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4255,4255,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4255,4255,4255,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4255,4255,4255,4255,4255,4255,4255,4255,2,2,4255,4255,3021,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4255,2,2,4255,2,2,2,2,2,2,2,2,2,2,4255,4255,2,2,2,2,2,2,2,2,2,2,2,2,3021,2,2,2,2,2,2,2,2,2,4255,4255,4255,4255,2,541,4255,4255,4255,2,2,4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,2,4255,4255,2,2,4255,4255,4255,4255,4255,3021,4255,4255,4255,4255,4255,4255,4255,4255,4255,4255,2,2,3021,3021,3021,4255,4255,4255,4255,4255,4255,4255,2,2,4255,2,2}, + {5212,3272,1609,4226,5381,4456,1368,2187,556,556,5895,1306,3255,2069,2069,3294,85,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,875,875,2,875,875,875,875,875,875,875,875,2,2,2,2,2,2,2}, + {5662,5822,4817,1149,217,3219,2586,286,871,2578,3042,328,328,955,1541,483,483,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3747,3747,3747,2,2,2,3747,3747,3747,2,2,3747,3747,3747,3747,3747,3747,3747,3747,3747,3747,3747,3747,3747,2820,2820,2,3747,3747,3747,3747,3747,3747,2820,2820,2,3747,2,2820,2820,2,2,2820,3747,3747,2820,3747,2,3747,2820,2820,2,2,2,2,3747,2,3747,3747,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2820,2,3747,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {5146,2024,4990,416,543,2059,113,4939,3497,2950,2710,2699,2699,2699,1653,3311,2969,2,3465,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2656,2,4811,2,4811,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,898,2,2,2,2,2,2,2,2,2,2,2,2,898,898,898,898,2,2,2,2,2,898,898,898,2,2,2,2,898,898,898,898,898,898,898,2656,2656,898,2656,2656,898,2656,2656,2656,2656,2656,2656,2656,2656,2656,2656,2656,2656,2656,2,2656,2656,2656,2656,2656,2656,898,2656,2656,2656,2656,2656,2656,898,898,898,898,2,898,898,898,898,898,898,2656,2656,2656,898,898,2656,2656,2656,2656,2656,2,2656,2656,2656,2656,2656,2656,2,2,2,2656,2656,2656,2656,2656,898,2656,2656,2656,2656,2656,2656,898,898,898,2656,2656,2656,898,2656,2656,898,898,2656,2656,2656,2656,2656,898,898,2656,898,2656,898}, + {3740,1782,2190,876,1140,2757,4149,6037,3133,1963,5011,310,1381,724,724,2583,2583,2583,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2904,2904,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2904,2904,2904,2904,2,489,489,2,1662,2904,2904,2904,2904,2,2,2,2,2904,2904,2904,1662,1662,1662,1662,1662,1662,1662,1662,1662,1662,2,2,1662,1662,2904,2904,2904,1662,2,1662,1662,2904,2904,2904,489,489,489,489,2904,2904,2904,2904,2904,1662,1662,1662,2904,2904,2904,2904,2904,2904,2904,1662,1662,1662,2904,2904,2904,2904,1662,2904,2904,1662,1662,1662,1662,1662,1662,1662,1662,1662,1662,4219,4219,4219,1662,1662,1662,1662,2904,2904,1662,1662,1662,2904,1662,1662,1662,1662,1662,1662,1662,2904,1662,1662,2,2,1662,1662,1662,1662,1662,1662,1662,1662,1662,2,1662,1662,1662,1662,1662,1662,1662,1662,1662,2,2904,2904,2904,2904,1662,1662,1662,2,1662,1662,1662,2,2,2904,3386,3386,3386,1662,2904,3386,3386,3386,3386,2904,2904,2904,2904,1662,1662,407,2,2,2,2,2,1662,3386,2904,2904,2904,2904,1662,3386,3386,1662,1662,1662,1662,3386,3386,3386,2904,2904,3386,2904,3386,3386,3386,3386,3386,2,2904,2904,2904,2904}, + {5183,2522,5684,3654,1465,5348,1013,4419,2221,1177,1177,682,682,3960,709,3305,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1655,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1655,1655,1655,1655,1655,2,2,2,2,2,2,2,1655,2,1655,2,2,2,2,2,2,2,2,2,2,2,1655,1655,2,2,2,1655,1655,2,2,2,2,2,1655,2,2,1655,1655,1655,1655,1655,1655,1655,1655,1655,1655,1655,2,2,2,2,1655,2,2,2,2,2,2,1655,1655,1655,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1655,2,2,2,2,2,2,2,2,2,2,2,2,1655,2,1655,1655,2,2,2,2,1655,2,2,1655,2,2,2,2,1655,1655,2,2,2,1655,1655,1655,1655}, + {5069,3278,2817,4849,2324,4827,2210,1085,5076,1706,797,4305,438,665,3603,763,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,32,3340,212,212,2,2,2,4944,53,212,32,32,32,32,32,1616,1616,1616,32,32,32,1616,1616,1616,1616,1616,1616,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1624,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,851,2,3630,32,3340,212,212,2,2,2,4944,53,53,32,32,32,32,32,1616,32,32,32,32,53,53,53,53,53,101,101,2,212,212,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {5233,791,2594,3255,1692,590,2406,2903,3852,282,629,3212,174,215,2867,49,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3053,3053,3053,3053,3053,3053,2,3053,3053,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3395,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {5244,2671,2818,2774,4981,3565,5793,4428,2037,2886,78,5719,1672,1672,261,261,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1985,2,816,2,816,816,816,816,2,2,2,816,816,816,816,2,2,2,1985,1985,1985,1985,2,2,1985,2,2,816,1985,1985,1985,2,1985,1985,1985,1985,1985,1985,1985,1985,1985,816,1985,1985,1985,1985,2,1985,1985,1985,1985,1985,1985,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1985,1985,1985,1985,2,2,2,2,2,2,2,1985,1985,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1985,2,2,1985,1985,1985,1985,1985,1985,2,2,1985,2,2,1985,1985,1985,1985,2,1985,1985,2,2,2,2,1985,1985,1985,1985,1985,1985,2,1985,1985,2,2,2,2,2,2,2,2,2,2,2,1985,1985,1985,2,2,2,1985,2,1985,2,2,2,2,2,2,2,2,2,2}, + {5322,922,1084,4184,161,5283,383,3534,714,4515,726,662,3712,2079,2079,2079,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5378,5378,5378,5378,5378,2,2,2,2,2,2,2,2,2,2,2,2,2,4573,4573,4573,4573,2,2,2,2,2,2,3076,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3076,3076,2,2,2,2,2,2,2,403,2,2,2,2,2,2,2,2,2,2,2,403,403,2,2,2,2,2,2,2,2,2,2,2,2,2,168,168,2,2,2,403,403,403,403,403,403,403,2,2,2,2,2,4573,2,4573,2,2,2,2,2,2,2,2,2,2,3076,2,2,2,2,403,1198,1198,1198,403,2,2,1198,2,2,2,2,2,2,2,2}, + {5804,2537,4928,1129,781,91,219,1950,829,1381,1328,445,445,445,425,4204,2,2,2,815,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5673,5673,5673,5673,2,2,2,5673,5673,5673,5673,5673,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4059,2714,3895,3105,2189,3346,4891,5469,2186,3378,5236,4294,4802,4286,4286,1519,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3089,3089,3089,2,2,2,2,2,2,2,2,2,3089,3089,3089,2,2,3089,2,2,2,2,3089,3089,3089,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3089,2,2,2,2,3089,3089,3089,3089,3089,3089,2,2,2,2,2,2,2,2,3089,2,2,2,2,2,2,2,2,2,3089,2,2,2,2,2,2,2,2,2,2,2,3089,2,2,2,2,2,2,2,2,2,3089,3089,3089,3089,2,2,2,3089,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3089,3089,2,2,2,2,2,2,2,2,2,2,2}, + {5708,2052,1810,2084,3267,5414,2599,1730,480,3401,3327,4647,1748,2161,2161,1874,2,1874,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1216,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1216,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1216,1216,2,2,2,2,2,1216,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1216,1216,2,2,2,2,2,2,2,2,2,1216,2,1216,1216,1216,1216,1216,1216,2,2,1216,1216,1216,1216,1216,1216,1216,1216,1216,1216,1216,1216,1216,1216,1216,1216,1216,2,1216,1216,1216,1216,2,2,1216,1216,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1216,1216,1216,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {5167,3267,4478,526,238,4744,2894,1249,1449,2608,3908,2956,2302,942,3139,4,2,2468,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6319,6319,6319,6319,6319,6319,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {5779,4265,1332,3103,3199,2704,4797,1444,134,2110,1077,1505,1268,3258,3258,3258,2,2,2,2,3023,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5206,5206,2,2,2,2,2,2,2,2,2,2,5206,5206,5206,5206,2,5206,5206,2,2,5206,5206,5206,2,2,2,2,2,2,2,5206,2,5206,5206,5206,5206,5206,5206,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4109,5508,3813,1006,3515,4723,737,724,6208,83,1987,6265,6265,6265,3440,3440,3440,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1994,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1298,1298,2,277,277,1298,2,2,2,2,2,2,2,2,2,2,1298,1298,1298,2,2,2,2,2,2,2,2,2,2,2,1298,1994,1994,1994,1298,1994,2,2,2,1994,1994,1994,1994,1994,1994,1994,1994,1298,1994,1994,1994,1994,1994,2,2,2,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1298,1298,1994,1994,1994,1994,1994,1994,1994,1994,1994,1628,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994,1994}, + {5166,4507,3355,2589,6243,1427,1072,3932,2199,628,1694,1694,4032,673,3476,158,78,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,915,915,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4133,4348,5825,2390,3111,376,828,347,5825,1701,634,409,676,676,676,676,2376,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1349,2,2,2,2,2,2,2,1349,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1349,1349,2,2,2,2,1349,1349,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {5417,1192,700,4364,4180,1484,1398,3796,5333,1357,1579,3291,1467,2831,2831,1278,1278,2,2,2,901,901,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,119,119,119,119,119,119,119,119,2,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,2,119,2,2,119,119,2,119,119,119,119,119,2,119,119,119,119,119,119,119,119,119,2,119,119,119,119,119,2,2,119,119,2,2,119,2,2,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,2,2,2,542,119,2,2,119,901,119,119,119,119,119,119,119,2,2,119,119,2,2,901,901,901,901,901,901,901,901,2,2,119,2,2,2,2,119,2,2,2,2,2,2,119,2,119,2,2,2,2,2,2,2,2,2,2,2,2,2,2,119,2,119,2,2,2}, + {5248,4840,1313,1073,1888,6180,3435,2029,1949,2602,1512,2808,3344,3344,3344,638,4127,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4587,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4587,4587,4587,4587,2,4587,2,2,2,2,2,2,2,2,4587,4587,2,2,2,2,2,2,4587,4587}, + {4207,2203,472,676,2009,831,2009,1629,2964,4153,1536,640,6305,6305,4269,3614,219,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1269,2,1269,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1269,1269,2,2,2,2,1269,2,2,1269,2,2,2,1269,1269,2,2,2,2,2,1269,1269,1269,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1269,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4365,1463,1740,795,1858,472,1283,2657,2929,4034,1601,1530,1399,161,2928,2928,2928,2,2,2,2,2,2,2,2,2,2,5097,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1655,2,2,2,1655,1655,1655,2,2,1655,1655,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1655,1655,2,1655,2,1655,1655,2,2,2,1655,1655,2,2,1655,2,2,2,2,2,2,2,2,2,1655,2,2,2,2,2,2,2,2,2,2,2,1655,1655,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1655,2,2,2,2,1655,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1655,2,2,2,2,2,2,2,2,1932,1932,1932,2,2,2,2,2,2,1932,1932,1932,2838,2838,2838,2838,1655,1655,1655,1655,2,2,2,2,2,2,2,2,2,1655,1655,1655,2,2,2,1655,2,2,1655,2,2,1655,1655,2,2,2,2,1655,2,2,1655,1655}, + {4375,1446,4054,5039,941,5576,1387,6392,1969,1750,3465,385,4423,385,5112,2,3035,2450,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3277,3277,3277,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1170,2,1170,1170,1170,2,3277,3277,3277,3277,3277,3277,3277,2,2,2,2,2,2,2,2,2,2,2,2,3277,2,2,2,2,2,3277,2,2,3277,2,3277,2,2,2,2,3891,2,2,2,2,3891,2,3891,3891,3891,3891,2,2,2,2,3277,3277,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {5562,5133,6411,1617,136,945,2433,4497,6453,4605,6868,1372,2356,771,2623,5924,1674,1674,2,2,2,2,2,1523,1523,1523,1523,1523,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1523,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4269,1508,301,1058,3289,941,365,3960,2588,115,1486,3279,2288,2288,2288,2,2,5672,5672,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4287,3435,804,5943,5354,4271,3731,1455,5412,3316,4206,6714,4849,3944,1572,2363,2363,2,3315,3315,2,3315,3315,2,2,2,1775,1775,1775,1775,2,2,2,2,2,1775,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2363,2363,2363,2363,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {5353,3815,5121,3481,349,2426,3182,1046,858,2925,840,1169,5011,5720,248,2,2,2,2,2,2,2,4,4,4,4,1238,1238,1238,3693,3693,3693,3693,3693,3693,3693,3693,3693,3693,3693,3693,3693,3693,1715,2,1514,1514,1514,1514,1715,1514,1514,1238,1238,1238,1238,1238,1238,1238,1238,3306,3306,3306,3306,3306,3306,3306,3306,3306,3306,3306,3306,3306,3306,2,3306,3306,3306,1715,1715,2479,2479,2479,2479,2479,2479,1238,1238,1238,1238,2479,2479,2479,1238,1238,1238,1238,1238,1980,1514,692,692,848,1238,1980,848,1514,692,1238,692,1238,848,1238,848,848,848,1011,1011,1011,1011,2,1011,1011,1011,2,2,2,2,2,3306,2,2,2,3306,3306,3306,3306,3306,3306,3306,3306,3306,3306,3306,1980,166,166,3693,3693,166,1514,166,166,166,166,166,166,166,166,166,166,2,2,2,166,166,166,2479,2,2,2,2,2,2,2,2,2,2479,2,2,2479,2,2,2479,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,848,2,848,848,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4048,2321,5128,4127,4697,2138,3200,290,4303,2102,2958,182,1302,1628,1302,2,2,1302,1302,2,2,4409,2,2,2,2,2,2,4409,4409,2,2,4409,4409,2,4409,2,2,4409,4409,4409,4409,2,4409,2,2,4409,4409,4409,4409,4409,4409,2,2,2,2,2,2,2,2,2,2,2,2,4409,2,2,2,2,2,4409,4409,4409,4409,4409,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {5620,3125,3521,474,611,2430,3045,1331,2955,2809,3981,3110,1317,2479,1399,2171,2171,3402,2171,2,2171,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2171,2,2,2,2,3011,2,2,2,2,2,2171,2,2,2,2837,2,2,2,2,2,2,2837,2,2,3011,2,2171,2,2,2171,2,2,1720,1720,1720,1720,1720,2,1720,1720,2,6192,2,2,2,2,2,2,2,2,2,2,2,2,2837,2,2,2,2,2,2,2,2,2,2,2,2837,2,3011,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6192,2,6192,6192,2,2,2,6192,2,6192,6192,2,6192,6192,2,6192,6192,6192,6192,2,2171,2171,2171,2171,2171,6192,2,2171,2171,2,2171,6192,2,6192,6192,6192,6192,6192,2,2,2,2,2171,2171,2171,3011,2171,6192,6192,2171,2,2171,2171,6192,2171,6192,2171,2171,2171,2171,2171,2171,2171,2171,2,2,2,2,2,2,2171,2,2,2,2,2,2,2171,2171,2,2,2171,2171,2171}, + {5453,3563,942,1798,3278,2524,3087,957,470,1155,2694,3329,367,1071,2554,4399,4399,2845,2,2,2,2,2,2,2,2,2,2,2,3529,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3529,3529,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3529,3529,2,2,3529,3529,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3137,3137,3137,2,3137,3137,2,3137,3137,2,2,2,3529,3529,2}, + {5626,2346,3777,3493,5149,2692,2414,886,343,144,327,3637,330,594,3873,1244,1244,2837,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4485,4485,4485,4485,4485,2,2,4485,4485,4485,2,4485,4485,4485,2,4485,2,2,2,2,4485,2,4485,2,2,2,2,2,2,2,2,2,2,4485,4485,2,2,2,2,2,2,4485,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4485,2,4485,4485,4485,2,4485,2,2,4485,4485,4485,4485,2,4485,2,4485,4485,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4485,2,4485,4485,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4485,4485}, + {5444,1794,999,2466,641,2137,3171,4129,715,223,2107,1050,3889,3889,4830,2641,4794,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {5775,982,901,1782,1640,1974,1669,99,1251,1688,2053,2274,708,1622,3556,894,1119,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,894,2,2,6406,6406,2,2,2,2,2,894,894,894,894,2,839,894,894,894,2,894,2,894,894,2,894,894,894,839,2,2,2,894,894,2,2,2,894,894,894,894,894,2,2,2,2,894,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {5803,2854,4083,2039,1441,232,3329,2148,597,280,2938,3496,487,487,696,843,1591,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3476,3476,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3476,3476,2,2,3476,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3476,2,2,2,2,2,3476,3476,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {5849,2753,4125,3526,4149,5602,1925,2971,2117,684,551,283,5748,5537,1920,1920,1920,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {6280,2350,1452,3594,3198,1796,2975,968,1155,5005,5005,821,2410,2410,2410,4406,2530,1229,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3104,2,3104,3104,3104,2,2,2,2,2,2,2,2,2,2,2,2,3104,3104,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3104,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3104,2,3104,3104,717,2,2,2,2,2,2,2,2,3104,3104,3104,3104,3104,3104,3104,3104,3104,3104,3104,3104,3104,3104,3104,3104,3104,3821,3821,3104,3104,3104,3104,3104,3821,3104,3104,2,3104,3104,3104,2,3104,3104,2,2,2,2,2,2,3104,3104,3104,2,2,2,2,2,3104,3821,3104,3104,2,2,2,2,2,3821,2,2,3104,3104,3104,3104,3104,3104,3104,3104,3104,3104,3104,2,3104,3104,3104,3104,3104,3821,3104,3821,3821,3104,3104,3104,3821,3821,3821,3821,3821,2,2,2,2,3104,3104,2,3104,717,717,717,717,2,3104,3104,3104,3104,2,2,2,2,3104,3104,3104,3104,3104,3104,3104,3104,3104,3104,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {6305,1257,3705,2637,1366,526,2307,2419,1906,857,2757,4855,1251,1251,4469,4469,4469,1995,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1403,1403,1403,2,2,2,2,1403,2,2,2,2,2,2,2,1403,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1403,2,2,2,2,2,2,2,2,2,2,1403,2,1403,2,2,2,2,2,2,2,2,2,2,2,2,1403,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1403,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1403,2,2,2,2,2,2,2}, + {5838,1426,920,320,2216,1897,1111,1071,685,931,3243,2425,3730,568,3730,862,2,2,345,345,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {4517,2905,4274,148,3162,1789,5744,1424,3641,3321,172,100,4400,2530,2583,2794,2,2,2,2,1206,2,2794,2,2,2,2,2,2,2794,2794,2,2794,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2794,2,2,2,2794,2794,2794,2794,2794,2,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2,2,2794,2794,2794,2794,2794,2794,2,2,2,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2794,2,2794,2794,2,2,2,2,2,2,2794,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2794,2794,2,2794,2794,2794,2,2794,2794,2794,2794,2794,2140,2140,2794,2794,2794,2794,2794,2794,2794,2,2,2794,2794,2,2,2,2,2,2,2}, + {6444,2317,739,1363,5943,3777,636,3242,2307,2065,5947,6223,110,110,110,110,2,1020,2893,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1837,1837,1837,2,2,1837,1837,2,2,2,1837,1837,1837,1837,1837,1837,1837,1837,1837,1837,2,2,1837,1837,1837,1837,1837,1837,1837,1837,2,2,2,2,2,1837,2,2,2,2,1837,2,2,2,2,2,1837,2,2,2,1837,1837,1837,1837,1837,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1837,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1837,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {6082,1791,764,4581,2353,3979,760,3061,1937,965,4982,3689,2099,1809,552,552,3316,6819,2,2,3491,3491,3491,3491,3491,3491,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,899,2,2,2,2,2,899,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2099,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2099,2099,2,2099,2,2,2,2,2,2,2,2099,2,2,2,2099,2099,2,2,2,2,2,2099,2,2,2,2,2,2,2,2,2,2,2,2,2099,2,2,2,2,2099,2099,2,2,2,2099,2099,2099,2099,2,2,2,2099,2099,2099,2099,2099,2,2,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099,2099}, + {5851,2331,5843,3055,3415,2664,1767,4171,3970,1104,6287,2997,2621,2621,3518,4538,790,2,902,2946,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2946,2,2,2,2,2946,2946,2,2946,2,2,2,2,2,2946,2,2,2,2946,2946,2946,2,2,2946,2946,2946,2946,2946,2946,2946,2946,2946,2946,2946,2946,2,2946,2946,2946,2946,2946,2946,2946,2946,2,2,2,2946,2946,2946,2946,2946,2946,2,2,2,2,2,2,2946,2946,2946,2,2,2946,2946,2,2,2,2946,2946,2946,2,2946,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {5893,6318,2368,4197,776,1648,1404,5994,530,2306,2339,902,2,352,564,463,564,3672,3672,2,705,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} +}; diff --git a/Cuba/src/divonne/KorobovCoeff.c-2423 b/Cuba/src/divonne/KorobovCoeff.c-2423 new file mode 100644 index 0000000..658b94a --- /dev/null +++ b/Cuba/src/divonne/KorobovCoeff.c-2423 @@ -0,0 +1,267 @@ +#define KOROBOV_MINDIM 2 +#define KOROBOV_MAXDIM 33 +#define MAXPRIME 2423 + +#define Hash(x) ((4973 - x)*(-47 + x))/25245 + +static int prime[] = { + FIRST,47,53,59,61,67,73,79,83,89,97,101,103,109,113,127,131,137,139,149, + 151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241, + 251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353, + 359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461, + 463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587, + 593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691, + 701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823, + 827,829,839,853,857,859,863,877,881,887,907,911,919,929,937,941,947,953, + 967,971,977,983,991,997,1009,1019,1021,1033,1039,1051,1061,1069,1087, + 1091,1097,1103,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201, + 1217,1229,1237,1249,1259,1277,1279,1289,1297,1307,1319,1327,1361,1367, + 1373,1381,1399,1409,1423,1427,1429,1439,1453,1459,1481,1489,1499,1511, + 1523,1543,1553,1567,1579,1597,1607,1621,1637,1657,1663,1669,1697,1709, + 1723,1741,1759,1777,1789,1811,1831,1847,1867,1889,1907,1931,1951,1973, + 1999,2027,2053,2081,2111,2143,2179,2221,2269,2333,MarkLast(2423) +}; + +static short coeff[][32] = { + {13,11,10,3,9,2,2,2,2,9,2,2,7,2,2,2,2,2,2,6,2,2,2,13,11,10,3,9,2,2,2,2}, + {23,17,12,11,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,12,14,14,14}, + {18,14,5,14,2,2,19,19,25,25,18,18,18,2,2,2,2,2,2,2,2,2,2,2,25,6,2,2,2,18,14,5}, + {17,21,7,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,2,2,2,6,2,2,2,17,7}, + {18,13,23,5,2,12,6,12,12,12,10,10,16,2,16,16,2,2,2,2,2,2,2,10,2,2,2,2,10,2,2,2}, + {27,14,10,14,2,4,13,2,2,16,4,4,4,6,6,6,6,6,6,25,25,31,31,15,31,2,2,31,15,14,14,6}, + {29,19,27,32,6,8,2,2,2,2,2,8,8,2,2,2,2,9,9,9,9,2,2,2,2,2,2,2,9,9,2,2}, + {30,19,24,16,22,8,2,2,22,5,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {34,28,13,28,27,27,2,4,2,2,2,16,16,4,20,20,36,20,36,5,5,5,36,36,5,5,5,7,5,7,7,2}, + {35,19,33,8,21,30,8,2,4,2,4,4,2,2,2,2,2,2,2,2,2,17,2,2,11,25,11,17,17,17,17,17}, + {39,40,15,21,11,26,13,2,2,13,2,2,2,2,2,2,2,2,2,2,26,26,2,2,2,2,2,2,2,2,2,2}, + {37,21,35,29,27,19,19,2,2,2,5,15,2,2,15,15,19,19,19,19,19,2,2,2,2,2,19,2,2,2,2,2}, + {45,44,13,25,17,47,30,2,30,2,2,2,2,2,2,2,2,2,19,19,19,17,17,2,2,2,2,2,2,2,2,2}, + {35,22,37,9,35,12,35,8,2,2,50,50,2,2,32,32,32,31,13,8,8,8,2,22,50,9,9,9,22,22,22,10}, + {29,24,43,36,49,2,2,8,4,25,49,25,2,2,8,10,10,10,5,5,5,40,10,33,40,40,2,27,10,25,25,25}, + {50,18,32,39,21,2,2,2,4,4,36,36,14,14,14,14,2,2,2,17,17,17,16,16,2,14,14,14,14,2,2,2}, + {31,28,45,20,18,43,43,13,28,2,2,2,31,31,31,31,31,2,2,2,43,43,2,2,2,2,2,2,2,2,30,2}, + {39,15,41,7,24,2,2,30,40,2,2,25,25,25,25,2,2,2,2,2,2,6,6,2,25,2,5,2,2,25,2,2}, + {44,20,29,39,7,21,21,21,2,2,45,2,2,2,49,49,49,49,49,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {56,20,22,13,18,35,35,6,2,4,2,4,2,2,2,23,16,16,4,23,2,34,52,2,34,2,4,2,2,2,23,16}, + {46,32,17,18,29,27,31,31,31,2,2,4,15,2,2,2,2,2,2,2,2,2,2,2,2,2,23,32,32,32,15,15}, + {62,42,43,17,23,13,13,2,2,13,2,2,2,2,2,2,2,10,2,2,2,2,9,10,2,2,2,19,9,9,9,9}, + {46,49,49,52,27,7,20,2,2,6,6,13,13,13,2,13,13,2,2,2,2,2,2,34,34,2,2,2,2,2,2,2}, + {64,34,16,28,16,51,47,2,2,2,6,18,39,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,2}, + {74,26,44,25,50,24,54,39,58,42,2,42,42,2,2,2,2,2,2,2,2,33,33,2,2,39,11,2,2,58,39,58}, + {70,22,50,22,16,9,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {74,21,17,25,35,33,10,2,10,20,20,57,57,57,2,2,57,2,2,2,2,2,2,2,13,2,2,2,2,2,2,2}, + {81,18,10,11,47,38,71,37,2,37,2,2,2,2,2,26,26,26,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {71,68,68,27,71,39,81,44,2,2,2,12,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {55,30,85,42,16,36,45,67,2,2,68,2,2,2,2,2,2,2,68,10,2,2,2,2,2,2,2,2,2,2,2,2}, + {64,17,24,26,49,12,10,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,59,2,2}, + {68,57,23,38,61,38,13,13,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,68,15,2,44,44,44,2,2,2}, + {94,28,58,29,13,5,15,8,66,2,2,2,39,39,15,66,2,2,6,6,2,2,66,66,66,66,2,2,2,2,2,66}, + {94,85,9,41,41,37,29,29,17,2,2,2,7,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,8,8}, + {89,32,75,77,77,13,2,30,30,2,2,2,2,2,2,2,2,2,2,67,67,2,2,2,2,2,2,2,2,8,19,32}, + {70,45,58,63,67,10,72,72,70,6,2,36,2,70,70,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {101,33,76,13,45,63,2,2,6,19,2,2,32,32,32,32,32,65,2,63,63,11,11,11,19,19,19,19,9,63,63,63}, + {70,89,44,37,19,45,2,2,2,8,10,8,54,54,80,80,80,80,80,2,116,2,116,2,2,80,40,51,100,100,8,2}, + {71,54,83,51,42,98,2,2,8,8,14,30,93,22,15,15,30,30,30,44,44,44,2,2,22,22,22,117,44,11,11,11}, + {109,37,51,113,17,10,2,2,17,17,55,2,55,55,55,55,55,55,2,2,2,57,48,48,55,55,2,2,55,2,2,55}, + {75,38,68,89,11,52,2,2,81,39,2,38,2,2,2,2,2,2,2,2,2,2,2,19,2,2,2,2,2,2,2,2}, + {80,38,62,66,39,59,2,36,48,33,2,2,41,2,48,48,2,2,2,2,2,2,48,2,2,2,2,2,2,2,2,2}, + {81,84,35,34,20,93,2,12,12,12,2,96,2,96,96,2,96,2,2,2,2,2,2,2,2,2,2,2,2,56,56,56}, + {109,72,60,96,67,32,85,84,27,91,91,2,10,29,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {104,32,56,46,77,11,35,35,24,56,19,2,2,2,78,2,2,75,2,2,2,2,78,2,2,2,2,2,2,2,2,2}, + {81,103,25,35,28,15,20,20,20,2,2,2,2,20,20,20,107,107,2,2,2,2,2,2,2,2,2,2,2,2,13,13}, + {119,75,42,29,74,23,54,36,39,2,2,4,4,19,19,2,2,2,2,2,2,2,2,54,2,2,2,2,2,2,2,54}, + {115,73,22,102,75,138,16,73,50,16,2,50,2,2,2,133,2,2,2,2,2,2,2,2,2,2,2,2,2,33,33,33}, + {119,48,66,51,14,22,20,20,2,2,2,2,2,60,2,2,2,2,2,2,2,2,60,2,2,2,2,2,2,60,2,65}, + {121,94,80,29,51,69,42,36,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,2,2}, + {129,123,41,79,43,34,24,11,2,2,4,2,2,2,2,75,16,16,16,75,75,75,16,16,16,25,2,99,2,2,75,16}, + {128,33,35,68,22,8,62,94,2,2,2,62,62,2,98,2,2,4,98,2,2,32,81,32,32,32,98,98,98,98,98,98}, + {101,109,154,15,57,6,27,36,2,2,37,37,2,2,2,2,2,2,2,107,2,2,2,107,107,2,2,2,2,2,2,2}, + {106,40,24,38,61,118,106,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {149,111,58,79,127,13,41,33,27,16,30,2,61,2,72,2,2,2,2,2,2,2,2,2,2,2,2,75,75,2,2,2}, + {105,92,43,156,25,53,57,115,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {99,40,62,67,66,29,99,99,99,78,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,79}, + {109,42,96,95,66,41,103,84,13,103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {111,72,16,89,25,86,117,29,14,14,2,2,2,2,2,60,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {106,72,49,94,140,44,97,157,75,2,2,4,123,123,2,2,123,123,123,123,2,2,2,2,2,2,2,2,2,2,2,2}, + {115,67,74,32,43,50,21,36,135,36,85,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {151,71,157,42,41,37,80,27,18,2,2,2,2,2,2,2,2,2,2,2,2,2,115,128,128,128,128,128,32,2,128,80}, + {119,91,38,30,92,44,32,76,22,2,34,2,2,2,2,2,2,2,2,2,2,2,2,2,2,129,2,2,129,2,2,2}, + {121,126,31,52,120,37,57,10,171,2,2,2,2,35,35,35,2,2,97,97,97,97,97,97,97,35,35,35,97,97,97,2}, + {155,86,49,104,87,94,64,45,61,91,91,91,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {164,121,44,166,47,33,7,15,13,2,2,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {128,120,133,17,71,52,25,107,42,21,21,2,2,2,2,4,4,96,2,9,9,2,9,94,94,94,94,94,94,94,94,96}, + {179,82,157,76,61,35,13,90,197,2,69,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,39,39}, + {136,136,148,63,66,10,169,95,95,163,30,28,28,2,41,130,2,2,2,21,2,2,2,2,2,2,2,2,2,2,2,36}, + {131,40,112,63,55,30,53,79,79,79,2,79,2,2,2,2,2,79,2,2,2,2,14,36,2,21,21,21,21,2,2,91}, + {165,81,92,48,9,110,12,40,40,34,2,2,2,107,107,107,2,107,2,2,2,2,2,2,2,2,2,2,2,15,41,41}, + {169,66,170,97,35,56,55,86,32,32,2,2,2,2,14,2,40,2,37,2,2,37,40,40,40,2,2,2,37,37,37,37}, + {135,63,126,156,70,18,49,143,6,117,2,109,109,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {179,104,117,56,132,56,190,130,130,15,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {193,59,51,68,68,15,170,170,170,143,143,12,2,2,2,63,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {145,101,56,65,23,76,110,2,4,4,4,146,146,146,2,146,2,2,2,2,2,2,2,2,2,2,2,2,2,2,146,146}, + {144,129,26,98,36,46,47,52,52,52,82,2,2,2,2,2,17,2,2,2,2,2,2,2,2,2,2,2,2,91,2,2}, + {145,78,166,171,56,20,63,2,2,33,33,33,33,2,78,47,47,47,47,47,2,2,2,2,2,78,78,78,2,2,2,2}, + {191,69,176,54,47,75,167,2,2,2,188,188,188,30,30,2,67,67,117,2,117,117,117,2,2,36,2,2,2,2,2,2}, + {186,96,29,122,47,96,170,157,157,157,157,108,159,2,195,195,26,26,26,26,26,2,2,2,2,132,132,132,2,2,2,2}, + {151,118,226,91,54,49,33,2,2,2,2,4,4,4,143,143,2,2,143,25,25,25,2,143,143,143,143,143,143,143,143,143}, + {144,91,237,82,81,75,138,163,163,163,117,117,44,2,44,136,136,136,136,2,2,2,2,2,122,122,122,122,2,2,2,136}, + {189,78,178,64,118,27,189,2,2,67,67,110,110,110,110,2,28,28,2,2,2,2,2,2,2,102,2,2,2,2,2,2}, + {165,202,83,76,125,65,42,2,44,44,23,2,23,23,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {209,204,92,75,85,146,104,2,7,18,8,2,2,2,204,95,95,95,2,2,2,95,95,95,95,95,95,95,2,2,2,95}, + {169,68,89,16,193,82,33,262,262,175,148,148,148,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {171,162,78,43,61,17,112,10,171,182,118,33,2,2,2,2,118,2,2,2,2,2,2,151,2,2,2,2,2,2,2,2}, + {211,121,119,55,90,211,96,89,225,25,178,36,36,36,2,2,108,2,2,2,2,2,2,2,2,2,2,2,2,184,2,2}, + {154,101,83,17,16,210,41,79,70,158,2,27,27,2,2,2,2,2,2,2,2,2,2,2,2,153,2,2,2,2,2,2}, + {169,179,130,79,148,180,136,17,47,119,2,119,119,169,169,2,169,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {241,171,148,31,172,34,66,60,156,140,2,2,2,75,75,2,2,2,2,2,2,2,190,190,2,2,2,30,2,2,2,2}, + {229,189,183,106,118,138,82,149,265,39,2,2,265,2,2,2,2,2,2,130,2,2,2,71,71,2,2,2,71,2,2,71}, + {165,157,127,21,64,15,80,130,130,130,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,74,2}, + {221,130,203,84,83,83,29,121,54,54,2,141,2,2,94,94,94,4,4,4,2,4,2,2,2,54,54,108,16,16,94,52}, + {230,166,20,160,121,102,153,94,16,67,2,2,2,2,2,2,97,97,97,2,2,97,97,2,97,97,97,97,97,97,97,97}, + {181,79,137,119,139,24,77,17,50,25,25,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {239,242,192,40,41,62,124,193,193,31,193,2,2,2,2,2,2,2,2,2,2,2,2,148,2,2,2,2,2,2,2,2}, + {239,178,73,122,239,51,95,48,78,88,78,2,2,2,2,2,2,2,2,2,2,2,144,144,2,2,144,144,144,2,144,144}, + {234,117,198,34,143,21,74,6,252,252,98,2,2,2,2,197,38,2,2,2,2,2,47,2,47,47,47,47,2,2,2,47}, + {179,110,38,28,58,39,16,29,42,125,202,8,8,129,4,4,2,2,2,67,67,2,2,2,2,2,2,8,67,67,2,2}, + {246,53,189,50,18,59,179,179,7,137,137,2,2,103,103,103,103,40,40,40,2,2,2,2,73,73,73,2,103,103,103,103}, + {239,133,87,92,193,12,206,238,238,238,31,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {191,244,60,193,18,32,193,104,74,125,125,66,2,2,2,2,2,2,2,2,2,2,125,125,2,125,125,125,2,2,2,2}, + {177,74,90,91,172,219,63,84,32,2,2,196,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {253,143,54,39,122,32,75,107,234,2,6,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {282,89,71,88,30,23,81,105,105,2,2,105,105,131,107,2,2,2,2,2,195,195,2,2,29,29,21,21,128,195,195,195}, + {259,115,171,40,156,71,67,24,24,2,2,2,24,4,4,4,2,234,2,2,2,2,2,2,2,2,2,74,74,2,2,2}, + {264,237,49,203,247,108,75,75,75,2,2,32,16,8,16,16,16,164,14,164,2,2,32,16,8,16,16,32,42,42,42,2}, + {264,106,89,51,29,226,23,286,286,151,151,151,151,151,2,2,2,2,2,2,31,31,31,2,2,2,2,2,2,2,2,284}, + {194,215,82,23,213,23,108,127,74,2,201,32,178,2,285,2,2,2,2,285,2,2,2,2,2,2,2,2,2,2,2,2}, + {196,267,251,111,231,14,30,52,95,2,154,53,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {266,67,22,101,102,157,53,95,130,2,42,76,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {281,205,107,178,236,122,122,316,76,215,215,2,60,2,2,2,2,2,2,227,2,2,2,2,2,2,2,2,27,2,2,2}, + {271,89,65,195,132,162,102,45,56,174,104,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {200,169,170,121,155,68,131,167,78,113,113,2,2,64,2,2,2,2,2,2,2,2,2,2,2,2,2,173,2,2,2,2}, + {288,143,265,264,71,19,231,169,27,27,27,2,2,2,2,2,2,2,2,2,2,2,2,2,51,2,2,2,2,2,2,2}, + {311,141,96,173,90,119,134,151,35,252,39,2,39,39,2,2,2,2,2,2,2,2,2,113,113,2,2,2,2,2,2,113}, + {311,230,52,138,225,346,162,216,216,91,160,182,91,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {275,167,128,244,184,184,44,210,237,139,139,139,139,2,2,2,2,2,2,2,2,2,2,73,2,2,2,2,2,2,2,2}, + {176,156,83,135,46,197,108,63,33,33,33,2,133,2,213,213,213,213,133,133,2,133,2,2,133,133,2,2,2,2,2,2}, + {283,125,141,192,89,181,106,208,124,124,2,112,112,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {289,191,171,152,191,173,54,13,21,56,56,56,2,2,2,2,2,2,2,2,2,220,2,2,2,2,2,2,2,2,2,2}, + {334,305,132,132,99,126,54,116,164,105,2,105,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,287,2,2,2,2}, + {240,166,44,193,153,333,15,99,246,99,2,2,99,99,2,2,2,2,195,195,195,2,195,195,2,263,263,2,195,195,195,263}, + {246,194,265,79,225,65,24,62,46,181,2,2,2,314,2,2,2,2,2,2,2,215,2,2,2,2,2,2,2,2,2,2}, + {229,334,285,302,21,26,24,97,64,40,2,2,2,231,231,231,231,65,2,148,2,2,2,2,2,2,2,2,2,2,2,2}, + {251,295,55,249,135,173,164,78,261,261,2,2,2,2,114,2,2,2,2,2,256,142,142,2,2,2,2,2,2,2,2,185}, + {232,153,55,60,181,79,107,70,29,35,2,2,58,58,2,58,2,2,2,2,61,61,2,61,61,2,2,61,61,90,2,90}, + {246,116,45,146,109,90,32,103,133,119,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {246,113,146,232,162,262,204,47,45,331,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {360,150,84,275,13,26,368,49,244,244,63,63,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {239,295,174,87,30,87,85,36,103,36,2,278,2,2,2,2,2,2,163,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {356,300,75,310,123,301,200,107,183,37,218,37,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {358,207,168,150,150,21,156,50,195,275,275,275,2,2,2,2,2,251,2,2,2,251,251,251,251,251,251,251,251,251,2,2}, + {322,194,234,62,236,147,239,400,255,255,80,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {326,276,134,100,143,113,115,221,13,339,194,194,194,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {192,213,113,174,403,117,342,342,311,35,35,2,2,2,2,2,2,2,2,101,2,2,2,2,2,2,2,2,2,101,101,101}, + {264,273,316,53,40,330,51,285,115,219,147,2,2,2,335,2,2,2,2,2,173,2,173,2,2,173,173,173,173,173,173,83}, + {254,293,407,118,54,296,160,231,4,4,93,2,2,2,2,2,60,61,2,2,120,127,127,127,88,88,88,88,88,88,88,88}, + {341,78,336,263,281,164,99,334,296,114,109,2,163,163,163,163,2,2,2,2,2,2,2,125,125,292,292,292,292,125,125,125}, + {355,87,212,100,89,210,133,344,120,45,45,138,138,138,138,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {274,141,46,219,158,284,38,79,73,185,35,6,81,2,2,2,2,53,2,2,81,81,2,81,2,2,2,53,53,53,53,53}, + {349,303,439,19,95,240,174,191,2,162,162,2,2,2,76,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {360,91,201,205,67,181,59,77,2,44,103,103,103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,125}, + {283,154,261,91,77,147,227,105,116,311,256,256,2,116,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,32,2}, + {287,288,111,89,249,370,55,16,248,67,67,115,2,2,134,134,2,2,2,2,2,2,2,2,2,2,2,2,2,22,22,22}, + {284,270,282,37,29,181,160,49,285,285,374,250,2,374,374,2,2,2,179,179,35,2,179,179,2,179,179,2,2,285,285,285}, + {359,305,52,36,243,231,7,92,2,68,68,307,62,45,2,2,112,311,311,311,2,2,2,2,2,2,2,2,2,2,2,2}, + {288,119,218,137,364,38,27,380,2,2,211,23,33,2,2,2,2,2,225,225,225,2,2,225,225,225,2,2,2,2,2,2}, + {277,155,232,309,370,365,348,75,214,214,214,4,4,2,2,2,210,210,210,210,210,210,210,2,2,2,2,2,2,2,2,2}, + {292,204,91,41,124,190,107,322,125,125,125,125,125,25,25,62,2,2,146,146,2,2,62,146,2,146,114,146,114,2,2,2}, + {282,195,192,409,68,99,253,106,2,2,2,231,55,55,2,323,323,55,55,285,285,285,285,2,2,2,2,2,2,285,285,323}, + {282,222,268,86,21,109,353,408,2,2,2,2,135,12,12,216,241,241,241,241,241,241,241,241,241,303,303,303,135,135,135,2}, + {374,94,89,257,137,246,186,196,2,2,2,2,2,454,122,122,122,122,2,2,2,28,28,94,94,94,94,94,122,122,122,122}, + {288,370,141,284,207,192,450,67,2,2,2,183,217,217,217,183,183,167,202,202,202,202,167,167,2,2,2,164,164,80,167,167}, + {286,293,199,39,158,332,242,103,2,2,2,408,266,315,2,2,365,253,315,315,315,315,315,2,2,315,2,2,2,2,2,2}, + {398,88,78,57,260,203,203,43,131,131,131,204,204,322,204,2,102,2,325,325,325,325,2,2,2,2,2,2,2,2,2,2}, + {390,174,70,155,163,67,225,49,2,34,34,151,151,2,2,111,2,2,111,111,2,2,2,2,2,2,2,2,2,2,2,2}, + {408,136,71,63,63,159,222,68,181,181,124,227,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {294,169,79,242,160,123,178,290,186,186,56,399,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {415,228,69,68,193,122,21,362,33,22,362,57,2,2,2,2,46,46,196,196,196,2,196,196,196,2,196,2,2,2,2,2}, + {417,238,147,165,346,19,92,164,266,291,291,43,2,2,2,345,2,2,2,345,345,2,2,2,2,2,345,2,2,2,2,2}, + {456,192,86,182,35,174,342,102,210,210,210,393,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,256,256,158}, + {432,168,63,154,166,46,479,145,144,288,288,288,288,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {341,256,113,85,188,233,161,29,110,167,91,91,253,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {311,360,312,158,73,16,106,209,472,48,24,203,203,2,2,2,2,234,234,234,2,234,234,203,2,2,2,234,234,234,234,234}, + {437,196,161,100,132,246,395,187,35,35,35,2,2,35,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {438,174,338,145,155,276,422,374,4,463,463,99,224,70,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {426,225,211,130,325,283,353,96,282,23,299,2,2,2,63,63,2,276,276,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {430,101,288,38,200,332,325,193,123,123,88,2,2,2,2,2,231,231,139,139,139,139,139,139,139,139,139,139,139,139,139,139}, + {434,143,308,389,365,363,174,63,121,125,260,2,2,260,260,2,2,2,2,2,2,2,2,2,2,258,2,2,2,258,2,2}, + {453,123,201,141,229,223,234,494,102,102,102,2,2,102,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,252}, + {438,168,65,264,304,74,168,88,114,132,187,2,127,127,2,2,2,2,2,81,81,56,2,2,2,307,2,2,2,2,81,81}, + {324,181,141,129,33,171,173,291,227,373,52,301,301,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {335,114,55,47,33,173,287,345,198,198,136,238,238,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {456,162,188,223,408,209,28,164,299,299,258,186,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {360,397,130,172,407,479,295,13,38,199,199,346,2,2,2,2,2,2,145,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {512,136,129,361,180,61,274,128,422,27,292,165,2,2,2,2,2,2,363,117,117,117,117,2,2,2,2,363,2,2,2,2}, + {478,433,483,302,200,227,273,27,171,171,371,102,2,2,2,2,2,20,2,2,2,2,2,2,2,2,403,403,2,2,2,2}, + {485,158,454,86,212,60,93,40,209,188,188,106,2,231,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {390,448,111,145,47,555,367,317,315,52,429,435,429,429,2,2,2,2,2,2,2,2,229,2,2,229,2,2,2,229,2,2}, + {378,406,112,198,539,550,516,59,240,240,23,316,2,122,2,2,2,2,2,2,2,2,2,2,111,111,2,2,2,95,2,2}, + {495,406,306,239,172,323,236,50,37,435,2,310,56,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {397,393,191,269,462,151,264,134,307,307,2,163,163,2,2,2,2,2,2,2,2,2,2,2,2,2,159,2,2,2,2,2}, + {485,491,325,149,122,145,228,100,311,64,2,62,137,2,137,2,2,2,2,2,2,2,392,2,2,2,2,2,2,2,2,2}, + {507,195,130,401,363,171,483,20,86,464,2,89,89,2,26,2,2,2,2,2,425,425,2,2,2,2,2,2,2,2,2,2}, + {380,220,87,122,242,78,207,371,95,305,2,2,2,2,440,440,445,358,358,331,331,358,445,445,445,445,445,445,445,445,445,445}, + {507,221,247,137,182,90,28,207,325,438,2,2,2,2,2,187,232,438,2,2,68,37,37,37,37,37,37,37,37,37,161,2}, + {509,265,101,126,203,86,152,416,352,85,2,2,2,284,391,368,2,2,152,2,2,2,325,2,2,2,2,2,2,2,2,2}, + {572,359,332,480,68,535,59,504,365,21,2,2,246,54,246,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {415,178,178,372,415,400,73,82,348,99,2,23,325,44,2,2,2,2,2,2,2,2,325,2,2,2,2,2,2,2,2,2}, + {430,275,236,361,42,552,368,236,653,74,65,458,288,307,307,2,2,2,2,2,2,2,65,65,2,2,2,2,2,2,2,2}, + {434,139,58,437,130,441,188,15,63,145,145,145,300,2,2,2,2,300,2,2,2,2,2,2,2,2,401,401,401,401,401,401}, + {542,138,266,514,552,202,103,197,574,48,2,96,96,2,2,96,96,217,2,2,2,2,2,2,2,2,2,2,2,2,2,217}, + {546,494,72,272,550,219,213,209,169,404,69,464,86,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {422,413,561,110,242,62,436,478,18,150,606,88,643,2,249,2,2,2,2,456,2,2,2,2,2,2,2,2,2,2,2,456}, + {555,516,310,438,290,559,52,265,248,193,285,441,285,285,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {555,300,232,386,470,300,355,177,57,407,450,279,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {534,274,194,220,575,81,206,544,341,85,137,429,429,429,429,344,2,2,2,2,2,315,315,315,315,315,315,72,72,72,2,2}, + {576,301,142,329,96,41,302,528,126,112,206,206,2,2,2,2,2,2,206,206,2,206,206,2,191,206,206,191,191,191,191,206}, + {622,526,294,56,498,176,237,351,25,26,474,55,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {446,163,469,481,240,278,51,373,491,13,22,419,2,2,2,2,2,2,2,2,2,176,176,2,2,2,2,2,2,2,2,2}, + {445,223,102,108,120,166,68,214,737,504,96,96,206,377,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,39,39,528}, + {425,355,128,58,194,82,438,117,10,34,34,35,112,107,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {433,294,192,205,152,70,99,68,392,169,309,390,390,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,199,2,2,2}, + {437,561,384,619,363,420,614,117,217,247,405,142,142,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {437,133,516,423,305,90,135,25,266,487,6,286,286,2,2,2,2,2,2,2,2,2,2,2,2,510,510,2,2,2,2,2}, + {610,477,478,516,318,184,267,423,190,494,494,2,336,336,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {590,463,461,162,162,622,167,254,29,377,377,75,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {448,126,129,168,209,340,40,96,509,509,509,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {635,212,284,356,187,591,275,361,194,317,488,2,2,2,2,2,2,97,6,2,6,247,2,2,2,2,2,2,2,2,2,6}, + {612,395,104,86,264,321,521,325,252,53,178,100,100,100,16,343,343,343,343,343,2,2,2,2,2,2,2,2,2,343,343,343}, + {486,428,287,472,292,141,504,178,585,98,282,2,2,2,2,2,2,2,2,2,2,2,2,284,284,284,78,284,2,2,2,2}, + {462,579,236,447,60,162,427,258,73,742,742,2,742,742,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {469,507,276,227,66,237,260,386,27,666,31,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {626,196,111,465,386,431,181,414,614,391,349,318,389,2,389,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {653,169,261,533,488,282,213,443,337,480,503,174,534,2,2,2,2,2,534,2,2,2,2,534,2,2,2,2,534,2,2,2}, + {639,253,95,380,108,448,223,254,381,30,6,644,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {512,347,65,546,434,87,18,123,672,412,316,6,699,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {657,233,108,38,147,53,136,168,408,477,477,279,268,289,2,2,2,2,2,2,289,2,2,2,2,2,2,2,2,289,289,2}, + {521,249,388,155,467,245,134,311,72,312,312,623,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {669,421,230,70,212,845,237,347,148,76,823,472,2,2,2,132,2,2,2,2,2,2,2,383,132,383,2,2,383,383,383,383}, + {672,150,164,622,196,75,302,119,42,314,314,132,60,60,60,298,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {705,302,411,705,691,160,809,40,32,867,826,826,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {707,323,409,27,31,157,492,463,886,412,251,251,304,190,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {793,279,264,566,252,495,872,492,482,107,294,503,350,350,2,2,2,2,2,2,2,285,285,273,273,273,273,2,2,2,2,2}, + {791,275,60,137,352,839,67,476,356,216,216,563,563,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {709,509,697,145,252,194,304,192,192,623,623,4,423,2,2,2,199,423,2,2,2,222,222,2,2,623,623,623,623,623,2,222}, + {539,310,463,103,553,45,609,326,197,2,62,113,272,2,62,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {750,703,182,242,92,335,272,466,594,2,701,569,474,129,140,140,2,507,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {872,630,513,218,719,174,197,104,86,281,281,281,541,642,281,94,2,45,94,2,335,335,2,2,2,2,2,2,2,2,2,84}, + {744,466,389,280,229,134,363,177,389,2,2,2,536,273,536,536,536,536,168,45,45,45,45,2,2,2,2,2,2,2,2,2}, + {468,430,849,689,202,427,45,34,105,2,2,2,2,4,4,4,4,4,4,4,2,2,2,4,4,4,4,4,2,2,2,2}, + {563,325,717,766,440,705,290,123,228,2,2,2,32,64,146,2,2,2,116,79,79,2,146,146,79,79,79,2,2,146,146,79}, + {781,638,410,399,336,465,856,426,28,2,4,4,6,6,2,2,2,449,372,372,449,449,449,2,2,449,449,449,449,449,449,2}, + {818,280,99,873,165,426,341,74,479,342,727,684,684,662,662,2,2,2,2,2,2,662,2,2,2,2,2,2,2,2,2,2}, + {901,490,693,410,666,119,703,593,201,61,70,70,774,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,418,418}, + {859,584,475,745,506,900,40,869,143,612,175,275,209,12,12,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {612,237,272,53,534,682,372,935,494,536,536,599,599,599,2,536,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {708,442,186,698,345,103,687,463,163,416,416,107,2,2,2,375,375,416,6,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {927,493,988,194,97,1006,377,578,105,248,707,784,98,784,2,2,2,2,2,2,2,2,2,370,370,2,370,2,2,2,2,2} +}; diff --git a/Cuba/src/divonne/KorobovCoeff.c-3319 b/Cuba/src/divonne/KorobovCoeff.c-3319 new file mode 100644 index 0000000..286cb28 --- /dev/null +++ b/Cuba/src/divonne/KorobovCoeff.c-3319 @@ -0,0 +1,356 @@ +#define KOROBOV_MINDIM 2 +#define KOROBOV_MAXDIM 33 +#define MAXPRIME 3319 + +#define Hash(x) ((6967 - x)*(-47 + x))/36952 + +static int prime[] = { + FIRST,47,53,59,61,67,73,79,83,89,97,101,107,113,127,131,137,139,149, + 151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241, + 251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353, + 359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461, + 463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587, + 593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691, + 701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823, + 827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947, + 953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049, + 1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151, + 1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249, + 1259,1277,1279,1283,1291,1297,1307,1319,1321,1327,1361,1367,1373,1381, + 1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1493, + 1499,1511,1523,1531,1543,1549,1559,1567,1579,1583,1597,1607,1613,1621, + 1637,1657,1663,1667,1669,1693,1697,1699,1709,1723,1733,1747,1753,1759, + 1777,1787,1801,1811,1823,1831,1847,1861,1867,1877,1889,1901,1913,1931, + 1933,1949,1951,1973,1979,1993,2003,2017,2029,2039,2053,2069,2081,2099, + 2111,2129,2137,2153,2161,2179,2203,2207,2221,2237,2243,2267,2273,2293, + 2309,2333,2339,2351,2371,2389,2399,2417,2437,2459,2473,2503,2521,2531, + 2549,2557,2591,2609,2621,2647,2671,2693,2713,2741,2767,2789,2819,2843, + 2879,2897,2927,2963,2999,3037,3079,3121,3181,3229,MarkLast(3319) +}; + +static short coeff[][32] = { + {13,11,10,3,9,2,2,2,2,9,2,2,7,2,2,2,2,2,2,6,2,2,2,13,11,10,3,9,2,2,2,2}, + {23,17,12,11,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,12,14,14,14}, + {18,14,5,14,2,2,19,19,25,25,18,18,18,2,2,2,2,2,2,2,2,2,2,2,25,6,2,2,2,18,14,5}, + {17,21,7,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,2,2,2,6,2,2,2,17,7}, + {18,13,23,5,2,12,6,12,12,12,10,10,16,2,16,16,2,2,2,2,2,2,2,10,2,2,2,2,10,2,2,2}, + {27,14,10,14,2,4,13,2,2,16,4,4,4,6,6,6,6,6,6,25,25,31,31,15,31,2,2,31,15,14,14,6}, + {29,19,27,32,6,8,2,2,2,2,2,8,8,2,2,2,2,9,9,9,9,2,2,2,2,2,2,2,9,9,2,2}, + {30,19,24,16,22,8,2,2,22,5,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {34,28,13,28,27,27,2,4,2,2,2,16,16,4,20,20,36,20,36,5,5,5,36,36,5,5,5,7,5,7,7,2}, + {35,19,33,8,21,30,8,2,4,2,4,4,2,2,2,2,2,2,2,2,2,17,2,2,11,25,11,17,17,17,17,17}, + {39,40,15,21,11,26,13,2,2,13,2,2,2,2,2,2,2,2,2,2,26,26,2,2,2,2,2,2,2,2,2,2}, + {41,22,15,7,26,29,29,2,2,2,2,2,2,41,41,2,2,2,31,31,2,31,31,2,31,2,2,2,2,2,2,2}, + {35,22,37,9,35,12,35,8,2,2,50,50,2,2,32,32,32,31,13,8,8,8,2,22,50,9,9,9,22,22,22,10}, + {29,24,43,36,49,2,2,8,4,25,49,25,2,2,8,10,10,10,5,5,5,40,10,33,40,40,2,27,10,25,25,25}, + {50,18,32,39,21,2,2,2,4,4,36,36,14,14,14,14,2,2,2,17,17,17,16,16,2,14,14,14,14,2,2,2}, + {31,28,45,20,18,43,43,13,28,2,2,2,31,31,31,31,31,2,2,2,43,43,2,2,2,2,2,2,2,2,30,2}, + {39,15,41,7,24,2,2,30,40,2,2,25,25,25,25,2,2,2,2,2,2,6,6,2,25,2,5,2,2,25,2,2}, + {44,20,29,39,7,21,21,21,2,2,45,2,2,2,49,49,49,49,49,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {56,20,22,13,18,35,35,6,2,4,2,4,2,2,2,23,16,16,4,23,2,34,52,2,34,2,4,2,2,2,23,16}, + {46,32,17,18,29,27,31,31,31,2,2,4,15,2,2,2,2,2,2,2,2,2,2,2,2,2,23,32,32,32,15,15}, + {62,42,43,17,23,13,13,2,2,13,2,2,2,2,2,2,2,10,2,2,2,2,9,10,2,2,2,19,9,9,9,9}, + {46,49,49,52,27,7,20,2,2,6,6,13,13,13,2,13,13,2,2,2,2,2,2,34,34,2,2,2,2,2,2,2}, + {64,34,16,28,16,51,47,2,2,2,6,18,39,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,2}, + {74,26,44,25,50,24,54,39,58,42,2,42,42,2,2,2,2,2,2,2,2,33,33,2,2,39,11,2,2,58,39,58}, + {70,22,50,22,16,9,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {74,21,17,25,35,33,10,2,10,20,20,57,57,57,2,2,57,2,2,2,2,2,2,2,13,2,2,2,2,2,2,2}, + {81,18,10,11,47,38,71,37,2,37,2,2,2,2,2,26,26,26,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {71,68,68,27,71,39,81,44,2,2,2,12,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {55,30,85,42,16,36,45,67,2,2,68,2,2,2,2,2,2,2,68,10,2,2,2,2,2,2,2,2,2,2,2,2}, + {64,17,24,26,49,12,10,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,59,2,2}, + {68,57,23,38,61,38,13,13,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,68,15,2,44,44,44,2,2,2}, + {94,28,58,29,13,5,15,8,66,2,2,2,39,39,15,66,2,2,6,6,2,2,66,66,66,66,2,2,2,2,2,66}, + {94,85,9,41,41,37,29,29,17,2,2,2,7,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,8,8}, + {89,32,75,77,77,13,2,30,30,2,2,2,2,2,2,2,2,2,2,67,67,2,2,2,2,2,2,2,2,8,19,32}, + {70,45,58,63,67,10,72,72,70,6,2,36,2,70,70,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {101,33,76,13,45,63,2,2,6,19,2,2,32,32,32,32,32,65,2,63,63,11,11,11,19,19,19,19,9,63,63,63}, + {70,89,44,37,19,45,2,2,2,8,10,8,54,54,80,80,80,80,80,2,116,2,116,2,2,80,40,51,100,100,8,2}, + {71,54,83,51,42,98,2,2,8,8,14,30,93,22,15,15,30,30,30,44,44,44,2,2,22,22,22,117,44,11,11,11}, + {109,37,51,113,17,10,2,2,17,17,55,2,55,55,55,55,55,55,2,2,2,57,48,48,55,55,2,2,55,2,2,55}, + {75,38,68,89,11,52,2,2,81,39,2,38,2,2,2,2,2,2,2,2,2,2,2,19,2,2,2,2,2,2,2,2}, + {80,38,62,66,39,59,2,36,48,33,2,2,41,2,48,48,2,2,2,2,2,2,48,2,2,2,2,2,2,2,2,2}, + {81,84,35,34,20,93,2,12,12,12,2,96,2,96,96,2,96,2,2,2,2,2,2,2,2,2,2,2,2,56,56,56}, + {109,72,60,96,67,32,85,84,27,91,91,2,10,29,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {104,32,56,46,77,11,35,35,24,56,19,2,2,2,78,2,2,75,2,2,2,2,78,2,2,2,2,2,2,2,2,2}, + {81,103,25,35,28,15,20,20,20,2,2,2,2,20,20,20,107,107,2,2,2,2,2,2,2,2,2,2,2,2,13,13}, + {119,75,42,29,74,23,54,36,39,2,2,4,4,19,19,2,2,2,2,2,2,2,2,54,2,2,2,2,2,2,2,54}, + {115,73,22,102,75,138,16,73,50,16,2,50,2,2,2,133,2,2,2,2,2,2,2,2,2,2,2,2,2,33,33,33}, + {119,48,66,51,14,22,20,20,2,2,2,2,2,60,2,2,2,2,2,2,2,2,60,2,2,2,2,2,2,60,2,65}, + {121,94,80,29,51,69,42,36,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,2,2}, + {129,123,41,79,43,34,24,11,2,2,4,2,2,2,2,75,16,16,16,75,75,75,16,16,16,25,2,99,2,2,75,16}, + {128,33,35,68,22,8,62,94,2,2,2,62,62,2,98,2,2,4,98,2,2,32,81,32,32,32,98,98,98,98,98,98}, + {101,109,154,15,57,6,27,36,2,2,37,37,2,2,2,2,2,2,2,107,2,2,2,107,107,2,2,2,2,2,2,2}, + {106,40,24,38,61,118,106,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {149,111,58,79,127,13,41,33,27,16,30,2,61,2,72,2,2,2,2,2,2,2,2,2,2,2,2,75,75,2,2,2}, + {105,92,43,156,25,53,57,115,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {99,40,62,67,66,29,99,99,99,78,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,79}, + {109,42,96,95,66,41,103,84,13,103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {111,72,16,89,25,86,117,29,14,14,2,2,2,2,2,60,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {106,72,49,94,140,44,97,157,75,2,2,4,123,123,2,2,123,123,123,123,2,2,2,2,2,2,2,2,2,2,2,2}, + {115,67,74,32,43,50,21,36,135,36,85,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {151,71,157,42,41,37,80,27,18,2,2,2,2,2,2,2,2,2,2,2,2,2,115,128,128,128,128,128,32,2,128,80}, + {119,91,38,30,92,44,32,76,22,2,34,2,2,2,2,2,2,2,2,2,2,2,2,2,2,129,2,2,129,2,2,2}, + {121,126,31,52,120,37,57,10,171,2,2,2,2,35,35,35,2,2,97,97,97,97,97,97,97,35,35,35,97,97,97,2}, + {155,86,49,104,87,94,64,45,61,91,91,91,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {164,121,44,166,47,33,7,15,13,2,2,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {128,120,133,17,71,52,25,107,42,21,21,2,2,2,2,4,4,96,2,9,9,2,9,94,94,94,94,94,94,94,94,96}, + {179,82,157,76,61,35,13,90,197,2,69,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,39,39}, + {136,136,148,63,66,10,169,95,95,163,30,28,28,2,41,130,2,2,2,21,2,2,2,2,2,2,2,2,2,2,2,36}, + {131,40,112,63,55,30,53,79,79,79,2,79,2,2,2,2,2,79,2,2,2,2,14,36,2,21,21,21,21,2,2,91}, + {165,81,92,48,9,110,12,40,40,34,2,2,2,107,107,107,2,107,2,2,2,2,2,2,2,2,2,2,2,15,41,41}, + {169,66,170,97,35,56,55,86,32,32,2,2,2,2,14,2,40,2,37,2,2,37,40,40,40,2,2,2,37,37,37,37}, + {135,63,126,156,70,18,49,143,6,117,2,109,109,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {179,104,117,56,132,56,190,130,130,15,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {193,59,51,68,68,15,170,170,170,143,143,12,2,2,2,63,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {145,101,56,65,23,76,110,2,4,4,4,146,146,146,2,146,2,2,2,2,2,2,2,2,2,2,2,2,2,2,146,146}, + {144,129,26,98,36,46,47,52,52,52,82,2,2,2,2,2,17,2,2,2,2,2,2,2,2,2,2,2,2,91,2,2}, + {145,78,166,171,56,20,63,2,2,33,33,33,33,2,78,47,47,47,47,47,2,2,2,2,2,78,78,78,2,2,2,2}, + {191,69,176,54,47,75,167,2,2,2,188,188,188,30,30,2,67,67,117,2,117,117,117,2,2,36,2,2,2,2,2,2}, + {186,96,29,122,47,96,170,157,157,157,157,108,159,2,195,195,26,26,26,26,26,2,2,2,2,132,132,132,2,2,2,2}, + {151,118,226,91,54,49,33,2,2,2,2,4,4,4,143,143,2,2,143,25,25,25,2,143,143,143,143,143,143,143,143,143}, + {144,91,237,82,81,75,138,163,163,163,117,117,44,2,44,136,136,136,136,2,2,2,2,2,122,122,122,122,2,2,2,136}, + {189,78,178,64,118,27,189,2,2,67,67,110,110,110,110,2,28,28,2,2,2,2,2,2,2,102,2,2,2,2,2,2}, + {165,202,83,76,125,65,42,2,44,44,23,2,23,23,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {209,204,92,75,85,146,104,2,7,18,8,2,2,2,204,95,95,95,2,2,2,95,95,95,95,95,95,95,2,2,2,95}, + {169,68,89,16,193,82,33,262,262,175,148,148,148,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {171,162,78,43,61,17,112,10,171,182,118,33,2,2,2,2,118,2,2,2,2,2,2,151,2,2,2,2,2,2,2,2}, + {211,121,119,55,90,211,96,89,225,25,178,36,36,36,2,2,108,2,2,2,2,2,2,2,2,2,2,2,2,184,2,2}, + {154,101,83,17,16,210,41,79,70,158,2,27,27,2,2,2,2,2,2,2,2,2,2,2,2,153,2,2,2,2,2,2}, + {169,179,130,79,148,180,136,17,47,119,2,119,119,169,169,2,169,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {241,171,148,31,172,34,66,60,156,140,2,2,2,75,75,2,2,2,2,2,2,2,190,190,2,2,2,30,2,2,2,2}, + {229,189,183,106,118,138,82,149,265,39,2,2,265,2,2,2,2,2,2,130,2,2,2,71,71,2,2,2,71,2,2,71}, + {165,157,127,21,64,15,80,130,130,130,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,74,2}, + {221,130,203,84,83,83,29,121,54,54,2,141,2,2,94,94,94,4,4,4,2,4,2,2,2,54,54,108,16,16,94,52}, + {230,166,20,160,121,102,153,94,16,67,2,2,2,2,2,2,97,97,97,2,2,97,97,2,97,97,97,97,97,97,97,97}, + {181,79,137,119,139,24,77,17,50,25,25,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {239,242,192,40,41,62,124,193,193,31,193,2,2,2,2,2,2,2,2,2,2,2,2,148,2,2,2,2,2,2,2,2}, + {239,178,73,122,239,51,95,48,78,88,78,2,2,2,2,2,2,2,2,2,2,2,144,144,2,2,144,144,144,2,144,144}, + {234,117,198,34,143,21,74,6,252,252,98,2,2,2,2,197,38,2,2,2,2,2,47,2,47,47,47,47,2,2,2,47}, + {179,110,38,28,58,39,16,29,42,125,202,8,8,129,4,4,2,2,2,67,67,2,2,2,2,2,2,8,67,67,2,2}, + {246,53,189,50,18,59,179,179,7,137,137,2,2,103,103,103,103,40,40,40,2,2,2,2,73,73,73,2,103,103,103,103}, + {239,133,87,92,193,12,206,238,238,238,31,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {191,244,60,193,18,32,193,104,74,125,125,66,2,2,2,2,2,2,2,2,2,2,125,125,2,125,125,125,2,2,2,2}, + {177,74,90,91,172,219,63,84,32,2,2,196,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {253,143,54,39,122,32,75,107,234,2,6,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {282,89,71,88,30,23,81,105,105,2,2,105,105,131,107,2,2,2,2,2,195,195,2,2,29,29,21,21,128,195,195,195}, + {259,115,171,40,156,71,67,24,24,2,2,2,24,4,4,4,2,234,2,2,2,2,2,2,2,2,2,74,74,2,2,2}, + {264,237,49,203,247,108,75,75,75,2,2,32,16,8,16,16,16,164,14,164,2,2,32,16,8,16,16,32,42,42,42,2}, + {264,106,89,51,29,226,23,286,286,151,151,151,151,151,2,2,2,2,2,2,31,31,31,2,2,2,2,2,2,2,2,284}, + {194,215,82,23,213,23,108,127,74,2,201,32,178,2,285,2,2,2,2,285,2,2,2,2,2,2,2,2,2,2,2,2}, + {196,267,251,111,231,14,30,52,95,2,154,53,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {266,67,22,101,102,157,53,95,130,2,42,76,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {281,205,107,178,236,122,122,316,76,215,215,2,60,2,2,2,2,2,2,227,2,2,2,2,2,2,2,2,27,2,2,2}, + {271,89,65,195,132,162,102,45,56,174,104,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {200,169,170,121,155,68,131,167,78,113,113,2,2,64,2,2,2,2,2,2,2,2,2,2,2,2,2,173,2,2,2,2}, + {288,143,265,264,71,19,231,169,27,27,27,2,2,2,2,2,2,2,2,2,2,2,2,2,51,2,2,2,2,2,2,2}, + {311,141,96,173,90,119,134,151,35,252,39,2,39,39,2,2,2,2,2,2,2,2,2,113,113,2,2,2,2,2,2,113}, + {311,230,52,138,225,346,162,216,216,91,160,182,91,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {275,167,128,244,184,184,44,210,237,139,139,139,139,2,2,2,2,2,2,2,2,2,2,73,2,2,2,2,2,2,2,2}, + {176,156,83,135,46,197,108,63,33,33,33,2,133,2,213,213,213,213,133,133,2,133,2,2,133,133,2,2,2,2,2,2}, + {283,125,141,192,89,181,106,208,124,124,2,112,112,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {289,191,171,152,191,173,54,13,21,56,56,56,2,2,2,2,2,2,2,2,2,220,2,2,2,2,2,2,2,2,2,2}, + {334,305,132,132,99,126,54,116,164,105,2,105,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,287,2,2,2,2}, + {240,166,44,193,153,333,15,99,246,99,2,2,99,99,2,2,2,2,195,195,195,2,195,195,2,263,263,2,195,195,195,263}, + {246,194,265,79,225,65,24,62,46,181,2,2,2,314,2,2,2,2,2,2,2,215,2,2,2,2,2,2,2,2,2,2}, + {229,334,285,302,21,26,24,97,64,40,2,2,2,231,231,231,231,65,2,148,2,2,2,2,2,2,2,2,2,2,2,2}, + {251,295,55,249,135,173,164,78,261,261,2,2,2,2,114,2,2,2,2,2,256,142,142,2,2,2,2,2,2,2,2,185}, + {232,153,55,60,181,79,107,70,29,35,2,2,58,58,2,58,2,2,2,2,61,61,2,61,61,2,2,61,61,90,2,90}, + {246,116,45,146,109,90,32,103,133,119,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {246,113,146,232,162,262,204,47,45,331,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {360,150,84,275,13,26,368,49,244,244,63,63,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {239,295,174,87,30,87,85,36,103,36,2,278,2,2,2,2,2,2,163,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {356,300,75,310,123,301,200,107,183,37,218,37,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {358,207,168,150,150,21,156,50,195,275,275,275,2,2,2,2,2,251,2,2,2,251,251,251,251,251,251,251,251,251,2,2}, + {322,194,234,62,236,147,239,400,255,255,80,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {326,276,134,100,143,113,115,221,13,339,194,194,194,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {337,132,27,45,14,81,110,84,238,224,211,2,29,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {192,213,113,174,403,117,342,342,311,35,35,2,2,2,2,2,2,2,2,101,2,2,2,2,2,2,2,2,2,101,101,101}, + {264,273,316,53,40,330,51,285,115,219,147,2,2,2,335,2,2,2,2,2,173,2,173,2,2,173,173,173,173,173,173,83}, + {254,293,407,118,54,296,160,231,4,4,93,2,2,2,2,2,60,61,2,2,120,127,127,127,88,88,88,88,88,88,88,88}, + {341,78,336,263,281,164,99,334,296,114,109,2,163,163,163,163,2,2,2,2,2,2,2,125,125,292,292,292,292,125,125,125}, + {355,87,212,100,89,210,133,344,120,45,45,138,138,138,138,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {274,141,46,219,158,284,38,79,73,185,35,6,81,2,2,2,2,53,2,2,81,81,2,81,2,2,2,53,53,53,53,53}, + {349,303,439,19,95,240,174,191,2,162,162,2,2,2,76,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {360,91,201,205,67,181,59,77,2,44,103,103,103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,125}, + {283,154,261,91,77,147,227,105,116,311,256,256,2,116,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,32,2}, + {287,288,111,89,249,370,55,16,248,67,67,115,2,2,134,134,2,2,2,2,2,2,2,2,2,2,2,2,2,22,22,22}, + {284,270,282,37,29,181,160,49,285,285,374,250,2,374,374,2,2,2,179,179,35,2,179,179,2,179,179,2,2,285,285,285}, + {359,305,52,36,243,231,7,92,2,68,68,307,62,45,2,2,112,311,311,311,2,2,2,2,2,2,2,2,2,2,2,2}, + {288,119,218,137,364,38,27,380,2,2,211,23,33,2,2,2,2,2,225,225,225,2,2,225,225,225,2,2,2,2,2,2}, + {277,155,232,309,370,365,348,75,214,214,214,4,4,2,2,2,210,210,210,210,210,210,210,2,2,2,2,2,2,2,2,2}, + {292,204,91,41,124,190,107,322,125,125,125,125,125,25,25,62,2,2,146,146,2,2,62,146,2,146,114,146,114,2,2,2}, + {282,195,192,409,68,99,253,106,2,2,2,231,55,55,2,323,323,55,55,285,285,285,285,2,2,2,2,2,2,285,285,323}, + {299,122,174,403,113,77,63,275,2,2,2,138,276,227,38,227,2,237,2,2,2,2,2,2,2,2,2,2,352,352,352,2}, + {282,222,268,86,21,109,353,408,2,2,2,2,135,12,12,216,241,241,241,241,241,241,241,241,241,303,303,303,135,135,135,2}, + {374,94,89,257,137,246,186,196,2,2,2,2,2,454,122,122,122,122,2,2,2,28,28,94,94,94,94,94,122,122,122,122}, + {288,92,62,428,122,153,481,66,2,2,2,250,250,177,177,177,177,279,279,279,279,279,279,279,2,2,279,177,177,177,177,177}, + {288,370,141,284,207,192,450,67,2,2,2,183,217,217,217,183,183,167,202,202,202,202,167,167,2,2,2,164,164,80,167,167}, + {286,293,199,39,158,332,242,103,2,2,2,408,266,315,2,2,365,253,315,315,315,315,315,2,2,315,2,2,2,2,2,2}, + {407,83,435,187,40,16,52,65,2,2,244,39,77,119,119,2,2,2,119,342,342,2,2,2,2,2,342,2,2,58,58,119}, + {398,88,78,57,260,203,203,43,131,131,131,204,204,322,204,2,102,2,325,325,325,325,2,2,2,2,2,2,2,2,2,2}, + {390,174,70,155,163,67,225,49,2,34,34,151,151,2,2,111,2,2,111,111,2,2,2,2,2,2,2,2,2,2,2,2}, + {393,129,393,169,23,192,168,47,2,2,312,150,71,2,150,2,2,2,61,2,2,61,2,2,2,2,2,2,2,2,2,2}, + {408,136,71,63,63,159,222,68,181,181,124,227,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {294,169,79,242,160,123,178,290,186,186,56,399,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {415,228,69,68,193,122,21,362,33,22,362,57,2,2,2,2,46,46,196,196,196,2,196,196,196,2,196,2,2,2,2,2}, + {415,130,241,185,312,175,309,199,94,281,47,47,2,2,2,2,206,307,221,2,2,2,2,2,239,239,239,239,239,206,206,206}, + {417,238,147,165,346,19,92,164,266,291,291,43,2,2,2,345,2,2,2,345,345,2,2,2,2,2,345,2,2,2,2,2}, + {456,192,86,182,35,174,342,102,210,210,210,393,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,256,256,158}, + {307,255,92,38,325,61,103,246,176,319,80,89,2,241,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {432,168,63,154,166,46,479,145,144,288,288,288,288,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {341,256,113,85,188,233,161,29,110,167,91,91,253,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {311,360,312,158,73,16,106,209,472,48,24,203,203,2,2,2,2,234,234,234,2,234,234,203,2,2,2,234,234,234,234,234}, + {437,196,161,100,132,246,395,187,35,35,35,2,2,35,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {438,174,338,145,155,276,422,374,4,463,463,99,224,70,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {426,225,211,130,325,283,353,96,282,23,299,2,2,2,63,63,2,276,276,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {430,101,288,38,200,332,325,193,123,123,88,2,2,2,2,2,231,231,139,139,139,139,139,139,139,139,139,139,139,139,139,139}, + {434,143,308,389,365,363,174,63,121,125,260,2,2,260,260,2,2,2,2,2,2,2,2,2,2,258,2,2,2,258,2,2}, + {453,123,201,141,229,223,234,494,102,102,102,2,2,102,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,252}, + {438,168,65,264,304,74,168,88,114,132,187,2,127,127,2,2,2,2,2,81,81,56,2,2,2,307,2,2,2,2,81,81}, + {324,181,141,129,33,171,173,291,227,373,52,301,301,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {448,119,431,111,135,50,242,95,148,49,49,49,68,2,2,2,2,2,2,2,2,49,2,2,2,2,2,2,2,2,2,2}, + {335,114,55,47,33,173,287,345,198,198,136,238,238,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {468,377,243,237,332,512,27,167,22,169,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {456,162,188,223,408,209,28,164,299,299,258,186,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {445,391,115,226,96,456,239,214,556,158,158,282,2,2,2,2,2,2,2,2,2,2,2,2,2,331,2,2,2,2,2,2}, + {360,397,130,172,407,479,295,13,38,199,199,346,2,2,2,2,2,2,145,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {512,136,129,361,180,61,274,128,422,27,292,165,2,2,2,2,2,2,363,117,117,117,117,2,2,2,2,363,2,2,2,2}, + {478,433,483,302,200,227,273,27,171,171,371,102,2,2,2,2,2,20,2,2,2,2,2,2,2,2,403,403,2,2,2,2}, + {485,158,454,86,212,60,93,40,209,188,188,106,2,231,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {390,448,111,145,47,555,367,317,315,52,429,435,429,429,2,2,2,2,2,2,2,2,229,2,2,229,2,2,2,229,2,2}, + {490,331,187,398,407,373,497,219,423,423,378,378,2,419,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {474,373,248,330,40,113,105,273,103,407,2,165,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {495,406,306,239,172,323,236,50,37,435,2,310,56,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {397,393,191,269,462,151,264,134,307,307,2,163,163,2,2,2,2,2,2,2,2,2,2,2,2,2,159,2,2,2,2,2}, + {485,491,325,149,122,145,228,100,311,64,2,62,137,2,137,2,2,2,2,2,2,2,392,2,2,2,2,2,2,2,2,2}, + {364,462,360,383,182,187,123,69,129,146,2,156,149,2,149,2,2,2,2,2,2,2,303,303,303,2,2,2,2,2,149,266}, + {507,195,130,401,363,171,483,20,86,464,2,89,89,2,26,2,2,2,2,2,425,425,2,2,2,2,2,2,2,2,2,2}, + {380,220,87,122,242,78,207,371,95,305,2,2,2,2,440,440,445,358,358,331,331,358,445,445,445,445,445,445,445,445,445,445}, + {507,221,247,137,182,90,28,207,325,438,2,2,2,2,2,187,232,438,2,2,68,37,37,37,37,37,37,37,37,37,161,2}, + {509,265,101,126,203,86,152,416,352,85,2,2,2,284,391,368,2,2,152,2,2,2,325,2,2,2,2,2,2,2,2,2}, + {572,359,332,480,68,535,59,504,365,21,2,2,246,54,246,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {415,178,178,372,415,400,73,82,348,99,2,23,325,44,2,2,2,2,2,2,2,2,325,2,2,2,2,2,2,2,2,2}, + {430,275,236,361,42,552,368,236,653,74,65,458,288,307,307,2,2,2,2,2,2,2,65,65,2,2,2,2,2,2,2,2}, + {434,139,58,437,130,441,188,15,63,145,145,145,300,2,2,2,2,300,2,2,2,2,2,2,2,2,401,401,401,401,401,401}, + {542,138,266,514,552,202,103,197,574,48,2,96,96,2,2,96,96,217,2,2,2,2,2,2,2,2,2,2,2,2,2,217}, + {546,494,72,272,550,219,213,209,169,404,69,464,86,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {602,466,332,458,99,244,255,183,446,670,2,186,323,2,2,2,2,2,2,2,2,2,2,2,2,2,2,292,165,165,165,165}, + {422,413,561,110,242,62,436,478,18,150,606,88,643,2,249,2,2,2,2,456,2,2,2,2,2,2,2,2,2,2,2,456}, + {522,141,154,253,264,53,120,93,274,52,44,203,556,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {600,249,375,555,421,322,317,84,517,517,268,106,353,2,2,2,2,2,2,2,2,2,268,2,2,2,2,2,2,302,2,2}, + {555,516,310,438,290,559,52,265,248,193,285,441,285,285,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {555,300,232,386,470,300,355,177,57,407,450,279,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {544,177,79,306,256,402,205,496,398,115,115,43,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {534,274,194,220,575,81,206,544,341,85,137,429,429,429,429,344,2,2,2,2,2,315,315,315,315,315,315,72,72,72,2,2}, + {548,538,508,250,539,102,73,285,119,433,480,480,2,2,2,480,480,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {622,526,294,56,498,176,237,351,25,26,474,55,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {446,163,469,481,240,278,51,373,491,13,22,419,2,2,2,2,2,2,2,2,2,176,176,2,2,2,2,2,2,2,2,2}, + {445,223,102,108,120,166,68,214,737,504,96,96,206,377,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,39,39,528}, + {453,121,489,84,434,505,78,575,468,372,468,468,83,468,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {425,355,128,58,194,82,438,117,10,34,34,35,112,107,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {432,479,328,443,253,634,271,429,406,543,406,543,543,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {456,383,487,311,57,579,673,264,582,187,184,43,43,2,2,2,2,501,501,501,2,2,2,2,2,2,2,2,2,2,2,2}, + {437,561,384,619,363,420,614,117,217,247,405,142,142,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {437,133,516,423,305,90,135,25,266,487,6,286,286,2,2,2,2,2,2,2,2,2,2,2,2,510,510,2,2,2,2,2}, + {463,341,170,401,178,79,305,98,162,166,32,392,335,335,335,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {610,477,478,516,318,184,267,423,190,494,494,2,336,336,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {590,463,461,162,162,622,167,254,29,377,377,75,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {629,225,67,623,298,588,354,49,41,185,176,63,63,63,2,2,2,2,2,2,2,2,2,2,2,2,8,435,32,32,435,435}, + {448,126,129,168,209,340,40,96,509,509,509,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {635,212,284,356,187,591,275,361,194,317,488,2,2,2,2,2,2,97,6,2,6,247,2,2,2,2,2,2,2,2,2,6}, + {612,395,104,86,264,321,521,325,252,53,178,100,100,100,16,343,343,343,343,343,2,2,2,2,2,2,2,2,2,343,343,343}, + {486,428,287,472,292,141,504,178,585,98,282,2,2,2,2,2,2,2,2,2,2,2,2,284,284,284,78,284,2,2,2,2}, + {612,327,212,565,450,385,201,649,423,491,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {462,579,236,447,60,162,427,258,73,742,742,2,742,742,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {495,440,89,439,65,207,459,407,139,131,624,2,380,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {469,507,276,227,66,237,260,386,27,666,31,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {646,393,273,238,24,13,253,127,368,316,316,316,150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {626,196,111,465,386,431,181,414,614,391,349,318,389,2,389,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {653,169,261,533,488,282,213,443,337,480,503,174,534,2,2,2,2,2,534,2,2,2,2,534,2,2,2,2,534,2,2,2}, + {670,555,160,90,604,604,50,459,376,545,316,180,526,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {642,160,702,90,157,254,278,521,650,277,74,554,122,2,2,2,2,2,2,517,174,174,174,2,2,2,2,2,2,2,2,2}, + {678,254,190,197,637,49,130,25,374,357,357,411,643,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,537,2,2}, + {512,347,65,546,434,87,18,123,672,412,316,6,699,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {657,233,108,38,147,53,136,168,408,477,477,279,268,289,2,2,2,2,2,2,289,2,2,2,2,2,2,2,2,289,289,2}, + {660,624,376,472,165,66,158,308,492,779,305,305,2,576,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {408,348,216,299,302,668,347,63,172,141,272,168,678,2,2,2,512,2,2,2,2,4,2,2,2,494,64,64,64,128,16,512}, + {669,421,230,70,212,845,237,347,148,76,823,472,2,2,2,132,2,2,2,2,2,2,2,383,132,383,2,2,383,383,383,383}, + {693,530,139,82,780,416,270,278,330,484,484,200,2,2,2,2,137,94,2,2,2,2,2,2,2,2,484,2,2,2,2,2}, + {672,150,164,622,196,75,302,119,42,314,314,132,60,60,60,298,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {705,302,411,705,691,160,809,40,32,867,826,826,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {684,229,138,46,407,399,82,254,267,31,31,45,2,209,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {707,323,409,27,31,157,492,463,886,412,251,251,304,190,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {555,543,434,78,850,174,277,194,4,100,471,69,69,424,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {793,279,264,566,252,495,872,492,482,107,294,503,350,350,2,2,2,2,2,2,2,285,285,273,273,273,273,2,2,2,2,2}, + {703,427,225,320,136,47,103,547,239,217,73,68,68,204,204,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {703,312,472,588,228,512,386,668,477,617,389,389,389,2,296,2,2,2,2,343,343,2,2,343,343,2,2,617,617,617,617,2}, + {709,509,697,145,252,194,304,192,192,623,623,4,423,2,2,2,199,423,2,2,2,222,222,2,2,623,623,623,623,623,2,222}, + {587,453,117,107,672,86,248,568,568,294,294,513,78,2,2,164,82,2,2,2,2,22,2,2,2,2,2,2,2,2,2,2}, + {741,466,378,135,737,131,159,469,59,2,59,59,187,2,204,2,2,2,2,2,2,2,2,2,798,2,2,798,798,798,798,798}, + {539,310,463,103,553,45,609,326,197,2,62,113,272,2,62,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {750,703,182,242,92,335,272,466,594,2,701,569,474,129,140,140,2,507,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {547,210,113,361,584,121,65,307,98,2,2,552,514,514,2,514,207,514,514,514,2,2,2,2,2,2,2,2,2,2,2,2}, + {580,145,358,434,630,73,604,366,366,2,2,398,398,207,2,207,487,2,2,487,207,2,2,207,207,207,2,2,2,2,207,207}, + {765,421,129,298,867,365,222,476,401,142,90,22,22,88,226,657,2,2,477,2,2,2,2,2,226,226,2,226,2,2,2,226}, + {587,553,360,539,227,800,312,143,536,2,2,2,64,64,64,2,2,2,179,179,493,2,2,184,184,184,58,2,2,2,493,493}, + {841,222,158,469,253,91,347,241,766,2,2,2,88,88,88,439,439,439,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {462,653,478,67,269,150,474,711,220,669,669,669,669,669,390,352,325,2,229,545,545,545,545,545,545,545,545,2,545,352,309,352}, + {468,430,849,689,202,427,45,34,105,2,2,2,2,4,4,4,4,4,4,4,2,2,2,4,4,4,4,4,2,2,2,2}, + {792,169,306,843,246,123,293,229,483,2,2,2,165,163,163,163,163,440,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {563,325,717,766,440,705,290,123,228,2,2,2,32,64,146,2,2,2,116,79,79,2,146,146,79,79,79,2,2,146,146,79}, + {802,533,869,638,67,192,805,223,219,2,2,191,178,178,77,77,2,2,2,2,431,431,2,2,2,431,431,2,2,431,2,2}, + {781,638,410,399,336,465,856,426,28,2,4,4,6,6,2,2,2,449,372,372,449,449,449,2,2,449,449,449,449,449,449,2}, + {780,359,766,618,41,596,86,636,287,707,707,96,49,373,613,373,2,2,2,2,2,2,2,613,613,613,2,2,2,2,2,2}, + {622,309,913,550,994,90,257,588,29,526,526,526,496,496,576,2,2,2,2,2,182,182,182,2,2,447,447,447,447,447,447,182}, + {593,411,953,203,89,57,785,354,349,424,424,707,707,707,829,2,2,2,2,2,670,670,670,2,2,424,424,424,2,2,670,424}, + {629,560,621,245,683,633,495,551,472,2,31,74,489,684,555,684,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {901,490,693,410,666,119,703,593,201,61,70,70,774,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,418,418}, + {669,321,391,548,189,157,337,42,796,871,276,622,30,2,2,2,2,2,2,2,580,580,107,2,2,2,2,2,434,434,434,434}, + {610,236,633,300,681,358,72,281,148,466,466,283,275,2,386,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {859,584,475,745,506,900,40,869,143,612,175,275,209,12,12,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {822,581,76,382,72,347,964,324,137,61,61,28,623,351,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {867,820,301,252,61,331,105,309,562,218,365,326,768,672,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {859,844,510,859,118,190,550,29,159,622,622,382,258,382,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {843,730,235,233,816,495,598,134,131,604,227,378,378,553,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {670,595,333,257,907,413,548,341,327,350,612,700,700,700,700,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {877,181,375,79,199,256,223,295,135,371,395,354,2,307,944,2,813,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {708,442,186,698,345,103,687,463,163,416,416,107,2,2,2,375,375,416,6,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {865,675,786,568,112,197,225,348,372,497,215,215,2,2,2,2,159,159,150,224,224,141,2,2,2,2,141,141,141,141,141,141}, + {898,559,396,742,51,143,411,221,116,756,756,756,2,2,2,701,701,2,2,2,2,240,225,256,322,322,240,240,240,240,240,322}, + {982,579,548,413,416,103,71,101,1039,526,684,684,2,2,656,2,2,2,2,2,2,2,2,2,2,2,656,656,656,2,656,656}, + {642,757,247,513,372,54,546,971,271,61,61,1018,2,143,332,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {865,827,614,74,725,685,724,190,178,272,835,722,2,35,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {718,359,103,558,684,560,67,35,120,342,680,265,265,265,2,2,265,2,2,2,2,2,2,2,2,2,430,2,2,2,2,2}, + {900,455,485,601,353,69,67,965,25,226,314,314,883,923,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {912,516,108,555,306,274,55,197,565,174,659,208,441,441,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {940,226,320,666,269,54,542,174,109,290,754,524,649,2,202,2,2,2,2,2,2,2,776,202,776,776,776,2,2,202,202,202}, + {672,652,792,253,796,404,171,90,406,433,43,159,72,2,2,372,2,540,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {733,439,537,37,149,650,916,443,743,621,921,664,664,2,2,2,2,2,682,523,523,523,2,2,523,523,523,523,523,523,523,523}, + {982,344,812,567,243,52,246,369,439,205,600,739,730,2,2,2,61,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {936,409,217,57,574,395,481,245,548,268,447,598,375,2,192,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {755,796,877,981,259,194,1180,215,90,658,662,662,662,2,36,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {949,422,941,491,66,786,592,429,307,123,40,478,478,478,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1077,496,819,340,974,122,39,1209,819,18,461,648,648,394,2,2,2,2,2,2,61,2,2,2,2,2,394,2,2,2,2,394}, + {1083,356,367,357,559,213,606,477,71,103,790,103,299,299,2,2,2,2,2,2,406,406,2,2,2,2,2,2,2,2,2,2}, + {738,749,769,610,306,326,328,578,479,840,840,840,68,192,2,150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1094,640,912,223,67,472,623,623,1244,65,1009,1209,1209,812,387,2,2,2,513,2,2,2,2,2,2,2,2,2,2,2,1209,234}, + {1028,730,807,119,209,146,230,498,164,309,309,2,2,2,693,912,430,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {802,298,672,424,104,623,152,159,476,760,66,2,2,2,215,215,490,490,490,2,2,2,2,2,490,490,490,490,490,490,490,490}, + {1004,719,1041,460,551,516,135,417,130,698,698,2,2,2,655,655,655,655,655,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {818,301,273,664,206,971,895,590,912,523,523,2,2,452,384,255,2,130,130,130,130,865,2,2,2,255,2,2,2,2,2,2}, + {1078,527,589,244,170,892,827,606,1165,773,189,2,2,240,22,2,2,2,2,2,2,759,621,621,621,621,621,621,621,621,621,621}, + {1157,395,446,280,1130,695,668,271,111,882,477,615,615,615,2,2,2,2,2,2,2,2,615,615,615,615,615,615,615,2,305,2}, + {1050,749,809,479,87,757,288,172,597,722,4,418,418,390,2,2,2,2,2,390,390,2,2,2,2,2,2,2,2,2,2,2}, + {1057,385,263,395,901,274,727,340,1117,263,813,870,858,429,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1120,665,311,695,319,1033,511,297,602,1030,1030,714,240,240,2,2,2,2,2,2,2,2,2,2,2,2,2,953,2,2,2,2}, + {1120,1159,358,347,838,207,357,167,476,52,672,38,822,2,2,2,2,2,2,213,2,2,2,2,2,2,2,2,2,2,2,2}, + {820,461,681,382,273,273,358,274,274,91,887,676,386,2,676,676,2,2,2,2,2,2,2,200,2,2,2,2,200,2,2,2}, + {1148,585,868,1282,666,417,733,1231,515,332,1213,337,337,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {898,782,478,1208,196,983,608,537,196,1141,141,296,715,715,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1142,370,287,925,307,1232,129,11,1284,1056,33,33,536,521,2,1286,2,2,2,2,2,2,2,2,2,2,2,2,847,847,847,847}, + {1192,555,586,516,1288,733,64,653,364,273,421,215,75,75,2,2,2,2,2,2,953,953,953,953,8,383,383,2,161,383,953,953}, + {966,590,140,297,189,844,633,12,847,742,742,244,281,34,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1247,353,973,217,1044,1318,1115,319,203,390,1244,225,2,2,508,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1015,593,112,1408,51,104,199,221,931,1010,928,928,2,2,878,878,2,2,2,2,731,731,2,731,731,2,731,2,731,731,731,2} +}; diff --git a/Cuba/src/divonne/KorobovCoeff.c-5879 b/Cuba/src/divonne/KorobovCoeff.c-5879 new file mode 100644 index 0000000..fc4588e --- /dev/null +++ b/Cuba/src/divonne/KorobovCoeff.c-5879 @@ -0,0 +1,571 @@ +#define KOROBOV_MINDIM 2 +#define KOROBOV_MAXDIM 33 +#define MAXPRIME 5879 + +#define Hash(x) ((12013 - x)*(-47 + x))/68400 + +static int prime[] = { + FIRST,47,53,59,67,71,73,83,89,97,101,103,109,113,127,131,137,139,149, + 151,157,163,167,173,179,181,191,197,199,211,223,227,229,233,239,241,251, + 257,263,269,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367, + 373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467, + 479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599, + 601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709, + 719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829, + 839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967, + 971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061, + 1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163, + 1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277, + 1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373, + 1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481, + 1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571, + 1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667, + 1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783, + 1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889, + 1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003, + 2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111, + 2113,2129,2131,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239, + 2243,2251,2267,2269,2273,2281,2293,2297,2309,2311,2333,2339,2347,2357, + 2371,2377,2383,2393,2399,2411,2423,2437,2441,2447,2459,2467,2477,2503, + 2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633, + 2647,2657,2659,2671,2677,2687,2699,2707,2719,2729,2741,2749,2753,2767, + 2777,2791,2803,2819,2833,2837,2843,2857,2861,2879,2887,2897,2909,2917, + 2927,2939,2953,2963,2971,2999,3001,3011,3023,3037,3041,3061,3067,3079, + 3089,3109,3119,3121,3137,3163,3167,3169,3187,3191,3209,3221,3229,3251, + 3259,3271,3299,3301,3307,3319,3331,3347,3359,3371,3389,3391,3413,3433, + 3449,3457,3463,3469,3491,3499,3517,3529,3547,3559,3571,3583,3593,3613, + 3631,3643,3659,3671,3691,3701,3719,3733,3739,3761,3779,3793,3803,3821, + 3833,3853,3863,3881,3907,3917,3931,3947,3967,3989,4001,4013,4027,4049, + 4073,4079,4099,4127,4139,4157,4177,4201,4211,4231,4253,4271,4289,4297, + 4327,4349,4373,4391,4409,4423,4451,4481,4493,4519,4547,4567,4591,4621, + 4637,4663,4691,4721,4733,4759,4793,4817,4861,4877,4909,4943,4973,5003, + 5039,5077,5113,5147,5189,5231,5273,5323,5381,5431,5483,5557,5623,5737, + MarkLast(5879) +}; + +static short coeff[][32] = { + {13,11,10,3,9,2,2,2,2,9,2,2,7,2,2,2,2,2,2,6,2,2,2,13,11,10,3,9,2,2,2,2}, + {23,17,12,11,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,12,14,14,14}, + {18,14,5,14,2,2,19,19,25,25,18,18,18,2,2,2,2,2,2,2,2,2,2,2,25,6,2,2,2,18,14,5}, + {18,13,23,5,2,12,6,12,12,12,10,10,16,2,16,16,2,2,2,2,2,2,2,10,2,2,2,2,10,2,2,2}, + {21,22,7,21,2,20,20,2,2,2,2,22,2,2,2,2,2,2,2,6,6,21,2,2,2,2,2,2,2,2,6,6}, + {27,14,10,14,2,4,13,2,2,16,4,4,4,6,6,6,6,6,6,25,25,31,31,15,31,2,2,31,15,14,14,6}, + {30,19,24,16,22,8,2,2,22,5,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {34,28,13,28,27,27,2,4,2,2,2,16,16,4,20,20,36,20,36,5,5,5,36,36,5,5,5,7,5,7,7,2}, + {35,19,33,8,21,30,8,2,4,2,4,4,2,2,2,2,2,2,2,2,2,17,2,2,11,25,11,17,17,17,17,17}, + {39,40,15,21,11,26,13,2,2,13,2,2,2,2,2,2,2,2,2,2,26,26,2,2,2,2,2,2,2,2,2,2}, + {37,21,35,29,27,19,19,2,2,2,5,15,2,2,15,15,19,19,19,19,19,2,2,2,2,2,19,2,2,2,2,2}, + {45,44,13,25,17,47,30,2,30,2,2,2,2,2,2,2,2,2,19,19,19,17,17,2,2,2,2,2,2,2,2,2}, + {35,22,37,9,35,12,35,8,2,2,50,50,2,2,32,32,32,31,13,8,8,8,2,22,50,9,9,9,22,22,22,10}, + {29,24,43,36,49,2,2,8,4,25,49,25,2,2,8,10,10,10,5,5,5,40,10,33,40,40,2,27,10,25,25,25}, + {50,18,32,39,21,2,2,2,4,4,36,36,14,14,14,14,2,2,2,17,17,17,16,16,2,14,14,14,14,2,2,2}, + {31,28,45,20,18,43,43,13,28,2,2,2,31,31,31,31,31,2,2,2,43,43,2,2,2,2,2,2,2,2,30,2}, + {39,15,41,7,24,2,2,30,40,2,2,25,25,25,25,2,2,2,2,2,2,6,6,2,25,2,5,2,2,25,2,2}, + {44,20,29,39,7,21,21,21,2,2,45,2,2,2,49,49,49,49,49,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {56,20,22,13,18,35,35,6,2,4,2,4,2,2,2,23,16,16,4,23,2,34,52,2,34,2,4,2,2,2,23,16}, + {46,32,17,18,29,27,31,31,31,2,2,4,15,2,2,2,2,2,2,2,2,2,2,2,2,2,23,32,32,32,15,15}, + {62,42,43,17,23,13,13,2,2,13,2,2,2,2,2,2,2,10,2,2,2,2,9,10,2,2,2,19,9,9,9,9}, + {46,49,49,52,27,7,20,2,2,6,6,13,13,13,2,13,13,2,2,2,2,2,2,34,34,2,2,2,2,2,2,2}, + {64,34,16,28,16,51,47,2,2,2,6,18,39,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,2}, + {74,26,44,25,50,24,54,39,58,42,2,42,42,2,2,2,2,2,2,2,2,33,33,2,2,39,11,2,2,58,39,58}, + {70,22,50,22,16,9,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {74,21,17,25,35,33,10,2,10,20,20,57,57,57,2,2,57,2,2,2,2,2,2,2,13,2,2,2,2,2,2,2}, + {71,68,68,27,71,39,81,44,2,2,2,12,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {55,30,85,42,16,36,45,67,2,2,68,2,2,2,2,2,2,2,68,10,2,2,2,2,2,2,2,2,2,2,2,2}, + {64,17,24,26,49,12,10,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,59,2,2}, + {68,57,23,38,61,38,13,13,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,68,15,2,44,44,44,2,2,2}, + {94,28,58,29,13,5,15,8,66,2,2,2,39,39,15,66,2,2,6,6,2,2,66,66,66,66,2,2,2,2,2,66}, + {94,85,9,41,41,37,29,29,17,2,2,2,7,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,8,8}, + {89,32,75,77,77,13,2,30,30,2,2,2,2,2,2,2,2,2,2,67,67,2,2,2,2,2,2,2,2,8,19,32}, + {70,45,58,63,67,10,72,72,70,6,2,36,2,70,70,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {101,33,76,13,45,63,2,2,6,19,2,2,32,32,32,32,32,65,2,63,63,11,11,11,19,19,19,19,9,63,63,63}, + {70,89,44,37,19,45,2,2,2,8,10,8,54,54,80,80,80,80,80,2,116,2,116,2,2,80,40,51,100,100,8,2}, + {71,54,83,51,42,98,2,2,8,8,14,30,93,22,15,15,30,30,30,44,44,44,2,2,22,22,22,117,44,11,11,11}, + {109,37,51,113,17,10,2,2,17,17,55,2,55,55,55,55,55,55,2,2,2,57,48,48,55,55,2,2,55,2,2,55}, + {75,38,68,89,11,52,2,2,81,39,2,38,2,2,2,2,2,2,2,2,2,2,2,19,2,2,2,2,2,2,2,2}, + {81,84,35,34,20,93,2,12,12,12,2,96,2,96,96,2,96,2,2,2,2,2,2,2,2,2,2,2,2,56,56,56}, + {109,72,60,96,67,32,85,84,27,91,91,2,10,29,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {104,32,56,46,77,11,35,35,24,56,19,2,2,2,78,2,2,75,2,2,2,2,78,2,2,2,2,2,2,2,2,2}, + {81,103,25,35,28,15,20,20,20,2,2,2,2,20,20,20,107,107,2,2,2,2,2,2,2,2,2,2,2,2,13,13}, + {119,75,42,29,74,23,54,36,39,2,2,4,4,19,19,2,2,2,2,2,2,2,2,54,2,2,2,2,2,2,2,54}, + {115,73,22,102,75,138,16,73,50,16,2,50,2,2,2,133,2,2,2,2,2,2,2,2,2,2,2,2,2,33,33,33}, + {119,48,66,51,14,22,20,20,2,2,2,2,2,60,2,2,2,2,2,2,2,2,60,2,2,2,2,2,2,60,2,65}, + {121,94,80,29,51,69,42,36,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,2,2}, + {129,123,41,79,43,34,24,11,2,2,4,2,2,2,2,75,16,16,16,75,75,75,16,16,16,25,2,99,2,2,75,16}, + {128,33,35,68,22,8,62,94,2,2,2,62,62,2,98,2,2,4,98,2,2,32,81,32,32,32,98,98,98,98,98,98}, + {101,109,154,15,57,6,27,36,2,2,37,37,2,2,2,2,2,2,2,107,2,2,2,107,107,2,2,2,2,2,2,2}, + {106,40,24,38,61,118,106,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {149,111,58,79,127,13,41,33,27,16,30,2,61,2,72,2,2,2,2,2,2,2,2,2,2,2,2,75,75,2,2,2}, + {105,92,43,156,25,53,57,115,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {99,40,62,67,66,29,99,99,99,78,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,79}, + {109,42,96,95,66,41,103,84,13,103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {111,72,16,89,25,86,117,29,14,14,2,2,2,2,2,60,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {106,72,49,94,140,44,97,157,75,2,2,4,123,123,2,2,123,123,123,123,2,2,2,2,2,2,2,2,2,2,2,2}, + {115,67,74,32,43,50,21,36,135,36,85,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {151,71,157,42,41,37,80,27,18,2,2,2,2,2,2,2,2,2,2,2,2,2,115,128,128,128,128,128,32,2,128,80}, + {119,91,38,30,92,44,32,76,22,2,34,2,2,2,2,2,2,2,2,2,2,2,2,2,2,129,2,2,129,2,2,2}, + {121,126,31,52,120,37,57,10,171,2,2,2,2,35,35,35,2,2,97,97,97,97,97,97,97,35,35,35,97,97,97,2}, + {155,86,49,104,87,94,64,45,61,91,91,91,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {164,121,44,166,47,33,7,15,13,2,2,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {128,120,133,17,71,52,25,107,42,21,21,2,2,2,2,4,4,96,2,9,9,2,9,94,94,94,94,94,94,94,94,96}, + {179,82,157,76,61,35,13,90,197,2,69,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,39,39}, + {136,136,148,63,66,10,169,95,95,163,30,28,28,2,41,130,2,2,2,21,2,2,2,2,2,2,2,2,2,2,2,36}, + {131,40,112,63,55,30,53,79,79,79,2,79,2,2,2,2,2,79,2,2,2,2,14,36,2,21,21,21,21,2,2,91}, + {165,81,92,48,9,110,12,40,40,34,2,2,2,107,107,107,2,107,2,2,2,2,2,2,2,2,2,2,2,15,41,41}, + {169,66,170,97,35,56,55,86,32,32,2,2,2,2,14,2,40,2,37,2,2,37,40,40,40,2,2,2,37,37,37,37}, + {135,63,126,156,70,18,49,143,6,117,2,109,109,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {179,104,117,56,132,56,190,130,130,15,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {193,59,51,68,68,15,170,170,170,143,143,12,2,2,2,63,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {145,101,56,65,23,76,110,2,4,4,4,146,146,146,2,146,2,2,2,2,2,2,2,2,2,2,2,2,2,2,146,146}, + {144,129,26,98,36,46,47,52,52,52,82,2,2,2,2,2,17,2,2,2,2,2,2,2,2,2,2,2,2,91,2,2}, + {145,78,166,171,56,20,63,2,2,33,33,33,33,2,78,47,47,47,47,47,2,2,2,2,2,78,78,78,2,2,2,2}, + {191,69,176,54,47,75,167,2,2,2,188,188,188,30,30,2,67,67,117,2,117,117,117,2,2,36,2,2,2,2,2,2}, + {186,96,29,122,47,96,170,157,157,157,157,108,159,2,195,195,26,26,26,26,26,2,2,2,2,132,132,132,2,2,2,2}, + {151,118,226,91,54,49,33,2,2,2,2,4,4,4,143,143,2,2,143,25,25,25,2,143,143,143,143,143,143,143,143,143}, + {144,91,237,82,81,75,138,163,163,163,117,117,44,2,44,136,136,136,136,2,2,2,2,2,122,122,122,122,2,2,2,136}, + {189,78,178,64,118,27,189,2,2,67,67,110,110,110,110,2,28,28,2,2,2,2,2,2,2,102,2,2,2,2,2,2}, + {165,202,83,76,125,65,42,2,44,44,23,2,23,23,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {209,204,92,75,85,146,104,2,7,18,8,2,2,2,204,95,95,95,2,2,2,95,95,95,95,95,95,95,2,2,2,95}, + {169,68,89,16,193,82,33,262,262,175,148,148,148,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {171,162,78,43,61,17,112,10,171,182,118,33,2,2,2,2,118,2,2,2,2,2,2,151,2,2,2,2,2,2,2,2}, + {211,121,119,55,90,211,96,89,225,25,178,36,36,36,2,2,108,2,2,2,2,2,2,2,2,2,2,2,2,184,2,2}, + {154,101,83,17,16,210,41,79,70,158,2,27,27,2,2,2,2,2,2,2,2,2,2,2,2,153,2,2,2,2,2,2}, + {169,179,130,79,148,180,136,17,47,119,2,119,119,169,169,2,169,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {241,171,148,31,172,34,66,60,156,140,2,2,2,75,75,2,2,2,2,2,2,2,190,190,2,2,2,30,2,2,2,2}, + {229,189,183,106,118,138,82,149,265,39,2,2,265,2,2,2,2,2,2,130,2,2,2,71,71,2,2,2,71,2,2,71}, + {165,157,127,21,64,15,80,130,130,130,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,74,2}, + {221,130,203,84,83,83,29,121,54,54,2,141,2,2,94,94,94,4,4,4,2,4,2,2,2,54,54,108,16,16,94,52}, + {230,166,20,160,121,102,153,94,16,67,2,2,2,2,2,2,97,97,97,2,2,97,97,2,97,97,97,97,97,97,97,97}, + {181,79,137,119,139,24,77,17,50,25,25,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {239,242,192,40,41,62,124,193,193,31,193,2,2,2,2,2,2,2,2,2,2,2,2,148,2,2,2,2,2,2,2,2}, + {239,178,73,122,239,51,95,48,78,88,78,2,2,2,2,2,2,2,2,2,2,2,144,144,2,2,144,144,144,2,144,144}, + {234,117,198,34,143,21,74,6,252,252,98,2,2,2,2,197,38,2,2,2,2,2,47,2,47,47,47,47,2,2,2,47}, + {179,110,38,28,58,39,16,29,42,125,202,8,8,129,4,4,2,2,2,67,67,2,2,2,2,2,2,8,67,67,2,2}, + {246,53,189,50,18,59,179,179,7,137,137,2,2,103,103,103,103,40,40,40,2,2,2,2,73,73,73,2,103,103,103,103}, + {239,133,87,92,193,12,206,238,238,238,31,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {191,244,60,193,18,32,193,104,74,125,125,66,2,2,2,2,2,2,2,2,2,2,125,125,2,125,125,125,2,2,2,2}, + {177,74,90,91,172,219,63,84,32,2,2,196,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {253,143,54,39,122,32,75,107,234,2,6,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {282,89,71,88,30,23,81,105,105,2,2,105,105,131,107,2,2,2,2,2,195,195,2,2,29,29,21,21,128,195,195,195}, + {259,115,171,40,156,71,67,24,24,2,2,2,24,4,4,4,2,234,2,2,2,2,2,2,2,2,2,74,74,2,2,2}, + {264,237,49,203,247,108,75,75,75,2,2,32,16,8,16,16,16,164,14,164,2,2,32,16,8,16,16,32,42,42,42,2}, + {264,106,89,51,29,226,23,286,286,151,151,151,151,151,2,2,2,2,2,2,31,31,31,2,2,2,2,2,2,2,2,284}, + {194,215,82,23,213,23,108,127,74,2,201,32,178,2,285,2,2,2,2,285,2,2,2,2,2,2,2,2,2,2,2,2}, + {196,267,251,111,231,14,30,52,95,2,154,53,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {266,67,22,101,102,157,53,95,130,2,42,76,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {281,205,107,178,236,122,122,316,76,215,215,2,60,2,2,2,2,2,2,227,2,2,2,2,2,2,2,2,27,2,2,2}, + {271,89,65,195,132,162,102,45,56,174,104,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {200,169,170,121,155,68,131,167,78,113,113,2,2,64,2,2,2,2,2,2,2,2,2,2,2,2,2,173,2,2,2,2}, + {288,143,265,264,71,19,231,169,27,27,27,2,2,2,2,2,2,2,2,2,2,2,2,2,51,2,2,2,2,2,2,2}, + {311,141,96,173,90,119,134,151,35,252,39,2,39,39,2,2,2,2,2,2,2,2,2,113,113,2,2,2,2,2,2,113}, + {311,230,52,138,225,346,162,216,216,91,160,182,91,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {275,167,128,244,184,184,44,210,237,139,139,139,139,2,2,2,2,2,2,2,2,2,2,73,2,2,2,2,2,2,2,2}, + {176,156,83,135,46,197,108,63,33,33,33,2,133,2,213,213,213,213,133,133,2,133,2,2,133,133,2,2,2,2,2,2}, + {283,125,141,192,89,181,106,208,124,124,2,112,112,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {289,191,171,152,191,173,54,13,21,56,56,56,2,2,2,2,2,2,2,2,2,220,2,2,2,2,2,2,2,2,2,2}, + {334,305,132,132,99,126,54,116,164,105,2,105,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,287,2,2,2,2}, + {240,166,44,193,153,333,15,99,246,99,2,2,99,99,2,2,2,2,195,195,195,2,195,195,2,263,263,2,195,195,195,263}, + {246,194,265,79,225,65,24,62,46,181,2,2,2,314,2,2,2,2,2,2,2,215,2,2,2,2,2,2,2,2,2,2}, + {229,334,285,302,21,26,24,97,64,40,2,2,2,231,231,231,231,65,2,148,2,2,2,2,2,2,2,2,2,2,2,2}, + {251,295,55,249,135,173,164,78,261,261,2,2,2,2,114,2,2,2,2,2,256,142,142,2,2,2,2,2,2,2,2,185}, + {232,153,55,60,181,79,107,70,29,35,2,2,58,58,2,58,2,2,2,2,61,61,2,61,61,2,2,61,61,90,2,90}, + {246,116,45,146,109,90,32,103,133,119,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {246,113,146,232,162,262,204,47,45,331,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {360,150,84,275,13,26,368,49,244,244,63,63,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {239,295,174,87,30,87,85,36,103,36,2,278,2,2,2,2,2,2,163,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {356,300,75,310,123,301,200,107,183,37,218,37,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {358,207,168,150,150,21,156,50,195,275,275,275,2,2,2,2,2,251,2,2,2,251,251,251,251,251,251,251,251,251,2,2}, + {322,194,234,62,236,147,239,400,255,255,80,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {326,276,134,100,143,113,115,221,13,339,194,194,194,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {337,132,27,45,14,81,110,84,238,224,211,2,29,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {192,213,113,174,403,117,342,342,311,35,35,2,2,2,2,2,2,2,2,101,2,2,2,2,2,2,2,2,2,101,101,101}, + {264,273,316,53,40,330,51,285,115,219,147,2,2,2,335,2,2,2,2,2,173,2,173,2,2,173,173,173,173,173,173,83}, + {254,293,407,118,54,296,160,231,4,4,93,2,2,2,2,2,60,61,2,2,120,127,127,127,88,88,88,88,88,88,88,88}, + {341,78,336,263,281,164,99,334,296,114,109,2,163,163,163,163,2,2,2,2,2,2,2,125,125,292,292,292,292,125,125,125}, + {355,87,212,100,89,210,133,344,120,45,45,138,138,138,138,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {274,141,46,219,158,284,38,79,73,185,35,6,81,2,2,2,2,53,2,2,81,81,2,81,2,2,2,53,53,53,53,53}, + {349,303,439,19,95,240,174,191,2,162,162,2,2,2,76,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {360,91,201,205,67,181,59,77,2,44,103,103,103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,125}, + {283,154,261,91,77,147,227,105,116,311,256,256,2,116,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,32,2}, + {287,288,111,89,249,370,55,16,248,67,67,115,2,2,134,134,2,2,2,2,2,2,2,2,2,2,2,2,2,22,22,22}, + {284,270,282,37,29,181,160,49,285,285,374,250,2,374,374,2,2,2,179,179,35,2,179,179,2,179,179,2,2,285,285,285}, + {359,305,52,36,243,231,7,92,2,68,68,307,62,45,2,2,112,311,311,311,2,2,2,2,2,2,2,2,2,2,2,2}, + {288,119,218,137,364,38,27,380,2,2,211,23,33,2,2,2,2,2,225,225,225,2,2,225,225,225,2,2,2,2,2,2}, + {277,155,232,309,370,365,348,75,214,214,214,4,4,2,2,2,210,210,210,210,210,210,210,2,2,2,2,2,2,2,2,2}, + {292,204,91,41,124,190,107,322,125,125,125,125,125,25,25,62,2,2,146,146,2,2,62,146,2,146,114,146,114,2,2,2}, + {282,195,192,409,68,99,253,106,2,2,2,231,55,55,2,323,323,55,55,285,285,285,285,2,2,2,2,2,2,285,285,323}, + {299,122,174,403,113,77,63,275,2,2,2,138,276,227,38,227,2,237,2,2,2,2,2,2,2,2,2,2,352,352,352,2}, + {282,222,268,86,21,109,353,408,2,2,2,2,135,12,12,216,241,241,241,241,241,241,241,241,241,303,303,303,135,135,135,2}, + {374,94,89,257,137,246,186,196,2,2,2,2,2,454,122,122,122,122,2,2,2,28,28,94,94,94,94,94,122,122,122,122}, + {288,92,62,428,122,153,481,66,2,2,2,250,250,177,177,177,177,279,279,279,279,279,279,279,2,2,279,177,177,177,177,177}, + {288,370,141,284,207,192,450,67,2,2,2,183,217,217,217,183,183,167,202,202,202,202,167,167,2,2,2,164,164,80,167,167}, + {286,293,199,39,158,332,242,103,2,2,2,408,266,315,2,2,365,253,315,315,315,315,315,2,2,315,2,2,2,2,2,2}, + {407,83,435,187,40,16,52,65,2,2,244,39,77,119,119,2,2,2,119,342,342,2,2,2,2,2,342,2,2,58,58,119}, + {398,88,78,57,260,203,203,43,131,131,131,204,204,322,204,2,102,2,325,325,325,325,2,2,2,2,2,2,2,2,2,2}, + {390,174,70,155,163,67,225,49,2,34,34,151,151,2,2,111,2,2,111,111,2,2,2,2,2,2,2,2,2,2,2,2}, + {393,129,393,169,23,192,168,47,2,2,312,150,71,2,150,2,2,2,61,2,2,61,2,2,2,2,2,2,2,2,2,2}, + {408,136,71,63,63,159,222,68,181,181,124,227,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {294,169,79,242,160,123,178,290,186,186,56,399,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {415,228,69,68,193,122,21,362,33,22,362,57,2,2,2,2,46,46,196,196,196,2,196,196,196,2,196,2,2,2,2,2}, + {415,130,241,185,312,175,309,199,94,281,47,47,2,2,2,2,206,307,221,2,2,2,2,2,239,239,239,239,239,206,206,206}, + {417,238,147,165,346,19,92,164,266,291,291,43,2,2,2,345,2,2,2,345,345,2,2,2,2,2,345,2,2,2,2,2}, + {456,192,86,182,35,174,342,102,210,210,210,393,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,256,256,158}, + {307,255,92,38,325,61,103,246,176,319,80,89,2,241,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {432,168,63,154,166,46,479,145,144,288,288,288,288,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {341,256,113,85,188,233,161,29,110,167,91,91,253,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {311,360,312,158,73,16,106,209,472,48,24,203,203,2,2,2,2,234,234,234,2,234,234,203,2,2,2,234,234,234,234,234}, + {437,196,161,100,132,246,395,187,35,35,35,2,2,35,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {438,174,338,145,155,276,422,374,4,463,463,99,224,70,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {426,225,211,130,325,283,353,96,282,23,299,2,2,2,63,63,2,276,276,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {430,101,288,38,200,332,325,193,123,123,88,2,2,2,2,2,231,231,139,139,139,139,139,139,139,139,139,139,139,139,139,139}, + {434,143,308,389,365,363,174,63,121,125,260,2,2,260,260,2,2,2,2,2,2,2,2,2,2,258,2,2,2,258,2,2}, + {453,123,201,141,229,223,234,494,102,102,102,2,2,102,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,252}, + {438,168,65,264,304,74,168,88,114,132,187,2,127,127,2,2,2,2,2,81,81,56,2,2,2,307,2,2,2,2,81,81}, + {324,181,141,129,33,171,173,291,227,373,52,301,301,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {448,119,431,111,135,50,242,95,148,49,49,49,68,2,2,2,2,2,2,2,2,49,2,2,2,2,2,2,2,2,2,2}, + {335,114,55,47,33,173,287,345,198,198,136,238,238,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {468,377,243,237,332,512,27,167,22,169,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {456,162,188,223,408,209,28,164,299,299,258,186,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {445,391,115,226,96,456,239,214,556,158,158,282,2,2,2,2,2,2,2,2,2,2,2,2,2,331,2,2,2,2,2,2}, + {360,397,130,172,407,479,295,13,38,199,199,346,2,2,2,2,2,2,145,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {512,136,129,361,180,61,274,128,422,27,292,165,2,2,2,2,2,2,363,117,117,117,117,2,2,2,2,363,2,2,2,2}, + {478,433,483,302,200,227,273,27,171,171,371,102,2,2,2,2,2,20,2,2,2,2,2,2,2,2,403,403,2,2,2,2}, + {485,158,454,86,212,60,93,40,209,188,188,106,2,231,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {390,448,111,145,47,555,367,317,315,52,429,435,429,429,2,2,2,2,2,2,2,2,229,2,2,229,2,2,2,229,2,2}, + {490,331,187,398,407,373,497,219,423,423,378,378,2,419,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {378,406,112,198,539,550,516,59,240,240,23,316,2,122,2,2,2,2,2,2,2,2,2,2,111,111,2,2,2,95,2,2}, + {474,373,248,330,40,113,105,273,103,407,2,165,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {495,406,306,239,172,323,236,50,37,435,2,310,56,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {498,447,112,241,552,119,227,189,140,140,140,140,140,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {505,132,169,418,342,28,319,301,172,530,317,317,335,2,2,2,2,2,2,376,2,2,2,2,2,2,2,2,2,2,2,2}, + {397,393,191,269,462,151,264,134,307,307,2,163,163,2,2,2,2,2,2,2,2,2,2,2,2,2,159,2,2,2,2,2}, + {485,491,325,149,122,145,228,100,311,64,2,62,137,2,137,2,2,2,2,2,2,2,392,2,2,2,2,2,2,2,2,2}, + {364,462,360,383,182,187,123,69,129,146,2,156,149,2,149,2,2,2,2,2,2,2,303,303,303,2,2,2,2,2,149,266}, + {507,195,130,401,363,171,483,20,86,464,2,89,89,2,26,2,2,2,2,2,425,425,2,2,2,2,2,2,2,2,2,2}, + {380,220,87,122,242,78,207,371,95,305,2,2,2,2,440,440,445,358,358,331,331,358,445,445,445,445,445,445,445,445,445,445}, + {507,221,247,137,182,90,28,207,325,438,2,2,2,2,2,187,232,438,2,2,68,37,37,37,37,37,37,37,37,37,161,2}, + {509,265,101,126,203,86,152,416,352,85,2,2,2,284,391,368,2,2,152,2,2,2,325,2,2,2,2,2,2,2,2,2}, + {572,359,332,480,68,535,59,504,365,21,2,2,246,54,246,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {415,178,178,372,415,400,73,82,348,99,2,23,325,44,2,2,2,2,2,2,2,2,325,2,2,2,2,2,2,2,2,2}, + {430,275,236,361,42,552,368,236,653,74,65,458,288,307,307,2,2,2,2,2,2,2,65,65,2,2,2,2,2,2,2,2}, + {434,139,58,437,130,441,188,15,63,145,145,145,300,2,2,2,2,300,2,2,2,2,2,2,2,2,401,401,401,401,401,401}, + {542,138,266,514,552,202,103,197,574,48,2,96,96,2,2,96,96,217,2,2,2,2,2,2,2,2,2,2,2,2,2,217}, + {546,494,72,272,550,219,213,209,169,404,69,464,86,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {602,466,332,458,99,244,255,183,446,670,2,186,323,2,2,2,2,2,2,2,2,2,2,2,2,2,2,292,165,165,165,165}, + {422,413,561,110,242,62,436,478,18,150,606,88,643,2,249,2,2,2,2,456,2,2,2,2,2,2,2,2,2,2,2,456}, + {522,141,154,253,264,53,120,93,274,52,44,203,556,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {600,249,375,555,421,322,317,84,517,517,268,106,353,2,2,2,2,2,2,2,2,2,268,2,2,2,2,2,2,302,2,2}, + {555,516,310,438,290,559,52,265,248,193,285,441,285,285,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {555,300,232,386,470,300,355,177,57,407,450,279,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {544,177,79,306,256,402,205,496,398,115,115,43,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {534,274,194,220,575,81,206,544,341,85,137,429,429,429,429,344,2,2,2,2,2,315,315,315,315,315,315,72,72,72,2,2}, + {400,136,112,136,273,277,205,578,122,122,230,230,2,2,2,2,2,2,2,2,2,2,2,2,2,2,302,2,2,2,2,2}, + {576,421,115,52,253,373,17,657,43,178,178,58,485,485,485,485,485,485,2,2,2,159,159,159,159,2,619,2,2,2,2,2}, + {576,301,142,329,96,41,302,528,126,112,206,206,2,2,2,2,2,2,206,206,2,206,206,2,191,206,206,191,191,191,191,206}, + {548,538,508,250,539,102,73,285,119,433,480,480,2,2,2,480,480,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {622,526,294,56,498,176,237,351,25,26,474,55,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {446,163,469,481,240,278,51,373,491,13,22,419,2,2,2,2,2,2,2,2,2,176,176,2,2,2,2,2,2,2,2,2}, + {445,223,102,108,120,166,68,214,737,504,96,96,206,377,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,39,39,528}, + {453,121,489,84,434,505,78,575,468,372,468,468,83,468,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {425,355,128,58,194,82,438,117,10,34,34,35,112,107,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {432,479,328,443,253,634,271,429,406,543,406,543,543,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {433,294,192,205,152,70,99,68,392,169,309,390,390,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,199,2,2,2}, + {456,383,487,311,57,579,673,264,582,187,184,43,43,2,2,2,2,501,501,501,2,2,2,2,2,2,2,2,2,2,2,2}, + {437,561,384,619,363,420,614,117,217,247,405,142,142,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {434,372,239,508,478,26,375,255,151,151,650,112,251,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {437,133,516,423,305,90,135,25,266,487,6,286,286,2,2,2,2,2,2,2,2,2,2,2,2,510,510,2,2,2,2,2}, + {463,341,170,401,178,79,305,98,162,166,32,392,335,335,335,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {610,477,478,516,318,184,267,423,190,494,494,2,336,336,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {611,211,491,224,47,54,124,268,271,271,223,2,2,2,2,2,2,2,2,2,2,2,2,359,2,2,2,2,2,2,2,2}, + {590,463,461,162,162,622,167,254,29,377,377,75,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {478,388,612,404,491,561,180,80,262,58,94,2,2,275,2,2,2,2,2,151,2,2,2,2,2,312,312,312,2,2,2,275}, + {629,225,67,623,298,588,354,49,41,185,176,63,63,63,2,2,2,2,2,2,2,2,2,2,2,2,8,435,32,32,435,435}, + {671,275,392,298,612,328,337,215,58,58,124,2,2,490,392,2,2,2,125,457,457,2,2,2,2,2,2,2,2,2,2,457}, + {448,126,129,168,209,340,40,96,509,509,509,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {667,246,160,68,737,203,168,628,46,128,358,2,2,2,121,121,2,2,2,2,2,2,560,121,2,2,2,2,2,2,2,121}, + {635,212,284,356,187,591,275,361,194,317,488,2,2,2,2,2,2,97,6,2,6,247,2,2,2,2,2,2,2,2,2,6}, + {612,395,104,86,264,321,521,325,252,53,178,100,100,100,16,343,343,343,343,343,2,2,2,2,2,2,2,2,2,343,343,343}, + {486,428,287,472,292,141,504,178,585,98,282,2,2,2,2,2,2,2,2,2,2,2,2,284,284,284,78,284,2,2,2,2}, + {612,327,212,565,450,385,201,649,423,491,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {462,579,236,447,60,162,427,258,73,742,742,2,742,742,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {495,440,89,439,65,207,459,407,139,131,624,2,380,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {469,507,276,227,66,237,260,386,27,666,31,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {646,393,273,238,24,13,253,127,368,316,316,316,150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {626,196,111,465,386,431,181,414,614,391,349,318,389,2,389,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {667,257,290,122,109,523,95,26,282,49,374,236,236,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,88,2,2}, + {653,169,261,533,488,282,213,443,337,480,503,174,534,2,2,2,2,2,534,2,2,2,2,534,2,2,2,2,534,2,2,2}, + {670,555,160,90,604,604,50,459,376,545,316,180,526,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {639,253,95,380,108,448,223,254,381,30,6,644,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {642,160,702,90,157,254,278,521,650,277,74,554,122,2,2,2,2,2,2,517,174,174,174,2,2,2,2,2,2,2,2,2}, + {678,254,190,197,637,49,130,25,374,357,357,411,643,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,537,2,2}, + {512,347,65,546,434,87,18,123,672,412,316,6,699,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {657,233,108,38,147,53,136,168,408,477,477,279,268,289,2,2,2,2,2,2,289,2,2,2,2,2,2,2,2,289,289,2}, + {498,431,217,101,78,143,111,113,181,825,458,140,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {660,624,376,472,165,66,158,308,492,779,305,305,2,576,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {521,249,388,155,467,245,134,311,72,312,312,623,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {408,348,216,299,302,668,347,63,172,141,272,168,678,2,2,2,512,2,2,2,2,4,2,2,2,494,64,64,64,128,16,512}, + {669,421,230,70,212,845,237,347,148,76,823,472,2,2,2,132,2,2,2,2,2,2,2,383,132,383,2,2,383,383,383,383}, + {693,530,139,82,780,416,270,278,330,484,484,200,2,2,2,2,137,94,2,2,2,2,2,2,2,2,484,2,2,2,2,2}, + {672,150,164,622,196,75,302,119,42,314,314,132,60,60,60,298,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {705,302,411,705,691,160,809,40,32,867,826,826,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {684,229,138,46,407,399,82,254,267,31,31,45,2,209,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {707,323,409,27,31,157,492,463,886,412,251,251,304,190,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {715,521,636,304,402,459,435,571,611,214,214,43,43,358,2,2,2,2,358,2,2,2,2,2,2,358,358,358,2,2,358,358}, + {768,224,219,425,467,147,151,643,316,263,263,263,263,263,2,2,2,2,2,272,139,2,2,2,2,2,2,2,2,2,272,53}, + {555,543,434,78,850,174,277,194,4,100,471,69,69,424,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {690,206,572,877,600,129,288,52,19,147,222,222,147,147,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {793,279,264,566,252,495,872,492,482,107,294,503,350,350,2,2,2,2,2,2,2,285,285,273,273,273,273,2,2,2,2,2}, + {703,427,225,320,136,47,103,547,239,217,73,68,68,204,204,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {791,275,60,137,352,839,67,476,356,216,216,563,563,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {703,312,472,588,228,512,386,668,477,617,389,389,389,2,296,2,2,2,2,343,343,2,2,343,343,2,2,617,617,617,617,2}, + {709,509,697,145,252,194,304,192,192,623,623,4,423,2,2,2,199,423,2,2,2,222,222,2,2,623,623,623,623,623,2,222}, + {587,453,117,107,672,86,248,568,568,294,294,513,78,2,2,164,82,2,2,2,2,22,2,2,2,2,2,2,2,2,2,2}, + {741,466,378,135,737,131,159,469,59,2,59,59,187,2,204,2,2,2,2,2,2,2,2,2,798,2,2,798,798,798,798,798}, + {539,310,463,103,553,45,609,326,197,2,62,113,272,2,62,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {750,703,182,242,92,335,272,466,594,2,701,569,474,129,140,140,2,507,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {547,210,113,361,584,121,65,307,98,2,2,552,514,514,2,514,207,514,514,514,2,2,2,2,2,2,2,2,2,2,2,2}, + {555,229,328,91,272,815,483,749,468,2,92,92,4,92,2,2,2,258,258,258,2,258,258,2,2,2,2,258,2,2,258,258}, + {580,145,358,434,630,73,604,366,366,2,2,398,398,207,2,207,487,2,2,487,207,2,2,207,207,207,2,2,2,2,207,207}, + {457,520,93,460,275,525,300,184,354,147,147,147,147,179,82,82,82,82,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {872,630,513,218,719,174,197,104,86,281,281,281,541,642,281,94,2,45,94,2,335,335,2,2,2,2,2,2,2,2,2,84}, + {765,421,129,298,867,365,222,476,401,142,90,22,22,88,226,657,2,2,477,2,2,2,2,2,226,226,2,226,2,2,2,226}, + {833,634,228,520,113,329,279,420,581,2,2,385,385,110,450,2,733,2,2,2,561,561,2,561,2,2,2,2,2,2,2,2}, + {587,553,360,539,227,800,312,143,536,2,2,2,64,64,64,2,2,2,179,179,493,2,2,184,184,184,58,2,2,2,493,493}, + {744,466,389,280,229,134,363,177,389,2,2,2,536,273,536,536,536,536,168,45,45,45,45,2,2,2,2,2,2,2,2,2}, + {841,222,158,469,253,91,347,241,766,2,2,2,88,88,88,439,439,439,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {462,653,478,67,269,150,474,711,220,669,669,669,669,669,390,352,325,2,229,545,545,545,545,545,545,545,545,2,545,352,309,352}, + {468,430,849,689,202,427,45,34,105,2,2,2,2,4,4,4,4,4,4,4,2,2,2,4,4,4,4,4,2,2,2,2}, + {610,289,503,744,775,512,605,454,484,2,2,2,444,466,145,631,2,631,631,631,631,631,631,631,631,631,2,2,631,631,631,858}, + {792,169,306,843,246,123,293,229,483,2,2,2,165,163,163,163,163,440,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {563,325,717,766,440,705,290,123,228,2,2,2,32,64,146,2,2,2,116,79,79,2,146,146,79,79,79,2,2,146,146,79}, + {795,185,350,211,82,537,106,680,62,2,2,537,423,423,423,2,2,501,501,2,501,2,501,2,2,2,2,2,2,2,2,2}, + {633,425,295,548,497,163,381,461,89,2,2,831,583,896,38,2,625,2,2,2,276,276,2,2,276,2,2,2,2,2,2,2}, + {767,318,84,97,208,387,423,196,417,2,396,396,396,396,396,128,128,2,2,2,328,328,4,4,4,4,101,2,2,328,82,16}, + {802,533,869,638,67,192,805,223,219,2,2,191,178,178,77,77,2,2,2,2,431,431,2,2,2,431,431,2,2,431,2,2}, + {781,638,410,399,336,465,856,426,28,2,4,4,6,6,2,2,2,449,372,372,449,449,449,2,2,449,449,449,449,449,449,2}, + {807,377,237,443,388,286,158,349,491,32,32,260,260,260,2,2,260,615,615,615,2,2,260,260,260,260,260,615,615,615,615,615}, + {780,359,766,618,41,596,86,636,287,707,707,96,49,373,613,373,2,2,2,2,2,2,2,613,613,613,2,2,2,2,2,2}, + {788,497,334,93,319,169,273,540,904,2,903,569,569,569,272,272,2,2,2,2,571,571,571,571,571,571,571,571,571,571,571,571}, + {814,652,456,774,624,870,27,739,464,2,108,578,578,561,295,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {818,280,99,873,165,426,341,74,479,342,727,684,684,662,662,2,2,2,2,2,2,662,2,2,2,2,2,2,2,2,2,2}, + {593,411,953,203,89,57,785,354,349,424,424,707,707,707,829,2,2,2,2,2,670,670,670,2,2,424,424,424,2,2,670,424}, + {629,560,621,245,683,633,495,551,472,2,31,74,489,684,555,684,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {901,490,693,410,666,119,703,593,201,61,70,70,774,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,418,418}, + {669,321,391,548,189,157,337,42,796,871,276,622,30,2,2,2,2,2,2,2,580,580,107,2,2,2,2,2,434,434,434,434}, + {610,236,633,300,681,358,72,281,148,466,466,283,275,2,386,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {929,360,102,893,329,136,515,33,170,581,268,35,777,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {859,584,475,745,506,900,40,869,143,612,175,275,209,12,12,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {822,581,76,382,72,347,964,324,137,61,61,28,623,351,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {655,330,324,151,166,431,58,174,142,115,1003,66,724,778,2,2,2,503,503,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {867,820,301,252,61,331,105,309,562,218,365,326,768,672,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {623,330,182,489,212,223,741,490,40,412,801,681,681,801,2,2,71,2,2,2,2,2,2,427,2,2,2,2,2,2,2,2}, + {859,844,510,859,118,190,550,29,159,622,622,382,258,382,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {612,237,272,53,534,682,372,935,494,536,536,599,599,599,2,536,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {843,730,235,233,816,495,598,134,131,604,227,378,378,553,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {667,397,121,526,321,660,848,729,357,137,268,711,521,521,2,2,2,2,2,2,2,2,2,2,2,2,2,194,2,2,2,521}, + {670,595,333,257,907,413,548,341,327,350,612,700,700,700,700,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {678,274,695,790,169,701,707,1084,470,123,846,846,217,121,317,2,2,2,83,83,83,83,83,83,83,83,83,2,2,2,2,2}, + {877,181,375,79,199,256,223,295,135,371,395,354,2,307,944,2,813,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {882,417,475,424,311,646,346,207,74,157,590,356,2,2,324,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {708,442,186,698,345,103,687,463,163,416,416,107,2,2,2,375,375,416,6,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {865,675,786,568,112,197,225,348,372,497,215,215,2,2,2,2,159,159,150,224,224,141,2,2,2,2,141,141,141,141,141,141}, + {693,726,117,167,535,725,224,78,716,100,460,299,2,2,2,2,921,744,2,2,2,2,2,378,2,2,178,178,178,2,178,178}, + {697,540,358,391,932,309,103,73,35,353,353,503,2,2,353,134,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {982,579,548,413,416,103,71,101,1039,526,684,684,2,2,656,2,2,2,2,2,2,2,2,2,2,2,656,656,656,2,656,656}, + {695,881,335,126,429,476,772,667,974,98,433,49,129,129,2,2,2,2,2,2,2,2,2,2,544,2,544,2,2,2,2,544}, + {705,770,134,178,940,944,654,600,46,797,797,591,2,145,616,2,2,2,2,2,2,389,389,2,122,2,2,2,389,389,909,389}, + {988,271,675,163,379,108,48,472,870,485,485,18,2,485,528,528,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {865,827,614,74,725,685,724,190,178,272,835,722,2,35,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {923,397,722,186,203,575,24,144,36,526,206,787,12,100,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {927,493,988,194,97,1006,377,578,105,248,707,784,98,784,2,2,2,2,2,2,2,2,2,370,370,2,370,2,2,2,2,2}, + {900,455,485,601,353,69,67,965,25,226,314,314,883,923,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {903,259,153,106,289,916,861,41,441,368,131,131,262,671,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {945,358,160,196,82,403,362,195,376,877,521,336,521,77,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {912,516,108,555,306,274,55,197,565,174,659,208,441,441,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {753,242,194,619,345,94,463,485,163,85,412,575,270,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {915,210,456,377,303,237,225,521,621,175,569,20,124,2,601,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {672,652,792,253,796,404,171,90,406,433,43,159,72,2,2,372,2,540,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {733,439,537,37,149,650,916,443,743,621,921,664,664,2,2,2,2,2,682,523,523,523,2,2,523,523,523,523,523,523,523,523}, + {982,344,812,567,243,52,246,369,439,205,600,739,730,2,2,2,61,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {982,604,126,65,633,657,22,776,161,45,725,44,4,2,2,2,2,2,2,2,2,2,269,269,2,2,2,2,2,2,2,2}, + {745,600,284,1117,459,1135,300,52,845,331,334,334,334,2,334,334,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {936,409,217,57,574,395,481,245,548,268,447,598,375,2,192,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {986,241,233,45,721,325,350,222,35,1065,1065,1065,1065,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {755,796,877,981,259,194,1180,215,90,658,662,662,662,2,36,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {981,626,987,827,466,458,578,346,475,223,223,223,342,1058,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,728}, + {949,422,941,491,66,786,592,429,307,123,40,478,478,478,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {992,723,625,251,431,544,309,466,700,644,484,837,904,320,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1077,496,819,340,974,122,39,1209,819,18,461,648,648,394,2,2,2,2,2,2,61,2,2,2,2,2,394,2,2,2,2,394}, + {999,674,212,673,279,579,462,754,89,866,345,110,110,887,2,2,2,2,2,707,707,2,2,2,2,2,2,2,2,2,2,707}, + {1083,356,367,357,559,213,606,477,71,103,790,103,299,299,2,2,2,2,2,2,406,406,2,2,2,2,2,2,2,2,2,2}, + {1005,260,389,960,501,714,118,73,334,1019,704,204,504,205,822,822,2,2,2,2,2,2,2,2,2,2,684,2,2,2,2,2}, + {738,749,769,610,306,326,328,578,479,840,840,840,68,192,2,150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1010,937,449,474,154,456,766,318,275,444,709,2,778,778,778,806,779,779,2,2,2,2,2,2,2,2,806,2,2,2,287,287}, + {1011,780,134,945,183,42,741,25,252,164,205,222,222,222,147,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1094,640,912,223,67,472,623,623,1244,65,1009,1209,1209,812,387,2,2,2,513,2,2,2,2,2,2,2,2,2,2,2,1209,234}, + {722,375,264,390,515,498,1161,391,884,551,238,2,2,825,549,2,2,2,551,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1022,409,93,359,983,345,280,280,104,940,940,2,2,382,1039,2,2,2,2,831,2,2,2,2,2,2,2,2,2,2,2,2}, + {997,525,680,120,466,728,288,110,1082,544,572,2,2,663,290,290,2,2,754,2,2,2,2,2,582,582,582,582,582,2,2,2}, + {1055,395,795,561,222,85,294,433,377,89,89,2,2,2,456,821,2,2,821,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1128,788,124,501,561,1015,419,787,48,620,705,2,2,2,2,88,18,2,215,215,215,2,2,215,215,2,2,2,215,2,2,2}, + {807,433,721,434,449,242,170,842,21,4,642,2,2,2,2,2,4,4,4,4,2,856,856,856,885,885,856,856,856,856,856,885}, + {1004,719,1041,460,551,516,135,417,130,698,698,2,2,2,655,655,655,655,655,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1017,568,930,1113,556,1299,114,881,690,475,641,2,2,2,779,779,103,2,528,2,2,2,2,2,2,528,528,2,2,910,910,2}, + {814,473,286,752,476,779,420,569,742,164,490,2,2,2,793,812,812,812,2,812,812,2,2,526,526,812,526,2,2,2,526,526}, + {818,301,273,664,206,971,895,590,912,523,523,2,2,452,384,255,2,130,130,130,130,865,2,2,2,255,2,2,2,2,2,2}, + {820,249,292,1017,1017,143,403,37,433,456,515,2,2,69,640,2,2,2,2,2,2,2,2,2,2,2,2,824,824,824,2,2}, + {865,1132,428,582,254,408,536,376,825,116,116,1266,1266,1266,705,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {635,503,594,203,456,1246,221,396,1151,178,66,2,781,587,86,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1157,395,446,280,1130,695,668,271,111,882,477,615,615,615,2,2,2,2,2,2,2,2,615,615,615,615,615,615,615,2,305,2}, + {830,397,932,519,818,113,367,694,88,535,535,414,343,175,2,2,2,2,2,2,2,2,2,2,414,864,2,2,864,864,864,864}, + {793,463,329,730,390,551,968,92,511,470,424,563,672,563,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1050,749,809,479,87,757,288,172,597,722,4,418,418,390,2,2,2,2,2,390,390,2,2,2,2,2,2,2,2,2,2,2}, + {1090,255,271,110,159,235,158,236,271,815,1300,416,416,416,2,2,416,416,2,2,2,399,791,791,2,791,2,2,2,2,791,791}, + {1058,417,271,172,312,363,184,191,28,183,759,214,759,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1057,385,263,395,901,274,727,340,1117,263,813,870,858,429,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1102,846,985,1085,764,124,764,51,874,612,478,801,478,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1120,665,311,695,319,1033,511,297,602,1030,1030,714,240,240,2,2,2,2,2,2,2,2,2,2,2,2,2,953,2,2,2,2}, + {1106,662,258,190,1315,214,530,263,318,904,877,1317,318,2,510,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1206,469,299,1052,655,114,189,213,321,188,64,475,475,2,2,662,662,662,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1120,1159,358,347,838,207,357,167,476,52,672,38,822,2,2,2,2,2,2,213,2,2,2,2,2,2,2,2,2,2,2,2}, + {1076,596,553,545,79,727,881,121,298,169,639,368,695,115,115,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1130,177,84,673,350,543,543,95,128,954,430,884,884,2,884,884,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {820,461,681,382,273,273,358,274,274,91,887,676,386,2,676,676,2,2,2,2,2,2,2,200,2,2,2,2,200,2,2,2}, + {1091,946,437,51,527,802,597,639,587,645,510,586,586,2,2,2,2,2,2,2,2,2,2,2,2,2,2,168,168,168,168,168}, + {1148,585,868,1282,666,417,733,1231,515,332,1213,337,337,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1103,276,174,408,233,170,955,108,530,354,585,38,677,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,476}, + {1167,478,1169,1053,563,371,108,772,413,497,1338,991,660,2,2,2,2,2,2,2,2,2,2,2,2,27,2,2,2,2,2,2}, + {1116,331,280,422,1109,341,570,243,849,241,566,61,608,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {898,782,478,1208,196,983,608,537,196,1141,141,296,715,715,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1099,1187,300,240,268,413,1366,634,184,768,773,365,783,224,783,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {904,660,1283,46,33,124,416,218,152,970,1241,305,307,307,307,260,894,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1127,553,287,58,739,99,514,739,766,42,580,241,598,598,936,936,936,629,629,629,629,2,2,2,2,2,2,2,2,2,2,2}, + {1142,370,287,925,307,1232,129,11,1284,1056,33,33,536,521,2,1286,2,2,2,2,2,2,2,2,2,2,2,2,847,847,847,847}, + {1297,600,419,985,846,493,186,109,147,239,197,762,762,327,327,1004,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1181,615,482,653,238,130,313,506,98,1314,730,730,730,730,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {921,613,628,1288,111,150,191,233,633,83,387,602,105,394,2,2,2,2,2,2,2,351,2,2,351,351,351,2,2,2,351,351}, + {1192,555,586,516,1288,733,64,653,364,273,421,215,75,75,2,2,2,2,2,2,953,953,953,953,8,383,383,2,161,383,953,953}, + {1160,617,505,1205,374,906,23,408,194,91,91,91,585,984,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1203,1101,497,352,254,309,464,123,607,1080,265,1145,1145,1145,284,284,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1210,656,1026,782,802,442,1319,734,794,165,165,796,93,796,2,829,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {963,646,721,1161,219,667,1088,485,692,692,663,535,553,662,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,686,686,2}, + {941,231,1038,309,173,770,413,560,855,660,721,1103,721,721,721,2,2,2,2,2,2,2,2,2,2,2,2,174,2,2,2,2}, + {1213,305,656,983,1399,1196,692,986,9,339,754,308,2,308,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1330,671,528,831,1426,735,33,425,364,119,363,978,2,761,483,476,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1190,286,513,881,390,215,387,130,749,554,1110,519,160,160,160,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1247,353,973,217,1044,1318,1115,319,203,390,1244,225,2,2,508,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {893,560,132,1420,721,191,568,799,412,22,322,93,2,4,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {882,1038,211,110,942,337,1305,1225,661,183,381,381,2,2,2,2,347,2,2,2,2,2,2,2,600,431,431,431,431,431,431,431}, + {1208,486,343,725,677,1204,135,139,924,170,1111,317,2,2,2,2,202,706,202,107,107,107,2,2,706,706,107,107,2,2,2,706}, + {1259,1017,456,298,443,838,137,744,551,334,36,951,2,2,2,699,718,2,2,984,2,2,2,2,2,2,984,984,2,2,2,2}, + {1212,1186,641,284,565,636,895,82,690,117,184,184,2,2,2,397,902,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1263,370,132,635,381,47,537,179,1192,301,1282,33,2,2,2,1553,2,2,2,2,2,2,2,2,2,2,2,307,307,2,2,2}, + {1015,593,112,1408,51,104,199,221,931,1010,928,928,2,2,878,878,2,2,2,2,731,731,2,731,731,2,731,2,731,731,731,2}, + {1223,434,851,152,140,1495,190,397,925,37,1080,430,2,2,204,2,759,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {939,1070,1288,254,973,901,321,109,568,713,336,988,2,946,262,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1276,636,569,258,325,675,342,85,88,579,833,833,833,833,520,2,2,2,2,520,520,2,2,2,2,2,2,2,2,2,2,2}, + {1288,1398,789,514,151,600,1618,1194,1419,441,234,204,1191,438,828,2,857,857,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1401,402,525,293,97,223,452,808,61,169,1023,1023,886,886,1023,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1001,644,263,164,136,939,624,95,489,1023,1107,331,331,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1401,741,509,797,47,157,1256,482,1513,899,736,780,780,210,2,2,2,2,783,783,2,2,2,2,2,2,2,2,2,2,2,2}, + {1047,880,369,402,641,446,639,586,277,396,419,275,825,820,2,2,2,238,238,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1273,701,831,1294,1580,137,162,415,563,11,92,116,116,116,2,2,2,2,2,2,1029,1029,1029,504,504,877,877,877,877,877,1029,1029}, + {1335,400,315,412,172,125,568,1024,58,601,398,985,640,577,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1057,1198,146,529,284,1286,160,135,75,686,648,1425,821,586,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1422,838,234,554,736,243,344,526,1108,33,1303,699,249,305,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1279,681,423,813,806,269,412,420,985,485,761,1013,649,796,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {938,614,523,557,898,624,178,461,287,985,371,371,260,613,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1040,998,324,93,887,497,1326,443,152,1193,595,80,80,80,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1027,1128,114,395,357,417,848,22,389,1257,734,838,838,301,900,2,90,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1040,420,960,882,64,661,292,146,976,427,689,248,248,248,638,2,2,2,2,2,2,2,2,2,2,2,2,861,861,861,2,861}, + {1041,1090,651,130,72,389,171,237,516,777,937,937,937,168,168,2,336,2,2,2,2,2,2,2,2,2,992,2,992,2,992,2}, + {987,1280,1245,1300,926,676,56,546,541,690,84,42,1000,1383,1383,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1058,454,1557,191,129,297,695,1390,1274,460,923,923,923,2,4,1059,2,2,2,2,2,2,2,2,2,2,2,2,2,1059,2,2}, + {1327,572,282,1022,907,1276,409,643,1050,633,187,187,187,2,228,45,2,2,2,2,2,2,320,2,2,2,2,2,2,2,2,2}, + {1395,529,461,402,194,392,122,781,111,162,780,593,593,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1062,212,784,63,252,873,1302,1108,1380,84,1375,1375,1375,2,2,2,375,374,2,980,2,2,2,980,980,980,2,2,2,2,2,2}, + {1384,549,430,781,946,879,901,924,741,114,14,451,36,2,2,2,2,287,287,287,803,803,803,803,2,2,2,803,803,803,803,803}, + {1413,627,1329,1092,526,197,31,417,1149,981,964,1003,685,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,717,717,2,2}, + {1084,1174,1601,949,910,960,500,461,1290,23,1042,636,212,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1091,793,1353,208,506,599,846,503,1011,247,289,61,1050,61,61,61,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1533,978,284,156,914,162,685,1184,252,1375,189,256,640,2,640,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1128,398,791,1170,76,661,408,259,756,495,79,553,10,10,1532,1532,1532,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1040,704,618,854,374,1470,274,383,941,519,351,351,351,351,351,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1427,988,498,1529,99,678,1323,149,33,426,543,543,335,1507,772,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1102,349,490,266,144,220,599,437,743,764,647,1128,605,265,324,324,324,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1118,724,1322,405,199,614,1087,885,1313,317,769,660,660,1158,535,2,2,2,373,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1120,772,743,488,346,126,784,584,943,153,311,133,133,969,605,605,2,2,2,2,2,2,2,605,2,2,2,2,2,2,2,2}, + {1441,791,233,141,141,316,89,296,462,1263,758,482,599,599,578,341,2,2,2,2,2,2,2,2,2,2,2,525,525,525,2,2}, + {1413,406,700,547,1166,250,518,543,104,331,205,205,691,691,2,2,118,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1485,400,1497,168,82,680,1103,554,249,702,493,101,296,236,2,236,236,944,944,2,2,394,2,2,2,2,2,2,2,2,2,2}, + {1139,809,117,522,955,1096,1120,1470,116,184,1565,1565,557,557,2,2,2,2,2,829,1326,2,2,2,2,2,2,2,2,2,2,2}, + {1142,984,1044,590,340,241,662,357,366,1305,2,125,631,474,2,2,2,980,2,2,2,2,2,2,2,2,2,2,2,2,2,1273}, + {1487,1010,320,966,785,847,954,1060,138,856,966,966,966,703,2,703,703,2,2,2,2,2,2,2,2,2,2,2,2,1279,2,1279}, + {1495,1178,874,415,1100,368,1057,1228,562,215,31,31,680,680,680,1208,2,2,2,2,2,2,2,2,1208,2,2,2,2,1208,1208,2}, + {1617,289,1033,169,355,260,30,45,721,906,88,44,44,418,417,218,2,2,846,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1623,499,308,1058,1184,1230,63,1515,433,110,763,763,422,954,954,954,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1531,621,210,755,482,82,1308,317,427,168,2,232,116,190,701,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,701}, + {1532,575,1245,360,249,630,133,1406,920,1539,63,63,76,82,82,2,2,2,770,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1102,785,118,93,1491,988,275,53,1328,26,2,2,240,647,240,761,761,761,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1478,722,113,1534,1751,115,1728,1234,777,282,508,508,1184,63,1184,855,855,2,2,2,738,738,578,578,2,2,2,2,2,2,2,2}, + {1482,961,1093,556,1746,628,427,689,510,751,684,37,37,1229,1256,882,1507,1507,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1228,425,1030,699,407,171,568,925,1104,97,2,2,1286,1286,1286,502,2,1219,1219,1219,1290,2,1219,1219,1219,1219,2,2,2,59,2,2}, + {1547,657,777,695,1254,224,933,367,212,385,2,2,2,1422,749,245,885,710,2,2,710,710,710,45,710,710,710,710,2,336,710,2}, + {1559,462,850,289,1570,71,512,858,810,835,2,2,2,2,1028,1205,1205,546,546,546,1205,1205,1205,1205,1205,2,1205,1205,1205,1205,1205,1205}, + {1192,888,701,164,131,613,282,237,525,366,2,2,2,2,1737,845,845,750,2,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,2,1261,1261}, + {1128,393,1522,96,160,581,540,120,441,176,2,2,2,2,2,2,1427,551,1102,1102,328,328,592,592,592,592,592,592,592,592,592,592}, + {1567,1265,372,1633,613,484,243,1523,21,275,2,2,2,431,431,431,431,2,2,978,489,889,889,889,889,889,889,889,2,2,2,2}, + {1522,1422,1017,124,499,451,731,1112,1355,1355,2,2,2,854,854,336,854,336,1297,2,2,2,193,193,193,193,193,2,2,2,2,2}, + {1605,1499,454,1072,686,732,309,295,940,551,2,2,880,264,264,973,2,2,72,314,2,2,2,890,890,2,2,2,2,2,2,2}, + {1598,397,1471,1471,1162,866,236,948,1557,737,2,2,153,737,1408,765,765,608,2,2,2,171,608,608,608,608,2,608,608,2,2,2}, + {1598,434,107,270,148,1317,835,123,642,1236,2,2,67,633,771,878,771,878,878,2,2,2,771,2,2,2,2,2,2,2,2,2}, + {1628,1502,1042,822,80,403,1335,684,464,426,671,671,336,336,336,2,425,896,2,2,2,2,1337,1337,1337,1337,1337,1337,2,2,2,2}, + {1607,1503,1072,471,221,277,854,1236,263,752,2,694,1657,934,553,2,2,2,498,498,2,802,2,46,2,2,2,2,2,2,2,2}, + {1756,1359,698,1584,446,724,729,419,660,1305,2,244,244,244,540,540,540,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1263,835,1533,789,1259,174,1497,557,644,203,2,289,604,434,434,434,2,844,844,2,2,2,1111,1111,1111,2,2,2,2,2,2,2}, + {1797,904,172,659,349,177,692,448,1141,990,640,99,1073,806,640,640,2,640,640,911,911,911,640,640,640,640,2,2,2,2,2,2}, + {1276,442,1008,1352,243,162,711,301,552,1002,668,668,384,71,384,384,2,2,2,2,2,727,727,727,777,777,777,777,777,777,2,777}, + {1600,1130,171,1113,813,722,117,990,37,24,969,94,825,1398,1398,1398,1398,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1682,449,1067,393,136,854,36,492,637,1053,247,1111,1111,1111,2,247,247,247,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1601,697,532,408,697,1140,1568,47,1499,780,1171,318,318,318,2,2,2,2,318,318,2,2,2,2,2,2,2,2,2,2,2,2}, + {1283,1078,791,873,655,412,389,835,292,958,1245,678,1611,1519,2,2,185,2,2,2,2,2,2,1245,1245,2,2,2,2,2,2,1245}, + {1822,589,236,205,797,39,241,1048,181,386,102,102,102,111,1361,1361,1361,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1342,705,302,595,1200,52,83,647,519,139,103,103,103,513,2,513,2,2,2,2,2,513,2,2,2,2,2,2,2,2,2,2}, + {1636,974,279,419,893,1608,1491,156,1486,115,730,730,863,509,924,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1732,1771,584,533,297,1056,669,293,146,311,1176,311,590,590,277,2,2,2,2,2,2,2,2,2,539,539,2,2,2,2,2,2}, + {1360,383,1470,502,1010,153,1588,619,1246,396,1107,1107,112,423,423,2,2,2,2,2,202,2,2,2,2,2,2,2,2,2,2,2}, + {1747,611,1788,1446,152,1335,710,1040,639,1279,788,788,265,1441,107,2,2,2,2,1441,1441,1441,1441,938,938,938,938,2,2,867,867,1441}, + {1682,867,333,102,628,891,654,506,995,684,961,563,1313,1313,1313,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1875,1576,924,677,461,134,1525,1619,44,701,299,743,728,791,791,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,791,791}, + {1744,1011,935,492,158,1645,795,1056,74,679,367,675,675,1229,1229,1229,2,2,2,2,2,2,2,2,2,2,2,2,2,1229,2,2}, + {1763,1018,1859,432,717,723,874,1294,1050,1800,1237,619,1074,2,10,1237,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1376,652,461,225,361,936,1073,1279,149,619,983,511,1994,2,2,1076,1076,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1780,1739,1357,1684,1586,736,208,966,1691,339,339,128,128,2,2,128,128,128,2,2,128,2,2,2,2,1929,2,2,338,2,2,338}, + {1289,907,228,665,1695,1735,489,214,762,1777,321,1674,932,2,2,2,2,1358,709,2,1959,1959,372,2,2,372,372,2,2,372,372,372}, + {1802,1645,453,1079,604,618,334,855,541,167,37,88,849,2,2,518,518,2,2,530,2,2,2,2,2,2,2,119,119,2,2,2}, + {1322,512,560,432,365,87,1835,1137,515,1271,1739,309,309,1229,1229,1229,2,2,2,2,2,2,2,2,416,416,416,416,2,2,2,2}, + {1444,394,1613,796,645,1406,186,158,402,1364,314,588,606,2,577,117,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1325,1300,1353,1575,33,730,46,1476,84,84,189,457,352,2,1479,2,2,2,2,2,2,2,2,2,2,2,2,1565,2,2,2,2}, + {1343,365,790,1047,983,1015,918,1469,1416,126,1238,1238,1238,1238,151,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1861,1487,419,97,799,1791,458,1029,370,627,57,414,414,1540,247,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1480,1131,1089,1688,340,962,505,1816,139,44,1350,403,1385,1996,173,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1328,601,601,617,554,467,391,1545,162,1361,807,1565,1565,243,1344,2,725,510,510,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1892,441,977,228,1252,604,735,136,889,878,1319,1319,2127,2127,1963,367,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1898,787,769,1166,799,479,1066,390,821,1061,201,201,1339,703,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1850,1476,792,840,2037,229,1578,526,431,1485,1450,1001,1001,1001,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1948,1530,576,582,1069,119,2131,41,1178,1677,1677,1677,325,346,2,2,2,2,2,2,1401,2,33,2,2,2,2,2,2,71,71,71}, + {1540,791,518,419,1130,1068,299,1386,1378,134,859,859,71,162,2,71,71,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1889,1210,1246,1326,668,1199,77,565,1277,1607,874,1433,1433,77,2,681,2,2,2,2,2,2,2,679,2,2,2,2,2,2,2,2}, + {1520,1107,1082,687,484,1732,676,1595,467,653,1091,428,2113,332,332,332,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1534,854,2007,1207,947,1773,1571,1505,909,1471,1655,1655,2334,1327,409,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2145,1069,662,709,737,1141,1737,827,1384,1628,107,107,1032,277,277,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1600,1823,1698,1268,623,583,1932,1674,522,529,1862,1281,246,989,246,2,246,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1570,1504,1414,1143,1999,1932,1015,1015,556,514,626,79,2,79,1795,1461,1461,2,2,2,2,2,2,2,1461,1461,1461,1461,1461,2,2,2}, + {1976,1433,820,504,421,1007,388,1083,635,82,1524,750,2,2,870,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2008,1773,416,1954,1314,742,1694,505,202,1747,785,375,2,2,2,477,1538,477,2,2,2,2,2,1309,1309,1309,1309,2,2,2,1309,2}, + {1480,807,1596,520,1139,213,1581,460,923,617,1305,939,2,2,2,2,53,53,1589,284,2,2,1589,1589,1589,1589,1589,1589,1589,1589,1589,1589}, + {1628,846,1504,138,464,401,501,506,967,1027,1540,1035,2,1921,1539,1539,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2304,1948,316,1063,237,607,1143,2575,1388,1022,127,251,2,438,1570,1570,1570,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1600,1338,196,1510,1371,1138,957,169,545,1176,1131,2460,1708,541,541,2,363,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1736,2186,725,1844,1638,825,592,648,193,1241,462,462,45,264,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} +}; diff --git a/Cuba/src/divonne/KorobovCoeff.c-9689 b/Cuba/src/divonne/KorobovCoeff.c-9689 new file mode 100644 index 0000000..e8ace85 --- /dev/null +++ b/Cuba/src/divonne/KorobovCoeff.c-9689 @@ -0,0 +1,881 @@ +#define KOROBOV_MINDIM 2 +#define KOROBOV_MAXDIM 33 +#define MAXPRIME 9689 + +#define Hash(x) ((19945 - x)*(-47 + x))/121634 + +static int prime[] = { + FIRST,47,53,59,67,71,79,83,89,97,103,109,113,127,131,137,139,149,151, + 157,163,173,179,181,191,193,199,211,223,227,229,233,239,241,251,257,263, + 269,277,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383, + 389,397,401,409,419,421,431,433,439,443,449,457,461,467,479,487,491,499, + 503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617, + 619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739, + 743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859, + 863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991, + 997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087, + 1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187, + 1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289, + 1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409, + 1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489, + 1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597, + 1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697, + 1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801, + 1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913, + 1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027, + 2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131, + 2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251, + 2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351, + 2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447, + 2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591, + 2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689, + 2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789, + 2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897, + 2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999,3001,3011,3019, + 3023,3037,3041,3049,3061,3067,3079,3083,3089,3109,3119,3121,3137,3163, + 3167,3169,3181,3187,3191,3203,3209,3217,3221,3229,3251,3253,3257,3259, + 3271,3299,3301,3307,3313,3319,3323,3329,3331,3343,3347,3359,3361,3371, + 3373,3389,3391,3407,3413,3433,3449,3457,3461,3463,3467,3469,3491,3499, + 3511,3517,3527,3529,3533,3539,3547,3557,3571,3581,3583,3593,3607,3613, + 3623,3631,3643,3659,3671,3673,3677,3691,3701,3709,3719,3733,3739,3761, + 3767,3769,3779,3793,3797,3803,3821,3833,3847,3851,3853,3863,3877,3889, + 3907,3911,3917,3929,3943,3947,3967,3989,4001,4003,4007,4013,4019,4027, + 4049,4051,4057,4073,4079,4091,4099,4111,4127,4133,4139,4153,4159,4177, + 4201,4211,4217,4219,4229,4231,4243,4259,4271,4283,4289,4297,4327,4337, + 4339,4349,4357,4363,4373,4391,4397,4409,4421,4423,4441,4451,4463,4481, + 4483,4493,4507,4517,4523,4547,4549,4561,4567,4583,4597,4603,4621,4637, + 4639,4651,4663,4673,4691,4703,4721,4723,4733,4751,4759,4783,4787,4789, + 4801,4813,4831,4861,4871,4877,4889,4903,4909,4919,4931,4933,4943,4957, + 4969,4987,4993,5003,5021,5023,5039,5051,5059,5077,5087,5101,5119,5147, + 5153,5167,5171,5179,5189,5209,5227,5231,5237,5261,5273,5281,5297,5309, + 5323,5333,5347,5351,5381,5387,5399,5413,5431,5437,5449,5471,5479,5501, + 5507,5519,5531,5557,5563,5573,5591,5623,5639,5641,5647,5657,5669,5683, + 5701,5711,5737,5743,5749,5779,5783,5801,5813,5827,5843,5857,5869,5881, + 5903,5923,5927,5953,5981,5987,6007,6011,6029,6037,6053,6067,6089,6101, + 6113,6131,6151,6163,6173,6197,6211,6229,6247,6257,6277,6287,6311,6323, + 6343,6359,6373,6389,6421,6427,6449,6469,6481,6491,6521,6529,6547,6563, + 6581,6599,6619,6637,6653,6673,6691,6709,6733,6737,6763,6781,6803,6823, + 6841,6863,6883,6899,6917,6947,6961,6983,7001,7019,7043,7057,7079,7103, + 7127,7151,7159,7187,7211,7229,7253,7283,7297,7321,7349,7369,7393,7417, + 7433,7459,7487,7507,7537,7561,7583,7607,7639,7669,7687,7717,7741,7759, + 7793,7823,7853,7883,7907,7937,7963,7993,8039,8059,8093,8123,8161,8191, + 8221,8263,8297,8329,8369,8419,8447,8501,8527,8563,8609,8663,8699,8747, + 8803,8849,8893,8963,9029,9091,9157,9239,9319,9413,9533,MarkLast(9689) +}; + +static short coeff[][32] = { + {13,11,10,3,9,2,2,2,2,9,2,2,7,2,2,2,2,2,2,6,2,2,2,13,11,10,3,9,2,2,2,2}, + {23,17,12,11,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,12,14,14,14}, + {18,14,5,14,2,2,19,19,25,25,18,18,18,2,2,2,2,2,2,2,2,2,2,2,25,6,2,2,2,18,14,5}, + {18,13,23,5,2,12,6,12,12,12,10,10,16,2,16,16,2,2,2,2,2,2,2,10,2,2,2,2,10,2,2,2}, + {21,22,7,21,2,20,20,2,2,2,2,22,2,2,2,2,2,2,2,6,6,21,2,2,2,2,2,2,2,2,6,6}, + {29,19,27,32,6,8,2,2,2,2,2,8,8,2,2,2,2,9,9,9,9,2,2,2,2,2,2,2,9,9,2,2}, + {30,19,24,16,22,8,2,2,22,5,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {34,28,13,28,27,27,2,4,2,2,2,16,16,4,20,20,36,20,36,5,5,5,36,36,5,5,5,7,5,7,7,2}, + {35,19,33,8,21,30,8,2,4,2,4,4,2,2,2,2,2,2,2,2,2,17,2,2,11,25,11,17,17,17,17,17}, + {37,21,35,29,27,19,19,2,2,2,5,15,2,2,15,15,19,19,19,19,19,2,2,2,2,2,19,2,2,2,2,2}, + {45,44,13,25,17,47,30,2,30,2,2,2,2,2,2,2,2,2,19,19,19,17,17,2,2,2,2,2,2,2,2,2}, + {35,22,37,9,35,12,35,8,2,2,50,50,2,2,32,32,32,31,13,8,8,8,2,22,50,9,9,9,22,22,22,10}, + {29,24,43,36,49,2,2,8,4,25,49,25,2,2,8,10,10,10,5,5,5,40,10,33,40,40,2,27,10,25,25,25}, + {50,18,32,39,21,2,2,2,4,4,36,36,14,14,14,14,2,2,2,17,17,17,16,16,2,14,14,14,14,2,2,2}, + {31,28,45,20,18,43,43,13,28,2,2,2,31,31,31,31,31,2,2,2,43,43,2,2,2,2,2,2,2,2,30,2}, + {39,15,41,7,24,2,2,30,40,2,2,25,25,25,25,2,2,2,2,2,2,6,6,2,25,2,5,2,2,25,2,2}, + {44,20,29,39,7,21,21,21,2,2,45,2,2,2,49,49,49,49,49,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {56,20,22,13,18,35,35,6,2,4,2,4,2,2,2,23,16,16,4,23,2,34,52,2,34,2,4,2,2,2,23,16}, + {46,32,17,18,29,27,31,31,31,2,2,4,15,2,2,2,2,2,2,2,2,2,2,2,2,2,23,32,32,32,15,15}, + {62,42,43,17,23,13,13,2,2,13,2,2,2,2,2,2,2,10,2,2,2,2,9,10,2,2,2,19,9,9,9,9}, + {64,34,16,28,16,51,47,2,2,2,6,18,39,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,12,2}, + {74,26,44,25,50,24,54,39,58,42,2,42,42,2,2,2,2,2,2,2,2,33,33,2,2,39,11,2,2,58,39,58}, + {70,22,50,22,16,9,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {74,21,17,25,35,33,10,2,10,20,20,57,57,57,2,2,57,2,2,2,2,2,2,2,13,2,2,2,2,2,2,2}, + {81,18,10,11,47,38,71,37,2,37,2,2,2,2,2,26,26,26,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {55,30,85,42,16,36,45,67,2,2,68,2,2,2,2,2,2,2,68,10,2,2,2,2,2,2,2,2,2,2,2,2}, + {64,17,24,26,49,12,10,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,59,2,2}, + {68,57,23,38,61,38,13,13,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,68,15,2,44,44,44,2,2,2}, + {94,28,58,29,13,5,15,8,66,2,2,2,39,39,15,66,2,2,6,6,2,2,66,66,66,66,2,2,2,2,2,66}, + {94,85,9,41,41,37,29,29,17,2,2,2,7,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,8,8}, + {89,32,75,77,77,13,2,30,30,2,2,2,2,2,2,2,2,2,2,67,67,2,2,2,2,2,2,2,2,8,19,32}, + {70,45,58,63,67,10,72,72,70,6,2,36,2,70,70,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {101,33,76,13,45,63,2,2,6,19,2,2,32,32,32,32,32,65,2,63,63,11,11,11,19,19,19,19,9,63,63,63}, + {70,89,44,37,19,45,2,2,2,8,10,8,54,54,80,80,80,80,80,2,116,2,116,2,2,80,40,51,100,100,8,2}, + {71,54,83,51,42,98,2,2,8,8,14,30,93,22,15,15,30,30,30,44,44,44,2,2,22,22,22,117,44,11,11,11}, + {109,37,51,113,17,10,2,2,17,17,55,2,55,55,55,55,55,55,2,2,2,57,48,48,55,55,2,2,55,2,2,55}, + {75,38,68,89,11,52,2,2,81,39,2,38,2,2,2,2,2,2,2,2,2,2,2,19,2,2,2,2,2,2,2,2}, + {81,84,35,34,20,93,2,12,12,12,2,96,2,96,96,2,96,2,2,2,2,2,2,2,2,2,2,2,2,56,56,56}, + {104,32,56,46,77,11,35,35,24,56,19,2,2,2,78,2,2,75,2,2,2,2,78,2,2,2,2,2,2,2,2,2}, + {81,103,25,35,28,15,20,20,20,2,2,2,2,20,20,20,107,107,2,2,2,2,2,2,2,2,2,2,2,2,13,13}, + {119,75,42,29,74,23,54,36,39,2,2,4,4,19,19,2,2,2,2,2,2,2,2,54,2,2,2,2,2,2,2,54}, + {115,73,22,102,75,138,16,73,50,16,2,50,2,2,2,133,2,2,2,2,2,2,2,2,2,2,2,2,2,33,33,33}, + {119,48,66,51,14,22,20,20,2,2,2,2,2,60,2,2,2,2,2,2,2,2,60,2,2,2,2,2,2,60,2,65}, + {121,94,80,29,51,69,42,36,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,2,2}, + {129,123,41,79,43,34,24,11,2,2,4,2,2,2,2,75,16,16,16,75,75,75,16,16,16,25,2,99,2,2,75,16}, + {128,33,35,68,22,8,62,94,2,2,2,62,62,2,98,2,2,4,98,2,2,32,81,32,32,32,98,98,98,98,98,98}, + {101,109,154,15,57,6,27,36,2,2,37,37,2,2,2,2,2,2,2,107,2,2,2,107,107,2,2,2,2,2,2,2}, + {106,40,24,38,61,118,106,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {149,111,58,79,127,13,41,33,27,16,30,2,61,2,72,2,2,2,2,2,2,2,2,2,2,2,2,75,75,2,2,2}, + {105,92,43,156,25,53,57,115,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {99,40,62,67,66,29,99,99,99,78,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,79}, + {109,42,96,95,66,41,103,84,13,103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {111,72,16,89,25,86,117,29,14,14,2,2,2,2,2,60,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {106,72,49,94,140,44,97,157,75,2,2,4,123,123,2,2,123,123,123,123,2,2,2,2,2,2,2,2,2,2,2,2}, + {115,67,74,32,43,50,21,36,135,36,85,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {151,71,157,42,41,37,80,27,18,2,2,2,2,2,2,2,2,2,2,2,2,2,115,128,128,128,128,128,32,2,128,80}, + {119,91,38,30,92,44,32,76,22,2,34,2,2,2,2,2,2,2,2,2,2,2,2,2,2,129,2,2,129,2,2,2}, + {121,126,31,52,120,37,57,10,171,2,2,2,2,35,35,35,2,2,97,97,97,97,97,97,97,35,35,35,97,97,97,2}, + {155,86,49,104,87,94,64,45,61,91,91,91,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {164,121,44,166,47,33,7,15,13,2,2,122,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {128,120,133,17,71,52,25,107,42,21,21,2,2,2,2,4,4,96,2,9,9,2,9,94,94,94,94,94,94,94,94,96}, + {179,82,157,76,61,35,13,90,197,2,69,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,39,39}, + {136,136,148,63,66,10,169,95,95,163,30,28,28,2,41,130,2,2,2,21,2,2,2,2,2,2,2,2,2,2,2,36}, + {131,40,112,63,55,30,53,79,79,79,2,79,2,2,2,2,2,79,2,2,2,2,14,36,2,21,21,21,21,2,2,91}, + {165,81,92,48,9,110,12,40,40,34,2,2,2,107,107,107,2,107,2,2,2,2,2,2,2,2,2,2,2,15,41,41}, + {169,66,170,97,35,56,55,86,32,32,2,2,2,2,14,2,40,2,37,2,2,37,40,40,40,2,2,2,37,37,37,37}, + {135,63,126,156,70,18,49,143,6,117,2,109,109,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {193,59,51,68,68,15,170,170,170,143,143,12,2,2,2,63,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {145,101,56,65,23,76,110,2,4,4,4,146,146,146,2,146,2,2,2,2,2,2,2,2,2,2,2,2,2,2,146,146}, + {144,129,26,98,36,46,47,52,52,52,82,2,2,2,2,2,17,2,2,2,2,2,2,2,2,2,2,2,2,91,2,2}, + {145,78,166,171,56,20,63,2,2,33,33,33,33,2,78,47,47,47,47,47,2,2,2,2,2,78,78,78,2,2,2,2}, + {191,69,176,54,47,75,167,2,2,2,188,188,188,30,30,2,67,67,117,2,117,117,117,2,2,36,2,2,2,2,2,2}, + {186,96,29,122,47,96,170,157,157,157,157,108,159,2,195,195,26,26,26,26,26,2,2,2,2,132,132,132,2,2,2,2}, + {151,118,226,91,54,49,33,2,2,2,2,4,4,4,143,143,2,2,143,25,25,25,2,143,143,143,143,143,143,143,143,143}, + {144,91,237,82,81,75,138,163,163,163,117,117,44,2,44,136,136,136,136,2,2,2,2,2,122,122,122,122,2,2,2,136}, + {189,78,178,64,118,27,189,2,2,67,67,110,110,110,110,2,28,28,2,2,2,2,2,2,2,102,2,2,2,2,2,2}, + {165,202,83,76,125,65,42,2,44,44,23,2,23,23,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {209,204,92,75,85,146,104,2,7,18,8,2,2,2,204,95,95,95,2,2,2,95,95,95,95,95,95,95,2,2,2,95}, + {169,68,89,16,193,82,33,262,262,175,148,148,148,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {171,162,78,43,61,17,112,10,171,182,118,33,2,2,2,2,118,2,2,2,2,2,2,151,2,2,2,2,2,2,2,2}, + {211,121,119,55,90,211,96,89,225,25,178,36,36,36,2,2,108,2,2,2,2,2,2,2,2,2,2,2,2,184,2,2}, + {154,101,83,17,16,210,41,79,70,158,2,27,27,2,2,2,2,2,2,2,2,2,2,2,2,153,2,2,2,2,2,2}, + {169,179,130,79,148,180,136,17,47,119,2,119,119,169,169,2,169,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {241,171,148,31,172,34,66,60,156,140,2,2,2,75,75,2,2,2,2,2,2,2,190,190,2,2,2,30,2,2,2,2}, + {229,189,183,106,118,138,82,149,265,39,2,2,265,2,2,2,2,2,2,130,2,2,2,71,71,2,2,2,71,2,2,71}, + {165,157,127,21,64,15,80,130,130,130,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,74,2}, + {221,130,203,84,83,83,29,121,54,54,2,141,2,2,94,94,94,4,4,4,2,4,2,2,2,54,54,108,16,16,94,52}, + {230,166,20,160,121,102,153,94,16,67,2,2,2,2,2,2,97,97,97,2,2,97,97,2,97,97,97,97,97,97,97,97}, + {181,79,137,119,139,24,77,17,50,25,25,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {239,242,192,40,41,62,124,193,193,31,193,2,2,2,2,2,2,2,2,2,2,2,2,148,2,2,2,2,2,2,2,2}, + {239,178,73,122,239,51,95,48,78,88,78,2,2,2,2,2,2,2,2,2,2,2,144,144,2,2,144,144,144,2,144,144}, + {234,117,198,34,143,21,74,6,252,252,98,2,2,2,2,197,38,2,2,2,2,2,47,2,47,47,47,47,2,2,2,47}, + {179,110,38,28,58,39,16,29,42,125,202,8,8,129,4,4,2,2,2,67,67,2,2,2,2,2,2,8,67,67,2,2}, + {246,53,189,50,18,59,179,179,7,137,137,2,2,103,103,103,103,40,40,40,2,2,2,2,73,73,73,2,103,103,103,103}, + {239,133,87,92,193,12,206,238,238,238,31,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {191,244,60,193,18,32,193,104,74,125,125,66,2,2,2,2,2,2,2,2,2,2,125,125,2,125,125,125,2,2,2,2}, + {177,74,90,91,172,219,63,84,32,2,2,196,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {253,143,54,39,122,32,75,107,234,2,6,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {282,89,71,88,30,23,81,105,105,2,2,105,105,131,107,2,2,2,2,2,195,195,2,2,29,29,21,21,128,195,195,195}, + {259,115,171,40,156,71,67,24,24,2,2,2,24,4,4,4,2,234,2,2,2,2,2,2,2,2,2,74,74,2,2,2}, + {264,237,49,203,247,108,75,75,75,2,2,32,16,8,16,16,16,164,14,164,2,2,32,16,8,16,16,32,42,42,42,2}, + {264,106,89,51,29,226,23,286,286,151,151,151,151,151,2,2,2,2,2,2,31,31,31,2,2,2,2,2,2,2,2,284}, + {194,215,82,23,213,23,108,127,74,2,201,32,178,2,285,2,2,2,2,285,2,2,2,2,2,2,2,2,2,2,2,2}, + {196,267,251,111,231,14,30,52,95,2,154,53,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {266,67,22,101,102,157,53,95,130,2,42,76,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {281,205,107,178,236,122,122,316,76,215,215,2,60,2,2,2,2,2,2,227,2,2,2,2,2,2,2,2,27,2,2,2}, + {271,89,65,195,132,162,102,45,56,174,104,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {200,169,170,121,155,68,131,167,78,113,113,2,2,64,2,2,2,2,2,2,2,2,2,2,2,2,2,173,2,2,2,2}, + {288,143,265,264,71,19,231,169,27,27,27,2,2,2,2,2,2,2,2,2,2,2,2,2,51,2,2,2,2,2,2,2}, + {311,141,96,173,90,119,134,151,35,252,39,2,39,39,2,2,2,2,2,2,2,2,2,113,113,2,2,2,2,2,2,113}, + {311,230,52,138,225,346,162,216,216,91,160,182,91,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {275,167,128,244,184,184,44,210,237,139,139,139,139,2,2,2,2,2,2,2,2,2,2,73,2,2,2,2,2,2,2,2}, + {176,156,83,135,46,197,108,63,33,33,33,2,133,2,213,213,213,213,133,133,2,133,2,2,133,133,2,2,2,2,2,2}, + {283,125,141,192,89,181,106,208,124,124,2,112,112,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {289,191,171,152,191,173,54,13,21,56,56,56,2,2,2,2,2,2,2,2,2,220,2,2,2,2,2,2,2,2,2,2}, + {334,305,132,132,99,126,54,116,164,105,2,105,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,287,2,2,2,2}, + {240,166,44,193,153,333,15,99,246,99,2,2,99,99,2,2,2,2,195,195,195,2,195,195,2,263,263,2,195,195,195,263}, + {246,194,265,79,225,65,24,62,46,181,2,2,2,314,2,2,2,2,2,2,2,215,2,2,2,2,2,2,2,2,2,2}, + {229,334,285,302,21,26,24,97,64,40,2,2,2,231,231,231,231,65,2,148,2,2,2,2,2,2,2,2,2,2,2,2}, + {251,295,55,249,135,173,164,78,261,261,2,2,2,2,114,2,2,2,2,2,256,142,142,2,2,2,2,2,2,2,2,185}, + {232,153,55,60,181,79,107,70,29,35,2,2,58,58,2,58,2,2,2,2,61,61,2,61,61,2,2,61,61,90,2,90}, + {246,116,45,146,109,90,32,103,133,119,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {246,113,146,232,162,262,204,47,45,331,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {360,150,84,275,13,26,368,49,244,244,63,63,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {239,295,174,87,30,87,85,36,103,36,2,278,2,2,2,2,2,2,163,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {356,300,75,310,123,301,200,107,183,37,218,37,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {358,207,168,150,150,21,156,50,195,275,275,275,2,2,2,2,2,251,2,2,2,251,251,251,251,251,251,251,251,251,2,2}, + {322,194,234,62,236,147,239,400,255,255,80,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {326,276,134,100,143,113,115,221,13,339,194,194,194,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {337,132,27,45,14,81,110,84,238,224,211,2,29,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {192,213,113,174,403,117,342,342,311,35,35,2,2,2,2,2,2,2,2,101,2,2,2,2,2,2,2,2,2,101,101,101}, + {264,273,316,53,40,330,51,285,115,219,147,2,2,2,335,2,2,2,2,2,173,2,173,2,2,173,173,173,173,173,173,83}, + {254,293,407,118,54,296,160,231,4,4,93,2,2,2,2,2,60,61,2,2,120,127,127,127,88,88,88,88,88,88,88,88}, + {341,78,336,263,281,164,99,334,296,114,109,2,163,163,163,163,2,2,2,2,2,2,2,125,125,292,292,292,292,125,125,125}, + {355,87,212,100,89,210,133,344,120,45,45,138,138,138,138,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {274,141,46,219,158,284,38,79,73,185,35,6,81,2,2,2,2,53,2,2,81,81,2,81,2,2,2,53,53,53,53,53}, + {349,303,439,19,95,240,174,191,2,162,162,2,2,2,76,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {360,91,201,205,67,181,59,77,2,44,103,103,103,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,125}, + {283,154,261,91,77,147,227,105,116,311,256,256,2,116,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,32,2}, + {287,288,111,89,249,370,55,16,248,67,67,115,2,2,134,134,2,2,2,2,2,2,2,2,2,2,2,2,2,22,22,22}, + {284,270,282,37,29,181,160,49,285,285,374,250,2,374,374,2,2,2,179,179,35,2,179,179,2,179,179,2,2,285,285,285}, + {359,305,52,36,243,231,7,92,2,68,68,307,62,45,2,2,112,311,311,311,2,2,2,2,2,2,2,2,2,2,2,2}, + {288,119,218,137,364,38,27,380,2,2,211,23,33,2,2,2,2,2,225,225,225,2,2,225,225,225,2,2,2,2,2,2}, + {277,155,232,309,370,365,348,75,214,214,214,4,4,2,2,2,210,210,210,210,210,210,210,2,2,2,2,2,2,2,2,2}, + {292,204,91,41,124,190,107,322,125,125,125,125,125,25,25,62,2,2,146,146,2,2,62,146,2,146,114,146,114,2,2,2}, + {282,195,192,409,68,99,253,106,2,2,2,231,55,55,2,323,323,55,55,285,285,285,285,2,2,2,2,2,2,285,285,323}, + {299,122,174,403,113,77,63,275,2,2,2,138,276,227,38,227,2,237,2,2,2,2,2,2,2,2,2,2,352,352,352,2}, + {282,222,268,86,21,109,353,408,2,2,2,2,135,12,12,216,241,241,241,241,241,241,241,241,241,303,303,303,135,135,135,2}, + {374,94,89,257,137,246,186,196,2,2,2,2,2,454,122,122,122,122,2,2,2,28,28,94,94,94,94,94,122,122,122,122}, + {288,92,62,428,122,153,481,66,2,2,2,250,250,177,177,177,177,279,279,279,279,279,279,279,2,2,279,177,177,177,177,177}, + {288,370,141,284,207,192,450,67,2,2,2,183,217,217,217,183,183,167,202,202,202,202,167,167,2,2,2,164,164,80,167,167}, + {286,293,199,39,158,332,242,103,2,2,2,408,266,315,2,2,365,253,315,315,315,315,315,2,2,315,2,2,2,2,2,2}, + {407,83,435,187,40,16,52,65,2,2,244,39,77,119,119,2,2,2,119,342,342,2,2,2,2,2,342,2,2,58,58,119}, + {398,88,78,57,260,203,203,43,131,131,131,204,204,322,204,2,102,2,325,325,325,325,2,2,2,2,2,2,2,2,2,2}, + {390,174,70,155,163,67,225,49,2,34,34,151,151,2,2,111,2,2,111,111,2,2,2,2,2,2,2,2,2,2,2,2}, + {393,129,393,169,23,192,168,47,2,2,312,150,71,2,150,2,2,2,61,2,2,61,2,2,2,2,2,2,2,2,2,2}, + {408,136,71,63,63,159,222,68,181,181,124,227,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {294,169,79,242,160,123,178,290,186,186,56,399,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {415,228,69,68,193,122,21,362,33,22,362,57,2,2,2,2,46,46,196,196,196,2,196,196,196,2,196,2,2,2,2,2}, + {415,130,241,185,312,175,309,199,94,281,47,47,2,2,2,2,206,307,221,2,2,2,2,2,239,239,239,239,239,206,206,206}, + {417,238,147,165,346,19,92,164,266,291,291,43,2,2,2,345,2,2,2,345,345,2,2,2,2,2,345,2,2,2,2,2}, + {456,192,86,182,35,174,342,102,210,210,210,393,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,256,256,158}, + {307,255,92,38,325,61,103,246,176,319,80,89,2,241,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {432,168,63,154,166,46,479,145,144,288,288,288,288,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {341,256,113,85,188,233,161,29,110,167,91,91,253,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {311,360,312,158,73,16,106,209,472,48,24,203,203,2,2,2,2,234,234,234,2,234,234,203,2,2,2,234,234,234,234,234}, + {437,196,161,100,132,246,395,187,35,35,35,2,2,35,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {438,174,338,145,155,276,422,374,4,463,463,99,224,70,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {426,225,211,130,325,283,353,96,282,23,299,2,2,2,63,63,2,276,276,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {430,101,288,38,200,332,325,193,123,123,88,2,2,2,2,2,231,231,139,139,139,139,139,139,139,139,139,139,139,139,139,139}, + {434,143,308,389,365,363,174,63,121,125,260,2,2,260,260,2,2,2,2,2,2,2,2,2,2,258,2,2,2,258,2,2}, + {453,123,201,141,229,223,234,494,102,102,102,2,2,102,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,252}, + {438,168,65,264,304,74,168,88,114,132,187,2,127,127,2,2,2,2,2,81,81,56,2,2,2,307,2,2,2,2,81,81}, + {324,181,141,129,33,171,173,291,227,373,52,301,301,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {448,119,431,111,135,50,242,95,148,49,49,49,68,2,2,2,2,2,2,2,2,49,2,2,2,2,2,2,2,2,2,2}, + {335,114,55,47,33,173,287,345,198,198,136,238,238,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {468,377,243,237,332,512,27,167,22,169,14,14,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {456,162,188,223,408,209,28,164,299,299,258,186,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {445,391,115,226,96,456,239,214,556,158,158,282,2,2,2,2,2,2,2,2,2,2,2,2,2,331,2,2,2,2,2,2}, + {360,397,130,172,407,479,295,13,38,199,199,346,2,2,2,2,2,2,145,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {512,136,129,361,180,61,274,128,422,27,292,165,2,2,2,2,2,2,363,117,117,117,117,2,2,2,2,363,2,2,2,2}, + {478,433,483,302,200,227,273,27,171,171,371,102,2,2,2,2,2,20,2,2,2,2,2,2,2,2,403,403,2,2,2,2}, + {485,158,454,86,212,60,93,40,209,188,188,106,2,231,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {390,448,111,145,47,555,367,317,315,52,429,435,429,429,2,2,2,2,2,2,2,2,229,2,2,229,2,2,2,229,2,2}, + {490,331,187,398,407,373,497,219,423,423,378,378,2,419,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {378,406,112,198,539,550,516,59,240,240,23,316,2,122,2,2,2,2,2,2,2,2,2,2,111,111,2,2,2,95,2,2}, + {474,373,248,330,40,113,105,273,103,407,2,165,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {495,406,306,239,172,323,236,50,37,435,2,310,56,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {498,447,112,241,552,119,227,189,140,140,140,140,140,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {505,132,169,418,342,28,319,301,172,530,317,317,335,2,2,2,2,2,2,376,2,2,2,2,2,2,2,2,2,2,2,2}, + {397,393,191,269,462,151,264,134,307,307,2,163,163,2,2,2,2,2,2,2,2,2,2,2,2,2,159,2,2,2,2,2}, + {485,491,325,149,122,145,228,100,311,64,2,62,137,2,137,2,2,2,2,2,2,2,392,2,2,2,2,2,2,2,2,2}, + {364,462,360,383,182,187,123,69,129,146,2,156,149,2,149,2,2,2,2,2,2,2,303,303,303,2,2,2,2,2,149,266}, + {507,195,130,401,363,171,483,20,86,464,2,89,89,2,26,2,2,2,2,2,425,425,2,2,2,2,2,2,2,2,2,2}, + {380,220,87,122,242,78,207,371,95,305,2,2,2,2,440,440,445,358,358,331,331,358,445,445,445,445,445,445,445,445,445,445}, + {507,221,247,137,182,90,28,207,325,438,2,2,2,2,2,187,232,438,2,2,68,37,37,37,37,37,37,37,37,37,161,2}, + {509,265,101,126,203,86,152,416,352,85,2,2,2,284,391,368,2,2,152,2,2,2,325,2,2,2,2,2,2,2,2,2}, + {572,359,332,480,68,535,59,504,365,21,2,2,246,54,246,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {415,178,178,372,415,400,73,82,348,99,2,23,325,44,2,2,2,2,2,2,2,2,325,2,2,2,2,2,2,2,2,2}, + {430,275,236,361,42,552,368,236,653,74,65,458,288,307,307,2,2,2,2,2,2,2,65,65,2,2,2,2,2,2,2,2}, + {434,139,58,437,130,441,188,15,63,145,145,145,300,2,2,2,2,300,2,2,2,2,2,2,2,2,401,401,401,401,401,401}, + {542,138,266,514,552,202,103,197,574,48,2,96,96,2,2,96,96,217,2,2,2,2,2,2,2,2,2,2,2,2,2,217}, + {546,494,72,272,550,219,213,209,169,404,69,464,86,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {602,466,332,458,99,244,255,183,446,670,2,186,323,2,2,2,2,2,2,2,2,2,2,2,2,2,2,292,165,165,165,165}, + {422,413,561,110,242,62,436,478,18,150,606,88,643,2,249,2,2,2,2,456,2,2,2,2,2,2,2,2,2,2,2,456}, + {522,141,154,253,264,53,120,93,274,52,44,203,556,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {600,249,375,555,421,322,317,84,517,517,268,106,353,2,2,2,2,2,2,2,2,2,268,2,2,2,2,2,2,302,2,2}, + {555,516,310,438,290,559,52,265,248,193,285,441,285,285,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {555,300,232,386,470,300,355,177,57,407,450,279,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {544,177,79,306,256,402,205,496,398,115,115,43,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {534,274,194,220,575,81,206,544,341,85,137,429,429,429,429,344,2,2,2,2,2,315,315,315,315,315,315,72,72,72,2,2}, + {400,136,112,136,273,277,205,578,122,122,230,230,2,2,2,2,2,2,2,2,2,2,2,2,2,2,302,2,2,2,2,2}, + {576,421,115,52,253,373,17,657,43,178,178,58,485,485,485,485,485,485,2,2,2,159,159,159,159,2,619,2,2,2,2,2}, + {576,301,142,329,96,41,302,528,126,112,206,206,2,2,2,2,2,2,206,206,2,206,206,2,191,206,206,191,191,191,191,206}, + {548,538,508,250,539,102,73,285,119,433,480,480,2,2,2,480,480,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {622,526,294,56,498,176,237,351,25,26,474,55,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {446,163,469,481,240,278,51,373,491,13,22,419,2,2,2,2,2,2,2,2,2,176,176,2,2,2,2,2,2,2,2,2}, + {445,223,102,108,120,166,68,214,737,504,96,96,206,377,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,39,39,528}, + {453,121,489,84,434,505,78,575,468,372,468,468,83,468,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {425,355,128,58,194,82,438,117,10,34,34,35,112,107,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {432,479,328,443,253,634,271,429,406,543,406,543,543,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {433,294,192,205,152,70,99,68,392,169,309,390,390,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,199,2,2,2}, + {456,383,487,311,57,579,673,264,582,187,184,43,43,2,2,2,2,501,501,501,2,2,2,2,2,2,2,2,2,2,2,2}, + {437,561,384,619,363,420,614,117,217,247,405,142,142,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {434,372,239,508,478,26,375,255,151,151,650,112,251,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {437,133,516,423,305,90,135,25,266,487,6,286,286,2,2,2,2,2,2,2,2,2,2,2,2,510,510,2,2,2,2,2}, + {463,341,170,401,178,79,305,98,162,166,32,392,335,335,335,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {610,477,478,516,318,184,267,423,190,494,494,2,336,336,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {611,211,491,224,47,54,124,268,271,271,223,2,2,2,2,2,2,2,2,2,2,2,2,359,2,2,2,2,2,2,2,2}, + {590,463,461,162,162,622,167,254,29,377,377,75,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {478,388,612,404,491,561,180,80,262,58,94,2,2,275,2,2,2,2,2,151,2,2,2,2,2,312,312,312,2,2,2,275}, + {629,225,67,623,298,588,354,49,41,185,176,63,63,63,2,2,2,2,2,2,2,2,2,2,2,2,8,435,32,32,435,435}, + {671,275,392,298,612,328,337,215,58,58,124,2,2,490,392,2,2,2,125,457,457,2,2,2,2,2,2,2,2,2,2,457}, + {448,126,129,168,209,340,40,96,509,509,509,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {667,246,160,68,737,203,168,628,46,128,358,2,2,2,121,121,2,2,2,2,2,2,560,121,2,2,2,2,2,2,2,121}, + {635,212,284,356,187,591,275,361,194,317,488,2,2,2,2,2,2,97,6,2,6,247,2,2,2,2,2,2,2,2,2,6}, + {612,395,104,86,264,321,521,325,252,53,178,100,100,100,16,343,343,343,343,343,2,2,2,2,2,2,2,2,2,343,343,343}, + {486,428,287,472,292,141,504,178,585,98,282,2,2,2,2,2,2,2,2,2,2,2,2,284,284,284,78,284,2,2,2,2}, + {612,327,212,565,450,385,201,649,423,491,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {462,579,236,447,60,162,427,258,73,742,742,2,742,742,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {495,440,89,439,65,207,459,407,139,131,624,2,380,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {469,507,276,227,66,237,260,386,27,666,31,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {646,393,273,238,24,13,253,127,368,316,316,316,150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {626,196,111,465,386,431,181,414,614,391,349,318,389,2,389,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {667,257,290,122,109,523,95,26,282,49,374,236,236,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,88,2,2}, + {653,169,261,533,488,282,213,443,337,480,503,174,534,2,2,2,2,2,534,2,2,2,2,534,2,2,2,2,534,2,2,2}, + {670,555,160,90,604,604,50,459,376,545,316,180,526,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {639,253,95,380,108,448,223,254,381,30,6,644,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {642,160,702,90,157,254,278,521,650,277,74,554,122,2,2,2,2,2,2,517,174,174,174,2,2,2,2,2,2,2,2,2}, + {678,254,190,197,637,49,130,25,374,357,357,411,643,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,537,2,2}, + {512,347,65,546,434,87,18,123,672,412,316,6,699,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {657,233,108,38,147,53,136,168,408,477,477,279,268,289,2,2,2,2,2,2,289,2,2,2,2,2,2,2,2,289,289,2}, + {498,431,217,101,78,143,111,113,181,825,458,140,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {660,624,376,472,165,66,158,308,492,779,305,305,2,576,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {521,249,388,155,467,245,134,311,72,312,312,623,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {408,348,216,299,302,668,347,63,172,141,272,168,678,2,2,2,512,2,2,2,2,4,2,2,2,494,64,64,64,128,16,512}, + {669,421,230,70,212,845,237,347,148,76,823,472,2,2,2,132,2,2,2,2,2,2,2,383,132,383,2,2,383,383,383,383}, + {693,530,139,82,780,416,270,278,330,484,484,200,2,2,2,2,137,94,2,2,2,2,2,2,2,2,484,2,2,2,2,2}, + {672,150,164,622,196,75,302,119,42,314,314,132,60,60,60,298,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {705,302,411,705,691,160,809,40,32,867,826,826,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {684,229,138,46,407,399,82,254,267,31,31,45,2,209,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {707,323,409,27,31,157,492,463,886,412,251,251,304,190,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {715,521,636,304,402,459,435,571,611,214,214,43,43,358,2,2,2,2,358,2,2,2,2,2,2,358,358,358,2,2,358,358}, + {768,224,219,425,467,147,151,643,316,263,263,263,263,263,2,2,2,2,2,272,139,2,2,2,2,2,2,2,2,2,272,53}, + {555,543,434,78,850,174,277,194,4,100,471,69,69,424,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {690,206,572,877,600,129,288,52,19,147,222,222,147,147,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {793,279,264,566,252,495,872,492,482,107,294,503,350,350,2,2,2,2,2,2,2,285,285,273,273,273,273,2,2,2,2,2}, + {703,427,225,320,136,47,103,547,239,217,73,68,68,204,204,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {791,275,60,137,352,839,67,476,356,216,216,563,563,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {703,312,472,588,228,512,386,668,477,617,389,389,389,2,296,2,2,2,2,343,343,2,2,343,343,2,2,617,617,617,617,2}, + {709,509,697,145,252,194,304,192,192,623,623,4,423,2,2,2,199,423,2,2,2,222,222,2,2,623,623,623,623,623,2,222}, + {587,453,117,107,672,86,248,568,568,294,294,513,78,2,2,164,82,2,2,2,2,22,2,2,2,2,2,2,2,2,2,2}, + {741,466,378,135,737,131,159,469,59,2,59,59,187,2,204,2,2,2,2,2,2,2,2,2,798,2,2,798,798,798,798,798}, + {539,310,463,103,553,45,609,326,197,2,62,113,272,2,62,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {750,703,182,242,92,335,272,466,594,2,701,569,474,129,140,140,2,507,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {547,210,113,361,584,121,65,307,98,2,2,552,514,514,2,514,207,514,514,514,2,2,2,2,2,2,2,2,2,2,2,2}, + {555,229,328,91,272,815,483,749,468,2,92,92,4,92,2,2,2,258,258,258,2,258,258,2,2,2,2,258,2,2,258,258}, + {580,145,358,434,630,73,604,366,366,2,2,398,398,207,2,207,487,2,2,487,207,2,2,207,207,207,2,2,2,2,207,207}, + {457,520,93,460,275,525,300,184,354,147,147,147,147,179,82,82,82,82,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {872,630,513,218,719,174,197,104,86,281,281,281,541,642,281,94,2,45,94,2,335,335,2,2,2,2,2,2,2,2,2,84}, + {765,421,129,298,867,365,222,476,401,142,90,22,22,88,226,657,2,2,477,2,2,2,2,2,226,226,2,226,2,2,2,226}, + {833,634,228,520,113,329,279,420,581,2,2,385,385,110,450,2,733,2,2,2,561,561,2,561,2,2,2,2,2,2,2,2}, + {587,553,360,539,227,800,312,143,536,2,2,2,64,64,64,2,2,2,179,179,493,2,2,184,184,184,58,2,2,2,493,493}, + {744,466,389,280,229,134,363,177,389,2,2,2,536,273,536,536,536,536,168,45,45,45,45,2,2,2,2,2,2,2,2,2}, + {841,222,158,469,253,91,347,241,766,2,2,2,88,88,88,439,439,439,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {462,653,478,67,269,150,474,711,220,669,669,669,669,669,390,352,325,2,229,545,545,545,545,545,545,545,545,2,545,352,309,352}, + {468,430,849,689,202,427,45,34,105,2,2,2,2,4,4,4,4,4,4,4,2,2,2,4,4,4,4,4,2,2,2,2}, + {610,289,503,744,775,512,605,454,484,2,2,2,444,466,145,631,2,631,631,631,631,631,631,631,631,631,2,2,631,631,631,858}, + {792,169,306,843,246,123,293,229,483,2,2,2,165,163,163,163,163,440,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {563,325,717,766,440,705,290,123,228,2,2,2,32,64,146,2,2,2,116,79,79,2,146,146,79,79,79,2,2,146,146,79}, + {795,185,350,211,82,537,106,680,62,2,2,537,423,423,423,2,2,501,501,2,501,2,501,2,2,2,2,2,2,2,2,2}, + {633,425,295,548,497,163,381,461,89,2,2,831,583,896,38,2,625,2,2,2,276,276,2,2,276,2,2,2,2,2,2,2}, + {767,318,84,97,208,387,423,196,417,2,396,396,396,396,396,128,128,2,2,2,328,328,4,4,4,4,101,2,2,328,82,16}, + {802,533,869,638,67,192,805,223,219,2,2,191,178,178,77,77,2,2,2,2,431,431,2,2,2,431,431,2,2,431,2,2}, + {781,638,410,399,336,465,856,426,28,2,4,4,6,6,2,2,2,449,372,372,449,449,449,2,2,449,449,449,449,449,449,2}, + {807,377,237,443,388,286,158,349,491,32,32,260,260,260,2,2,260,615,615,615,2,2,260,260,260,260,260,615,615,615,615,615}, + {780,359,766,618,41,596,86,636,287,707,707,96,49,373,613,373,2,2,2,2,2,2,2,613,613,613,2,2,2,2,2,2}, + {788,497,334,93,319,169,273,540,904,2,903,569,569,569,272,272,2,2,2,2,571,571,571,571,571,571,571,571,571,571,571,571}, + {622,309,913,550,994,90,257,588,29,526,526,526,496,496,576,2,2,2,2,2,182,182,182,2,2,447,447,447,447,447,447,182}, + {814,652,456,774,624,870,27,739,464,2,108,578,578,561,295,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {818,280,99,873,165,426,341,74,479,342,727,684,684,662,662,2,2,2,2,2,2,662,2,2,2,2,2,2,2,2,2,2}, + {593,411,953,203,89,57,785,354,349,424,424,707,707,707,829,2,2,2,2,2,670,670,670,2,2,424,424,424,2,2,670,424}, + {629,560,621,245,683,633,495,551,472,2,31,74,489,684,555,684,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {901,490,693,410,666,119,703,593,201,61,70,70,774,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,418,418}, + {669,321,391,548,189,157,337,42,796,871,276,622,30,2,2,2,2,2,2,2,580,580,107,2,2,2,2,2,434,434,434,434}, + {610,236,633,300,681,358,72,281,148,466,466,283,275,2,386,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {929,360,102,893,329,136,515,33,170,581,268,35,777,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {859,584,475,745,506,900,40,869,143,612,175,275,209,12,12,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {822,581,76,382,72,347,964,324,137,61,61,28,623,351,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {655,330,324,151,166,431,58,174,142,115,1003,66,724,778,2,2,2,503,503,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {867,820,301,252,61,331,105,309,562,218,365,326,768,672,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {623,330,182,489,212,223,741,490,40,412,801,681,681,801,2,2,71,2,2,2,2,2,2,427,2,2,2,2,2,2,2,2}, + {859,844,510,859,118,190,550,29,159,622,622,382,258,382,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {612,237,272,53,534,682,372,935,494,536,536,599,599,599,2,536,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {843,730,235,233,816,495,598,134,131,604,227,378,378,553,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {667,397,121,526,321,660,848,729,357,137,268,711,521,521,2,2,2,2,2,2,2,2,2,2,2,2,2,194,2,2,2,521}, + {939,783,796,676,259,643,103,289,15,471,80,80,2,239,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,888}, + {670,595,333,257,907,413,548,341,327,350,612,700,700,700,700,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {678,274,695,790,169,701,707,1084,470,123,846,846,217,121,317,2,2,2,83,83,83,83,83,83,83,83,83,2,2,2,2,2}, + {877,181,375,79,199,256,223,295,135,371,395,354,2,307,944,2,813,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {882,417,475,424,311,646,346,207,74,157,590,356,2,2,324,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {708,442,186,698,345,103,687,463,163,416,416,107,2,2,2,375,375,416,6,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {865,675,786,568,112,197,225,348,372,497,215,215,2,2,2,2,159,159,150,224,224,141,2,2,2,2,141,141,141,141,141,141}, + {844,244,672,489,839,263,14,233,422,392,8,392,2,2,2,2,2,2,815,815,815,815,257,257,105,105,2,2,2,815,815,815}, + {693,726,117,167,535,725,224,78,716,100,460,299,2,2,2,2,921,744,2,2,2,2,2,378,2,2,178,178,178,2,178,178}, + {898,559,396,742,51,143,411,221,116,756,756,756,2,2,2,701,701,2,2,2,2,240,225,256,322,322,240,240,240,240,240,322}, + {697,540,358,391,932,309,103,73,35,353,353,503,2,2,353,134,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {982,579,548,413,416,103,71,101,1039,526,684,684,2,2,656,2,2,2,2,2,2,2,2,2,2,2,656,656,656,2,656,656}, + {695,881,335,126,429,476,772,667,974,98,433,49,129,129,2,2,2,2,2,2,2,2,2,2,544,2,544,2,2,2,2,544}, + {859,361,215,569,255,378,543,436,220,34,105,105,816,816,816,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {705,770,134,178,940,944,654,600,46,797,797,591,2,145,616,2,2,2,2,2,2,389,389,2,122,2,2,2,389,389,909,389}, + {642,757,247,513,372,54,546,971,271,61,61,1018,2,143,332,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {988,271,675,163,379,108,48,472,870,485,485,18,2,485,528,528,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {865,827,614,74,725,685,724,190,178,272,835,722,2,35,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {923,397,722,186,203,575,24,144,36,526,206,787,12,100,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {718,359,103,558,684,560,67,35,120,342,680,265,265,265,2,2,265,2,2,2,2,2,2,2,2,2,430,2,2,2,2,2}, + {927,493,988,194,97,1006,377,578,105,248,707,784,98,784,2,2,2,2,2,2,2,2,2,370,370,2,370,2,2,2,2,2}, + {900,455,485,601,353,69,67,965,25,226,314,314,883,923,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {903,259,153,106,289,916,861,41,441,368,131,131,262,671,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {945,358,160,196,82,403,362,195,376,877,521,336,521,77,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {912,516,108,555,306,274,55,197,565,174,659,208,441,441,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {753,242,194,619,345,94,463,485,163,85,412,575,270,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {940,226,320,666,269,54,542,174,109,290,754,524,649,2,202,2,2,2,2,2,2,2,776,202,776,776,776,2,2,202,202,202}, + {915,210,456,377,303,237,225,521,621,175,569,20,124,2,601,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {672,652,792,253,796,404,171,90,406,433,43,159,72,2,2,372,2,540,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {733,439,537,37,149,650,916,443,743,621,921,664,664,2,2,2,2,2,682,523,523,523,2,2,523,523,523,523,523,523,523,523}, + {982,344,812,567,243,52,246,369,439,205,600,739,730,2,2,2,61,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {982,604,126,65,633,657,22,776,161,45,725,44,4,2,2,2,2,2,2,2,2,2,269,269,2,2,2,2,2,2,2,2}, + {745,600,284,1117,459,1135,300,52,845,331,334,334,334,2,334,334,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {936,409,217,57,574,395,481,245,548,268,447,598,375,2,192,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {986,241,233,45,721,325,350,222,35,1065,1065,1065,1065,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {755,796,877,981,259,194,1180,215,90,658,662,662,662,2,36,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {981,626,987,827,466,458,578,346,475,223,223,223,342,1058,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,728}, + {949,422,941,491,66,786,592,429,307,123,40,478,478,478,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {992,723,625,251,431,544,309,466,700,644,484,837,904,320,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1077,496,819,340,974,122,39,1209,819,18,461,648,648,394,2,2,2,2,2,2,61,2,2,2,2,2,394,2,2,2,2,394}, + {999,674,212,673,279,579,462,754,89,866,345,110,110,887,2,2,2,2,2,707,707,2,2,2,2,2,2,2,2,2,2,707}, + {1083,356,367,357,559,213,606,477,71,103,790,103,299,299,2,2,2,2,2,2,406,406,2,2,2,2,2,2,2,2,2,2}, + {1005,260,389,960,501,714,118,73,334,1019,704,204,504,205,822,822,2,2,2,2,2,2,2,2,2,2,684,2,2,2,2,2}, + {738,749,769,610,306,326,328,578,479,840,840,840,68,192,2,150,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1010,937,449,474,154,456,766,318,275,444,709,2,778,778,778,806,779,779,2,2,2,2,2,2,2,2,806,2,2,2,287,287}, + {1011,780,134,945,183,42,741,25,252,164,205,222,222,222,147,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1118,427,294,404,268,217,922,515,19,1045,1045,2,833,291,448,2,2,2,2,2,2,2,2,2,175,2,2,2,2,2,2,2}, + {1094,640,912,223,67,472,623,623,1244,65,1009,1209,1209,812,387,2,2,2,513,2,2,2,2,2,2,2,2,2,2,2,1209,234}, + {722,375,264,390,515,498,1161,391,884,551,238,2,2,825,549,2,2,2,551,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {792,250,299,210,496,682,94,207,220,227,227,2,2,227,73,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1022,409,93,359,983,345,280,280,104,940,940,2,2,382,1039,2,2,2,2,831,2,2,2,2,2,2,2,2,2,2,2,2}, + {1027,925,413,335,327,826,250,122,293,773,564,541,420,420,420,774,763,2,2,2,2,2,2,900,110,110,2,763,2,2,2,2}, + {1028,730,807,119,209,146,230,498,164,309,309,2,2,2,693,912,430,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {997,525,680,120,466,728,288,110,1082,544,572,2,2,663,290,290,2,2,754,2,2,2,2,2,582,582,582,582,582,2,2,2}, + {1055,395,795,561,222,85,294,433,377,89,89,2,2,2,456,821,2,2,821,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {997,614,240,638,755,575,874,321,600,235,665,2,2,2,154,154,767,767,2,767,2,2,2,2,2,2,2,2,2,2,2,2}, + {802,298,672,424,104,623,152,159,476,760,66,2,2,2,215,215,490,490,490,2,2,2,2,2,490,490,490,490,490,490,490,490}, + {1128,788,124,501,561,1015,419,787,48,620,705,2,2,2,2,88,18,2,215,215,215,2,2,215,215,2,2,2,215,2,2,2}, + {807,433,721,434,449,242,170,842,21,4,642,2,2,2,2,2,4,4,4,4,2,856,856,856,885,885,856,856,856,856,856,885}, + {755,612,235,265,369,855,414,362,478,518,518,2,2,64,16,8,32,4,16,8,8,1041,501,1041,2,2,64,16,8,8,16,270}, + {1004,719,1041,460,551,516,135,417,130,698,698,2,2,2,655,655,655,655,655,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1017,568,930,1113,556,1299,114,881,690,475,641,2,2,2,779,779,103,2,528,2,2,2,2,2,2,528,528,2,2,910,910,2}, + {814,473,286,752,476,779,420,569,742,164,490,2,2,2,793,812,812,812,2,812,812,2,2,526,526,812,526,2,2,2,526,526}, + {818,301,273,664,206,971,895,590,912,523,523,2,2,452,384,255,2,130,130,130,130,865,2,2,2,255,2,2,2,2,2,2}, + {820,249,292,1017,1017,143,403,37,433,456,515,2,2,69,640,2,2,2,2,2,2,2,2,2,2,2,2,824,824,824,2,2}, + {1078,527,589,244,170,892,827,606,1165,773,189,2,2,240,22,2,2,2,2,2,2,759,621,621,621,621,621,621,621,621,621,621}, + {865,1132,428,582,254,408,536,376,825,116,116,1266,1266,1266,705,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1062,268,389,1325,598,276,1270,48,572,439,302,2,544,609,544,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1065,517,247,1142,247,674,385,120,592,177,98,2,956,364,275,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {635,503,594,203,456,1246,221,396,1151,178,66,2,781,587,86,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1157,395,446,280,1130,695,668,271,111,882,477,615,615,615,2,2,2,2,2,2,2,2,615,615,615,615,615,615,615,2,305,2}, + {830,397,932,519,818,113,367,694,88,535,535,414,343,175,2,2,2,2,2,2,2,2,2,2,414,864,2,2,864,864,864,864}, + {793,463,329,730,390,551,968,92,511,470,424,563,672,563,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1050,749,809,479,87,757,288,172,597,722,4,418,418,390,2,2,2,2,2,390,390,2,2,2,2,2,2,2,2,2,2,2}, + {1084,402,130,1077,276,154,1068,779,511,853,83,757,757,38,2,2,2,2,2,202,2,2,2,2,2,2,2,2,2,2,757,2}, + {1090,255,271,110,159,235,158,236,271,815,1300,416,416,416,2,2,416,416,2,2,2,399,791,791,2,791,2,2,2,2,791,791}, + {1058,417,271,172,312,363,184,191,28,183,759,214,759,39,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1057,385,263,395,901,274,727,340,1117,263,813,870,858,429,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1102,846,985,1085,764,124,764,51,874,612,478,801,478,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1120,665,311,695,319,1033,511,297,602,1030,1030,714,240,240,2,2,2,2,2,2,2,2,2,2,2,2,2,953,2,2,2,2}, + {814,293,763,661,575,631,524,636,112,691,595,1103,405,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1106,662,258,190,1315,214,530,263,318,904,877,1317,318,2,510,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1206,469,299,1052,655,114,189,213,321,188,64,475,475,2,2,662,662,662,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1120,1159,358,347,838,207,357,167,476,52,672,38,822,2,2,2,2,2,2,213,2,2,2,2,2,2,2,2,2,2,2,2}, + {1076,596,553,545,79,727,881,121,298,169,639,368,695,115,115,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1130,177,84,673,350,543,543,95,128,954,430,884,884,2,884,884,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1222,412,430,707,691,746,131,607,311,607,112,217,912,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {820,461,681,382,273,273,358,274,274,91,887,676,386,2,676,676,2,2,2,2,2,2,2,200,2,2,2,2,200,2,2,2}, + {1096,1166,209,407,1127,400,974,322,428,906,631,134,171,2,2,2,2,664,664,664,2,2,2,2,2,2,2,2,2,2,2,2}, + {1091,946,437,51,527,802,597,639,587,645,510,586,586,2,2,2,2,2,2,2,2,2,2,2,2,2,2,168,168,168,168,168}, + {1148,585,868,1282,666,417,733,1231,515,332,1213,337,337,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1103,276,174,408,233,170,955,108,530,354,585,38,677,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,476}, + {1167,478,1169,1053,563,371,108,772,413,497,1338,991,660,2,2,2,2,2,2,2,2,2,2,2,2,27,2,2,2,2,2,2}, + {1108,437,1160,324,868,686,361,399,786,1161,1161,707,731,731,655,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1116,331,280,422,1109,341,570,243,849,241,566,61,608,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {898,782,478,1208,196,983,608,537,196,1141,141,296,715,715,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1099,1187,300,240,268,413,1366,634,184,768,773,365,783,224,783,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1158,945,300,1115,205,495,435,302,187,774,774,843,843,284,284,2,2,2,2,909,933,933,933,2,2,909,909,2,2,2,2,909}, + {904,660,1283,46,33,124,416,218,152,970,1241,305,307,307,307,260,894,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1127,553,287,58,739,99,514,739,766,42,580,241,598,598,936,936,936,629,629,629,629,2,2,2,2,2,2,2,2,2,2,2}, + {1142,370,287,925,307,1232,129,11,1284,1056,33,33,536,521,2,1286,2,2,2,2,2,2,2,2,2,2,2,2,847,847,847,847}, + {1140,814,528,677,84,1192,305,637,335,451,103,325,77,969,2,651,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1297,600,419,985,846,493,186,109,147,239,197,762,762,327,327,1004,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1181,615,482,653,238,130,313,506,98,1314,730,730,730,730,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {921,613,628,1288,111,150,191,233,633,83,387,602,105,394,2,2,2,2,2,2,2,351,2,2,351,351,351,2,2,2,351,351}, + {1192,555,586,516,1288,733,64,653,364,273,421,215,75,75,2,2,2,2,2,2,953,953,953,953,8,383,383,2,161,383,953,953}, + {1160,617,505,1205,374,906,23,408,194,91,91,91,585,984,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1203,1101,497,352,254,309,464,123,607,1080,265,1145,1145,1145,284,284,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1210,656,1026,782,802,442,1319,734,794,165,165,796,93,796,2,829,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {963,646,721,1161,219,667,1088,485,692,692,663,535,553,662,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,686,686,2}, + {966,590,140,297,189,844,633,12,847,742,742,244,281,34,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {941,231,1038,309,173,770,413,560,855,660,721,1103,721,721,721,2,2,2,2,2,2,2,2,2,2,2,2,174,2,2,2,2}, + {1213,305,656,983,1399,1196,692,986,9,339,754,308,2,308,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {972,768,1109,523,642,546,1452,29,1296,13,813,813,2,1496,2,2,2,2,2,2,2,165,165,165,165,165,165,2,2,2,2,544}, + {1330,671,528,831,1426,735,33,425,364,119,363,978,2,761,483,476,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1188,217,838,237,379,202,785,949,479,169,348,872,2,872,872,2,2,2,2,2,2,1028,2,2,2,2,2,2,2,2,2,2}, + {1190,286,513,881,390,215,387,130,749,554,1110,519,160,160,160,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1247,353,973,217,1044,1318,1115,319,203,390,1244,225,2,2,508,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {893,560,132,1420,721,191,568,799,412,22,322,93,2,4,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {987,774,678,175,145,264,588,97,1308,6,828,1129,2,2,2,45,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {955,980,753,96,574,259,1327,556,342,1415,1036,1036,478,478,478,478,507,2,2,2,2,151,2,2,317,2,2,2,2,2,595,595}, + {882,1038,211,110,942,337,1305,1225,661,183,381,381,2,2,2,2,347,2,2,2,2,2,2,2,600,431,431,431,431,431,431,431}, + {1208,486,343,725,677,1204,135,139,924,170,1111,317,2,2,2,2,202,706,202,107,107,107,2,2,706,706,107,107,2,2,2,706}, + {1259,1017,456,298,443,838,137,744,551,334,36,951,2,2,2,699,718,2,2,984,2,2,2,2,2,2,984,984,2,2,2,2}, + {1212,1186,641,284,565,636,895,82,690,117,184,184,2,2,2,397,902,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1263,370,132,635,381,47,537,179,1192,301,1282,33,2,2,2,1553,2,2,2,2,2,2,2,2,2,2,2,307,307,2,2,2}, + {1223,433,252,572,424,82,221,107,382,430,203,461,2,915,362,964,2,2,964,2,2,2,2,2,964,964,964,964,964,485,485,485}, + {1015,593,112,1408,51,104,199,221,931,1010,928,928,2,2,878,878,2,2,2,2,731,731,2,731,731,2,731,2,731,731,731,2}, + {1220,410,1193,352,260,434,469,41,1090,961,961,728,2,2,330,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {898,1043,391,1289,29,830,184,321,1136,85,1133,1082,864,864,2,2,2,2,2,2,2,2,789,789,2,789,789,2,2,789,789,2}, + {1223,434,851,152,140,1495,190,397,925,37,1080,430,2,2,204,2,759,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {989,1043,184,232,64,403,284,745,171,171,995,223,380,380,1400,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {939,1070,1288,254,973,901,321,109,568,713,336,988,2,946,262,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1276,636,569,258,325,675,342,85,88,579,833,833,833,833,520,2,2,2,2,520,520,2,2,2,2,2,2,2,2,2,2,2}, + {982,508,815,214,206,602,448,685,446,572,1549,8,1047,1047,1047,2,2,2,2,2,2,2,363,502,2,2,71,363,2,2,363,363}, + {1288,1398,789,514,151,600,1618,1194,1419,441,234,204,1191,438,828,2,857,857,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1002,342,1045,757,1008,979,322,240,1211,171,552,123,2,129,129,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1401,402,525,293,97,223,452,808,61,169,1023,1023,886,886,1023,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1001,644,263,164,136,939,624,95,489,1023,1107,331,331,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1011,475,845,532,567,951,663,295,877,1275,227,39,618,683,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1401,741,509,797,47,157,1256,482,1513,899,736,780,780,210,2,2,2,2,783,783,2,2,2,2,2,2,2,2,2,2,2,2}, + {1047,880,369,402,641,446,639,586,277,396,419,275,825,820,2,2,2,238,238,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1273,701,831,1294,1580,137,162,415,563,11,92,116,116,116,2,2,2,2,2,2,1029,1029,1029,504,504,877,877,877,877,877,1029,1029}, + {1335,400,315,412,172,125,568,1024,58,601,398,985,640,577,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1453,947,486,485,453,415,1164,684,504,605,422,998,727,727,2,2,2,1136,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1057,1198,146,529,284,1286,160,135,75,686,648,1425,821,586,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1052,442,936,64,132,1378,1323,161,161,161,230,131,12,12,2,2,2,2,2,2,2,2,2,2,2,998,998,998,998,2,2,2}, + {1422,838,234,554,736,243,344,526,1108,33,1303,699,249,305,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1279,681,423,813,806,269,412,420,985,485,761,1013,649,796,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {938,614,523,557,898,624,178,461,287,985,371,371,260,613,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1335,834,652,528,536,523,497,60,173,777,238,59,4,59,4,8,2,2,2,559,559,559,559,559,559,559,2,2,559,559,559,2}, + {1040,998,324,93,887,497,1326,443,152,1193,595,80,80,80,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1302,1116,283,1006,891,838,768,373,468,968,1178,1178,1269,1269,876,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1027,1128,114,395,357,417,848,22,389,1257,734,838,838,301,900,2,90,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1072,724,717,877,873,369,1031,698,917,1641,1641,1641,53,549,549,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {987,1243,424,240,53,1150,558,292,1107,574,814,1474,1474,1068,1186,2,2,2,2,2,2,2,2,2,2,2,2,2,2,859,2,2}, + {1040,420,960,882,64,661,292,146,976,427,689,248,248,248,638,2,2,2,2,2,2,2,2,2,2,2,2,861,861,861,2,861}, + {1040,522,666,398,78,208,293,818,134,867,147,147,482,2,4,629,629,629,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {987,1280,1245,1300,926,676,56,546,541,690,84,42,1000,1383,1383,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1324,588,1378,592,1445,1029,759,1296,739,931,363,704,312,704,704,704,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1058,454,1557,191,129,297,695,1390,1274,460,923,923,923,2,4,1059,2,2,2,2,2,2,2,2,2,2,2,2,2,1059,2,2}, + {1327,572,282,1022,907,1276,409,643,1050,633,187,187,187,2,228,45,2,2,2,2,2,2,320,2,2,2,2,2,2,2,2,2}, + {1395,958,237,101,559,891,560,47,524,747,197,589,589,917,887,887,887,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1395,529,461,402,194,392,122,781,111,162,780,593,593,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1378,541,848,848,347,856,102,104,183,156,395,130,1377,2,2,2,159,159,159,2,2,2,772,2,2,2,2,2,2,2,2,2}, + {1062,212,784,63,252,873,1302,1108,1380,84,1375,1375,1375,2,2,2,375,374,2,980,2,2,2,980,980,980,2,2,2,2,2,2}, + {1384,549,430,781,946,879,901,924,741,114,14,451,36,2,2,2,2,287,287,287,803,803,803,803,2,2,2,803,803,803,803,803}, + {1413,627,1329,1092,526,197,31,417,1149,981,964,1003,685,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,717,717,2,2}, + {1084,1174,1601,949,910,960,500,461,1290,23,1042,636,212,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1420,531,626,738,376,537,814,206,990,235,847,812,201,201,201,201,726,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1420,624,363,537,1436,278,292,377,263,820,376,382,382,2,654,655,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1091,793,1353,208,506,599,846,503,1011,247,289,61,1050,61,61,61,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1533,978,284,156,914,162,685,1184,252,1375,189,256,640,2,640,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1531,692,414,277,541,1371,1447,682,536,109,432,1240,1240,2,1022,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1128,398,791,1170,76,661,408,259,756,495,79,553,10,10,1532,1532,1532,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1040,704,618,854,374,1470,274,383,941,519,351,351,351,351,351,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1427,988,498,1529,99,678,1323,149,33,426,543,543,335,1507,772,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1102,349,490,266,144,220,599,437,743,764,647,1128,605,265,324,324,324,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1118,496,645,592,354,1133,935,428,72,532,182,182,1370,660,123,2,294,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1102,1042,315,745,1006,771,630,68,587,1187,295,295,295,408,408,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1118,724,1322,405,199,614,1087,885,1313,317,769,660,660,1158,535,2,2,2,373,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1120,772,743,488,346,126,784,584,943,153,311,133,133,969,605,605,2,2,2,2,2,2,2,605,2,2,2,2,2,2,2,2}, + {1404,284,176,590,1128,1371,322,543,1136,546,1315,174,174,777,777,891,2,2,2,2,2,2,2,579,579,579,579,2,2,2,2,2}, + {1441,791,233,141,141,316,89,296,462,1263,758,482,599,599,578,341,2,2,2,2,2,2,2,2,2,2,2,525,525,525,2,2}, + {1413,406,700,547,1166,250,518,543,104,331,205,205,691,691,2,2,118,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1485,400,1497,168,82,680,1103,554,249,702,493,101,296,236,2,236,236,944,944,2,2,394,2,2,2,2,2,2,2,2,2,2}, + {1127,869,558,533,1215,194,1762,784,593,777,1153,1079,1079,1079,2,2,2,330,1045,2,1045,1045,2,2,2,2,2,2,2,2,2,787}, + {1459,1243,467,533,266,1364,1031,890,1402,486,1678,1678,93,978,2,2,2,978,947,947,2,978,2,2,2,2,2,2,2,2,2,2}, + {1139,809,117,522,955,1096,1120,1470,116,184,1565,1565,557,557,2,2,2,2,2,829,1326,2,2,2,2,2,2,2,2,2,2,2}, + {1142,984,1044,590,340,241,662,357,366,1305,2,125,631,474,2,2,2,980,2,2,2,2,2,2,2,2,2,2,2,2,2,1273}, + {1469,1247,1277,616,209,486,106,552,219,217,471,272,272,1201,2,2,503,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1148,542,1478,496,950,464,1011,235,136,180,2,416,758,453,2,909,2,2,2,2,2,2,2,2,2,2,1019,1019,2,2,2,2}, + {1495,1178,874,415,1100,368,1057,1228,562,215,31,31,680,680,680,1208,2,2,2,2,2,2,2,2,1208,2,2,2,2,1208,1208,2}, + {1497,1166,1613,1403,107,803,993,539,1436,1289,2,240,334,634,532,1147,2,2,2,2,2,2,2,117,2,2,2,2,2,2,2,117}, + {1617,289,1033,169,355,260,30,45,721,906,88,44,44,418,417,218,2,2,846,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1628,721,400,239,728,1336,984,425,65,120,1232,463,463,640,349,616,616,2,2,2,2,2,2,2,2,147,147,2,2,2,2,2}, + {1628,286,541,530,1610,201,1220,1592,272,181,2,38,263,1586,1157,1157,1157,2,2,2,1157,1157,2,2,2,1157,2,2,2,2,1157,1157}, + {1531,621,210,755,482,82,1308,317,427,168,2,232,116,190,701,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,701}, + {1532,575,1245,360,249,630,133,1406,920,1539,63,63,76,82,82,2,2,2,770,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1102,785,118,93,1491,988,275,53,1328,26,2,2,240,647,240,761,761,761,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1478,722,113,1534,1751,115,1728,1234,777,282,508,508,1184,63,1184,855,855,2,2,2,738,738,578,578,2,2,2,2,2,2,2,2}, + {1480,536,1421,164,429,84,970,1673,548,497,2,2,530,156,156,128,245,2,2,2,2,260,2,2,2,2,2,2,2,2,2,2}, + {1533,1302,1286,538,619,526,1669,145,1034,125,2,1038,1038,388,388,387,729,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1482,961,1093,556,1746,628,427,689,510,751,684,37,37,1229,1256,882,1507,1507,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1472,852,533,433,924,57,53,1036,410,675,1212,1212,1212,600,600,1212,1259,1245,1245,1245,1245,2,2,2,2,2,2,2,2,2,2,2}, + {1228,425,1030,699,407,171,568,925,1104,97,2,2,1286,1286,1286,502,2,1219,1219,1219,1290,2,1219,1219,1219,1219,2,2,2,59,2,2}, + {1547,657,777,695,1254,224,933,367,212,385,2,2,2,1422,749,245,885,710,2,2,710,710,710,45,710,710,710,710,2,336,710,2}, + {1678,466,549,145,351,816,1041,334,192,192,2,2,348,1017,130,4,4,180,180,180,180,512,2,2,2,512,512,512,512,512,128,8}, + {1550,569,481,1041,1680,1114,1265,160,386,194,2,2,2,533,929,531,422,531,1355,1355,1355,1355,531,216,216,2,2,2,2,2,2,2}, + {1559,462,850,289,1570,71,512,858,810,835,2,2,2,2,1028,1205,1205,546,546,546,1205,1205,1205,1205,1205,2,1205,1205,1205,1205,1205,1205}, + {1192,888,701,164,131,613,282,237,525,366,2,2,2,2,1737,845,845,750,2,1062,1062,1062,1062,1062,1062,1062,1062,1062,1062,2,1261,1261}, + {1208,426,412,1072,274,248,1544,627,9,458,2,2,2,2,2,2,270,270,270,150,715,282,150,150,150,150,150,150,150,150,150,150}, + {1128,393,1522,96,160,581,540,120,441,176,2,2,2,2,2,2,1427,551,1102,1102,328,328,592,592,592,592,592,592,592,592,592,592}, + {1202,538,171,1177,1090,690,1566,746,1012,1012,2,2,2,2,313,781,808,313,1125,1117,930,1117,1117,1117,1117,1117,1117,1117,1117,2,2,2}, + {1567,1265,372,1633,613,484,243,1523,21,275,2,2,2,431,431,431,431,2,2,978,489,889,889,889,889,889,889,889,2,2,2,2}, + {1566,982,815,133,891,412,1179,831,651,268,2,2,2,367,366,367,367,63,63,767,2,2,2,2,2,2,2,2,2,2,2,2}, + {1522,1422,1017,124,499,451,731,1112,1355,1355,2,2,2,854,854,336,854,336,1297,2,2,2,193,193,193,193,193,2,2,2,2,2}, + {1160,1331,917,1696,401,547,122,592,863,863,2,2,703,703,703,703,495,495,495,2,2,495,495,495,495,495,269,2,2,2,269,269}, + {1538,814,1027,677,524,226,756,202,242,102,2,2,912,564,1289,682,2,1125,1125,1125,1125,2,1289,1289,1289,1125,1125,1125,2,1289,1289,1289}, + {1598,397,1471,1471,1162,866,236,948,1557,737,2,2,153,737,1408,765,765,608,2,2,2,171,608,608,608,608,2,608,608,2,2,2}, + {1598,434,107,270,148,1317,835,123,642,1236,2,2,67,633,771,878,771,878,878,2,2,2,771,2,2,2,2,2,2,2,2,2}, + {1628,1502,1042,822,80,403,1335,684,464,426,671,671,336,336,336,2,425,896,2,2,2,2,1337,1337,1337,1337,1337,1337,2,2,2,2}, + {1630,715,1368,1273,993,293,385,545,1267,896,1038,1038,270,1325,1325,2,2,961,961,961,961,961,961,2,2,961,961,2,2,961,2,961}, + {1612,723,409,641,796,1087,1228,1398,623,262,740,740,870,870,397,2,2,893,893,2,2,1367,328,2,328,2,2,2,2,2,2,2}, + {1614,588,652,105,441,844,734,912,532,878,1073,1073,62,1415,693,1431,1431,1431,1431,925,925,925,925,925,925,925,2,2,2,2,2,2}, + {1607,1503,1072,471,221,277,854,1236,263,752,2,694,1657,934,553,2,2,2,498,498,2,802,2,46,2,2,2,2,2,2,2,2}, + {1172,987,140,1964,584,600,852,1725,456,1199,718,718,791,981,791,2,2,2,2,2,1260,2,2,2,2,2,718,2,2,718,2,718}, + {1746,771,620,415,1057,437,613,1034,1662,837,2,1149,1466,1149,1149,1149,1466,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1263,835,1533,789,1259,174,1497,557,644,203,2,289,604,434,434,434,2,844,844,2,2,2,1111,1111,1111,2,2,2,2,2,2,2}, + {1272,884,388,1889,956,159,1172,595,219,645,2,629,107,107,1279,75,2,2,2,211,2,2,2,2,2,2,2,2,2,2,2,2}, + {1797,904,172,659,349,177,692,448,1141,990,640,99,1073,806,640,640,2,640,640,911,911,911,640,640,640,640,2,2,2,2,2,2}, + {1276,442,1008,1352,243,162,711,301,552,1002,668,668,384,71,384,384,2,2,2,2,2,727,727,727,777,777,777,777,777,777,2,777}, + {1600,1130,171,1113,813,722,117,990,37,24,969,94,825,1398,1398,1398,1398,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1198,496,714,609,644,1159,873,249,186,1539,136,239,379,1994,2,68,68,68,68,68,2,2,192,2,969,2,2,969,2,2,969,969}, + {1678,1316,460,1133,1003,150,1236,1316,1417,218,1763,1763,77,77,2,1491,771,771,771,771,771,2,771,2,2,2,2,2,2,2,2,2}, + {1682,449,1067,393,136,854,36,492,637,1053,247,1111,1111,1111,2,247,247,247,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1288,1690,702,760,420,333,1213,1911,805,351,67,67,1568,1568,2,2,604,142,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1288,1858,152,894,346,104,997,203,249,1006,1278,1489,1489,555,2,2,2,1074,1074,518,2,2,518,2,2,518,2,2,2,2,2,2}, + {1601,697,532,408,697,1140,1568,47,1499,780,1171,318,318,318,2,2,2,2,318,318,2,2,2,2,2,2,2,2,2,2,2,2}, + {1283,1078,791,873,655,412,389,835,292,958,1245,678,1611,1519,2,2,185,2,2,2,2,2,2,1245,1245,2,2,2,2,2,2,1245}, + {1685,1610,1447,1093,1255,937,703,431,522,1384,988,988,253,988,2,1892,1892,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1822,589,236,205,797,39,241,1048,181,386,102,102,102,111,1361,1361,1361,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1233,843,813,157,396,669,1531,439,640,733,996,996,996,1566,951,608,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1342,705,302,595,1200,52,83,647,519,139,103,103,103,513,2,513,2,2,2,2,2,513,2,2,2,2,2,2,2,2,2,2}, + {1630,1244,142,767,1299,719,629,1716,419,837,1145,1136,1148,1405,1405,1405,2,2,2,2,2,309,309,309,309,309,2,2,2,2,2,2}, + {1636,974,279,419,893,1608,1491,156,1486,115,730,730,863,509,924,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1318,1234,213,1089,1567,602,1330,404,467,718,249,215,354,177,59,332,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1732,1771,584,533,297,1056,669,293,146,311,1176,311,590,590,277,2,2,2,2,2,2,2,2,2,539,539,2,2,2,2,2,2}, + {1026,512,1196,394,1259,1313,762,549,311,1576,1576,465,465,140,465,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1360,383,1470,502,1010,153,1588,619,1246,396,1107,1107,112,423,423,2,2,2,2,2,202,2,2,2,2,2,2,2,2,2,2,2}, + {1320,1636,858,1210,509,194,1575,154,1424,455,1860,832,1075,581,262,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1670,1350,689,1074,437,956,587,642,1154,439,196,1108,1108,1108,990,2,2,2,2,2,1112,2,2,2,2,2,2,2,2,2,2,2}, + {1873,890,920,874,591,651,768,478,331,76,760,760,760,760,67,2,2,2,2,1241,1241,1241,1241,2,2,2,2,2,2,2,1241,1241}, + {1682,867,333,102,628,891,654,506,995,684,961,563,1313,1313,1313,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1672,1248,429,813,262,92,809,1248,560,1365,1392,753,753,1259,1261,2,2,2,2,2,2,2,2,177,177,2,2,2,2,2,2,2}, + {1391,1598,1112,590,797,584,1354,47,1473,1291,1874,48,491,463,990,463,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1875,1576,924,677,461,134,1525,1619,44,701,299,743,728,791,791,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,791,791}, + {1267,904,1187,1595,765,1451,494,1573,950,909,87,1265,757,1371,1005,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1360,1091,1478,1237,97,578,1616,494,1422,223,865,1092,359,2,1080,4,2,2,2,688,1965,2,1965,2,2,2,2,2,2,2,2,2}, + {1750,386,393,840,723,791,1707,1319,1525,83,1302,571,280,2,280,73,2,2,2,1207,2,2,2,2,2,2,2,2,2,2,2,2}, + {1763,1018,1859,432,717,723,874,1294,1050,1800,1237,619,1074,2,10,1237,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1376,652,461,225,361,936,1073,1279,149,619,983,511,1994,2,2,1076,1076,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1947,393,495,946,1375,391,2128,582,1143,695,1872,760,760,2,2,1456,974,974,435,974,974,435,974,2,974,974,2,2,2,2,2,2}, + {1768,1463,531,1008,95,1677,362,1105,985,177,1682,1682,244,2,2,1234,1041,1041,1041,2,2,2,1041,1041,2,2,2,2,2,2,1894,2}, + {1780,1739,1357,1684,1586,736,208,966,1691,339,339,128,128,2,2,128,128,128,2,2,128,2,2,2,2,1929,2,2,338,2,2,338}, + {1387,1459,358,1409,1919,917,777,223,313,1847,1012,1024,1024,2,2,2,2,1420,1420,1428,1420,2,1420,1420,2,2,2,1420,1117,1117,1117,1117}, + {1289,907,228,665,1695,1735,489,214,762,1777,321,1674,932,2,2,2,2,1358,709,2,1959,1959,372,2,2,372,372,2,2,372,372,372}, + {1378,680,1117,1367,759,62,319,563,505,1138,1093,345,693,2,2,2,780,780,2,2,2,729,729,729,2,2,2,2,2,2,729,729}, + {1802,1645,453,1079,604,618,334,855,541,167,37,88,849,2,2,518,518,2,2,530,2,2,2,2,2,2,2,119,119,2,2,2}, + {1275,1612,143,1586,502,987,555,436,2236,1826,494,494,358,2,2,213,2,2,2,2,2,2,1585,1585,1585,1585,1585,1585,1585,1585,1585,1585}, + {1322,512,560,432,365,87,1835,1137,515,1271,1739,309,309,1229,1229,1229,2,2,2,2,2,2,2,2,416,416,416,416,2,2,2,2}, + {1758,835,287,888,391,875,1834,516,1432,1171,98,408,302,976,976,1963,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1444,394,1613,796,645,1406,186,158,402,1364,314,588,606,2,577,117,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1337,1391,137,371,165,87,1026,20,419,99,572,572,918,854,918,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1323,589,526,1555,1636,1172,86,42,1545,57,627,1769,1769,2,867,343,2,2,2,2,2,2,2,724,2,2,2,2,724,724,2,2}, + {1323,1647,384,301,270,549,1098,1144,1066,55,88,1805,683,2,945,120,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1327,1075,539,1017,926,350,1102,236,494,1268,286,286,1293,267,227,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1472,661,1538,487,94,2209,563,138,881,1735,718,203,1382,1473,1473,1473,1473,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1413,766,349,1471,45,625,733,1082,170,58,1268,207,1081,1081,1081,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1861,1487,419,97,799,1791,458,1029,370,627,57,414,414,1540,247,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1881,716,268,387,2138,1212,999,408,1363,434,1429,1429,1648,1648,1007,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1480,1131,1089,1688,340,962,505,1816,139,44,1350,403,1385,1996,173,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1868,650,1146,1690,948,43,497,692,1628,1302,1302,108,462,731,731,2,2,2,2,2,2,2,185,185,185,2,2,2,2,2,2,2}, + {2023,1204,531,733,1054,618,668,363,783,218,1302,2055,559,2055,2055,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1328,601,601,617,554,467,391,1545,162,1361,807,1565,1565,243,1344,2,725,510,510,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1808,1525,1129,652,1195,329,1410,558,1322,911,161,536,737,94,306,2,2,2,2,2,2,2,2,2,541,541,541,2,2,2,2,2}, + {1911,1338,639,1106,854,128,19,1353,847,253,618,517,2054,2054,93,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1825,850,180,1483,864,953,50,81,106,432,1372,1372,1212,10,10,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1892,441,977,228,1252,604,735,136,889,878,1319,1319,2127,2127,1963,367,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1820,1553,536,1351,425,1268,227,1742,429,348,1397,552,1151,1151,2,180,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1453,1044,556,833,305,1493,989,1158,726,1790,532,1229,1229,1229,2,2,2,2,2,2,2,2,2,2,259,2,2,2,2,2,420,2}, + {2059,592,492,973,137,1331,392,334,635,1480,2254,1796,1796,284,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1460,986,709,268,755,824,83,893,115,656,2071,1323,1001,144,2,2,2,2,2,2,2,2,1527,1527,1527,1527,1527,1527,1527,2,801,801}, + {1850,1476,792,840,2037,229,1578,526,431,1485,1450,1001,1001,1001,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1922,1383,813,346,1247,666,1931,1111,2042,79,682,501,1349,1930,2,2,681,681,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1922,542,1739,625,88,1376,259,49,338,318,505,788,1314,657,2,2,2,1314,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1948,1530,576,582,1069,119,2131,41,1178,1677,1677,1677,325,346,2,2,2,2,2,2,1401,2,33,2,2,2,2,2,2,71,71,71}, + {1928,1111,168,1252,1467,1083,1927,603,1278,714,1027,50,751,1970,2,2,2,2,621,2,100,2,2,10,10,2,2,2,2,793,793,793}, + {1394,896,674,2350,1375,1599,1858,135,762,722,628,685,705,28,2,2,2,2,2,2,2,2,2,2,2,855,2,2,2,2,2,2}, + {1540,791,518,419,1130,1068,299,1386,1378,134,859,859,71,162,2,71,71,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2107,709,828,154,542,184,1094,1665,307,1549,177,2007,85,773,2,2,2,2,2,2,2,2,2,2,2,697,2,2,2,2,697,2}, + {1977,1218,244,365,576,666,761,238,629,913,1907,986,1351,986,704,1257,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1496,1912,1291,1053,510,2322,1048,1530,2223,673,894,594,628,332,2,2,2,2,2,295,295,295,2,2,2,2,2,2,2,2,2,2}, + {1520,1107,1082,687,484,1732,676,1595,467,653,1091,428,2113,332,332,332,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1905,612,920,848,562,2032,230,1305,1073,851,731,798,798,357,516,2,2,2,2,2,2,2,2,1465,1465,373,2,2,2,2,2,2}, + {1428,1062,1016,75,297,1130,533,768,464,753,48,1510,1510,418,375,1626,2,221,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1396,729,1710,337,371,489,1341,2117,132,1870,853,853,408,1079,328,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1978,1051,977,588,1423,1001,508,409,825,497,659,1063,384,463,463,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1534,854,2007,1207,947,1773,1571,1505,909,1471,1655,1655,2334,1327,409,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2157,2106,679,238,378,49,1101,588,811,1313,1556,2301,475,812,812,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2187,1515,549,1416,1073,1613,47,1046,390,252,1214,1404,1404,933,1013,2,2,2,1025,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2145,1069,662,709,737,1141,1737,827,1384,1628,107,107,1032,277,277,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2173,1379,155,393,1578,610,1911,899,697,58,185,597,597,1249,1369,2,2,2,2,1369,2,2,2,2,2,2,2,2,2,2,2,2}, + {1413,1589,1603,2268,520,333,1416,859,1619,867,1154,512,1291,413,413,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1600,1823,1698,1268,623,583,1932,1674,522,529,1862,1281,246,989,246,2,246,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1559,992,174,1313,612,1487,1487,461,702,37,1660,839,2,95,1628,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2066,1719,710,1294,2041,377,1005,690,132,756,1618,187,187,726,187,615,615,2,2,2,2,851,2,2,2,2,2,2,2,2,2,744}, + {2192,1029,310,1609,592,1542,265,117,2006,82,162,205,2,2009,2009,1201,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1570,1504,1414,1143,1999,1932,1015,1015,556,514,626,79,2,79,1795,1461,1461,2,2,2,2,2,2,2,1461,1461,1461,1461,1461,2,2,2}, + {1562,937,1964,934,1349,378,459,109,1676,1655,1339,1809,2,768,768,188,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1965,949,1057,1043,2256,1571,970,348,69,1324,1174,485,105,105,105,2172,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2044,1869,838,1424,1097,155,1142,230,1335,420,235,1510,2,431,425,622,2,2,2,2,2,625,2,2,2,625,625,2,2,2,2,2}, + {1976,1433,820,504,421,1007,388,1083,635,82,1524,750,2,2,870,106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1990,1948,1138,1787,253,115,312,1912,341,1624,260,1783,1315,1315,790,790,790,790,790,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1993,585,327,1393,1013,1671,1758,1436,1989,1217,1109,1476,2,2,1042,756,1042,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2056,1062,1605,1943,680,445,113,857,650,1388,2016,1231,2,2,1292,1292,1292,2,1039,1039,1039,1039,1039,2,2,2,2,2,2,2,2,2}, + {2008,1773,416,1954,1314,742,1694,505,202,1747,785,375,2,2,2,477,1538,477,2,2,2,2,2,1309,1309,1309,1309,2,2,2,1309,2}, + {1658,1008,258,749,427,1071,2052,263,1047,2152,1602,1602,2,2,2,1311,669,669,2,1897,1897,1897,669,669,669,669,669,669,669,669,669,669}, + {2258,1887,1875,1021,863,604,543,1115,509,1243,312,213,2,2,2,2,335,770,770,2,1143,567,2,2,567,567,567,411,2,2,2,411}, + {2266,1872,991,1468,1168,939,907,833,624,701,386,1713,2,2,2,2,2,931,861,381,1299,2,861,2,2,2,861,861,861,861,861,2}, + {2273,1510,803,2278,842,1245,1389,230,822,1564,113,1276,2,2,2,2,1350,273,273,2,2,2,2,2,1281,1281,1281,2,2,1281,1281,1281}, + {2278,1028,548,373,190,1443,614,2386,1940,930,557,2069,2,2,2,558,112,103,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2108,776,1568,342,2215,1882,681,1292,1601,586,1481,618,1930,1930,1930,1930,2146,89,89,2,2,2,2,2,2,2,1171,2,2,2,2,2}, + {2139,2177,1652,392,715,605,778,632,472,1619,64,64,2,2,2,1747,859,2,2,2,2,2,216,216,216,216,1747,1747,1747,1747,1747,1747}, + {1492,448,271,135,1288,417,130,83,235,2313,482,746,2,2,746,609,611,611,611,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1628,846,1504,138,464,401,501,506,967,1027,1540,1035,2,1921,1539,1539,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1630,1677,1624,301,1038,909,887,374,411,143,1021,174,2,1393,19,634,2,2,2,2,2,2,2,873,2,2,873,873,2,2,2,2}, + {1654,1131,2054,994,2170,548,801,252,87,219,488,2239,2,1232,1839,1822,2,2,2,968,2,2,2,2,2,2,2,2,2,2,2,2}, + {2065,1520,1423,1797,899,1425,1801,776,2365,58,646,695,2,998,998,1342,2,2,2,2,2,2,2,2,2,2,2,2,1150,1150,2,2}, + {2304,1948,316,1063,237,607,1143,2575,1388,1022,127,251,2,438,1570,1570,1570,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2177,710,1912,617,809,1078,199,905,673,519,457,52,2,1348,1348,410,2,2,2,2,2,340,2,2,2,2,2,2,2,2,2,2}, + {2073,1543,1586,1296,2466,753,455,46,119,1694,2035,1592,206,206,206,2,2,2,2,2,2,2,2,1172,2,2,2,2,2,2,2,2}, + {2075,1056,874,2101,566,1790,1333,386,538,1560,2254,331,717,717,717,454,454,2,2,2,2,2,2,2,2,2,2,2,454,454,2,2}, + {1670,977,1540,553,855,1729,239,757,191,62,732,549,1092,1092,199,199,199,199,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2096,1155,2257,125,1986,245,1208,2146,2287,680,1413,73,467,1410,1410,2,2,2,2,2,133,133,133,2,2,2,2,2,2,2,2,2}, + {1538,1026,2157,1457,1784,2559,184,29,614,273,697,697,1922,697,697,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2106,856,1025,382,389,272,425,672,1021,216,601,292,510,510,876,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1662,608,2478,266,1330,505,40,2058,964,724,596,1221,1221,310,42,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1600,1338,196,1510,1371,1138,957,169,545,1176,1131,2460,1708,541,541,2,363,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1682,1008,737,444,822,999,2066,283,646,1860,1008,778,1178,1178,458,1743,2,2,2,2,2,2,2,2,2,2,2,2,2,1743,1743,1743}, + {2132,756,1097,166,202,411,640,717,514,1389,633,633,633,633,633,633,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2386,748,620,478,647,898,320,53,1115,190,60,1860,1860,802,802,2,2,2,2,1264,1346,1346,2,2,2,2,2,2,2,2,2,2}, + {2125,996,1081,124,1140,628,1668,1913,151,2495,523,430,260,708,2190,2190,2190,2,2,2,2,2,1660,2,2,497,497,497,497,497,497,2}, + {1602,1489,895,383,56,698,2081,1728,794,789,16,16,797,302,52,2,2,2,2,2,2,2,2,2,2,797,797,797,797,797,797,1808}, + {2210,606,901,547,131,1924,1852,1271,194,766,390,390,520,795,1429,1429,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1731,599,817,724,718,1038,1082,2503,1341,936,421,1802,1304,1304,1491,186,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1614,1058,847,689,749,1028,1047,1474,117,1369,1442,1442,1540,700,104,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1733,679,2041,2420,326,934,1172,1431,193,370,1073,1073,1073,260,2,2,2,2,2,2,2,2,2,2,2,2,1193,2,2,2,2,2}, + {2168,1532,769,2570,1303,357,1793,1633,1226,1025,205,1218,1984,764,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2234,1706,356,581,532,933,1704,387,1345,1345,34,135,350,307,614,614,307,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1656,2093,354,310,306,1553,106,459,175,55,1482,958,254,254,2,356,356,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1654,1035,330,533,1446,953,499,142,1527,1748,265,1437,265,510,2,2,2,2,2,2,2,1835,1835,1835,1835,2,2,2,2,2,2,2}, + {1600,479,1457,246,2025,618,1612,2139,169,1492,1097,1327,2007,2007,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1744,447,845,2145,748,1555,1193,1312,916,1770,1294,546,794,323,2,2,2,2,2,1733,1733,2,2,1730,2,1733,1733,2,2,1733,551,551}, + {1766,1558,1901,1393,987,1859,815,1165,50,2065,88,88,1453,1453,2,2,2,995,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1615,1267,1242,1494,399,663,68,1209,1573,528,640,1200,248,640,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1678,592,1351,509,312,721,163,1597,1262,199,2643,1330,1661,992,2,2,719,2,2,2,2,2,2,2,2,2,2,2,2,2,1704,2}, + {2207,970,838,2043,1016,561,267,329,584,608,679,303,832,1613,959,959,959,1409,1409,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2217,352,447,914,1200,561,614,1616,509,2292,1114,1114,1229,52,1053,1053,1053,2,2,2,2,2,2,2,2,2,2,2,2,2,795,795}, + {2313,595,1593,1951,133,282,372,2396,1117,226,2104,267,374,267,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2312,1231,1604,997,652,1096,1070,320,481,662,911,1610,342,2527,606,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2245,1541,1828,783,615,428,1282,1892,848,1219,2465,314,314,314,2,2,2,2,2,2,2,2,2,2,2,2,1323,2,2,2,2,1323}, + {2522,1030,324,1264,628,1339,480,234,2351,1085,1979,2333,1339,1356,1356,2286,2,2,2,2,2,2,2,2,2,2,2,2,2530,2,2,2}, + {2519,1136,612,209,994,1179,1060,2621,130,485,661,1444,2122,124,258,1114,2,2,806,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2524,1894,253,2072,1242,355,888,1362,28,480,452,1216,595,545,354,1145,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2569,1356,1053,410,437,58,1508,831,2272,383,1725,615,1191,1191,1191,2493,186,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2386,1106,709,251,784,929,1551,2481,304,2148,1546,955,2453,866,866,2,2,2264,2264,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2228,1163,1995,649,1000,680,325,1591,774,767,711,711,1418,524,711,401,976,2,2,2,2,2005,2005,2,2,2,2,2,2,1390,1390,2}, + {2362,1706,564,1088,1296,1267,70,1015,496,1298,758,154,240,240,154,154,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1715,2260,357,557,783,1195,2288,1997,1120,144,247,175,1277,203,203,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2294,2360,1353,748,1439,226,940,2316,1112,1527,214,1406,1429,712,1124,2,595,595,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2303,1018,316,280,1616,909,97,1126,1295,736,216,54,2045,726,1673,2,2,2,2,2,779,779,2,2,2,2,2,2,2,2,2,2}, + {2390,491,1217,1148,2314,2250,2180,308,613,662,1346,1346,1346,1280,778,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1732,527,1303,664,71,294,404,917,1074,180,2618,2412,441,1987,1750,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1695,1287,1346,1181,1412,1653,830,2025,957,1720,1614,887,964,964,964,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1756,2308,1986,101,957,633,1940,1002,390,1237,95,1441,95,95,705,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2461,1412,540,1183,229,300,47,585,518,402,1863,1863,560,1326,1326,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1707,717,366,287,1883,50,599,1371,474,1551,947,2142,1885,947,2008,1004,1004,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2632,567,1149,1227,1156,2052,643,1585,1197,581,63,718,699,149,149,1940,2,2,2,2,2,2,2,2,2,2,2,2146,2,2,2,2}, + {1773,2024,377,340,1938,103,1180,600,199,848,2449,2449,506,506,762,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2435,1920,394,1482,266,1637,911,1697,1689,1249,1085,1085,397,2292,1355,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2345,662,270,324,1061,1080,1952,593,1480,2111,2667,2093,2059,2120,955,1447,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1777,455,1487,1190,455,1542,977,2308,437,1129,410,856,1420,412,412,766,2,2034,2034,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2662,2224,1142,656,59,598,730,458,226,1151,741,1286,1015,2,688,2017,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2666,768,529,990,2329,130,1678,2466,318,1083,387,1524,511,2,731,731,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2501,1216,246,1278,718,704,2019,88,273,1203,67,1488,1828,2,2,1489,1489,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2474,2292,1818,2061,2833,751,2172,1708,1210,1675,370,131,163,2,2,163,163,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1751,1575,889,828,82,1956,712,499,1420,1686,339,2326,2035,2,2,558,558,2,1234,2,2,2,2,2,2,2,2,2,2,2,1239,1239}, + {2522,1148,1943,168,218,252,543,1535,2004,130,353,353,42,2,2,2,1173,1173,2,1547,2,2,2,2,2,2,2,1547,1173,1547,1547,2}, + {2695,432,1213,579,865,1637,1857,84,447,155,2492,347,1980,2,2,2,1155,1155,1155,2,1933,1933,1933,2,2,2,2,2,2,2,1901,1901}, + {1808,1683,474,1761,106,602,1416,217,1351,1602,366,393,1966,2,2,2,2,2,378,378,606,606,606,2,2,2,2,2,919,919,919,919}, + {2428,1576,1692,449,2012,240,1167,418,272,1557,2197,645,645,2,2,2,2,2,2150,2150,2,2,562,715,2,2,2,81,81,2,2,2}, + {2727,781,1689,1709,997,2563,1032,468,44,992,1214,725,75,2,2,2,2,360,360,380,2,2,2,2,2,2,2,2,2,2,2,2}, + {1948,1085,1344,2090,1435,2389,3193,1007,1003,244,667,1838,2062,2,2,2,1802,299,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2433,932,689,818,2014,1498,749,1645,867,1627,47,1766,2193,2,2,2030,2030,2,430,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2463,712,1525,2092,2942,352,761,242,2178,2339,483,1905,1347,2,2,65,529,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2547,920,386,925,74,579,323,2319,520,2332,1535,751,1591,2,770,770,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2452,2588,2055,665,818,2622,413,1260,965,211,989,1219,166,2,1251,1251,2,1256,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1957,2311,993,276,293,2826,1087,880,927,1811,1122,2974,2974,2,2,590,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2552,998,533,827,1619,831,1861,918,750,1955,241,1899,448,2151,2151,449,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1860,579,1000,1575,898,170,185,1032,293,2754,438,459,459,2,1199,1199,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2602,2417,1888,2528,1410,669,1543,233,814,2478,225,1449,1449,224,1671,1671,2,2,931,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1889,2527,1366,1371,387,925,1751,162,250,1064,292,467,467,546,1244,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2492,1186,1350,1616,2749,1962,33,708,279,813,1390,489,1203,268,173,2410,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2500,1575,423,541,561,380,262,1564,1923,1242,2084,1758,1283,2213,924,924,2,2,2,2,2,2,2,2,2,2,2,1827,1827,2,2,2}, + {1842,1736,489,743,1539,1681,683,1412,1418,312,2778,2778,1975,1975,803,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2824,1183,2201,278,241,2230,1591,1648,1036,818,1321,1312,754,813,813,813,813,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1900,2506,952,1059,163,870,681,1235,1271,1188,2071,1705,1183,648,404,2,2,2,2,2,2,2,2,2236,2236,2,2,2,2,2,2,2}, + {2662,1443,2327,132,490,1149,1572,744,429,621,1763,2383,1903,1246,964,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2673,2182,1307,1776,1233,1828,1828,340,249,216,503,160,160,582,926,2129,2129,2129,2129,2129,2129,2129,2129,2129,2129,2129,2129,2,1018,1018,1103,1103}, + {2042,620,1074,2057,2758,859,815,1127,766,1693,252,808,981,416,416,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2102,881,2170,1673,705,101,58,1712,1568,214,758,488,1007,269,243,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2692,2665,961,1478,324,429,1311,376,1648,130,2083,1047,409,343,343,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2122,1087,563,1669,647,2996,151,2458,250,310,71,1348,355,965,2815,1333,1333,2,2,2,2,2218,2,2,2,2,2,2,2,2,2,2}, + {1952,1968,2260,2945,2464,1055,2626,570,1316,1828,1828,970,970,221,220,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2072,1947,1779,254,2822,1552,855,804,3452,202,695,82,684,208,1270,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1947,1699,1341,486,1765,1960,264,899,1082,1674,987,1878,930,1008,930,930,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1953,1527,1643,591,1517,2427,1232,1555,2542,495,675,2534,2534,3106,83,3106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2744,1728,2213,792,761,1667,1908,31,447,442,815,2865,762,762,762,762,2,2,2,2,2,2,2,2,2,2,2,2,649,649,649,2}, + {2722,1406,1257,807,2191,3017,1330,1023,602,2124,794,530,733,733,1083,2528,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {1963,1525,437,398,609,393,2420,3059,435,1251,1977,1672,450,1960,1954,1960,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2626,2468,2838,845,2060,218,1080,912,911,1973,1365,920,1316,1316,2,1316,1316,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2734,1727,1743,1026,809,1154,779,244,1238,1616,812,784,825,1810,1810,1810,1810,1559,1559,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2180,2262,1651,204,3193,2121,2725,1016,629,1834,603,2848,26,26,728,728,728,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2648,1328,2578,133,1377,105,2485,2139,323,1045,145,761,1201,1848,2,814,814,814,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2999,358,250,1379,102,2349,1491,2074,42,376,2811,1220,296,296,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2810,1274,499,742,1724,425,190,1561,1302,2603,2255,917,661,661,2,2,2,495,2,2,2,2,2,2,2,2,2,2575,2,2,2,2}, + {2150,589,876,1616,2655,432,902,1028,433,1375,574,1400,1400,1400,2,2,2,2,2,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529,1529}, + {1665,1856,201,824,796,249,1217,590,1375,1175,1599,824,824,3319,2,2,2,601,1961,1961,2,2,2,1961,2,2,2,2,2,2,1961,2}, + {2704,2239,1260,140,2161,2781,1840,574,2353,343,3218,61,2108,2038,1873,2,1833,1408,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2173,876,802,2197,3338,176,1783,224,1763,1160,1264,1264,2864,554,2,552,552,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2708,1663,2279,824,836,1598,2101,1620,1202,1606,1368,1079,1167,1999,2848,2848,2848,1101,1101,1101,2,2,2,662,2,2,2,2272,2,2,2,2}, + {1987,1463,2328,1890,1443,2086,283,2895,522,1577,1514,1657,2605,891,2,1181,1181,2,2,2121,2,2,2,2,2,2,2,2,2,2,2,2}, + {2173,1637,1139,905,1802,1378,296,439,1507,1017,1427,209,708,462,1508,1508,1508,2,2,2,2,2,2,2,2,2,2,2240,2240,1459,1459,1459}, + {2206,1526,628,2877,802,2587,1253,1258,1044,2195,3246,40,2898,2898,1704,598,2,2145,2,2,2,2145,2,2,2,2,2,2,2,2,2,2}, + {2182,618,1022,1433,1138,1580,2590,149,796,2090,743,294,294,1117,720,3003,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2025,1805,1466,1213,2006,1903,568,1700,1355,865,1783,1006,1006,1070,1070,268,2,2,2,2,2388,2388,845,845,845,2,2,2,2,2,2,2}, + {2185,1038,3050,1461,2270,2159,958,1637,233,2483,525,987,437,437,437,3065,2,2,2160,2160,2,2,2,2,2,2,2,2,2,2,2160,2160}, + {2083,1465,847,1450,502,447,2168,794,1761,1324,162,188,2853,2853,636,973,2,563,2,2,2,2,2,2,2,2089,2089,2089,2089,2089,2,2}, + {2923,2303,203,508,472,648,3169,269,515,3147,2415,1700,1700,1700,1461,1461,1461,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2300,1116,1555,2794,1095,998,1999,894,963,753,324,2130,2675,2675,554,2045,2,2,2,2,2,2,2,2130,2130,2130,2,2,2,2,2,2}, + {2103,768,702,1548,1486,2228,2846,861,665,1497,1046,1046,2252,394,394,1901,1155,2,2,2,2,2,2,2,2,2,2,2,192,192,192,192}, + {2923,640,661,2179,1207,182,872,171,738,269,1372,222,908,2069,2069,2,1550,516,2,2,2,2,2,2,2,2,2,2,1109,2,2,2}, + {2833,2005,387,733,562,468,317,224,94,478,1606,2522,1606,2001,1087,2,2,1087,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2125,2479,1749,1226,1169,1681,459,652,1087,2211,1613,686,2213,1689,2446,2,2,2925,2925,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2953,1059,205,3093,138,132,2148,1345,1499,216,151,1296,2446,1610,1632,2,2,2,2,4,4,2,2,2,987,987,2,2,2,2,2,2}, + {3199,1431,593,2050,2785,507,1540,1103,1740,459,62,1766,1781,1121,1600,2,1600,1600,125,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2258,1714,415,373,1919,2605,693,827,1918,496,1479,1903,86,1083,415,2,2,38,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3289,2032,329,2169,2323,1599,517,1704,1847,804,632,40,40,40,40,40,40,40,40,2,2,1600,2,2,1600,2,2,2,2,2,2,2}, + {2165,2725,2293,368,705,3063,494,103,12,1332,175,2331,3144,2165,1709,1709,2090,2,2,2,2,1363,1363,2,566,2,2,2,2,2,2,2}, + {2300,1070,2169,2540,734,1002,912,1386,2215,224,1285,880,2052,2052,1301,959,563,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3267,1852,1037,648,611,1250,432,853,1467,179,715,2,2033,841,2607,2607,2607,2607,2,2,2,2,1874,1874,2,1874,899,2,2,2,2,2}, + {2348,2565,794,859,1740,1596,532,462,457,1014,1227,2,2761,954,249,249,2,458,458,2,2,2,2,2,909,909,2,2,2,2,2,2}, + {3038,2399,1450,1276,1222,727,552,646,1055,2351,686,63,252,504,3166,1802,2,2,1165,1165,1165,2,2,2,2,1165,1165,1165,2,2,1165,2}, + {3038,2519,1494,107,2597,802,535,1669,1695,1928,1940,1580,1580,85,2274,1551,2,2,2431,560,560,560,2,2,1098,2,2,2,2,2,2,2}, + {3040,1044,1927,1952,1479,3124,1373,1990,588,2550,1277,2,629,2671,1842,2712,840,1702,2,1669,2,1347,2,2,2,2,1669,1669,1669,1669,2,1669}, + {3056,1567,691,1243,653,751,248,842,1954,480,458,2,2,2451,934,3172,3556,2259,2312,2,2562,2562,2,2,2562,2562,2562,2562,2562,2,2,2}, + {2959,2553,1333,877,2492,3169,2498,686,2030,2820,3233,1313,1313,1471,1471,1471,1471,2,2,1471,1471,2,2,1481,2,1887,2,2,2,2,2,2}, + {3398,964,862,301,1705,2002,310,644,144,1091,1507,2,2,2460,496,496,2517,2517,1842,2,2,1964,2,2,2,2,2,1676,2,2,2,2}, + {2379,3034,166,302,2108,1078,2976,68,158,134,1567,2,2,1514,1514,1514,1883,1883,2,2,1883,1883,1883,1883,1883,1883,1883,1883,1883,2,2,2}, + {2386,1270,1204,1032,1474,224,496,2296,1536,1219,311,2,2,2,2,1238,2108,2108,2108,2108,2108,2108,2108,2108,1444,1444,1444,1444,1444,1444,1444,2}, + {2431,739,2488,1386,1632,2107,2602,2139,1751,349,3147,2,2,64,16,8,32,4,4,32,728,728,728,728,2,2,64,16,8,180,180,180}, + {3405,2142,1621,110,2112,2097,807,740,747,282,372,2,2,2,2,2493,2493,2493,1299,2,132,1872,2,1843,2,2,2,2,2,2,2,2}, + {3157,1230,685,1513,663,1335,2100,1441,1826,1670,1539,2,2,2,2899,2899,1378,54,2,46,46,2,2,1362,1362,2,2,2,2,2,2,2}, + {2415,822,3658,449,1980,891,129,823,1787,621,514,2668,2668,2668,2668,2668,666,269,2830,2,2,2,2,241,370,370,370,370,2,2,2,2}, + {2463,2664,2825,1208,882,629,428,428,356,343,1730,2,769,769,769,1714,769,2,2,955,769,2,2,955,955,955,2,2,2,955,955,955}, + {2447,1588,1077,831,1413,2362,1499,1812,1112,815,129,1034,1034,1867,194,518,1454,723,723,1251,2,160,2,2,1251,1251,2,2,2,2,2,2}, + {3094,1638,1514,843,1503,1884,1481,727,723,1319,226,2,676,2401,1699,562,639,639,1176,2,2,2,2,824,2,2,2,2,2,2,2,2}, + {3125,2004,547,2986,2919,471,948,1747,201,1862,802,2,1238,1277,1277,1277,2,2,1245,1245,1245,2,2,2743,1245,1245,2,2,2,2,2,2}, + {2582,2469,533,1726,1575,1505,2448,2031,1257,427,588,1633,202,3553,1938,672,195,195,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2378,636,1958,1628,1255,2285,2208,1626,719,2944,1086,1436,1436,1719,2111,655,2637,2637,2,2,2,2637,2637,2,2637,2637,2637,2637,2637,2,2637,2637}, + {2372,3079,2161,515,368,847,955,1257,1937,315,2666,1938,1723,1252,1252,362,362,2,2205,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2518,2060,1055,362,1455,1899,1105,1560,2237,2451,2080,181,2346,181,1829,1829,1829,2,2,1509,1509,1509,2,1509,2,2,2,2,2,2,2,2}, + {3580,1671,674,1838,814,1409,323,3021,1047,2579,2579,2968,2968,102,2656,2638,2638,4006,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3194,1576,1084,859,2879,1600,953,1429,471,867,1105,1490,293,293,293,2,2,198,2619,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3215,2004,3333,2271,3283,1660,2135,1696,1413,1362,834,253,253,253,3802,2,2,2,1881,690,690,2,2,2,1881,1881,1881,1881,1881,2,1881,1881}, + {3719,2441,2094,1665,1707,1827,1310,230,1635,143,386,1029,1070,1062,1062,2,1062,1062,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3249,1309,1232,472,711,2557,1479,1027,145,489,1377,2928,2928,3522,3522,3522,968,415,415,2,2,2,2,1332,1332,1332,2,1332,2891,2,1332,2891}, + {2462,1962,257,2244,1966,1905,204,262,799,319,752,1696,971,971,3781,1426,1426,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3434,3131,1399,3413,1533,281,3288,1242,810,135,2506,2506,1742,946,1015,1044,1044,1044,2,2,2,2,1044,1837,1837,1837,1837,1837,2,2,2,2}, + {2518,1200,631,596,1946,365,2960,413,592,3878,242,2714,2364,1402,1402,2322,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3362,2012,1759,2002,1365,150,3120,471,1590,3246,1296,196,196,196,2984,2323,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {3382,899,3140,2860,1155,1840,2822,355,1753,1856,1018,822,52,52,52,1102,1102,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2728,1334,274,1330,2674,2614,931,2250,883,1506,2193,1345,1089,500,2,219,390,2,2,2,2,2,2,2,390,2,2,2,2,2,2,2}, + {3911,3343,202,675,1733,71,166,176,1323,2864,899,2155,1108,2172,2,2,1829,2172,1107,2,2,2,2,1107,1107,1107,2,2,2,1107,2,2}, + {2757,3466,1411,1168,340,2760,1053,524,53,2090,1227,26,260,830,2,2,2,1139,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2662,902,2371,1920,1097,1476,1008,1012,3556,468,3374,2560,591,1446,2,298,298,149,149,149,149,149,3135,3135,3135,3135,3135,2,2,2,2,2}, + {2861,1407,1848,245,2186,1209,164,2577,625,132,657,2333,2333,2213,2213,2213,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} +}; diff --git a/Cuba/src/divonne/Rule.c b/Cuba/src/divonne/Rule.c new file mode 100644 index 0000000..813b918 --- /dev/null +++ b/Cuba/src/divonne/Rule.c @@ -0,0 +1,711 @@ +/* + Rule.c + integration with cubature rules + code lifted with minor modifications from DCUHRE + by J. Berntsen, T. Espelid, and A. Genz + this file is part of Divonne + last modified 7 May 15 th +*/ + + +static void Rule13Alloc(This *t) +{ + static creal w[][nrules] = { + { .00844923090033615, .3213775489050763, .3372900883288987, + -.8264123822525677, .6539094339575232 }, + { .023771474018994404, -.1767341636743844, -.1644903060344491, + .306583861409436, -.2041614154424632}, + { .02940016170142405, .07347600537466073, .07707849911634623, + .002389292538329435, -.174698151579499 }, + { .006644436465817374, -.03638022004364754, -.03804478358506311, + -.1343024157997222, .03937939671417803 }, + { .0042536044255016, .021252979220987123, .02223559940380806, + .08833366840533902, .006974520545933992 }, + { 0, .1460984204026913, .1480693879765931, + 0, 0 }, + { .0040664827465935255, .017476132861520992, 4.467143702185815e-6, + .0009786283074168292, .0066677021717782585 }, + { .03362231646315497, .1444954045641582, .150894476707413, + -.1319227889147519, .05512960621544304 }, + { .033200804136503725, .0001307687976001325, 3.6472001075162155e-5, + .00799001220015063, .05443846381278608 }, + { .014093686924979677, .0005380992313941161, .000577719899901388, + .0033917470797606257, .02310903863953934 }, + { .000977069770327625, .0001042259576889814, .0001041757313688177, + .0022949157182832643, .01506937747477189 }, + { .007531996943580376, -.001401152865045733, -.001452822267047819, + -.01358584986119197, -.060570216489018905 }, + { .02577183086722915, .008041788181514763, .008338339968783704, + .04025866859057809, .04225737654686337}, + { .015625, -.1420416552759383, -.147279632923196, + .003760268580063992, .02561989142123099 } + }; + + static creal g[] = { + .12585646717265545, .3506966822267133, + .4795480315809981, .4978005239276064, + .25, .07972723291487795, + .1904495567970094, .3291384627633596, + .43807365825146577, .499121592026599, + .4895111329084231, .32461421628226944, + .43637106005656195, .1791307322940614, + .2833333333333333, .1038888888888889 }; + + enum { nsets = 14, ndim = 2 }; + + count n, r; + Set *first, *last, *s, *x; + csize_t setsize = SetSize; + + Die(first = calloc(nsets, setsize)); + + last = first; + n = last->n = 1; + Copy(last->weight, w[0], nrules); + + NextSet(last); + n += last->n = 2*ndim; + Copy(last->weight, w[1], nrules); + last->gen[0] = g[0]; + + NextSet(last); + n += last->n = 2*ndim; + Copy(last->weight, w[2], nrules); + last->gen[0] = g[1]; + + NextSet(last); + n += last->n = 2*ndim; + Copy(last->weight, w[3], nrules); + last->gen[0] = g[2]; + + NextSet(last); + n += last->n = 2*ndim; + Copy(last->weight, w[4], nrules); + last->gen[0] = g[3]; + + NextSet(last); + n += last->n = 2*ndim; + Copy(last->weight, w[5], nrules); + last->gen[0] = g[4]; + + NextSet(last); + n += last->n = 2*ndim*(ndim - 1); + Copy(last->weight, w[6], nrules); + last->gen[0] = g[5]; + last->gen[1] = g[5]; + + NextSet(last); + n += last->n = 2*ndim*(ndim - 1); + Copy(last->weight, w[7], nrules); + last->gen[0] = g[6]; + last->gen[1] = g[6]; + + NextSet(last); + n += last->n = 2*ndim*(ndim - 1); + Copy(last->weight, w[8], nrules); + last->gen[0] = g[7]; + last->gen[1] = g[7]; + + NextSet(last); + n += last->n = 2*ndim*(ndim - 1); + Copy(last->weight, w[9], nrules); + last->gen[0] = g[8]; + last->gen[1] = g[8]; + + NextSet(last); + n += last->n = 2*ndim*(ndim - 1); + Copy(last->weight, w[10], nrules); + last->gen[0] = g[9]; + last->gen[1] = g[9]; + + NextSet(last); + n += last->n = 4*ndim*(ndim - 1); + Copy(last->weight, w[11], nrules); + last->gen[0] = g[10]; + last->gen[1] = g[11]; + + NextSet(last); + n += last->n = 4*ndim*(ndim - 1); + Copy(last->weight, w[12], nrules); + last->gen[0] = g[12]; + last->gen[1] = g[13]; + + NextSet(last); + n += last->n = 4*ndim*(ndim - 1); + Copy(last->weight, w[13], nrules); + last->gen[0] = g[14]; + last->gen[1] = g[15]; + + t->rule13.first = first; + t->rule13.last = last; + t->rule13.errcoeff[0] = 10; + t->rule13.errcoeff[1] = 1; + t->rule13.errcoeff[2] = 5; + t->rule13.n = n; + + for( s = first; s <= last; NextSet(s) ) + for( r = 1; r < nrules - 1; ++r ) { + creal scale = (s->weight[r] == 0) ? 100 : + -s->weight[r + 1]/s->weight[r]; + real sum = 0; + for( x = first; x <= last; NextSet(x) ) + sum += x->n*fabsx(x->weight[r + 1] + scale*x->weight[r]); + s->scale[r] = scale; + s->norm[r] = 1/sum; + } +} + +/*********************************************************************/ + +static void Rule11Alloc(This *t) +{ + static creal w[][nrules] = { + { .0009903847688882167, 1.715006248224684, 1.936014978949526, + .517082819560576, 2.05440450381852 }, + { .0084964717409851, -.3755893815889209, -.3673449403754268, + .01445269144914044, .013777599884901202 }, + { .00013587331735072814, .1488632145140549, .02929778657898176, + -.3601489663995932, -.576806291790441 }, + { .022982920777660364, -.2497046640620823, -.1151883520260315, + .3628307003418485, .03726835047700328 }, + { .004202649722286289, .1792501419135204, .05086658220872218, + .007148802650872729, .0068148789397772195 }, + { .0012671889041675774, .0034461267589738897, .04453911087786469, + -.09222852896022966, .057231697338518496 }, + { .0002109560854981544, -.005140483185555825, -.022878282571259, + .01719339732471725, -.044930187438112855 }, + { .016830857056410086, .006536017839876424, .02908926216345833, + -.102141653746035, .027292365738663484 }, + { .00021876823557504823, -.00065134549392297, -.002898884350669207, + -.007504397861080493, .000354747395055699 }, + { .009690420479796819, -.006304672433547204, -.028059634133074954, + .01648362537726711, .01571366799739551 }, + { .030773311284628138, .01266959399788263, .05638741361145884, + .05234610158469334, .049900992192785674 }, + { .0084974310856038, -.005454241018647931, -.02427469611942451, + .014454323316130661, .0137791555266677 }, + { .0017749535291258914, .004826995274768427, .021483070341828822, + .003019236275367777, .0028782064230998723 } + }; + + static creal g[] = { + .095, .25, + .375, .4, + .4975, .49936724991757, + .38968518428362114, .49998494965443835, + .3951318612385894, .22016983438253684, + .4774686911397297, .2189239229503431, + .4830546566815374, .2288552938881567 }; + + enum { nsets = 13, ndim = 3 }; + + count n, r; + Set *first, *last, *s, *x; + csize_t setsize = SetSize; + + Die(first = calloc(nsets, setsize)); + + last = first; + n = last->n = 1; + Copy(last->weight, w[0], nrules); + + NextSet(last); + n += last->n = 2*ndim; + Copy(last->weight, w[1], nrules); + last->gen[0] = g[0]; + + NextSet(last); + n += last->n = 2*ndim; + Copy(last->weight, w[2], nrules); + last->gen[0] = g[1]; + + NextSet(last); + n += last->n = 2*ndim; + Copy(last->weight, w[3], nrules); + last->gen[0] = g[2]; + + NextSet(last); + n += last->n = 2*ndim; + Copy(last->weight, w[4], nrules); + last->gen[0] = g[3]; + + NextSet(last); + n += last->n = 2*ndim; + Copy(last->weight, w[5], nrules); + last->gen[0] = g[4]; + + NextSet(last); + n += last->n = 2*ndim*(ndim - 1); + Copy(last->weight, w[6], nrules); + last->gen[0] = g[5]; + last->gen[1] = g[5]; + + NextSet(last); + n += last->n = 2*ndim*(ndim - 1); + Copy(last->weight, w[7], nrules); + last->gen[0] = g[6]; + last->gen[1] = g[6]; + + NextSet(last); + n += last->n = 4*ndim*(ndim - 1)*(ndim - 2)/3; + Copy(last->weight, w[8], nrules); + last->gen[0] = g[7]; + last->gen[1] = g[7]; + last->gen[2] = g[7]; + + NextSet(last); + n += last->n = 4*ndim*(ndim - 1)*(ndim - 2)/3; + Copy(last->weight, w[9], nrules); + last->gen[0] = g[8]; + last->gen[1] = g[8]; + last->gen[2] = g[8]; + + NextSet(last); + n += last->n = 4*ndim*(ndim - 1)*(ndim - 2)/3; + Copy(last->weight, w[10], nrules); + last->gen[0] = g[9]; + last->gen[1] = g[9]; + last->gen[2] = g[9]; + + NextSet(last); + n += last->n = 4*ndim*(ndim - 1)*(ndim - 2); + Copy(last->weight, w[11], nrules); + last->gen[0] = g[10]; + last->gen[1] = g[11]; + last->gen[2] = g[11]; + + NextSet(last); + n += last->n = 4*ndim*(ndim - 1)*(ndim - 2); + Copy(last->weight, w[12], nrules); + last->gen[0] = g[12]; + last->gen[1] = g[12]; + last->gen[2] = g[13]; + + t->rule11.first = first; + t->rule11.last = last; + t->rule11.errcoeff[0] = 4; + t->rule11.errcoeff[1] = .5; + t->rule11.errcoeff[2] = 3; + t->rule11.n = n; + + for( s = first; s <= last; NextSet(s) ) + for( r = 1; r < nrules - 1; ++r ) { + creal scale = (s->weight[r] == 0) ? 100 : + -s->weight[r + 1]/s->weight[r]; + real sum = 0; + for( x = first; x <= last; NextSet(x) ) + sum += x->n*fabsx(x->weight[r + 1] + scale*x->weight[r]); + s->scale[r] = scale; + s->norm[r] = 1/sum; + } +} + +/*********************************************************************/ + +static void Rule9Alloc(This *t) +{ + static creal w[] = { + RC(-.002361170967785511788400941242259231309691), + RC(.1141539002385732526821323741697655347686), + RC(-.6383392007670238909386026193674701393074), + RC(.7484998850468520800423030047583803945205), + RC(-.001432401703339912514196154599769007103671), + RC(.05747150786448972594860897296200006759892), + RC(-.1422510457143424323449521620935950679394), + RC(-.06287502873828697998942424881040490136987), + RC(.2545911332489590890011611142429070613156), + RC(-1.207328566678236261002219995185143356737), + RC(.8956736576416067650809467826488567200939), + RC(-.3647935698604914666100134551377381205297), + RC(.003541756451678267682601411863388846964536), + RC(-.07260936739589367960492815865074633743652), + RC(.1055749162521899101218622863269817454540), + RC(.002148602555009868771294231899653510655506), + RC(-.03226856389295394999786630399875134318006), + RC(.01063678399023121748083624225818915724455), + RC(.01468910249614349017540783437728097691502), + RC(.5113470834646759143109387357149329909126), + RC(.4597644812080634464633352781605214342691), + RC(.1823967849302457333050067275688690602649), + RC(-.04508628929435784075980562738240804429658), + RC(.2141588352435279340097929526588394300172), + RC(-.02735154652654564472203690086290223507436), + RC(.05494106704871123410060080562462135546101), + RC(.1193759620257077529708962121565290178730), + RC(.6508951939192025059314756320878023215278), + RC(.1474493982943446016775696826942585013243), + RC(.05769338449097348357291272840392627722165), + RC(.03499962660214358382244159694487155861542), + RC(-1.386862771927828143599782668709014266770), + RC(-.2386668732575008878964134721962088068396), + RC(.01553241727660705326386197156586357005224), + RC(.003532809960709087023561817517751309380604), + RC(.09231719987444221619017126187763868745587), + RC(.02254314464717892037990281369120402214829), + RC(.01367577326327282236101845043145111753718), + RC(-.3254475969596012529657378160439011607639), + RC(.001770878225839133841300705931694423482268), + RC(.001074301277504934385647115949826755327753), + RC(.2515001149531479199576969952416196054795) }; + + static creal g[] = { + RC(.4779536579022695061928604197171830064732), + RC(.2030285873691198677998034402373279133258), + RC(.4476273546261781288207704806530998539285), + RC(.125), + RC(.3430378987808781457001426145164678603407) }; + + enum { nsets = 9 }; + + ccount ndim = t->ndim; + ccount twondim = 1 << ndim; + count dim, n, r; + Set *first, *last, *s, *x; + csize_t setsize = SetSize; + + Die(first = calloc(nsets, setsize)); + + last = first; + n = last->n = 1; + last->weight[0] = ndim*(ndim*(ndim*w[0] + w[1]) + w[2]) + w[3]; + last->weight[1] = ndim*(ndim*(ndim*w[4] + w[5]) + w[6]) - w[7]; + last->weight[2] = ndim*w[8] - last->weight[1]; + last->weight[3] = ndim*(ndim*w[9] + w[10]) - 1 + last->weight[0]; + last->weight[4] = ndim*w[11] + 1 - last->weight[0]; + + NextSet(last); + n += last->n = 2*ndim; + last->weight[0] = ndim*(ndim*w[12] + w[13]) + w[14]; + last->weight[1] = ndim*(ndim*w[15] + w[16]) + w[17]; + last->weight[2] = w[18] - last->weight[1]; + last->weight[3] = ndim*w[19] + w[20] + last->weight[0]; + last->weight[4] = w[21] - last->weight[0]; + last->gen[0] = g[0]; + + NextSet(last); + n += last->n = 2*ndim; + last->weight[0] = ndim*w[22] + w[23]; + last->weight[1] = ndim*w[24] + w[25]; + last->weight[2] = w[26] - last->weight[1]; + last->weight[3] = ndim*w[27] + w[28]; + last->weight[4] = -last->weight[0]; + last->gen[0] = g[1]; + + NextSet(last); + n += last->n = 2*ndim; + last->weight[0] = w[29]; + last->weight[1] = w[30]; + last->weight[2] = -w[29]; + last->weight[3] = w[31]; + last->weight[4] = -w[29]; + last->gen[0] = g[2]; + + NextSet(last); + n += last->n = 2*ndim; + last->weight[2] = w[32]; + last->gen[0] = g[3]; + + NextSet(last); + n += last->n = 2*ndim*(ndim - 1); + last->weight[0] = w[33] - ndim*w[12]; + last->weight[1] = w[34] - ndim*w[15]; + last->weight[2] = -last->weight[1]; + last->weight[3] = w[35] + last->weight[0]; + last->weight[4] = -last->weight[0]; + last->gen[0] = g[0]; + last->gen[1] = g[0]; + + NextSet(last); + n += last->n = 4*ndim*(ndim - 1); + last->weight[0] = w[36]; + last->weight[1] = w[37]; + last->weight[2] = -w[37]; + last->weight[3] = w[38]; + last->weight[4] = -w[36]; + last->gen[0] = g[0]; + last->gen[1] = g[1]; + + NextSet(last); + n += last->n = 4*ndim*(ndim - 1)*(ndim - 2)/3; + last->weight[0] = w[39]; + last->weight[1] = w[40]; + last->weight[2] = -w[40]; + last->weight[3] = w[39]; + last->weight[4] = -w[39]; + last->gen[0] = g[0]; + last->gen[1] = g[0]; + last->gen[2] = g[0]; + + NextSet(last); + n += last->n = twondim; + last->weight[0] = w[41]/twondim; + last->weight[1] = w[7]/twondim; + last->weight[2] = -last->weight[1]; + last->weight[3] = last->weight[0]; + last->weight[4] = -last->weight[0]; + for( dim = 0; dim < ndim; ++dim ) + last->gen[dim] = g[4]; + + t->rule9.first = first; + t->rule9.last = last; + t->rule9.errcoeff[0] = 5; + t->rule9.errcoeff[1] = 1; + t->rule9.errcoeff[2] = 5; + t->rule9.n = n; + + for( s = first; s <= last; NextSet(s) ) + for( r = 1; r < nrules - 1; ++r ) { + creal scale = (s->weight[r] == 0) ? 100 : + -s->weight[r + 1]/s->weight[r]; + real sum = 0; + for( x = first; x <= last; NextSet(x) ) + sum += x->n*fabsx(x->weight[r + 1] + scale*x->weight[r]); + s->scale[r] = scale; + s->norm[r] = 1/sum; + } +} + +/*********************************************************************/ + +static void Rule7Alloc(This *t) +{ + static creal w[] = { + RC(.01941786667474838842844534313920462333850), + RC(-.4038525770115018254611834753723880293161), + RC(.6448566876746598222277360730193089551024), + RC(.01177982690775806141012214458820955067854), + RC(-.1804131874073360901182293138710989490609), + RC(-.08878582808133504444306598174517276122439), + RC(.05632864580828594137378124255408286479947), + RC(-.009708933337374194214222671569602311669249), + RC(-.9912917677958235813775106862002319060386), + RC(-.1775716561626700888861319634903455224488), + RC(.1235939803204323357183625846672135876752), + RC(.07497814870203369068087999555157339703666), + RC(.5548914705142355977605994477355651401434), + RC(.08804124152269277122645182458858273865209), + RC(.02111835845551338508329573367808085283304), + RC(-.009930220323965333308685820460105538586058), + RC(-.06410005328501090417895544042025034295870), + RC(.03038172903822100765927778829870429682489), + RC(.005889913453879030705061072294104775339268), + RC(-.004854466668687097107111335784801155834624), + RC(.3551433123253401777722639269806910448976) }; + + static creal g[] = { + RC(.4779536579022695061928604197171830064732), + RC(.2030285873691198677998034402373279133258), + RC(.375), + RC(.3430378987808781457001426145164678603407) }; + + enum { nsets = 6 }; + + ccount ndim = t->ndim; + ccount twondim = 1 << ndim; + count dim, n, r; + Set *first, *last, *s, *x; + csize_t setsize = SetSize; + + Die(first = calloc(nsets, setsize)); + + last = first; + n = last->n = 1; + last->weight[0] = ndim*(ndim*w[0] + w[1]) + w[2]; + last->weight[1] = ndim*(ndim*w[3] + w[4]) - w[5]; + last->weight[2] = ndim*w[6] - last->weight[1]; + last->weight[3] = ndim*(ndim*w[7] + w[8]) - w[9]; + last->weight[4] = 1 - last->weight[0]; + + NextSet(last); + n += last->n = 2*ndim; + last->weight[0] = w[10]; + last->weight[1] = w[11]; + last->weight[2] = -w[10]; + last->weight[3] = w[12]; + last->weight[4] = -w[10]; + last->gen[0] = g[1]; + + NextSet(last); + n += last->n = 2*ndim; + last->weight[0] = w[13] - ndim*w[0]; + last->weight[1] = w[14] - ndim*w[3]; + last->weight[2] = w[15] - last->weight[1]; + last->weight[3] = w[16] - ndim*w[7]; + last->weight[4] = -last->weight[0]; + last->gen[0] = g[0]; + + NextSet(last); + n += last->n = 2*ndim; + last->weight[2] = w[17]; + last->gen[0] = g[2]; + + NextSet(last); + n += last->n = 2*ndim*(ndim - 1); + last->weight[0] = -w[7]; + last->weight[1] = w[18]; + last->weight[2] = -w[18]; + last->weight[3] = w[19]; + last->weight[4] = w[7]; + last->gen[0] = g[0]; + last->gen[1] = g[0]; + + NextSet(last); + n += last->n = twondim; + last->weight[0] = w[20]/twondim; + last->weight[1] = w[5]/twondim; + last->weight[2] = -last->weight[1]; + last->weight[3] = w[9]/twondim; + last->weight[4] = -last->weight[0]; + for( dim = 0; dim < ndim; ++dim ) + last->gen[dim] = g[3]; + + t->rule7.first = first; + t->rule7.last = last; + t->rule7.errcoeff[0] = 5; + t->rule7.errcoeff[1] = 1; + t->rule7.errcoeff[2] = 5; + t->rule7.n = n; + + for( s = first; s <= last; NextSet(s) ) + for( r = 1; r < nrules - 1; ++r ) { + creal scale = (s->weight[r] == 0) ? 100 : + -s->weight[r + 1]/s->weight[r]; + real sum = 0; + for( x = first; x <= last; NextSet(x) ) + sum += x->n*fabsx(x->weight[r + 1] + scale*x->weight[r]); + s->scale[r] = scale; + s->norm[r] = 1/sum; + } +} + +/*********************************************************************/ + +static inline void RuleAlloc(This *t) +{ + if( (t->ndim - 2) | (t->key1 - 13)*(t->key2 - 13)*(t->key3 - 13) ) + t->rule13.first = NULL; + else Rule13Alloc(t); + + if( (t->ndim - 3) | (t->key1 - 11)*(t->key2 - 11)*(t->key3 - 11) ) + t->rule11.first = NULL; + else Rule11Alloc(t); + + if( (t->key1 - 9)*(t->key2 - 9)*(t->key3 - 9) ) + t->rule9.first = NULL; + else Rule9Alloc(t); + + if( (t->key1 - 7)*(t->key2 - 7)*(t->key3 - 7) ) + t->rule7.first = NULL; + else Rule7Alloc(t); +} + +/*********************************************************************/ + +static inline void RuleFree(cThis *t) +{ + free(t->rule7.first); + free(t->rule9.first); + free(t->rule11.first); + free(t->rule13.first); +} + +/*********************************************************************/ + +static real *ExpandFS(cThis *t, cBounds *b, real *g, real *x) +{ + count dim, ndim = t->ndim; + +next: + /* Compute centrally symmetric sum for permutation of G */ + + for( dim = 0; dim < ndim; ++dim ) + *x++ = (.5 + g[dim])*b[dim].lower + (.5 - g[dim])*b[dim].upper; + + for( dim = 0; dim < ndim; ) { + g[dim] = -g[dim]; + if( g[dim++] < 0 ) goto next; + } + + /* Find next distinct permutation of G and loop back for next sum. + Permutations are generated in reverse lexicographic order. */ + + for( dim = 1; dim < ndim; ++dim ) { + creal gd = g[dim]; + if( g[dim - 1] > gd ) { + count i, j = dim, ix = dim, dx = dim - 1; + for( i = 0; i < --j; ++i ) { + creal tmp = g[i]; + g[i] = g[j]; + g[j] = tmp; + if( tmp <= gd ) --dx; + if( g[i] > gd ) ix = i; + } + if( g[dx] <= gd ) dx = ix; + g[dim] = g[dx]; + g[dx] = gd; + goto next; + } + } + + /* Restore original order to generators */ + + for( dim = 0; dim < --ndim; ++dim ) { + creal tmp = g[dim]; + g[dim] = g[ndim]; + g[ndim] = tmp; + } + + return x; +} + +/*********************************************************************/ + +static void SampleRule(This *t, ccount iregion) +{ + SAMPLERDEFS; + Set *first = samples->rule->first; + Set *last = samples->rule->last; + Set *s; + creal *errcoeff = samples->rule->errcoeff; + count comp, rul, sn; + csize_t setsize = SetSize; + + for( s = first; s <= last; NextSet(s) ) + if( s->n ) x = ExpandFS(t, b, s->gen, x); + + DoSample(t, n, samples->x, f); + + for( comp = 0; comp < t->ncomp; ++comp ) { + real sum[nrules]; + creal *f1 = f++; + + Zap(sum); + for( s = first; s <= last; NextSet(s) ) + for( sn = s->n; sn; --sn ) { + creal fun = *f1; + f1 += t->ncomp; + for( rul = 0; rul < nrules; ++rul ) + sum[rul] += fun*s->weight[rul]; + } + + /* Search for the null rule, in the linear space spanned by two + successive null rules in our sequence, which gives the greatest + error estimate among all normalized (1-norm) null rules in this + space. */ + + for( rul = 1; rul < nrules - 1; ++rul ) { + real maxerr = 0; + for( s = first; s <= last; NextSet(s) ) + maxerr = Max(maxerr, + fabsx(sum[rul + 1] + s->scale[rul]*sum[rul])*s->norm[rul]); + sum[rul] = maxerr; + } + + res[comp].avg = region->vol*sum[0]; + res[comp].err = region->vol*( + (errcoeff[0]*sum[1] <= sum[2] && errcoeff[0]*sum[2] <= sum[3]) ? + errcoeff[1]*sum[1] : + errcoeff[2]*Max(Max(sum[1], sum[2]), sum[3]) ); + } +} + diff --git a/Cuba/src/divonne/Sample.c b/Cuba/src/divonne/Sample.c new file mode 100644 index 0000000..113b6ae --- /dev/null +++ b/Cuba/src/divonne/Sample.c @@ -0,0 +1,269 @@ +/* + Sample.c + most of what is related to sampling + this file is part of Divonne + last modified 12 Mar 15 th +*/ + + +#define MARKMASK NUMBER_MAX +#define Marked(x) ((x) & ~MARKMASK) +#define Unmark(x) ((x) & MARKMASK) + +#define NWANTMAX NUMBER_MAX + +#define EXTRAPOLATE_EPS (.25*t->border.lower) +/*#define EXTRAPOLATE_EPS 0x1p-26*/ + +/*********************************************************************/ + +static inline void SamplesIni(Samples *samples) +{ + samples->x = NULL; + samples->n = 0; +} + +/*********************************************************************/ + +static inline bool SamplesIniQ(cSamples *samples) +{ + return samples->x == NULL; +} + +/*********************************************************************/ + +static inline void SamplesFree(cSamples *samples) +{ + free(samples->x); +} + +/*********************************************************************/ + +static void SampleSobol(This *t, ccount iregion) +{ + SAMPLERDEFS; + Vector(real, avg, NCOMP); + real norm; + number i; + count dim, comp; + + for( i = 0; i < n; ++i ) { + t->rng.getrandom(t, x); + for( dim = 0; dim < t->ndim; ++x, ++dim ) + *x = b[dim].lower + *x*(b[dim].upper - b[dim].lower); + } + + t->nrand += n; + + DoSample(t, n, samples->x, f); + + FCopy(avg, f); + f += t->ncomp; + for( i = 2; i < n; ++i ) + for( comp = 0; comp < t->ncomp; ++comp ) + avg[comp] += *f++; + + norm = region->vol/samples->neff; + for( comp = 0; comp < t->ncomp; ++comp ) { + res[comp].avg = norm*avg[comp]; + res[comp].err = 0; + } +} + +/*********************************************************************/ + +static void SampleKorobov(This *t, ccount iregion) +{ + SAMPLERDEFS; + real *xlast = x + t->ndim, *flast = f + t->ncomp; + Vector(real, avg, NCOMP); + real norm; + cnumber neff = samples->neff; + number nextra = 0, i; + real dist = 0; + count dim, comp; + + for( i = 1; i < n; ++i ) { + number c = i; + for( dim = 0; dim < t->ndim; ++dim ) { + creal dx = abs(2*c - neff)/(real)neff; + *xlast++ = b[dim].lower + dx*(b[dim].upper - b[dim].lower); + c = c*samples->coeff % neff; + } + } + + for( dim = 0; dim < t->ndim; ++dim ) { + creal dx = (x[dim] = b[dim].upper) - t->border.upper; + if( dx > 0 ) dist += Sq(dx); + } + + if( dist > 0 ) { + dist = sqrtx(dist)/EXTRAPOLATE_EPS; + for( dim = 0; dim < t->ndim; ++dim ) { + real x2 = x[dim], dx = x2 - t->border.upper; + if( dx > 0 ) { + x[dim] = t->border.upper; + x2 = t->border.upper - dx/dist; + } + xlast[dim] = x2; + } + nextra = 1; + } + + DoSample(t, n + nextra, x, f); + + FCopy(avg, flast); + flast += t->ncomp; + for( i = 2; i < n; ++i ) + for( comp = 0; comp < t->ncomp; ++comp ) + avg[comp] += *flast++; + + if( nextra ) { + for( comp = 0; comp < t->ncomp; ++comp ) + f[comp] += dist*(f[comp] - flast[comp]); + for( dim = 0; dim < t->ndim; ++dim ) + x[dim] = b[dim].upper; + } + + norm = region->vol/samples->neff; + for( comp = 0; comp < t->ncomp; ++comp ) { + res[comp].avg = norm*(avg[comp] + avg[comp] + f[comp]); + res[comp].err = 0; + } +} + +/*********************************************************************/ + +#define IsSobol(k) NegQ(k) +#define IsRule(k, d) (k == 9 || k == 7 || (k == 11 && d == 3) || (k == 13 && d == 2)) + +/* The following coding is used for key1, key2, key3: + 0 = for key1, key2: use default, + for key3: do nothing, + 1 = for key3: split region again, + 7 = degree-7 cubature rule, + 9 = degree-9 cubature rule, + 11 = degree-11 cubature rule (only in 3 dims), + 13 = degree-13 cubature rule (only in 2 dims), + -inf..-40 = absolute # of points, Sobol numbers, + -39..-1 = multiplicator, Sobol numbers, + 1..39 = multiplicator, Korobov numbers, + 40..inf = absolute # of points, Korobov numbers. */ + +static number SamplesLookup(This *t, Samples *samples, cint key, + cnumber nwant, cnumber nmax, number nmin) +{ + number n; + + if( key == 13 && t->ndim == 2 ) { + samples->rule = &t->rule13; + samples->n = n = nmin = t->rule13.n; + samples->sampler = SampleRule; + } + else if( key == 11 && t->ndim == 3 ) { + samples->rule = &t->rule11; + samples->n = n = nmin = t->rule11.n; + samples->sampler = SampleRule; + } + else if( key == 9 ) { + samples->rule = &t->rule9; + samples->n = n = nmin = t->rule9.n; + samples->sampler = SampleRule; + } + else if( key == 7 ) { + samples->rule = &t->rule7; + samples->n = n = nmin = t->rule7.n; + samples->sampler = SampleRule; + } + else { + n = Abs1(key); + if( n < 40 ) n *= nwant; + samples->sampler = (key < 0) ? SampleSobol : + (n = n/2 + 1, SampleKorobov); + samples->n = IMin(n, nmax); + } + + samples->neff = samples->n; + + return IDim(n - nmax) | Marked(nmax - nmin); +} + +/*********************************************************************/ + +static void SamplesAlloc(cThis *t, Samples *samples) +{ +#define FIRST -INT_MAX +#define MarkLast(x) ((x) | 0x40000000) +#define UnmarkLast(x) ((x) & 0x3fffffff) + +#include "KorobovCoeff.c" + + number nx, nf; + + if( samples->sampler == SampleKorobov ) { + enum { max = Elements(prime) - 2 }; + cint n = IMin(2*samples->n - 1, MAXPRIME); + int i = Hash(n), p; + count shift = 2 + NegQ(n - 1000); + + while( i = IMin(IDim(i), max), + n > (p = prime[i + 1]) || n <= prime[i] ) { + cint d = (n - UnmarkLast(p)) >> ++shift; + i += Min1(d); + } + + samples->coeff = coeff[i][t->ndim - KOROBOV_MINDIM]; + samples->neff = p = UnmarkLast(p); + samples->n = p/2 + 1; + } + + nx = t->ndim*(samples->n + 1); /* need 1 for extrapolation */ + nf = t->ncomp*(samples->n + 1); + + Alloc(samples->x, nx + nf + t->ncomp + t->ncomp); + samples->f = samples->x + nx; +} + +/*********************************************************************/ + +static real Sample(This *t, creal *x0) +{ + Vector(real, xtmp, 2*NDIM); + Vector(real, ftmp, 2*NCOMP); + real *xlast = xtmp, f; + real dist = 0; + count dim, comp; + number n = 1; + + for( dim = 0; dim < t->ndim; ++dim ) { + creal x1 = *xlast++ = Min(Max(*x0++, 0.), 1.); + real dx; + if( (dx = x1 - t->border.lower) < 0 || + (dx = x1 - t->border.upper) > 0 ) dist += Sq(dx); + } + + if( dist > 0 ) { + dist = sqrtx(dist)/EXTRAPOLATE_EPS; + for( dim = 0; dim < t->ndim; ++dim ) { + real x2 = xtmp[dim], dx, b; + if( (dx = x2 - (b = t->border.lower)) < 0 || + (dx = x2 - (b = t->border.upper)) > 0 ) { + xtmp[dim] = b; + x2 = b - dx/dist; + } + *xlast++ = x2; + } + n = 2; + } + + DoSample(t, n, xtmp, ftmp); + +#define fin(x) Min(Max(x, -.5*INFTY), .5*INFTY) + + comp = Untag(t->selectedcomp); + f = fin(ftmp[comp]); + if( n > 1 ) f += dist*(f - fin(ftmp[comp + t->ncomp])); + + return Sign(t->selectedcomp)*f; +} + diff --git a/Cuba/src/divonne/Split.c b/Cuba/src/divonne/Split.c new file mode 100644 index 0000000..abffcbf --- /dev/null +++ b/Cuba/src/divonne/Split.c @@ -0,0 +1,312 @@ +/* + Split.c + determine optimal cuts for splitting a region + this file is part of Divonne + last modified 12 Mar 15 th +*/ + + +#define BNDTOL .05 +#define FRACT .5 +#define SMALL 1e-10 +#define SINGTOL 1e-4 + +#define LHSTOL .1 +#define GAMMATOL .1 + +/* the next four macros must be in sync with the typedef of Bounds! */ +#define Lower(d) (2*d) +#define Upper(d) (2*d + 1) +#define Dim(i) ((i) >> 1) +#define SignedDelta(i) (2*(i & 1) - 1)*delta[i] + +typedef struct { + count i; + real save, delta; + real f, df, fold; + real lhs, row, sol; +} Cut; + +/*********************************************************************/ + +static inline real Div(creal a, creal b) +{ + return (b != 0 /*&& fabsx(a) > SMALL*fabsx(b)*/) ? a/b : a; +} + +/*********************************************************************/ + +static void SomeCut(This *t, Cut *cut, Bounds *b) +{ + Vector(real, xmid, NDIM); + real ymid, maxdev; + count dim, maxdim; + static count nextdim = 0; + + for( dim = 0; dim < t->ndim; ++dim ) + xmid[dim] = .5*(b[dim].upper + b[dim].lower); + ymid = Sample(t, xmid); + + maxdev = 0; + maxdim = 0; + for( dim = 0; dim < t->ndim; ++dim ) { + real ylower, yupper, dev; + creal x = xmid[dim]; + xmid[dim] = b[dim].lower; + ylower = Sample(t, xmid); + xmid[dim] = b[dim].upper; + yupper = Sample(t, xmid); + xmid[dim] = x; + + dev = fabsx(ymid - .5*(ylower + yupper)); + if( dev >= maxdev ) { + maxdev = dev; + maxdim = dim; + } + } + + if( maxdev > 0 ) nextdim = 0; + else maxdim = nextdim++ % t->ndim; + + cut->i = Upper(maxdim); + cut->save = b[maxdim].upper; + b[maxdim].upper = xmid[maxdim]; +} + +/*********************************************************************/ + +static inline real Volume(cThis *t, creal *delta) +{ + real vol = 1; + count dim; + for( dim = 0; dim < t->ndim; ++dim ) + vol *= delta[Lower(dim)] + delta[Upper(dim)]; + return vol; +} + +/*********************************************************************/ + +static inline real SetupEqs(Cut *cut, ccount ncuts, real f) +{ + real sqsum = 0; + Cut *c = &cut[ncuts]; + while( --c >= cut ) { + sqsum += Sq(c->lhs = f - c->f); + f = c->f; + } + return sqsum; +} + +/*********************************************************************/ + +static inline void SolveEqs(Cut *cut, count ncuts, + creal *delta, creal diff) +{ + real last = 0; + real r = 1; + Cut *c; + + for( c = cut; ; ++c ) { + ccount dim = Dim(c->i); + c->row = r -= + Div(diff, (delta[Lower(dim)] + delta[Upper(dim)])*c->df); + if( --ncuts == 0 ) break; + last += r*c->lhs; + } + + last = Div(c->lhs - last, r); + + for( ; c >= cut; last += (--c)->lhs ) { + creal delmin = -(c->delta = delta[c->i]); + creal delmax = FRACT*(delmin + c->save); + c->sol = Div(last, c->df); + if( c->sol > delmax ) c->sol = .75*delmax; + if( c->sol < delmin ) c->sol = .75*delmin; + } +} + +/*********************************************************************/ + +static count FindCuts(This *t, Cut *cut, Bounds *bounds, creal vol, + real *xmajor, creal fmajor, creal fdiff) +{ + cint sign = (fdiff < 0) ? -1 : 1; + + count ncuts = 0, icut; + Vector(real, delta, 2*NDIM); + real gamma, fgamma, lhssq; + count dim, div; + + for( dim = 0; dim < t->ndim; ++dim ) { + cBounds *b = &bounds[dim]; + creal xsave = xmajor[dim]; + real dist = b->upper - xsave; + if( dist >= BNDTOL*(b->upper - b->lower) ) { + Cut *c = &cut[ncuts++]; + c->i = Upper(dim); + c->save = dist; + xmajor[dim] += dist *= FRACT; + c->f = Sample(t, xmajor); + xmajor[dim] = xsave; + } + delta[Upper(dim)] = dist; + } + + for( dim = 0; dim < t->ndim; ++dim ) { + cBounds *b = &bounds[dim]; + creal xsave = xmajor[dim]; + real dist = xsave - b->lower; + if( dist >= BNDTOL*(b->upper - b->lower) ) { + Cut *c = &cut[ncuts++]; + c->i = Lower(dim); + c->save = dist; + xmajor[dim] -= dist *= FRACT; + c->f = Sample(t, xmajor); + xmajor[dim] = xsave; + } + delta[Lower(dim)] = dist; + } + + if( ncuts == 0 ) { + SomeCut(t, cut, bounds); + return 1; + } + + for( ; ; ) { + real mindiff = INFTY; + Cut *mincut = cut; + + for( icut = 0; icut < ncuts; ++icut ) { + Cut *c = &cut[icut]; + creal diff = fabsx(fmajor - c->f); + if( diff <= mindiff ) { + mindiff = diff; + mincut = c; + } + } + + gamma = Volume(t, delta)/vol; + fgamma = fmajor + (gamma - 1)*fdiff; + + if( sign*(mincut->f - fgamma) < 0 ) break; + + if( --ncuts == 0 ) { + SomeCut(t, cut, bounds); + return 1; + } + + delta[mincut->i] = mincut->save; + memmove(mincut, mincut + 1, (char *)&cut[ncuts] - (char *)mincut); + } + + for( icut = 0; icut < ncuts; ++icut ) { + Cut *c = &cut[icut]; + c->fold = c->f; + c->df = (c->f - fmajor)/delta[c->i]; + } + + lhssq = SetupEqs(cut, ncuts, fgamma); + +repeat: + SolveEqs(cut, ncuts, delta, gamma*fdiff); + + for( div = 1; div <= 16; div *= 4 ) { + real gammanew, lhssqnew; + + for( icut = 0; icut < ncuts; ++icut ) { + Cut *c = &cut[icut]; + real *x = &xmajor[Dim(c->i)]; + creal xsave = *x; + delta[c->i] = c->delta + c->sol/div; + *x += SignedDelta(c->i); + c->f = Sample(t, xmajor); + *x = xsave; + } + + gammanew = Volume(t, delta)/vol; + fgamma = fmajor + (gammanew - 1)*fdiff; + lhssqnew = SetupEqs(cut, ncuts, fgamma); + + if( lhssqnew <= lhssq ) { + real fmax; + + if( fabsx(gammanew - gamma) < GAMMATOL*gamma ) break; + gamma = gammanew; + + fmax = fabsx(fgamma); + for( icut = 0; icut < ncuts; ++icut ) { + Cut *c = &cut[icut]; + creal dfmin = SINGTOL*c->df; + creal sol = c->sol/div; + real df = c->f - c->fold; + df = (fabsx(df) > SMALL*fabsx(sol)) ? df/sol : 1; + c->df = (fabsx(df) < fabsx(dfmin)) ? dfmin : df; + fmax = Max(fmax, fabsx(c->f)); + c->fold = c->f; + } + + if( lhssqnew < Sq((1 + fmax)*LHSTOL) ) break; + lhssq = lhssqnew; + goto repeat; + } + } + + for( icut = 0; icut < ncuts; ++icut ) { + Cut *c = &cut[icut]; + real *b = (real *)bounds + c->i; + c->save = *b; + *b = xmajor[Dim(c->i)] + SignedDelta(c->i); + } + + return ncuts; +} + +/*********************************************************************/ + +static void Split(This *t, ccount iregion) +{ + csize_t regionsize = RegionSize; + Region *region = RegionPtr(iregion); + Vector(Cut, cut, 2*NDIM); + Cut *c; + count ncuts, succ; + int depth; + real *b; + + t->selectedcomp = region->cutcomp; + t->neval_cut -= t->neval; + ncuts = FindCuts(t, cut, region->bounds, region->vol, + RegionMinMax(region) + region->xmajor, region->fmajor, + region->fmajor - region->fminor); + t->neval_cut += t->neval; + + depth = region->depth - ncuts; + + EnlargeRegions(t, ++ncuts); + region = RegionPtr(iregion); + region->depth = -ncuts; + succ = iregion + region->next; + region->next = t->nregions - iregion; + b = (real *)region->bounds; + + region = RegionPtr(t->nregions); + XCopy(region->bounds, b); + region->depth = IDim(depth) + 1; + region->next = 1; + region->isamples = 0; + for( c = cut; --ncuts; ++c ) { + ccount ci = c->i; + creal tmp = b[ci ^ 1]; + b[ci ^ 1] = b[ci]; + b[ci] = c->save; + region = RegionPtr(++t->nregions); + XCopy(region->bounds, b); + region->depth = IDim(depth) + 1; + region->next = 1; + region->isamples = 0; + ++depth; + b[ci ^ 1] = tmp; + } + region->next = succ - t->nregions++; +} + diff --git a/Cuba/src/divonne/common.c b/Cuba/src/divonne/common.c new file mode 100644 index 0000000..34be0c2 --- /dev/null +++ b/Cuba/src/divonne/common.c @@ -0,0 +1,73 @@ +/* + common.c + includes most of the modules + this file is part of Divonne + last modified 29 Jul 13 th +*/ + + +#include "Random.c" +#include "ChiSquare.c" +#include "Rule.c" +#include "Sample.c" +#include "FindMinimum.c" +#include "Split.c" +#include "Explore.c" +#include "Iterate.c" + +static inline bool BadDimension(cThis *t, ccount key) +{ + if( t->ndim > MAXDIM ) return true; + if( IsSobol(key) ) return + t->ndim < SOBOL_MINDIM || (t->seed == 0 && t->ndim > SOBOL_MAXDIM); + if( IsRule(key, t->ndim) ) return t->ndim < 1; + return t->ndim < KOROBOV_MINDIM || t->ndim > KOROBOV_MAXDIM; +} + +static inline bool BadComponent(cThis *t) +{ + if( t->ncomp > MAXCOMP ) return true; + return t->ncomp < 1; +} + +static inline void AllocGiven(This *t) +{ + real *xgiven = NULL, *fgiven = NULL; + + if( t->ngiven | t->nextra ) { + cnumber nxgiven = t->ngiven*t->ndim; + cnumber nxextra = t->nextra*t->ndim; + cnumber nfgiven = t->ngiven*t->ncomp; + cnumber nfextra = t->nextra*t->ncomp; + + Alloc(xgiven, nxgiven + nxextra + nfgiven + nfextra); + t->xextra = xgiven + nxgiven; + fgiven = t->xextra + nxextra; + t->fextra = fgiven + nfgiven; + + if( nxgiven ) { +#ifdef MLVERSION + Copy(xgiven, t->xgiven, nxgiven); + Copy(fgiven, t->fgiven, nfgiven); +#else + if( t->ldxgiven == t->ndim ) + Copy(xgiven, t->xgiven, nxgiven); + else { + number i; + real *sgiven = t->xgiven, *dgiven = xgiven; + for( i = 0; i < t->ngiven; ++i ) { + Copy(dgiven, sgiven, t->ndim); + sgiven += t->ldxgiven; + dgiven += t->ndim; + } + } + t->phase = 0; + DoSample(t, t->ngiven, xgiven, fgiven); +#endif + } + } + + t->xgiven = xgiven; + t->fgiven = fgiven; +} + diff --git a/Cuba/src/divonne/decl.h b/Cuba/src/divonne/decl.h new file mode 100644 index 0000000..98023ec --- /dev/null +++ b/Cuba/src/divonne/decl.h @@ -0,0 +1,161 @@ +/* + decl.h + Type declarations + this file is part of Divonne + last modified 9 Oct 14 th +*/ + + +#include "stddecl.h" + +#define INIDEPTH 3 +#define DEPTH 5 +#define POSTDEPTH 15 + +#define Tag(x) ((x) | INT_MIN) +#define Untag(x) ((x) & INT_MAX) + +typedef struct { + real lower, upper; +} Bounds; + +typedef const Bounds cBounds; + +typedef struct { + real avg, err; +} PhaseResult; + +typedef struct { + real avg, spreadsq; + real spread, secondspread; + real nneed, maxerrsq, mindevsq; + real integral, sigsq, chisq; + PhaseResult phase[2]; + int iregion; +} Totals; + +enum { nrules = 5 }; + +typedef struct { + count n; + real weight[nrules], scale[nrules], norm[nrules]; + real gen[]; +} Set; + +#define SetSize (sizeof(Set) + t->ndim*sizeof(real)) + +#define NextSet(p) p = (Set *)((char *)p + setsize) + +typedef struct { + Set *first, *last; + real errcoeff[3]; + count n; +} Rule; + +typedef const Rule cRule; + +typedef struct samples { + real *x, *f; + void (*sampler)(struct _this *t, ccount); + cRule *rule; + number n, neff; + count coeff; +} Samples; + +typedef const Samples cSamples; + +typedef struct { + real diff, err, spread; +} Errors; + +typedef const Errors cErrors; + +typedef struct { + real avg, err, spread, chisq; + real fmin, fmax; +} Result; + +typedef const Result cResult; + +#define MinMaxSize (t->ncomp*t->ndim*2*sizeof(real)) + +typedef struct region { + int depth, next; + count isamples, cutcomp, xmajor; + real fmajor, fminor, vol; + Bounds bounds[]; +} Region; + +#define RegionSize (sizeof(Region) + t->ndim*sizeof(Bounds) + t->ncomp*sizeof(Result) + MinMaxSize) + +#define RegionResult(r) ((Result *)(r->bounds + t->ndim)) + +#define RegionMinMax(r) ((real *)(RegionResult(r) + t->ncomp)) + +#define RegionPtr(n) ((Region *)((char *)t->region + (n)*regionsize)) + + +typedef int (*Integrand)(ccount *, creal *, ccount *, real *, + void *, cnumber *, cint *, cint *); + +typedef void (*PeakFinder)(ccount *, cBounds *, number *, real *, void *); + +typedef struct _this { + count ndim, ncomp; +#ifndef MLVERSION + Integrand integrand; + void *userdata; + number nvec; +#ifdef HAVE_FORK + SHM_ONLY(int shmid;) + Spin *spin; + real *frame; + number nframe; + int running; +#endif + PeakFinder peakfinder; +#endif + real epsrel, epsabs; + int flags, seed; + number mineval, maxeval; + int key1, key2, key3; + count maxpass; + Bounds border; + real maxchisq, mindeviation; + number ngiven, nextra; + real *xgiven, *fgiven; + real *xextra, *fextra; + count ldxgiven; + count nregions; + cchar *statefile; + number neval, neval_opt, neval_cut, nrand; + count phase; + count selectedcomp, size; + Samples samples[3]; + Totals *totals; + Rule rule7, rule9, rule11, rule13; + RNGState rng; + Region *region; + jmp_buf abort; +} This; + +typedef const This cThis; + + +#define CHUNKSIZE 4096 + +#define AllocRegions(t) \ + MemAlloc((t)->region, (t)->size*regionsize) + +#define EnlargeRegions(t, n) if( (t)->nregions + n > (t)->size ) \ + ReAlloc((t)->region, ((t)->size += CHUNKSIZE)*regionsize) + +#define SAMPLERDEFS \ + csize_t regionsize = RegionSize; \ + Region *region = RegionPtr(iregion); \ + cBounds *b = region->bounds; \ + Result *res = RegionResult(region); \ + cSamples *samples = &t->samples[region->isamples]; \ + real *x = samples->x, *f = samples->f; \ + cnumber n = samples->n + diff --git a/Cuba/src/suave/Fluct.c b/Cuba/src/suave/Fluct.c new file mode 100644 index 0000000..c226d0c --- /dev/null +++ b/Cuba/src/suave/Fluct.c @@ -0,0 +1,76 @@ +/* + Fluct.c + compute the fluctuation in the left and right half + this file is part of Suave + last modified 14 Mar 15 th +*/ + + +#if defined(HAVE_LONG_DOUBLE) && defined(HAVE_POWL) && REALSIZE <= 10 + +typedef long double realL; +#define REALL_MAX_EXP LDBL_MAX_EXP +#define REALL_MAX LDBL_MAX +#define powL powl +#define ldexpL ldexpl + +#else + +typedef real realL; +#define REALL_MAX_EXP REAL_MAX_EXP +#define REALL_MAX REAL_MAX +#define powL powx +#define ldexpL ldexpx + +#endif + +typedef const realL crealL; + +typedef struct { + realL fluct; + number n; +} Var; + +static inline realL MinL(crealL a, crealL b) { + return (a < b) ? a : b; +} + +static inline realL MaxL(crealL a, crealL b) { + return (a > b) ? a : b; +} + +/*********************************************************************/ + +static void Fluct(cThis *t, Var *var, + cBounds *b, creal *w, number n, ccount comp, creal avg, creal err) +{ + creal *x = w + n; + creal *f = x + n*t->ndim + comp; + count nvar = 2*t->ndim; + creal norm = 1/(err*Max(fabs(avg), err)); + creal flat = 2/3./t->flatness; + crealL max = ldexpL(1., (int)((REALL_MAX_EXP - 2)/t->flatness)); + + Clear(var, nvar); + + while( n-- ) { + count dim; + crealL arg = 1 + fabs(*w++)*Sq(*f - avg)*norm; + crealL ft = powL(MinL(arg, max), t->flatness); + + f += t->ncomp; + + for( dim = 0; dim < t->ndim; ++dim ) { + Var *v = &var[2*dim + (*x++ >= .5*(b[dim].lower + b[dim].upper))]; + crealL f = v->fluct + ft; + v->fluct = MaxL(f, REALL_MAX/2); + ++v->n; + } + } + + while( nvar-- ) { + var->fluct = powL(var->fluct, flat); + ++var; + } +} + diff --git a/Cuba/src/suave/Grid.c b/Cuba/src/suave/Grid.c new file mode 100644 index 0000000..5ba2c3b --- /dev/null +++ b/Cuba/src/suave/Grid.c @@ -0,0 +1,137 @@ +/* + Grid.c + utility functions for the Vegas grid + this file is part of Suave + last modified 12 Mar 15 th +*/ + + +static void RefineGrid(cThis *t, Grid grid, Grid margsum) +{ + real avgperbin, thisbin, newcur, delta; + Grid imp, newgrid; + int bin, newbin; + + /* smooth the f^2 value stored for each bin */ + real prev = margsum[0]; + real cur = margsum[1]; + real norm = margsum[0] = .5*(prev + cur); + for( bin = 1; bin < NBINS - 1; ++bin ) { + creal s = prev + cur; + prev = cur; + cur = margsum[bin + 1]; + norm += margsum[bin] = (s + cur)/3.; + } + norm += margsum[NBINS - 1] = .5*(prev + cur); + + if( norm == 0 ) return; + norm = 1/norm; + + /* compute the importance function for each bin */ + avgperbin = 0; + for( bin = 0; bin < NBINS; ++bin ) { + real impfun = 0; + if( margsum[bin] > 0 ) { + creal r = margsum[bin]*norm; + avgperbin += impfun = powx((r - 1)/log(r), 1.5); + } + imp[bin] = impfun; + } + avgperbin /= NBINS; + + /* redefine the size of each bin */ + cur = newcur = 0; + thisbin = 0; + bin = -1; + for( newbin = 0; newbin < NBINS - 1; ++newbin ) { + while( thisbin < avgperbin ) { + thisbin += imp[++bin]; + prev = cur; + cur = grid[bin]; + } + thisbin -= avgperbin; + delta = (cur - prev)*thisbin; + newgrid[newbin] = SHARPEDGES ? + cur - delta/imp[bin] : + (newcur = Max(newcur + 16*DBL_EPSILON, + cur - 2*delta/(imp[bin] + imp[IDim(bin - 1)]))); + } + Copy(grid, newgrid, NBINS - 1); + grid[NBINS - 1] = 1; +} + +/*********************************************************************/ + +static void Reweight(cThis *t, Bounds *b, + creal *w, creal *f, creal *lastf, cResult *total) +{ + Vector(Grid, margsum, NDIM); + Vector(real, scale, NCOMP); + cbin_t *bin = (cbin_t *)lastf; + count dim, comp; + + if( t->ncomp == 1 ) scale[0] = 1; + else { + for( comp = 0; comp < t->ncomp; ++comp ) + scale[comp] = (total[comp].avg == 0) ? 0 : 1/total[comp].avg; + } + + XClear(margsum); + + while( f < lastf ) { + real fsq = 0; + for( comp = 0; comp < t->ncomp; ++comp ) + fsq += Sq(*f++*scale[comp]); + fsq *= Sq(*w++); + if( fsq != 0 ) + for( dim = 0; dim < t->ndim; ++dim ) + margsum[dim][bin[dim]] += fsq; + bin += t->ndim; + } + + for( dim = 0; dim < t->ndim; ++dim ) + RefineGrid(t, b[dim].grid, margsum[dim]); +} + +/*********************************************************************/ + +static void StretchGrid(cGrid grid, Grid gridL, Grid gridR) +{ + real prev = 0, cur, step, x; + count bin = 0; + + while( bin < NBINS ) { + cur = grid[bin++]; + if( cur >= .5 ) break; + prev = cur; + } + + step = (bin - (cur - .5)/(cur - prev))/NBINS; + + prev = x = 0; + cur = *grid; + + for( bin = 0; bin < NBINS; ++bin ) { + x += step; + if( x > 1 ) { + --x; + prev = cur; + cur = *++grid; + } + gridL[bin] = 2*(prev + (cur - prev)*x); + } + + step = 1 - step; + for( bin = 0; bin < NBINS - 1; ++bin ) { + x += step; + if( x > 1 ) { + --x; + prev = cur; + cur = *++grid; + } + gridR[bin] = 2*(prev + (cur - prev)*x) - 1; + } + gridR[NBINS - 1] = 1; +} + + diff --git a/Cuba/src/suave/Integrate.c b/Cuba/src/suave/Integrate.c new file mode 100644 index 0000000..4345f76 --- /dev/null +++ b/Cuba/src/suave/Integrate.c @@ -0,0 +1,353 @@ +/* + Integrate.c + integrate over the unit hypercube + this file is part of Suave + checkpointing by B. Chokoufe + last modified 13 Mar 15 th +*/ + + +typedef struct { + signature_t signature; + count nregions, df; + number neval; + Result totals[]; +} State; + +static int Integrate(This *t, real *integral, real *error, real *prob) +{ + StateDecl; + csize_t statesize = sizeof(State) + NCOMP*sizeof(Result); + Sized(State, state, statesize); + Array(Var, var, NDIM, 2); + Vector(char, out, 128*NCOMP + 256); + + Region *anchor = NULL, *region = NULL; + Result *tot, *Tot = state->totals + t->ncomp; + Result *res, *resL, *resR; + Bounds *b, *B; + cnumber minsamples = IMax(t->nmin, MINSAMPLES); + count dim, comp; + int fail; + + if( VERBOSE > 1 ) { + sprintf(out, "Suave input parameters:\n" + " ndim " COUNT "\n ncomp " COUNT "\n" + ML_NOT(" nvec " NUMBER "\n") + " epsrel " REAL "\n epsabs " REAL "\n" + " flags %d\n seed %d\n" + " mineval " NUMBER "\n maxeval " NUMBER "\n" + " nnew " NUMBER "\n nmin " NUMBER "\n" + " flatness " REAL "\n" + " statefile \"%s\"", + t->ndim, t->ncomp, + ML_NOT(t->nvec,) + SHOW(t->epsrel), SHOW(t->epsabs), + t->flags, t->seed, + t->mineval, t->maxeval, + t->nnew, t->nmin, + SHOW(t->flatness), + t->statefile); + Print(out); + } + + if( BadComponent(t) ) return -2; + if( BadDimension(t) ) return -1; + + ShmAlloc(t, Master); + ForkCores(t); + + if( (fail = setjmp(t->abort)) ) goto abort; + + t->epsabs = Max(t->epsabs, NOTZERO); + IniRandom(t); + + StateSetup(t); + + if( StateReadTest(t) ) { + size_t *regsize = NULL; + StateReadOpen(t, fd) { + count iregion; + size_t totsize; + Region **last = &anchor; + if( read(fd, state, statesize) != statesize || + state->signature != StateSignature(t, 2) ) break; + t->nregions = state->nregions; + totsize = t->nregions*sizeof *regsize; + MemAlloc(regsize, totsize); + StateRead(fd, regsize, totsize); + for( iregion = 0; iregion < t->nregions; ++iregion ) + totsize += regsize[iregion]; + if( st.st_size != statesize + totsize ) break; + for( iregion = 0; iregion < t->nregions; ++iregion ) { + Region *reg; + MemAlloc(reg, regsize[iregion]); + StateRead(fd, reg, regsize[iregion]); + *last = reg; + last = ®->next; + } + *last = NULL; + } StateReadClose(t, fd); + free(regsize); + t->neval = state->neval; + t->rng.skiprandom(t, t->neval); + } + + if( ini ) { + count bin; + Bounds *b0; + + anchor = RegionAlloc(t, t->nnew, t->nnew); + anchor->next = NULL; + anchor->div = 0; + t->nregions = 1; + + b0 = RegionBounds(anchor); + b0->lower = 0; + b0->upper = 1; + /* define the initial distribution of bins */ + for( bin = 0; bin < NBINS; ++bin ) + b0->grid[bin] = (bin + 1)/(real)NBINS; + + for( b = b0 + 1, B = b0 + t->ndim; b < B; ++b ) + Copy(b, b0, 1); + + t->neval = 0; + Sample(t, t->nnew, anchor, RegionW(anchor), + RegionW(anchor) + t->nnew, + RegionW(anchor) + t->nnew + t->ndim*t->nnew); + state->df = anchor->df; + FCopy(state->totals, anchor->result); + } + + /* main iteration loop */ + for( ; ; ) { + Var *vLR; + real maxratio, maxerr, minfluct, bias, mid; + Region *regionL, *regionR, *reg, **parent, **par; + Bounds *bounds, *boundsL, *boundsR; + count maxcomp, bisectdim; + number n, nL, nR, nnewL, nnewR; + real *w, *wL, *wR, *x, *xL, *xR, *f, *fL, *fR, *wlast, *flast; + + if( VERBOSE ) { + char *oe = out + sprintf(out, "\n" + "Iteration " COUNT ": " NUMBER " integrand evaluations so far", + t->nregions, t->neval); + for( tot = state->totals, comp = 0; tot < Tot; ++tot ) + oe += sprintf(oe, "\n[" COUNT "] " + REAL " +- " REAL " \tchisq " REAL " (" COUNT " df)", + ++comp, SHOW(tot->avg), SHOW(tot->err), + SHOW(tot->chisq), state->df); + Print(out); + } + + maxratio = -INFTY; + maxcomp = 0; + for( tot = state->totals, comp = 0; tot < Tot; ++tot ) { + creal ratio = tot->err/MaxErr(tot->avg); + if( ratio > maxratio ) { + maxratio = ratio; + maxcomp = comp; + } + } + + if( maxratio <= 1 && t->neval >= t->mineval ) break; + + if( t->neval >= t->maxeval ) { + fail = 1; + break; + } + + maxerr = -INFTY; + parent = &anchor; + region = anchor; + for( par = &anchor; (reg = *par); par = ®->next ) { + creal err = reg->result[maxcomp].err; + if( err > maxerr ) { + maxerr = err; + parent = par; + region = reg; + } + } + + bounds = RegionBounds(region); + w = RegionW(region); + + /* find the bisectdim which minimizes the fluctuations */ + Fluct(t, var[0], bounds, w, region->n, maxcomp, + region->result[maxcomp].avg, Max(maxerr, t->epsabs)); + + bias = (t->epsrel < 1e-50) ? 2 : + Max(powx(2., -(real)region->div/t->ndim)/t->epsrel, 2.); + minfluct = INFTY; + bisectdim = 0; + for( dim = 0; dim < t->ndim; ++dim ) { + creal fluct = (var[dim][0].fluct + var[dim][1].fluct)* + (bias - bounds[dim].upper + bounds[dim].lower); + if( fluct < minfluct ) { + minfluct = fluct; + bisectdim = dim; + } + } + + /* apply stratified sampling to distribute points in bisected region */ + vLR = var[bisectdim]; + minfluct = vLR[0].fluct + vLR[1].fluct; + nnewL = IMax( + (minfluct == 0) ? t->nnew/2 : (count)(vLR[0].fluct/minfluct*t->nnew), + minsamples ); + nL = vLR[0].n + nnewL; + nnewR = IMax(t->nnew - nnewL, minsamples); + nR = vLR[1].n + nnewR; + + regionL = RegionAlloc(t, nL, nnewL); + regionR = RegionAlloc(t, nR, nnewR); + + *parent = regionL; + regionL->next = regionR; + regionR->next = region->next; + regionL->div = regionR->div = region->div + 1; + + mid = .5*(bounds[bisectdim].lower + bounds[bisectdim].upper); + n = region->n; + wlast = w; x = w + n; f = flast = x + n*t->ndim; + wL = RegionW(regionL); xL = wL + nL; fL = xL + nL*t->ndim; + wR = RegionW(regionR); xR = wR + nR; fR = xR + nR*t->ndim; + while( n-- ) { + cbool final = (*w < 0); + if( x[bisectdim] < mid ) { + if( final && wR > RegionW(regionR) ) wR[-1] = -fabsx(wR[-1]); + *wL++ = *w++; + XCopy(xL, x); + xL += t->ndim; + FCopy(fL, f); + fL += t->ncomp; + } + else { + if( final && wL > RegionW(regionL) ) wL[-1] = -fabsx(wL[-1]); + *wR++ = *w++; + XCopy(xR, x); + xR += t->ndim; + FCopy(fR, f); + fR += t->ncomp; + } + x += t->ndim; + f += t->ncomp; + if( n && final ) wlast = w, flast = f; + } + + Reweight(t, bounds, wlast, flast, f, state->totals); + boundsL = RegionBounds(regionL); + XCopy(boundsL, bounds); + boundsR = RegionBounds(regionR); + XCopy(boundsR, bounds); + + boundsL[bisectdim].upper = mid; + boundsR[bisectdim].lower = mid; + StretchGrid(bounds[bisectdim].grid, + boundsL[bisectdim].grid, boundsR[bisectdim].grid); + + Sample(t, nnewL, regionL, wL, xL, fL); + Sample(t, nnewR, regionR, wR, xR, fR); + + state->df += regionL->df + regionR->df - region->df; + + for( res = region->result, + resL = regionL->result, + resR = regionR->result, + tot = state->totals; + tot < Tot; ++res, ++resL, ++resR, ++tot ) { + real diff, sigsq; + + tot->avg += diff = resL->avg + resR->avg - res->avg; + + diff = Sq(.25*diff); + sigsq = resL->sigsq + resR->sigsq; + if( sigsq > 0 ) { + creal c = Sq(1 + sqrtx(diff/sigsq)); + resL->sigsq *= c; + resR->sigsq *= c; + } + resL->err = sqrtx(resL->sigsq += diff); + resR->err = sqrtx(resR->sigsq += diff); + + tot->sigsq += resL->sigsq + resR->sigsq - res->sigsq; + tot->err = sqrtx(tot->sigsq); + + tot->chisq += resL->chisq + resR->chisq - res->chisq; + } + + free(region); + region = NULL; + ++t->nregions; + + if( StateWriteTest(t) ) { + StateWriteOpen(t, fd) { + Region *reg; + size_t totsize, *regsize, *s; + state->signature = StateSignature(t, 2); + state->neval = t->neval; + state->nregions = t->nregions; + StateWrite(fd, state, statesize); + MemAlloc(regsize, totsize = t->nregions*sizeof(size_t)); + s = regsize; + for( reg = anchor; reg; reg = reg->next ) + *s++ = reg->size; + StateWrite(fd, regsize, totsize); + free(regsize); + for( reg = anchor; reg; reg = reg->next ) + StateWrite(fd, reg, reg->size); + } StateWriteClose(t, fd); + } + } + + for( tot = state->totals, comp = 0; tot < Tot; ++tot, ++comp ) { + integral[comp] = tot->avg; + error[comp] = tot->err; + prob[comp] = ChiSquare(tot->chisq, state->df); + } + +#ifdef MLVERSION + if( REGIONS ) { + Vector(real, bounds, NDIM*2); + + MLPutFunction(stdlink, "List", 2); + + MLPutFunction(stdlink, "List", t->nregions); + for( region = anchor; region; region = region->next ) { + cResult *Res; + real *d = bounds; + for( B = (b = RegionBounds(region)) + t->ndim; b < B; ++b ) { + *d++ = b->lower; + *d++ = b->upper; + } + + MLPutFunction(stdlink, "Cuba`Suave`region", 3); + + MLPutRealxList(stdlink, bounds, 2*t->ndim); + + MLPutFunction(stdlink, "List", t->ncomp); + for( Res = (res = region->result) + t->ncomp; res < Res; ++res ) { + real r[] = {res->avg, res->err, res->chisq}; + MLPutRealxList(stdlink, r, Elements(r)); + } + + MLPutInteger(stdlink, region->df); + } + } +#endif + +abort: + free(region); + while( (region = anchor) ) { + anchor = anchor->next; + free(region); + } + ShmFree(t, Master); + + StateRemove(t); + + return fail; +} + diff --git a/Cuba/src/suave/Sample.c b/Cuba/src/suave/Sample.c new file mode 100644 index 0000000..a02249e --- /dev/null +++ b/Cuba/src/suave/Sample.c @@ -0,0 +1,164 @@ +/* + Sample.c + the sampling step of Suave + this file is part of Suave + last modified 13 Mar 15 th +*/ + + +typedef struct { + real sum, sqsum; + real weight, weightsum, avg, avgsum; + real guess, chisum, chisqsum; +} Cumulants; + +/*********************************************************************/ + +static void Sample(This *t, cnumber nnew, Region *region, + real *lastw, real *lastx, real *lastf) +{ + count comp, df; + number n; + Vector(Cumulants, cumul, NCOMP); + Cumulants *C = cumul + t->ncomp, *c; + Bounds *bounds = RegionBounds(region), *B = bounds + t->ndim, *b; + Result *res; + char **ss = NULL, *s = NULL; + ccount chars = 128*(region->div + 1); + + creal jacobian = 1/ldexp((real)nnew, region->div); + real *w = lastw, *f = lastx; + bin_t *bin = (bin_t *)(lastf + nnew*t->ncomp); + + for( n = nnew; n; --n ) { + real weight = jacobian; + + t->rng.getrandom(t, f); + + for( b = bounds; b < B; ++b ) { + creal pos = *f*NBINS; + ccount ipos = (count)pos; + creal prev = (ipos == 0) ? 0 : b->grid[ipos - 1]; + creal diff = b->grid[ipos] - prev; + *f++ = b->lower + (prev + (pos - ipos)*diff)*(b->upper - b->lower); + *bin++ = ipos; + weight *= diff*NBINS; + } + + *w++ = weight; + } + + DoSample(t, nnew, lastx, lastf, lastw, region->div + 1); + + w[-1] = -w[-1]; + lastw = w; + w = RegionW(region); + region->n = lastw - w; + + if( VERBOSE > 2 ) { + char *p0; + MemAlloc(ss, t->ndim*64 + t->ncomp*(sizeof(char *) + chars)); + s = (char *)(ss + t->ncomp); + p0 = s + t->ndim*64; + for( comp = 0; comp < t->ncomp; ++comp ) { + ss[comp] = p0; + p0 += chars; + } + } + + FClear(cumul); + df = n = 0; + + while( w < lastw ) { + cbool final = (*w < 0); + creal weight = fabsx(*w++); + ++n; + + for( c = cumul, comp = 0; c < C; ++c ) { + creal wfun = weight*(*f++); + c->sum += wfun; + c->sqsum += Sq(wfun); + + if( final ) { + if( n >= t->nmin ) { + real w = Weight(c->sum, c->sqsum, n); + c->weightsum += c->weight = w; + c->avgsum += c->avg = w*c->sum; + + if( VERBOSE > 2 ) { + creal sig = sqrtx(1/w); + ss[comp] += (df == 0) ? + sprintf(ss[comp], "\n[" COUNT "] " + REAL " +- " REAL " (" NUMBER ")", comp + 1, + SHOW(c->sum), SHOW(sig), n) : + sprintf(ss[comp], "\n " + REAL " +- " REAL " (" NUMBER ")", + SHOW(c->sum), SHOW(sig), n); + } + + if( df == 0 ) c->guess = c->sum; + else { + c->chisum += w *= c->sum - c->guess; + c->chisqsum += w*c->sum; + } + } + + c->sum = c->sqsum = 0; + } + } + + if( final ) df -= NegQ(t->nmin - n - 1), n = 0; + } + + region->df = --df; + + for( c = cumul, res = region->result; c < C; ++c, ++res ) { + creal sigsq = 1/c->weightsum; + creal avg = sigsq*c->avgsum; + + if( LAST ) { + res->sigsq = 1/c->weight; + res->avg = res->sigsq*c->avg; + } + else { + res->sigsq = sigsq; + res->avg = avg; + } + res->err = sqrtx(res->sigsq); + + res->chisq = (sigsq < .9*NOTZERO) ? 0 : c->chisqsum - avg*c->chisum; + /* This catches the special case where the integrand is constant + over the entire region. Unless that constant is zero, only the + first set of samples will have zero variance, and hence weight + (n - 1) 1e30 (see above). All other sets have been sampled + from a non-constant weight function and therefore inevitably + show some variance. This is an artificial effect, brought about + by the fact that the constancy of the integrand in the region is + seen only in this subdivision, and can degrade the chi-square + score quite a bit. If the constancy was determined from more + than two samples (hence .9*NOTZERO), the chi-squares from the + other sets are removed here. */ + } + + if( VERBOSE > 2 ) { + char *p = s; + char *p0 = p + t->ndim*64; + char *msg = "\nRegion (" REALF ") - (" REALF ")"; + + for( b = bounds; b < B; ++b ) { + p += sprintf(p, msg, b->lower, b->upper); + msg = "\n (" REALF ") - (" REALF ")"; + } + + for( comp = 0, res = region->result; + comp < t->ncomp; ++comp, ++res ) { + p += sprintf(p, "%s \tchisq " REAL " (" COUNT " df)", + p0, SHOW(res->chisq), df); + p0 += chars; + } + + Print(s); + free(ss); + } +} + diff --git a/Cuba/src/suave/Suave.c b/Cuba/src/suave/Suave.c new file mode 100644 index 0000000..3bd55a0 --- /dev/null +++ b/Cuba/src/suave/Suave.c @@ -0,0 +1,94 @@ +/* + Suave.c + Subregion-adaptive Vegas Monte Carlo integration + by Thomas Hahn + last modified 28 Nov 14 th +*/ + + +#define SUAVE +#define ROUTINE "Suave" + +#include "decl.h" +#include "CSample.c" + +/*********************************************************************/ + +Extern void EXPORT(Suave)(ccount ndim, ccount ncomp, + Integrand integrand, void *userdata, cnumber nvec, + creal epsrel, creal epsabs, + cint flags, cint seed, + cnumber mineval, cnumber maxeval, + cnumber nnew, cnumber nmin, creal flatness, + cchar *statefile, Spin **pspin, + count *pnregions, number *pneval, int *pfail, + real *integral, real *error, real *prob) +{ + This t; + + VerboseInit(); + + t.ndim = ndim; + t.ncomp = ncomp; + t.integrand = integrand; + t.userdata = userdata; + t.nvec = nvec; + t.epsrel = epsrel; + t.epsabs = epsabs; + t.flags = MaxVerbose(flags); + t.seed = seed; + t.mineval = mineval; + t.maxeval = maxeval; + t.nnew = nnew; + t.nmin = IMax(nmin, 2); + t.flatness = flatness; + t.statefile = statefile; + FORK_ONLY(t.spin = Invalid(pspin) ? NULL : *pspin;) + + *pfail = Integrate(&t, integral, error, prob); + *pnregions = t.nregions; + *pneval = t.neval; + + WaitCores(&t, pspin); +} + +/*********************************************************************/ + +Extern void EXPORT(suave)(ccount *pndim, ccount *pncomp, + Integrand integrand, void *userdata, cnumber *pnvec, + creal *pepsrel, creal *pepsabs, + cint *pflags, cint *pseed, + cnumber *pmineval, cnumber *pmaxeval, + cnumber *pnnew, cnumber *pnmin, creal *pflatness, + cchar *statefile, Spin **pspin, + count *pnregions, number *pneval, int *pfail, + real *integral, real *error, real *prob, cint statefilelen) +{ + This t; + + VerboseInit(); + + t.ndim = *pndim; + t.ncomp = *pncomp; + t.integrand = integrand; + t.userdata = userdata; + t.nvec = *pnvec; + t.epsrel = *pepsrel; + t.epsabs = *pepsabs; + t.flags = MaxVerbose(*pflags); + t.seed = *pseed; + t.mineval = *pmineval; + t.maxeval = *pmaxeval; + t.nnew = *pnnew; + t.nmin = IMax(*pnmin, 2); + t.flatness = *pflatness; + CString(t.statefile, statefile, statefilelen); + FORK_ONLY(t.spin = Invalid(pspin) ? NULL : *pspin;) + + *pfail = Integrate(&t, integral, error, prob); + *pnregions = t.nregions; + *pneval = t.neval; + + WaitCores(&t, pspin); +} + diff --git a/Cuba/src/suave/Suave.tm b/Cuba/src/suave/Suave.tm new file mode 100644 index 0000000..da02012 --- /dev/null +++ b/Cuba/src/suave/Suave.tm @@ -0,0 +1,260 @@ +:Evaluate: BeginPackage["Cuba`"] + +:Evaluate: Suave::usage = + "Suave[f, {x, xmin, xmax}..] computes a numerical approximation to the integral of the real scalar or vector function f. + The output is a list with entries of the form {integral, error, chi-square probability} for each component of the integrand." + +:Evaluate: MinPoints::usage = "MinPoints is an option of Suave. + It specifies the minimum number of points to sample." + +:Evaluate: NNew::usage = "NNew is an option of Suave. + It specifies the number of new integrand evaluations in each subdivision." + +:Evaluate: NMin::usage = "NMin is an option of Suave. + It specifies the minimum number of samples a former pass must contribute to a subregion to be considered in that region's compound integral value. + Increasing NMin may reduce jumps in the chi^2 value." + +:Evaluate: Flatness::usage = "Flatness is an option of Suave. + It determines how prominently individual samples with a large fluctuation figure in the total fluctuation, which in turn determines how a region is split up. + Explicitly, if F[i] is the individual fluctuation of sample i, the total fluctuation is computed as Sum[(1 + F[i])^p, {i, nsamples}]^(2/3/p), i.e. as the p-norm of the fluctuation vector to the power 2/3, where p is the number given by Flatness. + Thus with increasing p, the fluctuation becomes more and more dominated by outliers, i.e. points with a large fluctuation. + As suggested by the name Flatness, p should be chosen large for `flat' integrands and small for `volatile' integrands with high peaks. + Note that since p appears in the exponent, one should not use too large values (say, no more than a few hundred) lest terms be truncated internally to prevent overflow." + +:Evaluate: StateFile::usage = "StateFile is an option of Suave. + It specifies a file in which the internal state is stored after each iteration and from which it can be restored on a subsequent run. + The state file is removed once the prescribed accuracy has been reached." + +:Evaluate: Final::usage = "Final is an option of Suave. + It can take the values Last or All which determine whether only the last (largest) or all sets of samples collected on a subregion over the iterations contribute to the final result." + +:Evaluate: PseudoRandom::usage = "PseudoRandom is an option of Suave. + It can take the following values: + False for Sobol quasi-random numbers (default), + True or 0 for Mersenne Twister pseudo-random numbers, + any other integer value n for Ranlux pseudo-random numbers of luxury level n." + +:Evaluate: PseudoRandomSeed::usage = "PseudoRandomSeed is an option of Suave. + It specifies the seed for the pseudo-random number generator." + +:Evaluate: SharpEdges::usage = "SharpEdges is an option of Suave. + It turns off smoothing of the importance function for integrands with sharp edges." + +:Evaluate: RetainStateFile::usage = "RetainStateFile is an option of Suave. + It determines whether a chosen state file is kept even if the integration terminates normally." + +:Evaluate: Regions::usage = "Regions is an option of Suave. + It specifies whether the regions into which the integration region has been cut are returned together with the integration results." + +:Evaluate: Region::usage = "Region[ll, ur, res, df] describes a subregion: + ll and ur are multidimensional equivalents of the region's lower left and upper right corner. + res gives the integration results for the region in a list with entries of the form {integral, error, chi-square} for each component of the integrand. + df is the number of degrees of freedom corresponding to the chi-square values in res." + +:Evaluate: $Weight::usage = "$Weight is a global variable set by Suave during the evaluation of the integrand to the weight of the point being sampled." + +:Evaluate: $Iteration::usage = "$Iteration is a global variable set by Suave during the evaluation of the integrand to the present iteration number." + +:Evaluate: MapSample::usage = "MapSample is a function used to map the integrand over the points to be sampled." + + +:Evaluate: Begin["`Suave`"] + +:Begin: +:Function: Suave +:Pattern: MLSuave[ndim_, ncomp_, + epsrel_, epsabs_, flags_, seed_, + mineval_, maxeval_, + nnew_, nmin_, flatness_, statefile_] +:Arguments: {ndim, ncomp, + epsrel, epsabs, flags, seed, + mineval, maxeval, + nnew, nmin, flatness, statefile} +:ArgumentTypes: {Integer, Integer, + Real64, Real64, Integer, Integer, + Integer, Integer, + Integer, Integer, Real64, String} +:ReturnType: Manual +:End: + +:Evaluate: Attributes[Suave] = {HoldFirst} + +:Evaluate: Options[Suave] = {PrecisionGoal -> 3, AccuracyGoal -> 12, + MinPoints -> 0, MaxPoints -> 50000, + NNew -> 1000, NMin -> 2, Flatness -> 50, + StateFile -> "", Verbose -> 1, Final -> Last, + PseudoRandom -> False, PseudoRandomSeed -> 5489, + SharpEdges -> False, RetainStateFile -> False, + Regions -> False, Compiled -> True} + +:Evaluate: Suave[f_, v:{_, _, _}.., opt___Rule] := + Block[ {ff = HoldForm[f], ndim = Length[{v}], ncomp, + tags, vars, lower, range, jac, tmp, defs, intT, + rel, abs, mineval, maxeval, nnew, nmin, flatness, state, + verbose, final, level, seed, edges, retain, + regions, compiled, $Weight, $Iteration}, + Message[Suave::optx, #, Suave]&/@ + Complement[First/@ {opt}, tags = First/@ Options[Suave]]; + {rel, abs, mineval, maxeval, nnew, nmin, flatness, state, + verbose, final, level, seed, edges, retain, + regions, compiled} = + tags /. {opt} /. Options[Suave]; + {vars, lower, range} = Transpose[{v}]; + jac = Simplify[Times@@ (range -= lower)]; + tmp = Array[tmpvar, ndim]; + defs = Simplify[lower + range tmp]; + Block[{Set}, define[compiled, tmp, Thread[vars = defs], jac]]; + intT = integrandT[f]; + Block[#, + ncomp = Length[intT@@ RandomReal[1, ndim]]; + MLSuave[ndim, ncomp, 10.^-rel, 10.^-abs, + Min[Max[verbose, 0], 3] + + If[final === Last, 4, 0] + + If[TrueQ[edges], 8, 0] + + If[TrueQ[retain], 16, 0] + + If[TrueQ[regions], 128, 0] + + If[IntegerQ[level], 256 level, 0], + If[level =!= False && IntegerQ[seed], seed, 0], + mineval, maxeval, + nnew, nmin, flatness, state] + ]& @ vars + ] + +:Evaluate: tmpvar[n_] := ToExpression["Cuba`Suave`t" <> ToString[n]] + +:Evaluate: Attributes[foo] = {HoldAll} + +:Evaluate: define[True, tmp_, defs_, jac_] := ( + TtoX := TtoX = Compile[tmp, defs]; + integrandT[f_] := Compile[tmp, eval[defs, N[f jac]], + {{_eval, _Real, 1}}] ) + +:Evaluate: define[_, tmp_, defs_, jac_] := ( + TtoX := TtoX = Function[tmp, defs]; + integrandT[f_] := Function[tmp, eval[defs, N[f jac]]] ) + +:Evaluate: eval[_, f_Real] = {f} + +:Evaluate: eval[_, f:{__Real}] = f + +:Evaluate: eval[x_, _] := (Message[Suave::badsample, ff, x]; {}) + +:Evaluate: sample[x_, w_, iter_] := ( + $Iteration = iter; + Check[Flatten @ MapSample[ + ($Weight = #[[1]]; intT@@ #[[2]])&, + Transpose[{w, Partition[x, ndim]}] ], {}] ) + +:Evaluate: ValueQ[MapSample] || (MapSample = Map) + +:Evaluate: region[bounds_, r___] := Region[##, r]&@@ + MapThread[TtoX, Partition[bounds, 2]] + +:Evaluate: Suave::badsample = "`` is not a real-valued function at ``." + +:Evaluate: Suave::baddim = "Cannot integrate in `` dimensions." + +:Evaluate: Suave::badcomp = "Cannot integrate `` components." + +:Evaluate: Suave::accuracy = + "Desired accuracy was not reached within `` function evaluations on `` subregions." + +:Evaluate: Suave::success = "Needed `` function evaluations on `` subregions." + +:Evaluate: End[] + +:Evaluate: EndPackage[] + + +/* + Suave.tm + Subregion-adaptive Vegas Monte Carlo integration + by Thomas Hahn + last modified 13 Mar 15 th +*/ + + +#define SUAVE +#define ROUTINE "Suave" + +#include "mathlink.h" +#include "decl.h" +#include "MSample.c" + +/*********************************************************************/ + +static void Status(MLCONST char *msg, cint n1, cint n2) +{ + MLPutFunction(stdlink, "CompoundExpression", 2); + MLPutFunction(stdlink, "Message", 3); + MLPutFunction(stdlink, "MessageName", 2); + MLPutSymbol(stdlink, "Suave"); + MLPutString(stdlink, msg); + MLPutInteger(stdlink, n1); + MLPutInteger(stdlink, n2); +} + +/*********************************************************************/ + +static inline void DoIntegrate(This *t) +{ + real integral[NCOMP], error[NCOMP], prob[NCOMP]; + cint fail = Integrate(t, integral, error, prob); + + if( fail < 0 ) { + switch( fail ) { + case -99: + MLPutFunction(stdlink, "Abort", 0); + return; + case -1: + Status("baddim", t->ndim, 0); + break; + case -2: + Status("badcomp", t->ncomp, 0); + break; + } + MLPutSymbol(stdlink, "$Failed"); + } + else { + Status(fail ? "accuracy" : "success", t->neval, t->nregions); + MLPutFunction(stdlink, "Thread", 1); + MLPutFunction(stdlink, "List", 3); + MLPutRealxList(stdlink, integral, t->ncomp); + MLPutRealxList(stdlink, error, t->ncomp); + MLPutRealxList(stdlink, prob, t->ncomp); + } +} + +/*********************************************************************/ + +void Suave(cint ndim, cint ncomp, + creal epsrel, creal epsabs, + cint flags, cint seed, + cnumber mineval, cnumber maxeval, + cnumber nnew, cnumber nmin, creal flatness, cchar *statefile) +{ + This t; + t.ndim = ndim; + t.ncomp = ncomp; + t.epsrel = epsrel; + t.epsabs = epsabs; + t.flags = flags; + t.seed = seed; + t.mineval = mineval; + t.maxeval = maxeval; + t.nnew = nnew; + t.nmin = nmin; + t.flatness = flatness; + t.statefile = statefile; + + DoIntegrate(&t); + MLEndPacket(stdlink); +} + +/*********************************************************************/ + +int main(int argc, char **argv) +{ + return MLMain(argc, argv); +} + diff --git a/Cuba/src/suave/common.c b/Cuba/src/suave/common.c new file mode 100644 index 0000000..163f111 --- /dev/null +++ b/Cuba/src/suave/common.c @@ -0,0 +1,41 @@ +/* + common.c + includes most of the modules + this file is part of Suave + last modified 29 Jul 13 th +*/ + + +static inline Region *RegionAlloc(cThis *t, cnumber n, cnumber nnew) +{ + csize_t size = sizeof(Region) + + t->ncomp*sizeof(Result) + + t->ndim*sizeof(Bounds) + + t->ncomp*t->ndim*2*sizeof(real) + + n*SAMPLESIZE + + nnew*t->ndim*sizeof(bin_t); + Region *p; + MemAlloc(p, size); + p->size = size; + return p; +} + +static inline bool BadDimension(cThis *t) +{ + if( t->ndim > MAXDIM ) return true; + return t->ndim < SOBOL_MINDIM || + (t->seed == 0 && t->ndim > SOBOL_MAXDIM); +} + +static inline bool BadComponent(cThis *t) +{ + if( t->ncomp > MAXCOMP ) return true; + return t->ncomp < 1; +} + +#include "Random.c" +#include "ChiSquare.c" +#include "Grid.c" +#include "Sample.c" +#include "Fluct.c" + diff --git a/Cuba/src/suave/decl.h b/Cuba/src/suave/decl.h new file mode 100644 index 0000000..4d738b3 --- /dev/null +++ b/Cuba/src/suave/decl.h @@ -0,0 +1,78 @@ +/* + decl.h + Type declarations + this file is part of Suave + last modified 25 Nov 14 th +*/ + + +#include "stddecl.h" + +#define MINSAMPLES 10 + +#define NBINS 64 + +typedef unsigned char bin_t; +/* Note: bin_t must be wide enough to hold the numbers 0..NBINS */ + +typedef const bin_t cbin_t; + +typedef real Grid[NBINS]; + +typedef const Grid cGrid; + +typedef struct { + real avg, err, sigsq, chisq; +} Result; + +typedef const Result cResult; + +typedef struct { + real lower, upper; + Grid grid; +} Bounds; + +typedef const Bounds cBounds; + +typedef int (*Integrand)(ccount *, creal *, ccount *, real *, + void *, cnumber *, cint *, creal *, cint *); + +typedef struct _this { + count ndim, ncomp; +#ifndef MLVERSION + Integrand integrand; + void *userdata; + number nvec; +#ifdef HAVE_FORK + SHM_ONLY(int shmid;) + Spin *spin; + real *frame; +#endif +#endif + real epsrel, epsabs; + int flags, seed; + number mineval, maxeval; + number nnew, nmin; + real flatness; + cchar *statefile; + count nregions; + number neval; + RNGState rng; + jmp_buf abort; +} This; + +#define nframe nnew + +typedef const This cThis; + +typedef struct region { + struct region *next; + size_t size; + count div, df; + number n; + Result result[]; +} Region; + +#define RegionBounds(r) ((Bounds *)(r->result + t->ncomp)) +#define RegionW(r) ((real *)(RegionBounds(r) + t->ndim)) + diff --git a/Cuba/src/vegas/Grid.c b/Cuba/src/vegas/Grid.c new file mode 100644 index 0000000..7fff0aa --- /dev/null +++ b/Cuba/src/vegas/Grid.c @@ -0,0 +1,99 @@ +/* + Grid.c + utility functions for the Vegas grid + this file is part of Vegas + last modified 12 Mar 15 th +*/ + + +static inline void GetGrid(cThis *t, Grid *grid) +{ + count bin, dim; + unsigned const int slot = abs(t->gridno) - 1; + + if( t->gridno < 0 && slot < MAXGRIDS ) griddim_[slot] = 0; + + if( slot < MAXGRIDS && gridptr_[slot] ) { + if( griddim_[slot] == t->ndim ) { + XCopy(grid, gridptr_[slot]); + return; + } + free(gridptr_[slot]); + gridptr_[slot] = NULL; + } + + for( bin = 0; bin < NBINS; ++bin ) + grid[0][bin] = (bin + 1)/(real)NBINS; + for( dim = 1; dim < t->ndim; ++dim ) + Copy(&grid[dim], &grid[0], 1); +} + +/*********************************************************************/ + +static inline void PutGrid(cThis *t, Grid *grid) +{ + unsigned const int slot = abs(t->gridno) - 1; + + if( slot < MAXGRIDS ) { + if( gridptr_[slot] == NULL ) Alloc(gridptr_[slot], t->ndim); + griddim_[slot] = t->ndim; + XCopy(gridptr_[slot], grid); + } +} + +/*********************************************************************/ + +static void RefineGrid(cThis *t, Grid grid, Grid margsum) +{ + real avgperbin, thisbin, newcur, delta; + Grid imp, newgrid; + int bin, newbin; + + /* smooth the f^2 value stored for each bin */ + real prev = margsum[0]; + real cur = margsum[1]; + real norm = margsum[0] = .5*(prev + cur); + for( bin = 1; bin < NBINS - 1; ++bin ) { + creal s = prev + cur; + prev = cur; + cur = margsum[bin + 1]; + norm += margsum[bin] = (s + cur)/3.; + } + norm += margsum[NBINS - 1] = .5*(prev + cur); + + if( norm == 0 ) return; + norm = 1/norm; + + /* compute the importance function for each bin */ + avgperbin = 0; + for( bin = 0; bin < NBINS; ++bin ) { + real impfun = 0; + if( margsum[bin] > 0 ) { + creal r = margsum[bin]*norm; + avgperbin += impfun = powx((r - 1)/log(r), 1.5); + } + imp[bin] = impfun; + } + avgperbin /= NBINS; + + /* redefine the size of each bin */ + cur = newcur = 0; + thisbin = 0; + bin = -1; + for( newbin = 0; newbin < NBINS - 1; ++newbin ) { + while( thisbin < avgperbin ) { + thisbin += imp[++bin]; + prev = cur; + cur = grid[bin]; + } + thisbin -= avgperbin; + delta = (cur - prev)*thisbin; + newgrid[newbin] = SHARPEDGES ? + cur - delta/imp[bin] : + (newcur = Max(newcur, + cur - 2*delta/(imp[bin] + imp[IDim(bin - 1)]))); + } + Copy(grid, newgrid, NBINS - 1); + grid[NBINS - 1] = 1; +} + diff --git a/Cuba/src/vegas/Integrate.c b/Cuba/src/vegas/Integrate.c new file mode 100644 index 0000000..bb1bae7 --- /dev/null +++ b/Cuba/src/vegas/Integrate.c @@ -0,0 +1,227 @@ +/* + Integrate.c + integrate over the unit hypercube + this file is part of Vegas + last modified 13 Mar 15 th +*/ + + +typedef struct { + signature_t signature; + count niter; + number nsamples, neval; + Cumulants cumul[]; +} State; + +static int Integrate(This *t, real *integral, real *error, real *prob) +{ + bin_t *bins; + count dim, comp; + int fail; + + StateDecl; + csize_t statesize = sizeof(State) + + NCOMP*sizeof(Cumulants) + NDIM*sizeof(Grid); + Sized(State, state, statesize); + Cumulants *c, *C = state->cumul + t->ncomp; + Grid *state_grid = (Grid *)C; + Array(Grid, margsum, NCOMP, NDIM); + Vector(char, out, 128*NCOMP + 256); + + if( VERBOSE > 1 ) { + sprintf(out, "Vegas input parameters:\n" + " ndim " COUNT "\n ncomp " COUNT "\n" + ML_NOT(" nvec " NUMBER "\n") + " epsrel " REAL "\n epsabs " REAL "\n" + " flags %d\n seed %d\n" + " mineval " NUMBER "\n maxeval " NUMBER "\n" + " nstart " NUMBER "\n nincrease " NUMBER "\n" + " nbatch " NUMBER "\n gridno %d\n" + " statefile \"%s\"", + t->ndim, t->ncomp, + ML_NOT(t->nvec,) + SHOW(t->epsrel), SHOW(t->epsabs), + t->flags, t->seed, + t->mineval, t->maxeval, + t->nstart, t->nincrease, t->nbatch, + t->gridno, t->statefile); + Print(out); + } + + if( BadComponent(t) ) return -2; + if( BadDimension(t) ) return -1; + + FrameAlloc(t, Master); + ForkCores(t); + Alloc(bins, t->nbatch*t->ndim); + + if( (fail = setjmp(t->abort)) ) goto abort; + + IniRandom(t); + + StateSetup(t); + + if( StateReadTest(t) ) { + StateReadOpen(t, fd) { + if( read(fd, state, statesize) != statesize || + state->signature != StateSignature(t, 1) ) break; + } StateReadClose(t, fd); + t->neval = state->neval; + t->rng.skiprandom(t, t->neval); + } + + if( ini | ZAPSTATE ) { + t->neval = 0; + state->niter = 0; + state->nsamples = t->nstart; + FClear(state->cumul); + if( ini ) GetGrid(t, state_grid); + } + + /* main iteration loop */ + for( ; ; ) { + number nsamples = state->nsamples; + creal jacobian = 1./nsamples; + + FClear(margsum); + + for( ; nsamples > 0; nsamples -= t->nbatch ) { + cnumber n = IMin(t->nbatch, nsamples); + real *w = t->frame; + real *x = w + n; + real *f = x + n*t->ndim; + real *lastf = f + n*t->ncomp; + bin_t *bin = bins; + + while( x < f ) { + real weight = jacobian; + + t->rng.getrandom(t, x); + + for( dim = 0; dim < t->ndim; ++dim ) { + creal pos = *x*NBINS; + ccount ipos = (count)pos; + creal prev = (ipos == 0) ? 0 : state_grid[dim][ipos - 1]; + creal diff = state_grid[dim][ipos] - prev; + *x++ = prev + (pos - ipos)*diff; + *bin++ = ipos; + weight *= diff*NBINS; + } + + *w++ = weight; + } + + DoSample(t, n, w, f, t->frame, state->niter + 1); + + bin = bins; + w = t->frame; + + while( f < lastf ) { + creal weight = *w++; + Grid *m = &margsum[0][0]; + + for( c = state->cumul; c < C; ++c ) { + real wfun = weight*(*f++); + if( wfun ) { + c->sum += wfun; + c->sqsum += wfun *= wfun; + for( dim = 0; dim < t->ndim; ++dim ) + m[dim][bin[dim]] += wfun; + } + m += t->ndim; + } + + bin += t->ndim; + } + } + + fail = 0; + + /* compute the integral and error values */ + + for( c = state->cumul; c < C; ++c ) { + real w = Weight(c->sum, c->sqsum, state->nsamples); + real sigsq = 1/(c->weightsum += w); + real avg = sigsq*(c->avgsum += w*c->sum); + + c->avg = LAST ? (sigsq = 1/w, c->sum) : avg; + c->err = sqrtx(sigsq); + fail |= (c->err > MaxErr(c->avg)); + + if( state->niter == 0 ) c->guess = c->sum; + else { + c->chisum += w *= c->sum - c->guess; + c->chisqsum += w*c->sum; + } + c->chisq = c->chisqsum - avg*c->chisum; + + c->sum = c->sqsum = 0; + } + + if( VERBOSE ) { + char *oe = out + sprintf(out, "\n" + "Iteration " COUNT ": " NUMBER " integrand evaluations so far", + state->niter + 1, t->neval); + for( c = state->cumul, comp = 0; c < C; ++c ) + oe += sprintf(oe, "\n[" COUNT "] " + REAL " +- " REAL " \tchisq " REAL " (" COUNT " df)", + ++comp, SHOW(c->avg), SHOW(c->err), + SHOW(c->chisq), state->niter); + Print(out); + } + + if( fail == 0 && t->neval >= t->mineval ) break; + + if( t->neval >= t->maxeval && !StateWriteTest(t) ) break; + + if( t->ncomp == 1 ) + for( dim = 0; dim < t->ndim; ++dim ) + RefineGrid(t, state_grid[dim], margsum[0][dim]); + else { + for( dim = 0; dim < t->ndim; ++dim ) { + Grid wmargsum; + Zap(wmargsum); + for( comp = 0; comp < t->ncomp; ++comp ) { + real w = state->cumul[comp].avg; + if( w != 0 ) { + creal *m = margsum[comp][dim]; + count bin; + w = 1/Sq(w); + for( bin = 0; bin < NBINS; ++bin ) + wmargsum[bin] += w*m[bin]; + } + } + RefineGrid(t, state_grid[dim], wmargsum); + } + } + + ++state->niter; + state->nsamples += t->nincrease; + + if( StateWriteTest(t) ) { + state->signature = StateSignature(t, 1); + state->neval = t->neval; + StateWriteOpen(t, fd) { + StateWrite(fd, state, statesize); + } StateWriteClose(t, fd); + if( t->neval >= t->maxeval ) break; + } + } + + for( comp = 0; comp < t->ncomp; ++comp ) { + cCumulants *c = &state->cumul[comp]; + integral[comp] = c->avg; + error[comp] = c->err; + prob[comp] = ChiSquare(c->chisq, state->niter); + } + +abort: + PutGrid(t, state_grid); + free(bins); + FrameFree(t, Master); + + StateRemove(t); + + return fail; +} + diff --git a/Cuba/src/vegas/Vegas.c b/Cuba/src/vegas/Vegas.c new file mode 100755 index 0000000..46a3fd8 --- /dev/null +++ b/Cuba/src/vegas/Vegas.c @@ -0,0 +1,94 @@ +/* + Vegas.c + Vegas Monte Carlo integration + by Thomas Hahn + last modified 25 Nov 14 th +*/ + + +#define VEGAS +#define ROUTINE "Vegas" + +#include "decl.h" +#include "CSample.c" + +/*********************************************************************/ + +Extern void EXPORT(Vegas)(ccount ndim, ccount ncomp, + Integrand integrand, void *userdata, cnumber nvec, + creal epsrel, creal epsabs, cint flags, cint seed, + cnumber mineval, cnumber maxeval, + cnumber nstart, cnumber nincrease, + cnumber nbatch, cint gridno, + cchar *statefile, Spin **pspin, + number *pneval, int *pfail, + real *integral, real *error, real *prob) +{ + This t; + + VerboseInit(); + + t.ndim = ndim; + t.ncomp = ncomp; + t.integrand = integrand; + t.userdata = userdata; + t.nvec = nvec; + t.epsrel = epsrel; + t.epsabs = epsabs; + t.flags = MaxVerbose(flags); + t.seed = seed; + t.mineval = mineval; + t.maxeval = maxeval; + t.nstart = nstart; + t.nincrease = nincrease; + t.nbatch = nbatch; + t.gridno = gridno; + t.statefile = statefile; + FORK_ONLY(t.spin = Invalid(pspin) ? NULL : *pspin;) + + *pfail = Integrate(&t, integral, error, prob); + *pneval = t.neval; + + WaitCores(&t, pspin); +} + +/*********************************************************************/ + +Extern void EXPORT(vegas)(ccount *pndim, ccount *pncomp, + Integrand integrand, void *userdata, cnumber *pnvec, + creal *pepsrel, creal *pepsabs, cint *pflags, cint *pseed, + cnumber *pmineval, cnumber *pmaxeval, + cnumber *pnstart, cnumber *pnincrease, + cnumber *pnbatch, cint *pgridno, + cchar *statefile, Spin **pspin, + number *pneval, int *pfail, + real *integral, real *error, real *prob, cint statefilelen) +{ + This t; + + VerboseInit(); + + t.ndim = *pndim; + t.ncomp = *pncomp; + t.integrand = integrand; + t.userdata = userdata; + t.nvec = *pnvec; + t.epsrel = *pepsrel; + t.epsabs = *pepsabs; + t.flags = MaxVerbose(*pflags); + t.seed = *pseed; + t.mineval = *pmineval; + t.maxeval = *pmaxeval; + t.nstart = *pnstart; + t.nincrease = *pnincrease; + t.nbatch = *pnbatch; + t.gridno = *pgridno; + CString(t.statefile, statefile, statefilelen); + FORK_ONLY(t.spin = Invalid(pspin) ? NULL : *pspin;) + + *pfail = Integrate(&t, integral, error, prob); + *pneval = t.neval; + + WaitCores(&t, pspin); +} + diff --git a/Cuba/src/vegas/Vegas.tm b/Cuba/src/vegas/Vegas.tm new file mode 100644 index 0000000..839f16c --- /dev/null +++ b/Cuba/src/vegas/Vegas.tm @@ -0,0 +1,254 @@ +:Evaluate: BeginPackage["Cuba`"] + +:Evaluate: Vegas::usage = "Vegas[f, {x, xmin, xmax}..] computes a numerical approximation to the integral of the real scalar or vector function f. + The output is a list with entries of the form {integral, error, chi-square probability} for each component of the integrand." + +:Evaluate: NStart::usage = "NStart is an option of Vegas. + It specifies the number of integrand evaluations per iteration to start with." + +:Evaluate: NIncrease::usage = "NIncrease is an option of Vegas. + It specifies the increase in the number of integrand evaluations per iteration." + +:Evaluate: NBatch::usage = "NBatch is an option of Vegas. + It specifies how many points are sent in one MathLink packet to be sampled by Mathematica." + +:Evaluate: MinPoints::usage = "MinPoints is an option of Vegas. + It specifies the minimum number of points to sample." + +:Evaluate: GridNo::usage = "GridNo is an option of Vegas. + Vegas maintains an internal table in which it can memorize up to 10 grids, to be used in subsequent integrations. + A GridNo between 1 and 10 selects the slot in this internal table. + For other values the grid is initialized from scratch and discarded at the end of the integration." + +:Evaluate: StateFile::usage = "StateFile is an option of Vegas. + It specifies a file in which the internal state is stored after each iteration and from which it can be restored on a subsequent run. + The state file is removed once the prescribed accuracy has been reached." + +:Evaluate: Final::usage = "Final is an option of Vegas. + It can take the values Last or All which determine whether only the last (largest) or all of the samples collected on a subregion over the iterations contribute to the final result." + +:Evaluate: PseudoRandom::usage = "PseudoRandom is an option of Vegas. + It can take the following values: + False for Sobol quasi-random numbers (default), + True or 0 for Mersenne Twister pseudo-random numbers, + any other integer value n for Ranlux pseudo-random numbers of luxury level n." + +:Evaluate: PseudoRandomSeed::usage = "PseudoRandomSeed is an option of Vegas. + It specifies the seed for the pseudo-random number generator." + +:Evaluate: SharpEdges::usage = "SharpEdges is an option of Vegas. + It turns off smoothing of the importance function for integrands with sharp edges." + +:Evaluate: RetainStateFile::usage = "RetainStateFile is an option of Vegas. + It determines whether a chosen state file is kept even if the integration terminates normally." + +:Evaluate: ResetState::usage = "ResetState is an option of Vegas. + If True, Vegas resets its state even if a state file is present, i.e. keeps only the grid." + +:Evaluate: $Weight::usage = "$Weight is a global variable set by Vegas during the evaluation of the integrand to the weight of the point being sampled." + +:Evaluate: $Iteration::usage = "$Iteration is a global variable set by Suave during the evaluation of the integrand to the present iteration number." + +:Evaluate: MapSample::usage = "MapSample is a function used to map the integrand over the points to be sampled." + + +:Evaluate: Begin["`Vegas`"] + +:Begin: +:Function: Vegas +:Pattern: MLVegas[ndim_, ncomp_, + epsrel_, epsabs_, flags_, seed_, + mineval_, maxeval_, + nstart_, nincrease_, nbatch_, + gridno_, statefile_] +:Arguments: {ndim, ncomp, + epsrel, epsabs, flags, seed, + mineval, maxeval, + nstart, nincrease, nbatch, + gridno, statefile} +:ArgumentTypes: {Integer, Integer, + Real64, Real64, Integer, Integer, + Integer, Integer, + Integer, Integer, Integer, + Integer, String} +:ReturnType: Manual +:End: + +:Evaluate: Attributes[Vegas] = {HoldFirst} + +:Evaluate: Options[Vegas] = {PrecisionGoal -> 3, AccuracyGoal -> 12, + MinPoints -> 0, MaxPoints -> 50000, + NStart -> 1000, NIncrease -> 500, + NBatch -> 1000, GridNo -> 0, StateFile -> "", + Verbose -> 1, Final -> All, + PseudoRandom -> False, PseudoRandomSeed -> 5489, + SharpEdges -> False, RetainStateFile -> False, + ResetState -> False, Compiled -> True} + +:Evaluate: Vegas[f_, v:{_, _, _}.., opt___Rule] := + Block[ {ff = HoldForm[f], ndim = Length[{v}], ncomp, + tags, vars, lower, range, jac, tmp, defs, intT, + rel, abs, mineval, maxeval, nstart, nincrease, nbatch, + gridno, state, verbose, final, level, seed, edges, retain, + zapstate, compiled, $Weight, $Iteration}, + Message[Vegas::optx, #, Vegas]&/@ + Complement[First/@ {opt}, tags = First/@ Options[Vegas]]; + {rel, abs, mineval, maxeval, nstart, nincrease, nbatch, + gridno, state, verbose, final, level, seed, edges, retain, + zapstate, compiled} = tags /. {opt} /. Options[Vegas]; + {vars, lower, range} = Transpose[{v}]; + jac = Simplify[Times@@ (range -= lower)]; + tmp = Array[tmpvar, ndim]; + defs = Simplify[lower + range tmp]; + Block[{Set}, define[compiled, tmp, Thread[vars = defs], jac]]; + intT = integrandT[f]; + Block[#, + ncomp = Length[intT@@ RandomReal[1, ndim]]; + MLVegas[ndim, ncomp, 10.^-rel, 10.^-abs, + Min[Max[verbose, 0], 3] + + If[final === Last, 4, 0] + + If[TrueQ[edges], 8, 0] + + If[TrueQ[retain], 16, 0] + + If[TrueQ[zapstate], 32, 0] + + If[IntegerQ[level], 256 level, 0], + If[level =!= False && IntegerQ[seed], seed, 0], + mineval, maxeval, + nstart, nincrease, nbatch, + gridno, state] + ]& @ vars + ] + +:Evaluate: tmpvar[n_] := ToExpression["Cuba`Vegas`t" <> ToString[n]] + +:Evaluate: Attributes[foo] = {HoldAll} + +:Evaluate: define[True, tmp_, defs_, jac_] := + integrandT[f_] := Compile[tmp, eval[defs, N[f jac]], + {{_eval, _Real, 1}}] + +:Evaluate: define[_, tmp_, defs_, jac_] := + integrandT[f_] := Function[tmp, eval[defs, N[f jac]]] + +:Evaluate: eval[_, f_Real] = {f} + +:Evaluate: eval[_, f:{__Real}] = f + +:Evaluate: eval[x_, _] := (Message[Vegas::badsample, ff, x]; {}) + +:Evaluate: sample[x_, w_, iter_] := ( + $Iteration = iter; + Check[Flatten @ MapSample[ + ($Weight = #[[1]]; intT@@ #[[2]])&, + Transpose[{w, Partition[x, ndim]}] ], {}] ) + +:Evaluate: ValueQ[MapSample] || (MapSample = Map) + +:Evaluate: Vegas::badsample = "`` is not a real-valued function at ``." + +:Evaluate: Vegas::baddim = "Cannot integrate in `` dimensions." + +:Evaluate: Vegas::badcomp = "Cannot integrate `` components." + +:Evaluate: Vegas::accuracy = + "Desired accuracy was not reached within `` function evaluations." + +:Evaluate: Vegas::success = "Needed `` function evaluations." + +:Evaluate: End[] + +:Evaluate: EndPackage[] + + +/* + Vegas.tm + Vegas Monte Carlo integration + by Thomas Hahn + last modified 27 Mar 15 th +*/ + + +#define VEGAS +#define ROUTINE "Vegas" + +#include "mathlink.h" +#include "decl.h" +#include "MSample.c" + +/*********************************************************************/ + +static void Status(MLCONST char *msg, cint n) +{ + MLPutFunction(stdlink, "CompoundExpression", 2); + MLPutFunction(stdlink, "Message", 2); + MLPutFunction(stdlink, "MessageName", 2); + MLPutSymbol(stdlink, "Vegas"); + MLPutString(stdlink, msg); + MLPutInteger(stdlink, n); +} + +/*********************************************************************/ + +static inline void DoIntegrate(This *t) +{ + real integral[NCOMP], error[NCOMP], prob[NCOMP]; + cint fail = Integrate(t, integral, error, prob); + + if( fail < 0 ) { + switch( fail ) { + case -99: + MLPutFunction(stdlink, "Abort", 0); + return; + case -1: + Status("baddim", t->ndim); + break; + case -2: + Status("badcomp", t->ncomp); + break; + } + MLPutSymbol(stdlink, "$Failed"); + } + else { + Status(fail ? "accuracy" : "success", t->neval); + MLPutFunction(stdlink, "Thread", 1); + MLPutFunction(stdlink, "List", 3); + MLPutRealxList(stdlink, integral, t->ncomp); + MLPutRealxList(stdlink, error, t->ncomp); + MLPutRealxList(stdlink, prob, t->ncomp); + } +} + +/*********************************************************************/ + +void Vegas(cint ndim, cint ncomp, + creal epsrel, creal epsabs, + cint flags, cint seed, + cnumber mineval, cnumber maxeval, + cnumber nstart, cnumber nincrease, cint nbatch, + cint gridno, cchar *statefile) +{ + This t; + t.ndim = ndim; + t.ncomp = ncomp; + t.epsrel = epsrel; + t.epsabs = epsabs; + t.flags = flags; + t.seed = seed; + t.mineval = mineval; + t.maxeval = maxeval; + t.nstart = nstart; + t.nincrease = nincrease; + t.nbatch = nbatch; + t.gridno = gridno; + t.statefile = statefile; + + DoIntegrate(&t); + MLEndPacket(stdlink); +} + +/*********************************************************************/ + +int main(int argc, char **argv) +{ + return MLMain(argc, argv); +} + diff --git a/Cuba/src/vegas/common.c b/Cuba/src/vegas/common.c new file mode 100644 index 0000000..eaa59a4 --- /dev/null +++ b/Cuba/src/vegas/common.c @@ -0,0 +1,25 @@ +/* + common.c + Code common to Vegas.c and Vegas.tm + this file is part of Vegas + last modified 29 Jul 13 th +*/ + + +#include "Random.c" +#include "ChiSquare.c" +#include "Grid.c" + +static inline bool BadDimension(cThis *t) +{ + if( t->ndim > MAXDIM ) return true; + return t->ndim < SOBOL_MINDIM || + (t->seed == 0 && t->ndim > SOBOL_MAXDIM); +} + +static inline bool BadComponent(cThis *t) +{ + if( t->ncomp > MAXCOMP ) return true; + return t->ncomp < 1; +} + diff --git a/Cuba/src/vegas/decl.h b/Cuba/src/vegas/decl.h new file mode 100644 index 0000000..d528c2b --- /dev/null +++ b/Cuba/src/vegas/decl.h @@ -0,0 +1,63 @@ +/* + decl.h + Type declarations + this file is part of Vegas + last modified 21 Jul 14 th +*/ + + +#include "stddecl.h" + +#define MAXGRIDS 10 + +#define NBINS 128 + +typedef unsigned char bin_t; +/* Note: bin_t must be wide enough to hold the numbers 0..NBINS */ + +typedef const bin_t cbin_t; + +typedef real Grid[NBINS]; + +typedef struct { + real sum, sqsum; + real weightsum, avgsum; + real chisum, chisqsum, guess; + real avg, err, chisq; +} Cumulants; + +typedef const Cumulants cCumulants; + +typedef int (*Integrand)(ccount *, creal *, ccount *, real *, + void *, cnumber *, cint *, creal *, cint *); + +typedef struct _this { + count ndim, ncomp; +#ifndef MLVERSION + Integrand integrand; + void *userdata; + number nvec; +#ifdef HAVE_FORK + SHM_ONLY(int shmid;) + Spin *spin; +#endif +#endif + real *frame; + real epsrel, epsabs; + int flags, seed; + number mineval, maxeval; + number nstart, nincrease, nbatch; + int gridno; + cchar *statefile; + number neval; + RNGState rng; + jmp_buf abort; +} This; + +#define nframe nbatch + +typedef const This cThis; + +static Grid *gridptr_[MAXGRIDS]; +static count griddim_[MAXGRIDS]; + diff --git a/Cuba/tools/fcc b/Cuba/tools/fcc new file mode 100755 index 0000000..5ae55b8 --- /dev/null +++ b/Cuba/tools/fcc @@ -0,0 +1,73 @@ +#! /bin/sh +# script to compile C programs that are linked +# against Fortran libraries +# last modified 3 Feb 15 th + +args= +compileonly= +objs= +ldflags= +fldflags= + +cc="${REALCC:-cc}" +cxx="${REALCXX:-c++}" +test `basename $0 .in` = f++ && cc="$cxx" +case `$cxx --version 2>&1` in +*clang*) cxx="$cxx -stdlib=libstdc++" ;; +esac + +while test $# -gt 0 ; do + case "$1" in + -st | -b32 | -b64) + ;; # ignore mcc-specific flags + -arch) + shift + ;; + -lstdc++) + cc="$cxx" + ;; # or else -static-libstdc++ has no effect + -Wno-long-double) + ;; # mcc adds this on Macs & gcc 4 doesn't like it + -L*CompilerAdditions*) + ldflags="$ldflags '$1'" + mldir=`echo "$1" | sed ' + s/^-L// + s/Links.MathLink.DeveloperKit/Libraries/ + s/CompilerAdditions.*$//'` + case "$cc" in + *-m32*) mldir=`echo "$mldir" | sed 's/-x86-64//g'` ;; + esac + test -f "$mldir/libuuid.a" && { + ldflags="$ldflads '-L$mldir'" + fldflags="$fldflags -luuid" + } + ;; + -[Ll]* | -Wl*) + ldflags="$ldflags '$1'" + ;; + *.tm.o) + objs="'$1' $objs" + ;; + *.a | *.o | *.so) + objs="$objs '$1'" + ;; + *.cc) + args="$args '$1'" + cc="$cxx" + ;; + -c) + compileonly="-c" + ;; + -o) + args="$args -o '$2'" + shift + ;; + *) + args="$args '$1'" + ;; + esac + shift +done + +eval "set -x ; exec $cc $args ${compileonly:-$objs $ldflags $fldflags}" + diff --git a/Cuba/tools/mcc b/Cuba/tools/mcc new file mode 100755 index 0000000..2637f92 --- /dev/null +++ b/Cuba/tools/mcc @@ -0,0 +1,119 @@ +#! /bin/sh +# this script jumps in if there is no working mcc on the path: +# - on Mac OS it (hopefully) figures out the location of mcc, +# - on Cygwin it substitutes mcc completely +# last modified 16 Jan 15 th + + +sdkpath() +{ + mathcmd="$1" + shift + mathcmd=`IFS=: + PATH="$PATH:$*" which $mathcmd` + + eval `"$mathcmd" -run ' + Print["sysid=\"", $SystemID, "\""]; + Print["topdir=\"", $TopDirectory, "\""]; + Exit[]' < /dev/null | tr '\r' ' ' | tail -2` + + # check whether Cygwin's dlltool can handle 64-bit DLLs + test "$sysid" = Windows-x86-64 && { + ${DLLTOOL:-dlltool} --help | grep x86-64 > /dev/null || sysid=Windows + } + + topdir=`cd "$topdir" ; echo $PWD` + + for sdk in \ + "$topdir/SystemFiles/Links/MathLink/DeveloperKit/$sysid/CompilerAdditions" \ + "$topdir/SystemFiles/Links/MathLink/DeveloperKit/CompilerAdditions" \ + "$topdir/AddOns/MathLink/DeveloperKit/$sysid/CompilerAdditions" ; do + test -d "$sdk" && return + done + + echo "MathLink SDK not found" 1>&2 + exit 1 +} + + +cygmcc() +{ + sdkpath math \ + "`cygpath '$ProgramW6432'`/Wolfram Research/Mathematica"/* \ + "`cygpath '$PROGRAMFILES'`/Wolfram Research/Mathematica"/* \ + "/cygdrive/c/Program Files/Wolfram Research/Mathematica"/* \ + "/cygdrive/c/Program Files (x86)/Wolfram Research/Mathematica"/* + + for sdk in "$sdk"/m* ; do + break + done + + cache=MLcyg-cache + test -d $cache || mkdir $cache + + for libname in "$sdk"/lib/ml*m.lib ; do + : + done + dllname=`basename "$libname" m.lib` + OSbits=32 + case "$dllname" in + *64*) OSbits=64 ;; + esac + + lib="$cache/${dllname}m" + test -f "$lib.a" || { + ( echo "EXPORTS" + ${NM:-nm} -C --defined-only "$libname" | awk '/ T [^.]/ { print $3 }' + ) > "$lib.def" + ${DLLTOOL:-dlltool} -k --dllname "$dllname.dll" \ + --def "$lib.def" --output-lib "$lib.a" + } + + tmp= + args="-DWIN$OSbits -I'$sdk/include'" + for arg in "$@" ; do + case "$arg" in + *.tm) + cp "$arg" "$arg.tm" + "$sdk"/bin/mprep -lines -o "$arg.c" "$arg.tm" + tmp="$tmp '$arg.c' '$arg.tm'" + args="$args '$arg.c'" ;; + *) + args="$args '$arg'" ;; + esac + done + + trap "rm -f $tmp" 0 1 2 3 15 + eval "set -x ; ${CC:-gcc} $args $lib.a -mwindows" +} + + +macmcc() +{ + sdkpath MathKernel \ + /Applications/Mathematica*/Contents/MacOS \ + $HOME/Desktop/Mathematica*/Contents/MacOS + exec "$sdk/mcc" "$@" +} + + +defaultmcc() +{ + sdkpath math \ + /usr/local/bin \ + /usr/local/Wolfram/bin \ + /usr/local/Wolfram/Mathematica/*/Executables \ + /opt/Wolfram/bin \ + /opt/Wolfram/Mathematica/*/Executables + exec "$sdk/mcc" "$@" +} + + +shopt -s nullglob 2> /dev/null + +case `uname -s` in +Darwin) macmcc "$@" ;; +CYG*) cygmcc "$@" ;; +*) defaultmcc "$@" ;; +esac + diff --git a/Cuba/tools/mkdist.c b/Cuba/tools/mkdist.c new file mode 100644 index 0000000..45c5e60 --- /dev/null +++ b/Cuba/tools/mkdist.c @@ -0,0 +1,183 @@ +/* + mkdist.c + + Usage: mkdist cvfz packagename.tar.gz packagedir files + + Creates packagename.tar.gz for distribution which unpacks + into the directory "packagedir". + 1) Sets up a temporary tree in which + - symlinks are preserved if they point to files in the tree, + - all other files are hardlinked. + 2) Tars that tree. + 3) Removes the temporary tree. + + last modified 4 Dec 14 th +*/ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <dirent.h> +#include <limits.h> +#include <fcntl.h> +#include <sys/stat.h> +#include <sys/types.h> + +char path[PATH_MAX], *path_end; + + +static inline char *copydir(char *d, const char *s) { + const char *dir = strrchr(s, '/'); + const ssize_t n = (dir) ? dir - s + 1 : 0; + return memcpy(d, s, n) + n; +} + + +static int depth(const char *path) +{ + int n = 0; + for( ; ; ) { + if( strncmp(path, "./", 2) == 0 ) path += 2; + else if( strncmp(path, "../", 3) == 0 ) { + path += 3; + if( --n < 0 ) return n; + } + else if( (path = strchr(path, '/')) ) ++n; + else return n; + path = path + strspn(path, "/"); + } +} + + +static void mkdirhier(char *file) +{ + struct stat st; + char *s = file; + const char *e = strrchr(file, '/'); + + while( s < e ) { + s = strchr(s, '/'); + *s = 0; + if( stat(file, &st) ) mkdir(file, 0777); + else if( !S_ISDIR(st.st_mode) ) { + fprintf(stderr, "Cannot create %s\n", file); + exit(1); + } + *s++ = '/'; + } +} + + +static void inspect(const char *file, const int phase) +{ + struct stat st; + if( lstat(file, &st) ) { + fprintf(stderr, "Cannot stat %s\n", file); + return; + } + + strcpy(path_end, file); + if( phase == 0 ) mkdirhier(path); + + if( S_ISREG(st.st_mode) ) { + if( phase == 0 ) link(file, path); + return; + } + + if( S_ISDIR(st.st_mode) ) { + char sub[PATH_MAX], *sub_end; + struct dirent *entry; + + DIR *cwd = opendir(file); + if( cwd == NULL ) { + fprintf(stderr, "Cannot read directory %s\n", file); + exit(1); + } + + strcpy(sub, file); + sub_end = sub + strlen(sub); + *sub_end++ = '/'; + + while( (entry = readdir(cwd)) ) + if( *entry->d_name != '.' ) { + strcpy(sub_end, entry->d_name); + inspect(sub, phase); + } + + closedir(cwd); + return; + } + + if( S_ISLNK(st.st_mode) ) { + char src[PATH_MAX], tmp[PATH_MAX]; + char *lnrel = copydir(src, file), *lnabs; + ssize_t n = readlink(file, lnrel, PATH_MAX); + if( n < 0 ) { + fprintf(stderr, "Cannot read link %s\n", file); + exit(1); + } + lnrel[n++] = 0; + + if( *(lnabs = lnrel) != '/' && + depth(lnabs = src) >= 0 ) { /* not out-of-tree */ + if( phase == 0 ) return; + memcpy(copydir(tmp, path), lnrel, n); + if( stat(tmp, &st) == 0 ) { + symlink(lnrel, path); + return; + } + } else if( phase == 1 ) return; + + if( realpath(lnabs, tmp) == NULL || + link(tmp, path) == -1 ) + fprintf(stderr, "Dangling link %s\n", file); + } +} + + +int main(int argc, char **argv) +{ + char cmd[PATH_MAX]; + struct stat st; + int c; + + if( argc < 5 ) { + fprintf(stderr, + "Usage:\t%s tarflags packagename.tar[.gz] packagedir files\n\n" + "Creates packagename.tar[.gz] for distribution which contains\n" + "\"files\" and unpacks into the directory \"packagedir\".\n" + "Symlinks are preserved if they point to files in the package.\n\n", + argv[0]); + exit(1); + } + + if( strstr(argv[2], ".tar") == NULL ) { + fprintf(stderr, "%s is not a tar file\n", argv[2]); + exit(1); + } + + if( stat(argv[3], &st) == 0 ) { + fprintf(stderr, "%s exists already\n", argv[3]); + exit(1); + } + strcpy(path, argv[3]); + path_end = path + strlen(path); + *path_end++ = '/'; + + sprintf(cmd, "rm -fr %s %s", path, argv[2]); + system(cmd); + + for( c = 4; c < argc; ++c ) inspect(argv[c], 0); + for( c = 4; c < argc; ++c ) inspect(argv[c], 1); + + sprintf(cmd, "tar %s %s --owner=root --group=root %s", + argv[1], argv[2], argv[3]); + system(cmd); + + sprintf(cmd, "rm -fr %s", argv[3]); + system(cmd); + + return 0; +} + diff --git a/Cuba/tools/mkstatic b/Cuba/tools/mkstatic new file mode 100755 index 0000000..0cd478b --- /dev/null +++ b/Cuba/tools/mkstatic @@ -0,0 +1,31 @@ +#! /bin/sh + +exe= +mach= +mlmach= +case `uname -s` in +Linux) tag=Linux + st=-static + #mach=-m32 + #mlmach=-b32 + ;; +Darwin) tag=Mac + st=-static-libgcc + mach=-mmacosx-version-min=10.6 + ;; +CYG*) tag=Windows + export CC=i686-pc-cygwin-gcc + st="-static -static-libgcc" + exe=.exe + ;; +esac + +./configure CFLAGS="-O3 -fomit-frame-pointer -ffast-math $st $mach" MCFLAGS="-st $mlmach" + +make math + +for file in Vegas Suave Divonne Cuhre ; do + gzip $file$exe + mv $file$exe.gz $file$exe-$tag.gz +done + diff --git a/Cuba/tools/partview.cpp b/Cuba/tools/partview.cpp new file mode 100644 index 0000000..da2b2d2 --- /dev/null +++ b/Cuba/tools/partview.cpp @@ -0,0 +1,265 @@ +/* + partview.cpp + Partition viewer for Cuba + last modified 18 Dec 13 th +*/ + + +#include <stdio.h> +#include <stdlib.h> +#include <math.h> + +#include <QWidget> +#include <QMainWindow> +#include <QTabWidget> +#include <QAction> +#include <QToolBar> +#include <QPainter> +#include <QPrinter> +#include <QPrintDialog> +#include <QApplication> +#include <QColorGroup> + +#include <list> + +#include "quit.xpm" +#include "print.xpm" + +// -------------------------------------------------------------- + +class PartitionPlane : public QWidget +{ +public: + PartitionPlane( const int dimx, const int dimy, QWidget *parent = 0 ) + : QWidget(parent), m_dimx(dimx), m_dimy(dimy), m_got(0) { + } + + void addBound( const int dim, const double lower, const double upper ); + + void drawRegion( QPainter *p, const QRect &r ); + void drawRegions( QPainter *p ); + + QSize sizeHint() const { + return QSize(InitialSize, InitialSize); + } + + QString filename() const { + return QString("%1-%2.ps").arg(m_dimx).arg(m_dimy); + } + +protected: + void paintEvent( QPaintEvent * ) { + QPainter p(this); + drawRegions( &p ); + } + +private: + int m_dimx, m_dimy, m_got; + int m_xlower, m_xupper, m_ylower, m_yupper; + + typedef std::list<QRect> regionList; + typedef regionList::iterator regionIt; + regionList m_regions; + + enum { + Hue = 0, // red + InitialSize = 400, + CoordScale = 4*InitialSize }; +}; + + +void PartitionPlane::addBound( const int dim, + const double lower, const double upper ) +{ + if( dim == m_dimx ) { + m_xlower = int(CoordScale*lower); + m_xupper = int(CoordScale*upper); + m_got |= 1; + } + if( dim == m_dimy ) { + m_ylower = int(CoordScale*lower); + m_yupper = int(CoordScale*upper); + m_got |= 2; + } + + if( m_got == 3 ) { + m_got = 0; + + const QRect rect = QRect(m_xlower, CoordScale - m_yupper, + m_xupper - m_xlower + 1, m_yupper - m_ylower + 1); + + const int area = rect.width()*rect.height(); + regionIt r; + + for( r = m_regions.begin(); r != m_regions.end(); ++r ) { + if( rect == *r ) return; + if( area > (*r).width()*(*r).height() ) break; + } + m_regions.insert(r, rect); + +// QPainter p(this); +// drawRegion( &p, rect ); + this->update(rect); + } +} + + +void PartitionPlane::drawRegion( QPainter *p, const QRect &r ) +{ + p->setWindow(0, 0, CoordScale, CoordScale); + + QColor c; + const double ratio = r.width()*r.height()/ + double(CoordScale*CoordScale); + const int saturation = int(255/(M_PI/2)*asin(1 - ratio)); + c.setHsv( Hue, saturation, 255 ); + p->setBrush(c); + + p->setPen(palette().foreground().color()); + + p->drawRect(r); +} + + +void PartitionPlane::drawRegions( QPainter *p ) +{ + for( regionIt r = m_regions.begin(); r != m_regions.end(); ++r ) + drawRegion( p, *r ); +} + + +// -------------------------------------------------------------- + +class PartitionViewer : public QMainWindow +{ + Q_OBJECT + +public: + PartitionViewer( QWidget *parent = 0 ); + void addPlane( const int dimx, const int dimy ); + void addBound( const int dim, const double lower, const double upper ); + int count() const { return m_tabs->count(); } + void tabupdate() { + if( m_tabs->currentWidget() != 0 ) m_tabs->currentWidget()->update(); + } + +public slots: + void print(); + +private: + QTabWidget *m_tabs; + QPrinter *m_printer; +}; + + +PartitionViewer::PartitionViewer( QWidget *parent ) +: QMainWindow(parent) +{ + setWindowTitle(tr("Cuba Partition Viewer")); + + QToolBar *toolbar = new QToolBar(this); + addToolBar(Qt::LeftToolBarArea, toolbar); + + QAction *quit = new QAction( QPixmap(quit_xpm), tr("&Quit"), this ); + quit->setShortcut(QKeySequence(tr("Ctrl+Q"))); + connect( quit, SIGNAL(activated()), qApp, SLOT(quit()) ); + toolbar->addAction(quit); + +#ifndef QT_NO_PRINTER + QAction *print = new QAction( QPixmap(print_xpm), tr("&Print..."), this ); + print->setShortcut(QKeySequence(tr("Ctrl+P"))); + connect( print, SIGNAL(activated()), this, SLOT(print()) ); + toolbar->addAction(print); + + m_printer = new QPrinter; +#endif + + m_tabs = new QTabWidget(this); + setCentralWidget(m_tabs); +} + + +void PartitionViewer::addPlane( const int dimx, const int dimy ) +{ + PartitionPlane *plane = new PartitionPlane(dimx, dimy, this); + m_tabs->addTab( plane, tr("%1-%2 plane").arg(dimx).arg(dimy) ); +} + + +void PartitionViewer::addBound( const int dim, + const double lower, const double upper ) +{ + for( int index = 0; index < m_tabs->count(); ++index ) { + PartitionPlane *plane = (PartitionPlane *)m_tabs->widget(index); + if( plane ) plane->addBound(dim, lower, upper); + } +} + + +void PartitionViewer::print() +{ +#ifndef QT_NO_PRINTER + PartitionPlane *plane = (PartitionPlane *)m_tabs->currentWidget(); + if( !plane ) return; + + QPrintDialog printDialog(m_printer, this); + if( printDialog.exec() == QDialog::Accepted ) { + QPainter p; + if( p.begin(m_printer) ) { + p.setViewport( QRect(QPoint(0, 0), plane->sizeHint()) ); +// plane->drawRegions( &p ); + this->update(); + } + } +#endif +} + + +#include "partview.moc" + +// -------------------------------------------------------------- + +int main( int argc, char **argv ) +{ + QApplication app(argc, argv); + PartitionViewer partview; + + argc = (argc - 1) & -2; + + for( int arg = 0; arg < argc; ) { + const int dimx = atoi(argv[++arg]); + const int dimy = atoi(argv[++arg]); + if( dimx > 0 && dimy > 0 ) partview.addPlane(dimx, dimy); + } + + if( partview.count() == 0 ) { + fprintf(stderr, "Usage: %s dimx dimy ...\n" + "reads Cuba's verbose = 3 output from stdin and displays\n" + "the dimx-dimy plane of the tessellation on screen.\n" + "Each pair of dimensions is shown in a separate window.\n\n", + argv[0]); + exit(1); + } + + partview.show(); + + int dim = 0; + char line[128]; + + while( fgets(line, sizeof line, stdin) ) { + double lower, upper; + + fputs(line, stdout); + + if( sscanf(line, "%*[^(](%lf) - (%lf)", &lower, &upper) == 2 ) + partview.addBound(++dim, lower, upper); + else dim = 0; + + app.processEvents(); + } + + fflush(stdout); + partview.tabupdate(); + return app.exec(); +} + diff --git a/Cuba/tools/partview.m b/Cuba/tools/partview.m new file mode 100644 index 0000000..579f4f2 --- /dev/null +++ b/Cuba/tools/partview.m @@ -0,0 +1,40 @@ +(* + partview.m + A partition viewer for Cuba results in Mathematica + last modified 4 Feb 05 th +*) + + +BeginPackage["Cuba`"] + +PartView::usage = "For a Cuba result obtained with Regions -> True, +PartView[result, dimx, dimy] displays the dimx-dimy plane of the +tessellation used in the integration." + +Rect::usage = "Rect[{x1, y1}, {x2, y2}] is the graphics primitive used +by PartView to render a rectangle." + +Begin["`PartView`"] + +PartView[expr_, dimx_Integer, dimy_Integer] := +Block[ {r, g, maxarea}, + r = Cases[expr, + Region[ll_, ur_, ___] :> {ll[[{dimx, dimy}]], ur[[{dimx, dimy}]]}, + Infinity]; + maxarea = Times@@ (Max/@ #2 - Min/@ #1 &)@@ Transpose[r, {3, 1, 2}]; + (Show[#]; #)& @ Graphics[Apply[Rect, r, 1], AspectRatio -> 1] +] + +maxarea = 1 + +Rect[{l_, d_}, {r_, u_}] := { + { Hue[0, (ArcSin[1 - (r - l) (u - d)/maxarea]/(Pi/2))^2, 1], + Rectangle[{l, d}, {r, u}] }, + { RGBColor[0, 0, 0], + Line[{{l, d}, {r, d}, {r, u}, {l, u}, {l, d}}] } +} + +End[] + +EndPackage[] + diff --git a/Cuba/tools/partview.pro b/Cuba/tools/partview.pro new file mode 100644 index 0000000..7084a85 --- /dev/null +++ b/Cuba/tools/partview.pro @@ -0,0 +1,6 @@ +TEMPLATE = app +CONFIG += qt release +SOURCES += partview.cpp +HEADERS += quit.xpm print.xpm +DESTDIR = . +MOC_DIR = . diff --git a/Cuba/tools/print.xpm b/Cuba/tools/print.xpm new file mode 100644 index 0000000..7368f3c --- /dev/null +++ b/Cuba/tools/print.xpm @@ -0,0 +1,258 @@ +/* XPM */ +static const char * print_xpm[] = { +"48 48 207 2", +" c None", +". c #929292", +"+ c #A0A0A0", +"@ c #9E9E9E", +"# c #9D9D9D", +"$ c #9C9C9C", +"% c #9B9B9B", +"& c #9A9A9A", +"* c #999999", +"= c #DADADA", +"- c #FFFFFF", +"; c #FCFCFC", +"> c #F9F9F9", +", c #F7F7F7", +"' c #F4F4F4", +") c #EBEBEB", +"! c #323232", +"~ c #D7D7D7", +"{ c #F1F1F1", +"] c #EFEFEF", +"^ c #ECECEC", +"/ c #E3E3E3", +"( c #313131", +"_ c #FEFEFE", +": c #F6F6F6", +"< c #EEEEEE", +"[ c #E9E9E9", +"} c #E1E1E1", +"| c #333333", +"1 c #D8D8D8", +"2 c #F3F3F3", +"3 c #E6E6E6", +"4 c #DEDEDE", +"5 c #E7E7E7", +"6 c #E4E4E4", +"7 c #DDDDDD", +"8 c #343434", +"9 c #DBDBDB", +"0 c #363636", +"a c #DCDCDC", +"b c #373737", +"c c #DFDFDF", +"d c #393939", +"e c #D9D9D9", +"f c #D5D5D5", +"g c #E0E0E0", +"h c #D6D6D6", +"i c #D3D3D3", +"j c #3B3B3B", +"k c #E2E2E2", +"l c #D4D4D4", +"m c #D1D1D1", +"n c #3C3C3C", +"o c #D0D0D0", +"p c #CECECE", +"q c #3E3E3E", +"r c #CDCDCD", +"s c #797979", +"t c #F0F0F0", +"u c #EDEDED", +"v c #E8E8E8", +"w c #E5E5E5", +"x c #737373", +"y c #6C6C6C", +"z c #959595", +"A c #C5C5C5", +"B c #757575", +"C c #8B8B8B", +"D c #878787", +"E c #858585", +"F c #838383", +"G c #828282", +"H c #808080", +"I c #7E7E7E", +"J c #7D7D7D", +"K c #7B7B7B", +"L c #7A7A7A", +"M c #777777", +"N c #767676", +"O c #747474", +"P c #717171", +"Q c #707070", +"R c #6E6E6E", +"S c #6D6D6D", +"T c #6B6B6B", +"U c #606060", +"V c #D2D2D2", +"W c #5E5E5E", +"X c #5A5A5A", +"Y c #5B5B5B", +"Z c #595959", +"` c #585858", +" . c #565656", +".. c #555555", +"+. c #545454", +"@. c #535353", +"#. c #515151", +"$. c #4F4F4F", +"%. c #4E4E4E", +"&. c #4D4D4D", +"*. c #494949", +"=. c #8F8F8F", +"-. c #FBFBFB", +";. c #EAEAEA", +">. c #B3B3B3", +",. c #FDFDFD", +"'. c #FAFAFA", +"). c #CCCCCC", +"!. c #CACACA", +"~. c #BDBDBD", +"{. c #3A3A3A", +"]. c #676767", +"^. c #F8F8F8", +"/. c #C4C4C4", +"(. c #B0B0B0", +"_. c #A1A1A1", +":. c #B8B8B8", +"<. c #F8F6F8", +"[. c #B5B5B5", +"}. c #E9F2E9", +"|. c #ACCEAC", +"1. c #B9D3B9", +"2. c #F5F7F5", +"3. c #7C7C7C", +"4. c #FDFAFD", +"5. c #7CC57C", +"6. c #5BD55B", +"7. c #39C339", +"8. c #FFFBFF", +"9. c #76C776", +"0. c #05BF05", +"a. c #07B507", +"b. c #8CCB8C", +"c. c #4B4B4B", +"d. c #F5F6F5", +"e. c #B2D1B2", +"f. c #CADFCA", +"g. c #FCFAFC", +"h. c #2E2E2E", +"i. c #F9F8F9", +"j. c #FFFCFF", +"k. c #C0C0C0", +"l. c #A6A6A6", +"m. c #C2C2C2", +"n. c #AAAAAA", +"o. c #C3C3C3", +"p. c #ABABAB", +"q. c #A3A3A3", +"r. c #CFCFCF", +"s. c #C8C8C8", +"t. c #C7C7C7", +"u. c #C9C9C9", +"v. c #909090", +"w. c #8D8D8D", +"x. c #8E8E8E", +"y. c #626262", +"z. c #A2A2A2", +"A. c #BFBFBF", +"B. c #000000", +"C. c #464646", +"D. c #B1B1B1", +"E. c #BBBBBB", +"F. c #252525", +"G. c #3D3D3D", +"H. c #010101", +"I. c #727272", +"J. c #BEBEBE", +"K. c #292929", +"L. c #BABABA", +"M. c #B6B6B6", +"N. c #030303", +"O. c #888888", +"P. c #C1C1C1", +"Q. c #9F9F9F", +"R. c #131313", +"S. c #B7B7B7", +"T. c #B9B9B9", +"U. c #8C8C8C", +"V. c #B4B4B4", +"W. c #BCBCBC", +"X. c #111111", +"Y. c #303030", +"Z. c #474747", +"`. c #101010", +" + c #505050", +".+ c #ACACAC", +"++ c #AEAEAE", +"@+ c #616161", +"#+ c #8A8A8A", +"$+ c #A5A5A5", +"%+ c #F5F5F5", +"&+ c #F2F2F2", +"*+ c #272727", +"=+ c #1B1B1B", +"-+ c #454545", +";+ c #949494", +">+ c #121212", +",+ c #AFAFAF", +"'+ c #979797", +")+ c #404040", +"!+ c #787878", +"~+ c #646464", +"{+ c #5F5F5F", +"]+ c #5D5D5D", +"^+ c #5C5C5C", +"/+ c #575757", +"(+ c #434343", +" . + @ @ @ @ @ @ @ @ @ @ @ # $ % & * * * * ", +" = - - - - - - - - - - - - - - ; > , ' ' ) ! ", +" ~ - - - - - - - - - - - ; > , ' { ] ^ ^ / ( ", +" ~ - - - - - - - - - _ ; > : ' { < ^ [ [ } | ", +" 1 - - - - - - - - _ ; > : 2 { < ) [ 3 3 4 | ", +" = - - - - - - - - ; > , ' { ] ^ [ 5 6 6 7 8 ", +" 9 - - - - - - _ ; > : ' { < ^ [ 3 6 } } 9 0 ", +" a - - - - - _ ; > : 2 { < ) [ 3 / } 4 7 1 b ", +" 4 - - - - - ; > , ' { ] ^ [ 5 6 } c a 9 ~ d ", +" c - - - _ ; > : ' { < ^ [ 3 6 } 4 a e 1 f d ", +" g - - _ ; > : 2 { < ) [ 3 / } 4 9 e h f i j ", +" k - - ; > , ' { ] ^ [ 5 6 } c a e ~ l i m n ", +" / - ; > : ' { < ^ [ 3 6 } 4 a e h l m o p q ", +" / - > : 2 { < ) [ 3 / } 4 9 e h i m p r r b ", +" s ) - - - _ ; > : ' t u ) v w / c a = ~ f m x y ", +" z A d B C D E F G H I J K L s M N O x P Q R S T | F a U ", +" V 6 W X X X X X X X Y Y Z ` ` ...+.@.#.#.$.%.&.*.=.c % ", +" ) - - - - - - - - - - - - _ -., ' { < ;.5 6 g 7 9 i o >.( ", +" #.2 - - - - - - - - - ,.'.: 2 t u [ 3 / g 7 = h i o ).!.~.{. ", +" ].C ^.- - - - - - - - ; > : 2 t < ;.5 6 } 4 a 1 f V o ).!./.I .. ", +" x (.i ] - - - - - - - - - - - _ _ _ _ _ ,.,.,.,.,.,.; ; ; ; -.-.; ,.] m _... ", +" Q :.<.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ' [.Z ", +" 1 - }.|.1.2.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A ", +" 3.,.4.5.6.7.5.- _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - u Y ", +" (._ 8.9.0.a.b.- ,.; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ,._ @ ", +" c.9 '.-.d.e.f.g.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.,.9 h. ", +" K ] , , i.j.8.^., , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ^.] X ", +" _.{ { ' ' ' 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ' ' ' 2 u F ", +" :.;./ 5 u ] t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t ] u v 6 5 % ", +" k.6 4 7 4 g / w v ;.) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ;.[ 3 / } c 4 4 6 l. ", +" m.4 = = = = e e = 9 c g k k / 6 w w w w w w w w w w w w w w 6 / k k } c a = e e e = = = g n. ", +" o.e f f f f f f f f l l f f f f h h ~ ~ 1 1 1 1 1 1 1 ~ h h f f f f l l f f f f f f f f a p. ", +" ~.f m m m m m m m m m m m m m m m m m o o o o o o o o m m m m m m m m m m m m m m m m m h l. ", +" [.m r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r ).m + ", +" q.r.s.s.s.t.o h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h r t.s.s.u.).v. ", +" w.!./././.u.x.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.z.u././.A u.O ", +" ].m.k.A.A.!.&.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.N !.A.A.k.A C. ", +" c.D.~.E.E.A @.B.B.B.B.F.G.j j j j j j j j j j j j j j {.{.{.{.{.{.n ( H.B.B.B.I./.E.E.J.p.K. ", +" & L.M.M.k.$.B.B.B.N.O.= f l l l l l l l l f l i o p ).!.s.A m.P./.Q.R.B.B.B.].~.S.S.T.U. ", +" U ~.M.V.W.Z X.X.X.Y.V 3 k k k k k k k k k k g 7 = e h i m p ).!.s.k.Z.`.X.X.].>.[.S.S. + ", +" L n.:.T.W.A.~.:.n.; _ _ _ _ _ _ _ _ _ _ -.> : 2 { < ;.v w k g 7 4 Q..+A.J.++V.:.l.y ", +" ! @+#+$+[.E.# J.- - - - - - - - - - ,.'.^.%+&+t ^ [ 5 6 } c a a m.z.L.V.z.E W *+ ", +" =+-+S U.&+- - - - - - - - - ,.'., %+&+] ^ [ 3 6 } 4 a 1 h m ;+].q >+ ", +" ,+- - - - - - - - - ; '., ' &+] ^ [ 3 / } 4 9 1 f V f '+ ", +" [ - - - - - - - - _ '.^.%+&+t u [ 5 6 } c a e h i o m J.)+ ", +" z.- - - - - - - - - - - _ -.^.%+&+] u ;.5 w } 4 a = ~ f 1 !+ ", +" @.~+y.y.y.y.y.y.y.@+{+{+{+{+W ]+^+^+X X X Z Z ` ` /+..../+(+ ", +" "}; diff --git a/Cuba/tools/quit.xpm b/Cuba/tools/quit.xpm new file mode 100644 index 0000000..57d45c7 --- /dev/null +++ b/Cuba/tools/quit.xpm @@ -0,0 +1,346 @@ +/* XPM */ +static const char * quit_xpm[] = { +"48 48 295 2", +" c None", +". c #A62212", +"+ c #B03B2A", +"@ c #B95440", +"# c #BF644E", +"$ c #BE634D", +"% c #BE634C", +"& c #BE624C", +"* c #BE624B", +"= c #BE614A", +"- c #BD614A", +"; c #BD6049", +"> c #BD6048", +", c #BD5F48", +"' c #BD5F46", +") c #BD5E46", +"! c #BC5E45", +"~ c #BC5D44", +"{ c #BC5D43", +"] c #BC5C43", +"^ c #BB5C42", +"/ c #BB5A42", +"( c #BB5A41", +"_ c #BB5A40", +": c #BA5940", +"< c #B54B34", +"[ c #AE3623", +"} c #B95541", +"| c #D2997F", +"1 c #D9A88D", +"2 c #D8A78B", +"3 c #D8A68A", +"4 c #D8A689", +"5 c #D7A487", +"6 c #D7A286", +"7 c #D7A285", +"8 c #D5A082", +"9 c #D5A081", +"0 c #D49E7F", +"a c #D49E7E", +"b c #D49D7D", +"c c #D39B7B", +"d c #D39B79", +"e c #D39A78", +"f c #D29977", +"g c #D29775", +"h c #D19674", +"i c #D19573", +"j c #D09471", +"k c #CF936F", +"l c #CF926E", +"m c #CE916D", +"n c #CE906C", +"o c #CE8F6A", +"p c #CD8D69", +"q c #C8805D", +"r c #B44A31", +"s c #A92B1A", +"t c #CD8971", +"u c #D9A98F", +"v c #D09275", +"w c #C87E5E", +"x c #C97E5E", +"y c #C87E5D", +"z c #C87F5E", +"A c #C97F5D", +"B c #C87F5D", +"C c #C87F5C", +"D c #C9805D", +"E c #C8805C", +"F c #C9805C", +"G c #C8815C", +"H c #C9815C", +"I c #CA8861", +"J c #CC8B65", +"K c #CC8A64", +"L c #C26F4F", +"M c #A82918", +"N c #D2997C", +"O c #BD5E3B", +"P c #BA5531", +"Q c #BA5631", +"R c #BA5732", +"S c #BB5935", +"T c #BB5A36", +"U c #BB5C37", +"V c #BC5E38", +"W c #BD5F39", +"X c #BD603A", +"Y c #BD613B", +"Z c #BE633C", +"` c #BE643E", +" . c #BE653F", +".. c #BE6740", +"+. c #BF6841", +"@. c #C06A43", +"#. c #C06B44", +"$. c #C26D45", +"%. c #C26E46", +"&. c #C26F48", +"*. c #C27149", +"=. c #C4724B", +"-. c #C4744C", +";. c #C4744D", +">. c #C4754E", +",. c #C57750", +"'. c #C67B54", +"). c #CA8760", +"!. c #CA8962", +"~. c #BF6849", +"{. c #BB5836", +"]. c #C57852", +"^. c #C57953", +"/. c #C67D55", +"(. c #C9855F", +"_. c #C9865F", +":. c #B3462E", +"<. c #C67C54", +"[. c #C77D56", +"}. c #C77F58", +"|. c #C8835D", +"1. c #C47652", +"2. c #CF8667", +"3. c #E5B39E", +"4. c #FCE1D4", +"5. c #FFECE2", +"6. c #FFEDE3", +"7. c #F8D9C9", +"8. c #E2AF96", +"9. c #C77B56", +"0. c #C77E57", +"a. c #C8815A", +"b. c #C88059", +"c. c #AC3420", +"d. c #D49073", +"e. c #FFEBE2", +"f. c #FFFFFF", +"g. c #F9DACC", +"h. c #CF8967", +"i. c #B2442C", +"j. c #C36C49", +"k. c #FBDFD3", +"l. c #E4B39B", +"m. c #C8825C", +"n. c #C77C55", +"o. c #B54E32", +"p. c #FFF6EF", +"q. c #FFEEE4", +"r. c #FFF9F1", +"s. c #F9DCCE", +"t. c #C67B53", +"u. c #B54D31", +"v. c #DCA187", +"w. c #C97E59", +"x. c #E4B29A", +"y. c #FADECF", +"z. c #C9855E", +"A. c #C57850", +"B. c #B54C31", +"C. c #FFEBE1", +"D. c #DCA086", +"E. c #CA815D", +"F. c #E6B9A0", +"G. c #C87F59", +"H. c #C5764F", +"I. c #B54B30", +"J. c #DFA78F", +"K. c #D18B6B", +"L. c #D39374", +"M. c #E9C0AA", +"N. c #CE8B67", +"O. c #B54B2F", +"P. c #FFFFFC", +"Q. c #D79678", +"R. c #EEC7B3", +"S. c #FADED0", +"T. c #F0CEBA", +"U. c #C4734C", +"V. c #B44A2E", +"W. c #DA9C82", +"X. c #F7D7C8", +"Y. c #EFC8B4", +"Z. c #CD8964", +"`. c #C87F58", +" + c #C3714A", +".+ c #B4492D", +"++ c #F7D4C7", +"@+ c #CC815F", +"#+ c #EFC8B5", +"$+ c #F0CDBA", +"%+ c #E3B49B", +"&+ c #CD8B67", +"*+ c #C77F59", +"=+ c #FFFFFD", +"-+ c #FFF8F0", +";+ c #EFC9B5", +">+ c #D29574", +",+ c #F1D1BD", +"'+ c #B3482C", +")+ c #EDC3AF", +"!+ c #EFCAB6", +"~+ c #FFECDF", +"{+ c #CE906B", +"]+ c #C06C44", +"^+ c #B3462B", +"/+ c #EDC4B0", +"(+ c #F0CAB6", +"_+ c #FFF3EB", +":+ c #FFF6EC", +"<+ c #CF916D", +"[+ c #B3452A", +"}+ c #F0CCB8", +"|+ c #FFF5EB", +"1+ c #FFF6ED", +"2+ c #C87F5A", +"3+ c #B24429", +"4+ c #EDC5B1", +"5+ c #F0CCB9", +"6+ c #B24329", +"7+ c #FFEFE5", +"8+ c #D49C7B", +"9+ c #F3D4C3", +"0+ c #B24227", +"a+ c #FDE3D7", +"b+ c #EDC9B3", +"c+ c #E6BDA5", +"d+ c #BD623C", +"e+ c #B24126", +"f+ c #F3D1C0", +"g+ c #F0CEBB", +"h+ c #D19472", +"i+ c #BD613A", +"j+ c #B14126", +"k+ c #D49676", +"l+ c #F1CFBB", +"m+ c #F7DBCA", +"n+ c #FDE7DA", +"o+ c #D39C7C", +"p+ c #C97F5C", +"q+ c #B14025", +"r+ c #E8BCA6", +"s+ c #D59979", +"t+ c #D9A182", +"u+ c #E9C2AA", +"v+ c #DAA789", +"w+ c #BB5D37", +"x+ c #B13F24", +"y+ c #FFFAF2", +"z+ c #DBA587", +"A+ c #F2D2C0", +"B+ c #F0D0BC", +"C+ c #B03E23", +"D+ c #CA825E", +"E+ c #FADFD1", +"F+ c #D89E7F", +"G+ c #E8C0A8", +"H+ c #FFFDF7", +"I+ c #FDE8DB", +"J+ c #D7A185", +"K+ c #C97F5E", +"L+ c #BA5834", +"M+ c #B03C23", +"N+ c #FBE2D3", +"O+ c #F1D0BD", +"P+ c #D7A486", +"Q+ c #B03B22", +"R+ c #CD8863", +"S+ c #FFF2E8", +"T+ c #F5D8C7", +"U+ c #C97F5F", +"V+ c #B95530", +"W+ c #AF3A21", +"X+ c #E6BAA2", +"Y+ c #DEAF93", +"Z+ c #D9A88C", +"`+ c #C97E5F", +" @ c #B8532F", +".@ c #AC341D", +"+@ c #E3B49A", +"@@ c #F6D9C8", +"#@ c #FFF7EE", +"$@ c #EFCEBA", +"%@ c #DAA687", +"&@ c #C06848", +"*@ c #B8502E", +"=@ c #A92B18", +"-@ c #D5A085", +";@ c #B54A2A", +">@ c #BE6141", +",@ c #B84F2D", +"'@ c #AC321C", +")@ c #BF694A", +"!@ c #B14024", +"~@ c #C26D4D", +"{@ c #A72413", +" ", +" ", +" ", +" ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . + @ # # $ % & * = - ; > , ' ) ! ~ { ] ^ / ( _ : < [ . . . ", +" . . } | 1 2 3 4 5 6 7 8 9 0 a b c d e f g h i j k l m n o p q r . . ", +" . s t u 1 v w x y y z y A A A B C D E E F F E G G G G G H G I J K L M . ", +" . . t u N O P Q R S T U V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!.~.. . ", +" . } u N {.P Q R S T U V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.].^./.(._.:.. ", +" . . | 1 O P Q R S T U V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.].^.<.[.}.|.1.. . ", +" . + 1 v P Q R S T U V W X Y Z 2.3.4.5.6.6.6.7.8.9.=.-.;.>.,.].^.<.[.0.}.a.b.c.. ", +" . @ 2 w Q R S T U V W X Y d.e.f.f.f.f.f.f.f.f.f.f.g.h.>.,.].^.<.[.0.}.a.b.0.i.. ", +" . # 3 x R S T U V W X j.k.f.f.f.f.f.f.f.f.f.f.f.f.f.f.l.].^.<.[.0.}.a.m.b.n.o.. ", +" . # 4 y S T U V W X j.p.f.f.f.f.f.f.q.q.q.r.f.f.f.f.f.f.s.<.[.0.}.a.m.|.b.t.u.. ", +" . $ 5 y T U V W X j.p.f.f.f.f.6.v.$.%.&.*.=.w.x.f.f.f.f.f.y.0.}.a.m.|.z.b.A.B.. ", +" . % 6 z U V W X Y C.f.f.f.f.D.#.$.%.&.*.=.-.;.>.E.s.f.f.f.f.F.a.m.|.z.).G.H.I.. ", +" . & 7 y V W X Y J.f.f.f.f.K.#.$.%.&.8.f.f.L.>.,.].^.M.f.f.f.f.N.|.z.).I }.;.O.. ", +" . * 8 A W X Y Z P.f.f.f.Q.#.$.%.&.*.f.f.f.R.,.].^.<.[.S.f.f.f.T.z.).I !.}.U.V.. ", +" . = 9 A X Y Z W.f.f.f.X.#.$.%.&.*.=.f.f.f.Y.].^.<.[.0.Z.f.f.f.f.).I !.K `. +.+. ", +" . - 0 A Y Z ` ++f.f.f.@+$.%.&.*.=.-.f.f.f.#+^.<.[.0.}.a.$+f.f.f.%+!.K &+*+&..+. ", +" . ; a B Z ` .=+f.f.-+$.%.&.*.=.-.;.f.f.f.;+<.[.0.}.a.m.>+f.f.f.,+K &+p *+%.'+. ", +" . > b C ` ...f.f.f.)+%.&.*.=.-.;.>.f.f.f.!+[.0.}.a.m.|.z.f.f.f.~+&+p {+G.]+^+. ", +" . , c D ...+.f.f.f./+&.*.=.-.;.>.,.f.f.f.(+0.}.a.m.|.z.)._+f.f.:+p {+<+G.@.[+. ", +" . ' d E ..+.@.f.f.f./+*.=.-.;.>.,.].f.f.f.}+}.a.m.|.z.).I |+f.f.1+{+<+k 2++.3+. ", +" . ) e E +.@.#.f.f.f.4+=.-.;.>.,.].^.f.f.f.5+a.m.|.z.).I !.f.f.f.1+<+k i 2+ .6+. ", +" . ! f F @.#.$.=+f.f.7+-.;.>.,.].^.<.f.f.f.$+m.|.z.).I !.8+f.f.f.9+k i h 2+` 0+. ", +" . ~ g F #.$.%.a+f.f.f.h.>.,.].^.<.[.f.f.f.$+|.z.).I !.K b+f.f.f.c+i h f C d+e+. ", +" . { h E $.%.&.8.f.f.f.f+,.].^.<.[.0.f.f.f.g+z.).I !.K h+f.f.f.f.i h f d C i+j+. ", +" . ] i G %.&.*.=.f.f.f.f.k+^.<.[.0.}.f.f.f.l+).I !.K &+m+f.f.f.n+h f d o+p+W q+. ", +" . ^ j G &.*.=.-.r+f.f.f.f.s+[.0.}.a.$+f.f.t+I !.K &+u+f.f.f.f.v+f d o+a A w+x+. ", +" . / k G *.=.-.;.>.y+f.f.f.f.z+}.a.m.|.z.).I !.K &+A+f.f.f.f.B+f d o+a 9 z T C+. ", +" . ( l G =.-.;.>.,.D+f.f.f.f.f.E+F+|.z.).I !.K G+H+f.f.f.f.I+f d o+a 9 J+K+L+M+. ", +" . _ m G -.;.>.,.].^.s+f.f.f.f.f.f.f.N+O+O+|+f.f.f.f.f.f.I+f d o+a 9 J+P+z R Q+. ", +" . : n H ;.>.,.].^.<.[.R+S+f.f.f.f.f.f.f.f.f.f.f.f.f.f.T+f d o+a 9 J+P+4 U+V+W+. ", +" . < o G >.,.].^.<.[.0.}.a.X+f.f.f.f.f.f.f.f.f.f.f.7+Y+f d o+a 9 J+P+4 Z+`+ @.@. ", +" . [ p I ,.].^.<.[.0.}.a.m.|.z.+@@@|+f.f.f.f.#@$@%@h f d o+a 9 J+P+4 Z+u &@*@=@. ", +" . . q J '.^.<.[.0.}.a.m.|.z.).I !.K &+p {+<+k i h f d o+a 9 J+P+4 Z+u -@*@;@. . ", +" . r K )./.[.0.}.a.m.|.z.).I !.K &+p {+<+k i h f d o+a 9 J+P+4 Z+u 3 >@,@'@. ", +" . . )@!.(.}.}.a.m.|.z.).I !.K &+p {+<+k i h f d o+a 9 J+P+4 Z+u -@>@,@!@. . ", +" . M ~@_.|.a.b.b.b.b.G.}.}.`.*+*+G.G.2+2+2+C C p+A z K+z U+`+&@*@,@!@{@. ", +" . . :.1.b.0.n.t.A.H.;.U. +&.%.]+@.+. .` d+i+W w+T L+R V+ @*@;@'@. . ", +" . . . c.i.o.u.B.I.O.V..+.+'+^+[+3+6+0+e+j+q+x+C+M+Q+W+.@=@. . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" ", +" ", +" ", +" "}; diff --git a/DCuhre/d07hre.f b/DCuhre/d07hre.f new file mode 100644 index 0000000..ec9de38 --- /dev/null +++ b/DCuhre/d07hre.f @@ -0,0 +1,152 @@ + SUBROUTINE D07HRE(NDIM,WTLENG,W,G,ERRCOF,RULPTS) +C***BEGIN PROLOGUE D07HRE +C***KEYWORDS basic integration rule, degree 7 +C***PURPOSE To initialize a degree 7 basic rule, and null rules. +C***AUTHOR Alan Genz, Computer Science Department, Washington +C State University, Pullman, WA 99163-1210 USA +C***LAST MODIFICATION 88-05-31 +C***DESCRIPTION D07HRE initializes a degree 7 integration rule, +C two degree 5 null rules, one degree 3 null rule and one +C degree 1 null rule for the hypercube [-1,1]**NDIM. +C +C ON ENTRY +C +C NDIM Integer. +C Number of variables. +C WTLENG Integer. +C The number of weights in each of the rules. +C WTLENG MUST be set equal to 6. +C +C ON RETURN +C W Real array of dimension (5,WTLENG). +C The weights for the basic and null rules. +C W(1,1),...,W(1,WTLENG) are weights for the basic rule. +C W(I,1),...,W(I,WTLENG), for I > 1 are null rule weights. +C G Real array of dimension (NDIM, WTLENG). +C The fully symmetric sum generators for the rules. +C G(1, J), ..., G(NDIM, J) are the are the generators for the +C points associated with the Jth weights. +C ERRCOF Real array of dimension 6. +C Heuristic error coefficients that are used in the +C error estimation in BASRUL. +C RULPTS Real array of dimension WTLENG. +C A work array. +C +C***REFERENCES A. Genz and A. Malik, +C "An Imbedded Family of Fully Symmetric Numerical +C Integration Rules", +C SIAM J Numer. Anal. 20 (1983), pp. 580-588. +C***ROUTINES CALLED-NONE +C***END PROLOGUE D07HRE +C +C Global variables +C + INTEGER NDIM,WTLENG + DOUBLE PRECISION W(5,WTLENG),G(NDIM,WTLENG),ERRCOF(6) + DOUBLE PRECISION RULPTS(WTLENG) +C +C Local Variables +C + DOUBLE PRECISION RATIO,LAM0,LAM1,LAM2,LAMP,TWONDM + INTEGER I,J +C +C***FIRST EXECUTABLE STATEMENT D07HRE +C +C +C Initialize generators, weights and RULPTS +C + DO 30 J = 1,WTLENG + DO 10 I = 1,NDIM + G(I,J) = 0 +10 CONTINUE + DO 20 I = 1,5 + W(I,J) = 0 +20 CONTINUE + RULPTS(J) = 2*NDIM +30 CONTINUE + TWONDM = 2**NDIM + RULPTS(WTLENG) = TWONDM + RULPTS(WTLENG-1) = 2*NDIM* (NDIM-1) + RULPTS(1) = 1 +C +C Compute squared generator parameters +C + LAM0 = 0.4707 + LAMP = 0.5625 + LAM1 = 4/ (15-5/LAM0) + RATIO = (1-LAM1/LAM0)/27 + LAM2 = (5-7*LAM1-35*RATIO)/ (7-35*LAM1/3-35*RATIO/LAM0) +C +C Compute degree 7 rule weights +C + W(1,6) = 1/ (3*LAM0)**3/TWONDM + W(1,5) = (1-5*LAM0/3)/ (60* (LAM1-LAM0)*LAM1**2) + W(1,3) = (1-5*LAM2/3-5*TWONDM*W(1,6)*LAM0* (LAM0-LAM2))/ + + (10*LAM1* (LAM1-LAM2)) - 2* (NDIM-1)*W(1,5) + W(1,2) = (1-5*LAM1/3-5*TWONDM*W(1,6)*LAM0* (LAM0-LAM1))/ + + (10*LAM2* (LAM2-LAM1)) +C +C Compute weights for 2 degree 5, 1 degree 3 and 1 degree 1 rules +C + W(2,6) = 1/ (36*LAM0**3)/TWONDM + W(2,5) = (1-9*TWONDM*W(2,6)*LAM0**2)/ (36*LAM1**2) + W(2,3) = (1-5*LAM2/3-5*TWONDM*W(2,6)*LAM0* (LAM0-LAM2))/ + + (10*LAM1* (LAM1-LAM2)) - 2* (NDIM-1)*W(2,5) + W(2,2) = (1-5*LAM1/3-5*TWONDM*W(2,6)*LAM0* (LAM0-LAM1))/ + + (10*LAM2* (LAM2-LAM1)) + W(3,6) = 5/ (108*LAM0**3)/TWONDM + W(3,5) = (1-9*TWONDM*W(3,6)*LAM0**2)/ (36*LAM1**2) + W(3,3) = (1-5*LAMP/3-5*TWONDM*W(3,6)*LAM0* (LAM0-LAMP))/ + + (10*LAM1* (LAM1-LAMP)) - 2* (NDIM-1)*W(3,5) + W(3,4) = (1-5*LAM1/3-5*TWONDM*W(3,6)*LAM0* (LAM0-LAM1))/ + + (10*LAMP* (LAMP-LAM1)) + W(4,6) = 1/ (54*LAM0**3)/TWONDM + W(4,5) = (1-18*TWONDM*W(4,6)*LAM0**2)/ (72*LAM1**2) + W(4,3) = (1-10*LAM2/3-10*TWONDM*W(4,6)*LAM0* (LAM0-LAM2))/ + + (20*LAM1* (LAM1-LAM2)) - 2* (NDIM-1)*W(4,5) + W(4,2) = (1-10*LAM1/3-10*TWONDM*W(4,6)*LAM0* (LAM0-LAM1))/ + + (20*LAM2* (LAM2-LAM1)) +C +C Set generator values +C + LAM0 = SQRT(LAM0) + LAM1 = SQRT(LAM1) + LAM2 = SQRT(LAM2) + LAMP = SQRT(LAMP) + DO 40 I = 1,NDIM + G(I,WTLENG) = LAM0 +40 CONTINUE + G(1,WTLENG-1) = LAM1 + G(2,WTLENG-1) = LAM1 + G(1,WTLENG-4) = LAM2 + G(1,WTLENG-3) = LAM1 + G(1,WTLENG-2) = LAMP +C +C Compute final weight values. +C The null rule weights are computed from differences between +C the degree 7 rule weights and lower degree rule weights. +C + W(1,1) = TWONDM + DO 70 J = 2,5 + DO 50 I = 2,WTLENG + W(J,I) = W(J,I) - W(1,I) + W(J,1) = W(J,1) - RULPTS(I)*W(J,I) +50 CONTINUE +70 CONTINUE + DO 80 I = 2,WTLENG + W(1,I) = TWONDM*W(1,I) + W(1,1) = W(1,1) - RULPTS(I)*W(1,I) +80 CONTINUE +C +C Set error coefficients +C + ERRCOF(1) = 5 + ERRCOF(2) = 5 + ERRCOF(3) = 1 + ERRCOF(4) = 5 + ERRCOF(5) = 0.5 + ERRCOF(6) = 0.25 +C +C***END D07HRE +C + END diff --git a/DCuhre/d09hre.f b/DCuhre/d09hre.f new file mode 100644 index 0000000..47d27cc --- /dev/null +++ b/DCuhre/d09hre.f @@ -0,0 +1,208 @@ + SUBROUTINE D09HRE(NDIM,WTLENG,W,G,ERRCOF,RULPTS) +C***BEGIN PROLOGUE D09HRE +C***KEYWORDS basic integration rule, degree 9 +C***PURPOSE To initialize a degree 9 basic rule and null rules. +C***AUTHOR Alan Genz, Computer Science Department, Washington +C State University, Pullman, WA 99163-1210 USA +C***LAST MODIFICATION 88-05-20 +C***DESCRIPTION D09HRE initializes a degree 9 integration rule, +C two degree 7 null rules, one degree 5 null rule and one +C degree 3 null rule for the hypercube [-1,1]**NDIM. +C +C ON ENTRY +C +C NDIM Integer. +C Number of variables. +C WTLENG Integer. +C The number of weights in each of the rules. +C +C ON RETURN +C W Real array of dimension (5,WTLENG). +C The weights for the basic and null rules. +C W(1,1),...,W(1,WTLENG) are weights for the basic rule. +C W(I,1),...,W(I,WTLENG), for I > 1 are null rule weights. +C G Real array of dimension (NDIM, WTLENG). +C The fully symmetric sum generators for the rules. +C G(1, J), ..., G(NDIM, J) are the are the generators for the +C points associated with the Jth weights. +C ERRCOF Real array of dimension 6. +C Heuristic error coefficients that are used in the +C error estimation in BASRUL. +C RULPTS Real array of dimension WTLENG. +C A work array. +C +C***REFERENCES A. Genz and A. Malik, +C "An Imbedded Family of Fully Symmetric Numerical +C Integration Rules", +C SIAM J Numer. Anal. 20 (1983), pp. 580-588. +C***ROUTINES CALLED-NONE +C***END PROLOGUE D09HRE +C +C Global variables +C + INTEGER NDIM,WTLENG + DOUBLE PRECISION W(5,WTLENG),G(NDIM,WTLENG),ERRCOF(6) + DOUBLE PRECISION RULPTS(WTLENG) +C +C Local Variables +C + DOUBLE PRECISION RATIO,LAM0,LAM1,LAM2,LAM3,LAMP,TWONDM + INTEGER I,J +C +C***FIRST EXECUTABLE STATEMENT D09HRE +C +C +C Initialize generators, weights and RULPTS +C + DO 30 J = 1,WTLENG + DO 10 I = 1,NDIM + G(I,J) = 0 +10 CONTINUE + DO 20 I = 1,5 + W(I,J) = 0 +20 CONTINUE + RULPTS(J) = 2*NDIM +30 CONTINUE + TWONDM = 2**NDIM + RULPTS(WTLENG) = TWONDM + IF (NDIM.GT.2) RULPTS(8) = (4*NDIM* (NDIM-1)* (NDIM-2))/3 + RULPTS(7) = 4*NDIM* (NDIM-1) + RULPTS(6) = 2*NDIM* (NDIM-1) + RULPTS(1) = 1 +C +C Compute squared generator parameters +C + LAM0 = 0.4707 + LAM1 = 4/ (15-5/LAM0) + RATIO = (1-LAM1/LAM0)/27 + LAM2 = (5-7*LAM1-35*RATIO)/ (7-35*LAM1/3-35*RATIO/LAM0) + RATIO = RATIO* (1-LAM2/LAM0)/3 + LAM3 = (7-9* (LAM2+LAM1)+63*LAM2*LAM1/5-63*RATIO)/ + + (9-63* (LAM2+LAM1)/5+21*LAM2*LAM1-63*RATIO/LAM0) + LAMP = 0.0625 +C +C Compute degree 9 rule weights +C + W(1,WTLENG) = 1/ (3*LAM0)**4/TWONDM + IF (NDIM.GT.2) W(1,8) = (1-1/ (3*LAM0))/ (6*LAM1)**3 + W(1,7) = (1-7* (LAM0+LAM1)/5+7*LAM0*LAM1/3)/ + + (84*LAM1*LAM2* (LAM2-LAM0)* (LAM2-LAM1)) + W(1,6) = (1-7* (LAM0+LAM2)/5+7*LAM0*LAM2/3)/ + + (84*LAM1*LAM1* (LAM1-LAM0)* (LAM1-LAM2)) - + + W(1,7)*LAM2/LAM1 - 2* (NDIM-2)*W(1,8) + W(1,4) = (1-9* ((LAM0+LAM1+LAM2)/7- (LAM0*LAM1+LAM0*LAM2+ + + LAM1*LAM2)/5)-3*LAM0*LAM1*LAM2)/ + + (18*LAM3* (LAM3-LAM0)* (LAM3-LAM1)* (LAM3-LAM2)) + W(1,3) = (1-9* ((LAM0+LAM1+LAM3)/7- (LAM0*LAM1+LAM0*LAM3+ + + LAM1*LAM3)/5)-3*LAM0*LAM1*LAM3)/ + + (18*LAM2* (LAM2-LAM0)* (LAM2-LAM1)* (LAM2-LAM3)) - + + 2* (NDIM-1)*W(1,7) + W(1,2) = (1-9* ((LAM0+LAM2+LAM3)/7- (LAM0*LAM2+LAM0*LAM3+ + + LAM2*LAM3)/5)-3*LAM0*LAM2*LAM3)/ + + (18*LAM1* (LAM1-LAM0)* (LAM1-LAM2)* (LAM1-LAM3)) - + + 2* (NDIM-1)* (W(1,7)+W(1,6)+ (NDIM-2)*W(1,8)) +C +C Compute weights for 2 degree 7, 1 degree 5 and 1 degree 3 rules +C + W(2,WTLENG) = 1/ (108*LAM0**4)/TWONDM + IF (NDIM.GT.2) W(2,8) = (1-27*TWONDM*W(2,9)*LAM0**3)/ (6*LAM1)**3 + W(2,7) = (1-5*LAM1/3-15*TWONDM*W(2,WTLENG)*LAM0**2* (LAM0-LAM1))/ + + (60*LAM1*LAM2* (LAM2-LAM1)) + W(2,6) = (1-9* (8*LAM1*LAM2*W(2,7)+TWONDM*W(2,WTLENG)*LAM0**2))/ + + (36*LAM1*LAM1) - 2*W(2,8)* (NDIM-2) + W(2,4) = (1-7* ((LAM1+LAM2)/5-LAM1*LAM2/3+TWONDM*W(2, + + WTLENG)*LAM0* (LAM0-LAM1)* (LAM0-LAM2)))/ + + (14*LAM3* (LAM3-LAM1)* (LAM3-LAM2)) + W(2,3) = (1-7* ((LAM1+LAM3)/5-LAM1*LAM3/3+TWONDM*W(2, + + WTLENG)*LAM0* (LAM0-LAM1)* (LAM0-LAM3)))/ + + (14*LAM2* (LAM2-LAM1)* (LAM2-LAM3)) - 2* (NDIM-1)*W(2,7) + W(2,2) = (1-7* ((LAM2+LAM3)/5-LAM2*LAM3/3+TWONDM*W(2, + + WTLENG)*LAM0* (LAM0-LAM2)* (LAM0-LAM3)))/ + + (14*LAM1* (LAM1-LAM2)* (LAM1-LAM3)) - + + 2* (NDIM-1)* (W(2,7)+W(2,6)+ (NDIM-2)*W(2,8)) + W(3,WTLENG) = 5/ (324*LAM0**4)/TWONDM + IF (NDIM.GT.2) W(3,8) = (1-27*TWONDM*W(3,9)*LAM0**3)/ (6*LAM1)**3 + W(3,7) = (1-5*LAM1/3-15*TWONDM*W(3,WTLENG)*LAM0**2* (LAM0-LAM1))/ + + (60*LAM1*LAM2* (LAM2-LAM1)) + W(3,6) = (1-9* (8*LAM1*LAM2*W(3,7)+TWONDM*W(3,WTLENG)*LAM0**2))/ + + (36*LAM1*LAM1) - 2*W(3,8)* (NDIM-2) + W(3,5) = (1-7* ((LAM1+LAM2)/5-LAM1*LAM2/3+TWONDM*W(3, + + WTLENG)*LAM0* (LAM0-LAM1)* (LAM0-LAM2)))/ + + (14*LAMP* (LAMP-LAM1)* (LAMP-LAM2)) + W(3,3) = (1-7* ((LAM1+LAMP)/5-LAM1*LAMP/3+TWONDM*W(3, + + WTLENG)*LAM0* (LAM0-LAM1)* (LAM0-LAMP)))/ + + (14*LAM2* (LAM2-LAM1)* (LAM2-LAMP)) - 2* (NDIM-1)*W(3,7) + W(3,2) = (1-7* ((LAM2+LAMP)/5-LAM2*LAMP/3+TWONDM*W(3, + + WTLENG)*LAM0* (LAM0-LAM2)* (LAM0-LAMP)))/ + + (14*LAM1* (LAM1-LAM2)* (LAM1-LAMP)) - + + 2* (NDIM-1)* (W(3,7)+W(3,6)+ (NDIM-2)*W(3,8)) + W(4,WTLENG) = 2/ (81*LAM0**4)/TWONDM + IF (NDIM.GT.2) W(4,8) = (2-27*TWONDM*W(4,9)*LAM0**3)/ (6*LAM1)**3 + W(4,7) = (2-15*LAM1/9-15*TWONDM*W(4,WTLENG)*LAM0* (LAM0-LAM1))/ + + (60*LAM1*LAM2* (LAM2-LAM1)) + W(4,6) = (1-9* (8*LAM1*LAM2*W(4,7)+TWONDM*W(4,WTLENG)*LAM0**2))/ + + (36*LAM1*LAM1) - 2*W(4,8)* (NDIM-2) + W(4,4) = (2-7* ((LAM1+LAM2)/5-LAM1*LAM2/3+TWONDM*W(4, + + WTLENG)*LAM0* (LAM0-LAM1)* (LAM0-LAM2)))/ + + (14*LAM3* (LAM3-LAM1)* (LAM3-LAM2)) + W(4,3) = (2-7* ((LAM1+LAM3)/5-LAM1*LAM3/3+TWONDM*W(4, + + WTLENG)*LAM0* (LAM0-LAM1)* (LAM0-LAM3)))/ + + (14*LAM2* (LAM2-LAM1)* (LAM2-LAM3)) - 2* (NDIM-1)*W(4,7) + W(4,2) = (2-7* ((LAM2+LAM3)/5-LAM2*LAM3/3+TWONDM*W(4, + + WTLENG)*LAM0* (LAM0-LAM2)* (LAM0-LAM3)))/ + + (14*LAM1* (LAM1-LAM2)* (LAM1-LAM3)) - + + 2* (NDIM-1)* (W(4,7)+W(4,6)+ (NDIM-2)*W(4,8)) + W(5,2) = 1/ (6*LAM1) +C +C Set generator values +C + LAM0 = SQRT(LAM0) + LAM1 = SQRT(LAM1) + LAM2 = SQRT(LAM2) + LAM3 = SQRT(LAM3) + LAMP = SQRT(LAMP) + DO 40 I = 1,NDIM + G(I,WTLENG) = LAM0 +40 CONTINUE + IF (NDIM.GT.2) THEN + G(1,8) = LAM1 + G(2,8) = LAM1 + G(3,8) = LAM1 + END IF + G(1,7) = LAM1 + G(2,7) = LAM2 + G(1,6) = LAM1 + G(2,6) = LAM1 + G(1,5) = LAMP + G(1,4) = LAM3 + G(1,3) = LAM2 + G(1,2) = LAM1 +C +C Compute final weight values. +C The null rule weights are computed from differences between +C the degree 9 rule weights and lower degree rule weights. +C + W(1,1) = TWONDM + DO 70 J = 2,5 + DO 50 I = 2,WTLENG + W(J,I) = W(J,I) - W(1,I) + W(J,1) = W(J,1) - RULPTS(I)*W(J,I) +50 CONTINUE +70 CONTINUE + DO 80 I = 2,WTLENG + W(1,I) = TWONDM*W(1,I) + W(1,1) = W(1,1) - RULPTS(I)*W(1,I) +80 CONTINUE +C +C Set error coefficients +C + ERRCOF(1) = 5 + ERRCOF(2) = 5 + ERRCOF(3) = 1. + ERRCOF(4) = 5 + ERRCOF(5) = 0.5 + ERRCOF(6) = 0.25 +C +C***END D09HRE +C + END diff --git a/DCuhre/d113re.f b/DCuhre/d113re.f new file mode 100644 index 0000000..3240bcf --- /dev/null +++ b/DCuhre/d113re.f @@ -0,0 +1,179 @@ + SUBROUTINE D113RE(WTLENG,W,G,ERRCOF,RULPTS) +C***BEGIN PROLOGUE D113RE +C***AUTHOR Jarle Berntsen, EDB-senteret, +C University of Bergen, Thormohlens gt. 55, +C N-5008 Bergen, NORWAY +C***PURPOSE D113RE computes abscissas and weights of a 3 dimensional +C integration rule of degree 11. +C Two null rules of degree 9, one null rule of degree 7 +C and one null rule of degree 5 to be used in error +C estimation are also computed. +C***DESCRIPTION D113RE will select the correct values of the abscissas +C and corresponding weights for different +C integration rules and null rules and assign them to G +C and W. +C The heuristic error coefficients ERRCOF +C will also be computed. +C +C +C ON ENTRY +C +C WTLENG Integer. +C The number of weights in each of the rules. +C +C ON RETURN +C +C W Real array of dimension (5,WTLENG). +C The weights for the basic and null rules. +C W(1,1),...,W(1,WTLENG) are weights for the basic rule. +C W(I,1),...,W(I,WTLENG), for I > 1 are null rule weights. +C G Real array of dimension (NDIM,WTLENG). +C The fully symmetric sum generators for the rules. +C G(1,J),...,G(NDIM,J) are the generators for the points +C associated with the the Jth weights. +C ERRCOF Real array of dimension 6. +C Heuristic error coefficients that are used in the +C error estimation in BASRUL. +C RULPTS Real array of dimension WTLENG. +C The number of points used by each generator. +C +C***REFERENCES J.Berntsen, Cautious adaptive numerical integration +C over the 3-cube, Reports in Informatics 17, Dept. of +C Inf.,Univ. of Bergen, Norway, 1985. +C J.Berntsen and T.O.Espelid, On the construction of +C higher degree three-dimensional embedded integration +C rules, SIAM J. Numer. Anal.,Vol. 25,No. 1, pp.222-234, +C 1988. +C***ROUTINES CALLED-NONE +C***END PROLOGUE D113RE +C +C Global variables. +C + INTEGER WTLENG + DOUBLE PRECISION W(5,WTLENG),G(3,WTLENG),ERRCOF(6) + DOUBLE PRECISION RULPTS(WTLENG) +C +C Local variables. +C + INTEGER I,J + DOUBLE PRECISION DIM3G(14) + DOUBLE PRECISION DIM3W(13,5) +C + DATA (DIM3G(I),I=1,14)/0.1900000000000000D+00, + + 0.5000000000000000D+00,0.7500000000000000D+00, + + 0.8000000000000000D+00,0.9949999999999999D+00, + + 0.9987344998351400D+00,0.7793703685672423D+00, + + 0.9999698993088767D+00,0.7902637224771788D+00, + + 0.4403396687650737D+00,0.4378478459006862D+00, + + 0.9549373822794593D+00,0.9661093133630748D+00, + + 0.4577105877763134D+00/ +C + DATA (DIM3W(I,1),I=1,13)/0.7923078151105734D-02, + + 0.6797177392788080D-01,0.1086986538805825D-02, + + 0.1838633662212829D+00,0.3362119777829031D-01, + + 0.1013751123334062D-01,0.1687648683985235D-02, + + 0.1346468564512807D+00,0.1750145884600386D-02, + + 0.7752336383837454D-01,0.2461864902770251D+00, + + 0.6797944868483039D-01,0.1419962823300713D-01/ +C + DATA (DIM3W(I,2),I=1,13)/0.1715006248224684D+01, + + - .3755893815889209D+00,0.1488632145140549D+00, + + - .2497046640620823D+00,0.1792501419135204D+00, + + 0.3446126758973890D-02, - .5140483185555825D-02, + + 0.6536017839876425D-02, - .6513454939229700D-03, + + - .6304672433547204D-02,0.1266959399788263D-01, + + - .5454241018647931D-02,0.4826995274768427D-02/ +C + DATA (DIM3W(I,3),I=1,13)/0.1936014978949526D+01, + + - .3673449403754268D+00,0.2929778657898176D-01, + + - .1151883520260315D+00,0.5086658220872218D-01, + + 0.4453911087786469D-01, - .2287828257125900D-01, + + 0.2908926216345833D-01, - .2898884350669207D-02, + + - .2805963413307495D-01,0.5638741361145884D-01, + + - .2427469611942451D-01,0.2148307034182882D-01/ +C + DATA (DIM3W(I,4),I=1,13)/0.5170828195605760D+00, + + 0.1445269144914044D-01, - .3601489663995932D+00, + + 0.3628307003418485D+00,0.7148802650872729D-02, + + - .9222852896022966D-01,0.1719339732471725D-01, + + - .1021416537460350D+00, - .7504397861080493D-02, + + 0.1648362537726711D-01,0.5234610158469334D-01, + + 0.1445432331613066D-01,0.3019236275367777D-02/ +C + DATA (DIM3W(I,5),I=1,13)/0.2054404503818520D+01, + + 0.1377759988490120D-01, - .5768062917904410D+00, + + 0.3726835047700328D-01,0.6814878939777219D-02, + + 0.5723169733851849D-01, - .4493018743811285D-01, + + 0.2729236573866348D-01,0.3547473950556990D-03, + + 0.1571366799739551D-01,0.4990099219278567D-01, + + 0.1377915552666770D-01,0.2878206423099872D-02/ +C +C***FIRST EXECUTABLE STATEMENT D113RE +C +C Assign values to W. +C + DO 10 I = 1,13 + DO 10 J = 1,5 + W(J,I) = DIM3W(I,J) +10 CONTINUE +C +C Assign values to G. +C + DO 20 I = 1,3 + DO 20 J = 1,13 + G(I,J) = 0 +20 CONTINUE + G(1,2) = DIM3G(1) + G(1,3) = DIM3G(2) + G(1,4) = DIM3G(3) + G(1,5) = DIM3G(4) + G(1,6) = DIM3G(5) + G(1,7) = DIM3G(6) + G(2,7) = G(1,7) + G(1,8) = DIM3G(7) + G(2,8) = G(1,8) + G(1,9) = DIM3G(8) + G(2,9) = G(1,9) + G(3,9) = G(1,9) + G(1,10) = DIM3G(9) + G(2,10) = G(1,10) + G(3,10) = G(1,10) + G(1,11) = DIM3G(10) + G(2,11) = G(1,11) + G(3,11) = G(1,11) + G(1,12) = DIM3G(12) + G(2,12) = DIM3G(11) + G(3,12) = G(2,12) + G(1,13) = DIM3G(13) + G(2,13) = G(1,13) + G(3,13) = DIM3G(14) +C +C Assign values to RULPTS. +C + RULPTS(1) = 1 + RULPTS(2) = 6 + RULPTS(3) = 6 + RULPTS(4) = 6 + RULPTS(5) = 6 + RULPTS(6) = 6 + RULPTS(7) = 12 + RULPTS(8) = 12 + RULPTS(9) = 8 + RULPTS(10) = 8 + RULPTS(11) = 8 + RULPTS(12) = 24 + RULPTS(13) = 24 +C +C Assign values to ERRCOF. +C + ERRCOF(1) = 4 + ERRCOF(2) = 4. + ERRCOF(3) = 0.5 + ERRCOF(4) = 3. + ERRCOF(5) = 0.5 + ERRCOF(6) = 0.25 +C +C***END D113RE +C + RETURN + END diff --git a/DCuhre/d132re.f b/DCuhre/d132re.f new file mode 100644 index 0000000..c6d436b --- /dev/null +++ b/DCuhre/d132re.f @@ -0,0 +1,171 @@ + SUBROUTINE D132RE(WTLENG,W,G,ERRCOF,RULPTS) +C***BEGIN PROLOGUE D132RE +C***AUTHOR Jarle Berntsen, EDB-senteret, +C University of Bergen, Thormohlens gt. 55, +C N-5008 Bergen, NORWAY +C***PURPOSE D132RE computes abscissas and weights of a 2 dimensional +C integration rule of degree 13. +C Two null rules of degree 11, one null rule of degree 9 +C and one null rule of degree 7 to be used in error +C estimation are also computed. +C ***DESCRIPTION D132RE will select the correct values of the abscissas +C and corresponding weights for different +C integration rules and null rules and assign them to +C G and W. The heuristic error coefficients ERRCOF +C will also be assigned. +C +C +C ON ENTRY +C +C WTLENG Integer. +C The number of weights in each of the rules. +C +C ON RETURN +C +C W Real array of dimension (5,WTLENG). +C The weights for the basic and null rules. +C W(1,1),...,W(1,WTLENG) are weights for the basic rule. +C W(I,1),...,W(I,WTLENG), for I > 1 are null rule weights. +C G Real array of dimension (NDIM,WTLENG). +C The fully symmetric sum generators for the rules. +C G(1,J),...,G(NDIM,J) are the generators for the points +C associated with the the Jth weights. +C ERRCOF Real array of dimension 6. +C Heuristic error coefficients that are used in the +C error estimation in BASRUL. +C RULPTS Real array of dimension WTLENG. +C The number of points produced by each generator. +C***REFERENCES S.Eriksen, +C Thesis of the degree cand.scient, Dept. of Informatics, +C Univ. of Bergen,Norway, 1984. +C +C***ROUTINES CALLED-NONE +C***END PROLOGUE D132RE +C +C Global variables +C + INTEGER WTLENG + DOUBLE PRECISION W(5,WTLENG),G(2,WTLENG),ERRCOF(6) + DOUBLE PRECISION RULPTS(WTLENG) +C +C Local variables. +C + INTEGER I,J + DOUBLE PRECISION DIM2G(16) + DOUBLE PRECISION DIM2W(14,5) +C + DATA (DIM2G(I),I=1,16)/0.2517129343453109D+00, + + 0.7013933644534266D+00,0.9590960631619962D+00, + + 0.9956010478552127D+00,0.5000000000000000D+00, + + 0.1594544658297559D+00,0.3808991135940188D+00, + + 0.6582769255267192D+00,0.8761473165029315D+00, + + 0.9982431840531980D+00,0.9790222658168462D+00, + + 0.6492284325645389D+00,0.8727421201131239D+00, + + 0.3582614645881228D+00,0.5666666666666666D+00, + + 0.2077777777777778D+00/ +C + DATA (DIM2W(I,1),I=1,14)/0.3379692360134460D-01, + + 0.9508589607597761D-01,0.1176006468056962D+00, + + 0.2657774586326950D-01,0.1701441770200640D-01, + + 0.0000000000000000D+00,0.1626593098637410D-01, + + 0.1344892658526199D+00,0.1328032165460149D+00, + + 0.5637474769991870D-01,0.3908279081310500D-02, + + 0.3012798777432150D-01,0.1030873234689166D+00, + + 0.6250000000000000D-01/ +C + DATA (DIM2W(I,2),I=1,14)/0.3213775489050763D+00, + + - .1767341636743844D+00,0.7347600537466072D-01, + + - .3638022004364754D-01,0.2125297922098712D-01, + + 0.1460984204026913D+00,0.1747613286152099D-01, + + 0.1444954045641582D+00,0.1307687976001325D-03, + + 0.5380992313941161D-03,0.1042259576889814D-03, + + - .1401152865045733D-02,0.8041788181514763D-02, + + - .1420416552759383D+00/ +C + DATA (DIM2W(I,3),I=1,14)/0.3372900883288987D+00, + + - .1644903060344491D+00,0.7707849911634622D-01, + + - .3804478358506310D-01,0.2223559940380806D-01, + + 0.1480693879765931D+00,0.4467143702185814D-05, + + 0.1508944767074130D+00,0.3647200107516215D-04, + + 0.5777198999013880D-03,0.1041757313688177D-03, + + - .1452822267047819D-02,0.8338339968783705D-02, + + - .1472796329231960D+00/ +C + DATA (DIM2W(I,4),I=1,14)/ - .8264123822525677D+00, + + 0.3065838614094360D+00,0.2389292538329435D-02, + + - .1343024157997222D+00,0.8833366840533900D-01, + + 0.0000000000000000D+00,0.9786283074168292D-03, + + - .1319227889147519D+00,0.7990012200150630D-02, + + 0.3391747079760626D-02,0.2294915718283264D-02, + + - .1358584986119197D-01,0.4025866859057809D-01, + + 0.3760268580063992D-02/ +C + DATA (DIM2W(I,5),I=1,14)/0.6539094339575232D+00, + + - .2041614154424632D+00, - .1746981515794990D+00, + + 0.3937939671417803D-01,0.6974520545933992D-02, + + 0.0000000000000000D+00,0.6667702171778258D-02, + + 0.5512960621544304D-01,0.5443846381278607D-01, + + 0.2310903863953934D-01,0.1506937747477189D-01, + + - .6057021648901890D-01,0.4225737654686337D-01, + + 0.2561989142123099D-01/ +C +C***FIRST EXECUTABLE STATEMENT D132RE +C +C Assign values to W. +C + DO 10 I = 1,14 + DO 10 J = 1,5 + W(J,I) = DIM2W(I,J) +10 CONTINUE +C +C Assign values to G. +C + DO 20 I = 1,2 + DO 20 J = 1,14 + G(I,J) = 0 +20 CONTINUE + G(1,2) = DIM2G(1) + G(1,3) = DIM2G(2) + G(1,4) = DIM2G(3) + G(1,5) = DIM2G(4) + G(1,6) = DIM2G(5) + G(1,7) = DIM2G(6) + G(2,7) = G(1,7) + G(1,8) = DIM2G(7) + G(2,8) = G(1,8) + G(1,9) = DIM2G(8) + G(2,9) = G(1,9) + G(1,10) = DIM2G(9) + G(2,10) = G(1,10) + G(1,11) = DIM2G(10) + G(2,11) = G(1,11) + G(1,12) = DIM2G(11) + G(2,12) = DIM2G(12) + G(1,13) = DIM2G(13) + G(2,13) = DIM2G(14) + G(1,14) = DIM2G(15) + G(2,14) = DIM2G(16) +C +C Assign values to RULPTS. +C + RULPTS(1) = 1 + DO 30 I = 2,11 + RULPTS(I) = 4 +30 CONTINUE + RULPTS(12) = 8 + RULPTS(13) = 8 + RULPTS(14) = 8 +C +C Assign values to ERRCOF. +C + ERRCOF(1) = 10 + ERRCOF(2) = 10 + ERRCOF(3) = 1. + ERRCOF(4) = 5. + ERRCOF(5) = 0.5 + ERRCOF(6) = 0.25 +C +C***END D132RE +C + RETURN + END diff --git a/DCuhre/dadhre.f b/DCuhre/dadhre.f new file mode 100644 index 0000000..277b049 --- /dev/null +++ b/DCuhre/dadhre.f @@ -0,0 +1,453 @@ + SUBROUTINE DADHRE(NDIM,NUMFUN,MDIV,A,B,MINSUB,MAXSUB,FUNSUB, + + EPSABS,EPSREL,KEY,RESTAR,NUM,LENW,WTLENG, + + RESULT,ABSERR,NEVAL,NSUB,IFAIL,VALUES, + + ERRORS,CENTRS,HWIDTS,GREATE,DIR,OLDRES,WORK,G,W, + + RULPTS,CENTER,HWIDTH,X,SCALES,NORMS) +C***BEGIN PROLOGUE DADHRE +C***KEYWORDS automatic multidimensional integrator, +C n-dimensional hyper-rectangles, +C general purpose, global adaptive +C***PURPOSE The routine calculates an approximation to a given +C vector of definite integrals, I, over a hyper-rectangular +C region hopefully satisfying for each component of I the +C following claim for accuracy: +C ABS(I(K)-RESULT(K)).LE.MAX(EPSABS,EPSREL*ABS(I(K))) +C***DESCRIPTION Computation of integrals over hyper-rectangular +C regions. +C DADHRE repeatedly subdivides the region +C of integration and estimates the integrals and the +C errors over the subregions with greatest +C estimated errors until the error request +C is met or MAXSUB subregions are stored. +C The regions are divided in two equally sized parts along +C the direction with greatest absolute fourth divided +C difference. +C +C ON ENTRY +C +C NDIM Integer. +C Number of variables. 1 < NDIM <= MAXDIM. +C NUMFUN Integer. +C Number of components of the integral. +C MDIV Integer. +C Defines the number of new subregions that are divided +C in each subdivision step. +C A Real array of dimension NDIM. +C Lower limits of integration. +C B Real array of dimension NDIM. +C Upper limits of integration. +C MINSUB Integer. +C The computations proceed until there are at least +C MINSUB subregions in the data structure. +C MAXSUB Integer. +C The computations proceed until there are at most +C MAXSUB subregions in the data structure. +C +C FUNSUB Externally declared subroutine for computing +C all components of the integrand in the given +C evaluation point. +C It must have parameters (NDIM,X,NUMFUN,FUNVLS) +C Input parameters: +C NDIM Integer that defines the dimension of the +C integral. +C X Real array of dimension NDIM +C that defines the evaluation point. +C NUMFUN Integer that defines the number of +C components of I. +C Output parameter: +C FUNVLS Real array of dimension NUMFUN +C that defines NUMFUN components of the integrand. +C +C EPSABS Real. +C Requested absolute error. +C EPSREL Real. +C Requested relative error. +C KEY Integer. +C Key to selected local integration rule. +C KEY = 0 is the default value. +C For NDIM = 2 the degree 13 rule is selected. +C For NDIM = 3 the degree 11 rule is selected. +C For NDIM > 3 the degree 9 rule is selected. +C KEY = 1 gives the user the 2 dimensional degree 13 +C integration rule that uses 65 evaluation points. +C KEY = 2 gives the user the 3 dimensional degree 11 +C integration rule that uses 127 evaluation points. +C KEY = 3 gives the user the degree 9 integration rule. +C KEY = 4 gives the user the degree 7 integration rule. +C This is the recommended rule for problems that +C require great adaptivity. +C RESTAR Integer. +C If RESTAR = 0, this is the first attempt to compute +C the integral. +C If RESTAR = 1, then we restart a previous attempt. +C (In this case the output parameters from DADHRE +C must not be changed since the last +C exit from DADHRE.) +C NUM Integer. +C The number of function evaluations over each subregion. +C LENW Integer. +C Defines the length of the working array WORK. +C LENW should be greater or equal to +C 16*MDIV*NUMFUN. +C WTLENG Integer. +C The number of weights in the basic integration rule. +C NSUB Integer. +C If RESTAR = 1, then NSUB must specify the number +C of subregions stored in the previous call to DADHRE. +C +C ON RETURN +C +C RESULT Real array of dimension NUMFUN. +C Approximations to all components of the integral. +C ABSERR Real array of dimension NUMFUN. +C Estimates of absolute accuracies. +C NEVAL Integer. +C Number of function evaluations used by DADHRE. +C NSUB Integer. +C Number of stored subregions. +C IFAIL Integer. +C IFAIL = 0 for normal exit, when ABSERR(K) <= EPSABS or +C ABSERR(K) <= ABS(RESULT(K))*EPSREL with MAXSUB or less +C subregions processed for all values of K, +C 1 <= K <= NUMFUN. +C IFAIL = 1 if MAXSUB was too small for DADHRE +C to obtain the required accuracy. In this case DADHRE +C returns values of RESULT with estimated absolute +C accuracies ABSERR. +C VALUES Real array of dimension (NUMFUN,MAXSUB). +C Used to store estimated values of the integrals +C over the subregions. +C ERRORS Real array of dimension (NUMFUN,MAXSUB). +C Used to store the corresponding estimated errors. +C CENTRS Real array of dimension (NDIM,MAXSUB). +C Used to store the centers of the stored subregions. +C HWIDTS Real array of dimension (NDIM,MAXSUB). +C Used to store the half widths of the stored subregions. +C GREATE Real array of dimension MAXSUB. +C Used to store the greatest estimated errors in +C all subregions. +C DIR Real array of dimension MAXSUB. +C DIR is used to store the directions for +C further subdivision. +C OLDRES Real array of dimension (NUMFUN,MDIV). +C Used to store old estimates of the integrals over the +C subregions. +C WORK Real array of dimension LENW. +C Used in DRLHRE and DTRHRE. +C G Real array of dimension (NDIM,WTLENG,2*MDIV). +C The fully symmetric sum generators for the rules. +C G(1,J,1),...,G(NDIM,J,1) are the generators for the +C points associated with the Jth weights. +C When MDIV subregions are divided in 2*MDIV +C subregions, the subregions may be processed on different +C processors and we must make a copy of the generators +C for each processor. +C W Real array of dimension (5,WTLENG). +C The weights for the basic and null rules. +C W(1,1), ..., W(1,WTLENG) are weights for the basic rule. +C W(I,1), ..., W(I,WTLENG) , for I > 1 are null rule weights. +C RULPTS Real array of dimension WTLENG. +C Work array used in DINHRE. +C CENTER Real array of dimension NDIM. +C Work array used in DTRHRE. +C HWIDTH Real array of dimension NDIM. +C Work array used in DTRHRE. +C X Real array of dimension (NDIM,2*MDIV). +C Work array used in DRLHRE. +C SCALES Real array of dimension (3,WTLENG). +C Work array used by DINHRE and DRLHRE. +C NORMS Real array of dimension (3,WTLENG). +C Work array used by DINHRE and DRLHRE. +C +C***REFERENCES +C +C P. van Dooren and L. de Ridder, Algorithm 6, An adaptive algorithm +C for numerical integration over an n-dimensional cube, J.Comput.Appl. +C Math. 2(1976)207-217. +C +C A.C.Genz and A.A.Malik, Algorithm 019. Remarks on algorithm 006: +C An adaptive algorithm for numerical integration over an +C N-dimensional rectangular region,J.Comput.Appl.Math. 6(1980)295-302. +C +C***ROUTINES CALLED DTRHRE,DINHRE,DRLHRE +C***END PROLOGUE DADHRE +C +C Global variables. +C + EXTERNAL FUNSUB + INTEGER NDIM,NUMFUN,MDIV,MINSUB,MAXSUB,KEY,LENW,RESTAR + INTEGER NUM,NEVAL,NSUB,IFAIL,WTLENG + DOUBLE PRECISION A(NDIM),B(NDIM),EPSABS,EPSREL + DOUBLE PRECISION RESULT(NUMFUN),ABSERR(NUMFUN) + DOUBLE PRECISION VALUES(NUMFUN,MAXSUB),ERRORS(NUMFUN,MAXSUB) + DOUBLE PRECISION CENTRS(NDIM,MAXSUB) + DOUBLE PRECISION HWIDTS(NDIM,MAXSUB) + DOUBLE PRECISION GREATE(MAXSUB),DIR(MAXSUB) + DOUBLE PRECISION OLDRES(NUMFUN,MDIV) + DOUBLE PRECISION WORK(LENW),RULPTS(WTLENG) + DOUBLE PRECISION G(NDIM,WTLENG,2*MDIV),W(5,WTLENG) + DOUBLE PRECISION CENTER(NDIM),HWIDTH(NDIM),X(NDIM,2*MDIV) + DOUBLE PRECISION SCALES(3,WTLENG),NORMS(3,WTLENG) +C +C Local variables. +C +C INTSGN is used to get correct sign on the integral. +C SBRGNS is the number of stored subregions. +C NDIV The number of subregions to be divided in each main step. +C POINTR Pointer to the position in the data structure where +C the new subregions are to be stored. +C DIRECT Direction of subdivision. +C ERRCOF Heuristic error coeff. defined in DINHRE and used by DRLHRE +C and DADHRE. +C + INTEGER I,J,K + INTEGER INTSGN,SBRGNS + INTEGER L1 + INTEGER NDIV,POINTR,DIRECT,INDEX + DOUBLE PRECISION OLDCEN,EST1,EST2,ERRCOF(6) +C +C***FIRST EXECUTABLE STATEMENT DADHRE +C +C Get the correct sign on the integral. +C + INTSGN = 1 + DO 10 J = 1,NDIM + IF (B(J).LT.A(J)) THEN + INTSGN = - INTSGN + END IF +10 CONTINUE +C +C Call DINHRE to compute the weights and abscissas of +C the function evaluation points. +C + CALL DINHRE(NDIM,KEY,WTLENG,W,G,ERRCOF,RULPTS,SCALES,NORMS) +C +C If RESTAR = 1, then this is a restart run. +C + IF (RESTAR.EQ.1) THEN + SBRGNS = NSUB + GO TO 110 + END IF +C +C Initialize the SBRGNS, CENTRS and HWIDTS. +C + SBRGNS = 1 + DO 15 J = 1,NDIM + CENTRS(J,1) = (A(J)+B(J))/2 + HWIDTS(J,1) = ABS(B(J)-A(J))/2 +15 CONTINUE +C +C Initialize RESULT, ABSERR and NEVAL. +C + DO 20 J = 1,NUMFUN + RESULT(J) = 0 + ABSERR(J) = 0 +20 CONTINUE + NEVAL = 0 +C +C Apply DRLHRE over the whole region. +C + CALL DRLHRE(NDIM,CENTRS(1,1),HWIDTS(1,1),WTLENG,G,W,ERRCOF,NUMFUN, + + FUNSUB,SCALES,NORMS,X,WORK,VALUES(1,1),ERRORS(1,1), + + DIR(1)) + NEVAL = NEVAL + NUM +C +C Add the computed values to RESULT and ABSERR. +C + DO 55 J = 1,NUMFUN + RESULT(J) = RESULT(J) + VALUES(J,1) +55 CONTINUE + DO 65 J = 1,NUMFUN + ABSERR(J) = ABSERR(J) + ERRORS(J,1) +65 CONTINUE +C +C Store results in heap. +C + INDEX = 1 + CALL DTRHRE(2,NDIM,NUMFUN,INDEX,VALUES,ERRORS,CENTRS,HWIDTS, + + GREATE,WORK(1),WORK(NUMFUN+1),CENTER,HWIDTH,DIR) +C +C***End initialisation. +C +C***Begin loop while the error is too great, +C and SBRGNS+1 is less than MAXSUB. +C +110 IF (SBRGNS+1.LE.MAXSUB) THEN +C +C If we are allowed to divide further, +C prepare to apply basic rule over each half of the +C NDIV subregions with greatest errors. +C If MAXSUB is great enough, NDIV = MDIV +C + IF (MDIV.GT.1) THEN + NDIV = MAXSUB - SBRGNS + NDIV = MIN(NDIV,MDIV,SBRGNS) + ELSE + NDIV = 1 + END IF +C +C Divide the NDIV subregions in two halves, and compute +C integral and error over each half. +C + DO 150 I = 1,NDIV + POINTR = SBRGNS + NDIV + 1 - I +C +C Adjust RESULT and ABSERR. +C + DO 115 J = 1,NUMFUN + RESULT(J) = RESULT(J) - VALUES(J,1) + ABSERR(J) = ABSERR(J) - ERRORS(J,1) +115 CONTINUE +C +C Compute first half region. +C + DO 120 J = 1,NDIM + CENTRS(J,POINTR) = CENTRS(J,1) + HWIDTS(J,POINTR) = HWIDTS(J,1) +120 CONTINUE + DIRECT = DIR(1) + DIR(POINTR) = DIRECT + HWIDTS(DIRECT,POINTR) = HWIDTS(DIRECT,1)/2 + OLDCEN = CENTRS(DIRECT,1) + CENTRS(DIRECT,POINTR) = OLDCEN - HWIDTS(DIRECT,POINTR) +C +C Save the computed values of the integrals. +C + DO 125 J = 1,NUMFUN + OLDRES(J,NDIV-I+1) = VALUES(J,1) +125 CONTINUE +C +C Adjust the heap. +C + CALL DTRHRE(1,NDIM,NUMFUN,SBRGNS,VALUES,ERRORS,CENTRS, + + HWIDTS,GREATE,WORK(1),WORK(NUMFUN+1),CENTER, + + HWIDTH,DIR) +C +C Compute second half region. +C + DO 130 J = 1,NDIM + CENTRS(J,POINTR-1) = CENTRS(J,POINTR) + HWIDTS(J,POINTR-1) = HWIDTS(J,POINTR) +130 CONTINUE + CENTRS(DIRECT,POINTR-1) = OLDCEN + HWIDTS(DIRECT,POINTR) + HWIDTS(DIRECT,POINTR-1) = HWIDTS(DIRECT,POINTR) + DIR(POINTR-1) = DIRECT +150 CONTINUE +C +C Make copies of the generators for each processor. +C + DO 190 I = 2,2*NDIV + DO 190 J = 1,NDIM + DO 190 K = 1,WTLENG + G(J,K,I) = G(J,K,1) +190 CONTINUE +C +C Apply basic rule. +C +Cvd$l cncall + DO 200 I = 1,2*NDIV + INDEX = SBRGNS + I + L1 = 1 + (I-1)*8*NUMFUN + CALL DRLHRE(NDIM,CENTRS(1,INDEX),HWIDTS(1,INDEX),WTLENG, + + G(1,1,I),W,ERRCOF,NUMFUN,FUNSUB,SCALES,NORMS, + + X(1,I),WORK(L1),VALUES(1,INDEX), + + ERRORS(1,INDEX),DIR(INDEX)) +200 CONTINUE + NEVAL = NEVAL + 2*NDIV*NUM +C +C Add new contributions to RESULT. +C + DO 220 I = 1,2*NDIV + DO 210 J = 1,NUMFUN + RESULT(J) = RESULT(J) + VALUES(J,SBRGNS+I) +210 CONTINUE +220 CONTINUE +C +C Check consistency of results and if necessary adjust +C the estimated errors. +C + DO 240 I = 1,NDIV + GREATE(SBRGNS+2*I-1) = 0 + GREATE(SBRGNS+2*I) = 0 + DO 230 J = 1,NUMFUN + EST1 = ABS(OLDRES(J,I)- (VALUES(J, + + SBRGNS+2*I-1)+VALUES(J,SBRGNS+2*I))) + EST2 = ERRORS(J,SBRGNS+2*I-1) + ERRORS(J,SBRGNS+2*I) + IF (EST2.GT.0) THEN + ERRORS(J,SBRGNS+2*I-1) = ERRORS(J,SBRGNS+2*I-1)* + + (1+ERRCOF(5)*EST1/EST2) + ERRORS(J,SBRGNS+2*I) = ERRORS(J,SBRGNS+2*I)* + + (1+ERRCOF(5)*EST1/EST2) + END IF + ERRORS(J,SBRGNS+2*I-1) = ERRORS(J,SBRGNS+2*I-1) + + + ERRCOF(6)*EST1 + ERRORS(J,SBRGNS+2*I) = ERRORS(J,SBRGNS+2*I) + + + ERRCOF(6)*EST1 + IF (ERRORS(J,SBRGNS+2*I-1).GT. + + GREATE(SBRGNS+2*I-1)) THEN + GREATE(SBRGNS+2*I-1) = ERRORS(J,SBRGNS+2*I-1) + END IF + IF (ERRORS(J,SBRGNS+2*I).GT.GREATE(SBRGNS+2*I)) THEN + GREATE(SBRGNS+2*I) = ERRORS(J,SBRGNS+2*I) + END IF + ABSERR(J) = ABSERR(J) + ERRORS(J,SBRGNS+2*I-1) + + + ERRORS(J,SBRGNS+2*I) +230 CONTINUE +240 CONTINUE +C +C Store results in heap. +C + DO 250 I = 1,2*NDIV + INDEX = SBRGNS + I + CALL DTRHRE(2,NDIM,NUMFUN,INDEX,VALUES,ERRORS,CENTRS, + + HWIDTS,GREATE,WORK(1),WORK(NUMFUN+1),CENTER, + + HWIDTH,DIR) +250 CONTINUE + SBRGNS = SBRGNS + 2*NDIV +C +C Check for termination. +C + IF (SBRGNS.LT.MINSUB) THEN + GO TO 110 + END IF + DO 255 J = 1,NUMFUN + IF (ABSERR(J).GT.EPSREL*ABS(RESULT(J)) .AND. + + ABSERR(J).GT.EPSABS) THEN + GO TO 110 + END IF +255 CONTINUE + IFAIL = 0 + GO TO 499 +C +C Else we did not succeed with the +C given value of MAXSUB. +C + ELSE + IFAIL = 1 + END IF +C +C Compute more accurate values of RESULT and ABSERR. +C +499 CONTINUE + DO 500 J = 1,NUMFUN + RESULT(J) = 0 + ABSERR(J) = 0 +500 CONTINUE + DO 510 I = 1,SBRGNS + DO 505 J = 1,NUMFUN + RESULT(J) = RESULT(J) + VALUES(J,I) + ABSERR(J) = ABSERR(J) + ERRORS(J,I) +505 CONTINUE +510 CONTINUE +C +C Compute correct sign on the integral. +C + DO 600 J = 1,NUMFUN + RESULT(J) = RESULT(J)*INTSGN +600 CONTINUE + NSUB = SBRGNS + RETURN +C +C***END DADHRE +C + END diff --git a/DCuhre/dchhre.f b/DCuhre/dchhre.f new file mode 100644 index 0000000..c9fd701 --- /dev/null +++ b/DCuhre/dchhre.f @@ -0,0 +1,259 @@ + SUBROUTINE DCHHRE(MAXDIM,NDIM,NUMFUN,MDIV,A,B,MINPTS,MAXPTS, + + EPSABS,EPSREL,KEY,NW,RESTAR,NUM,MAXSUB,MINSUB, + + KEYF,IFAIL,WTLENG) +C***BEGIN PROLOGUE DCHHRE +C***PURPOSE DCHHRE checks the validity of the +C input parameters to DCUHRE. +C***DESCRIPTION +C DCHHRE computes NUM, MAXSUB, MINSUB, KEYF, WTLENG and +C IFAIL as functions of the input parameters to DCUHRE, +C and checks the validity of the input parameters to DCUHRE. +C +C ON ENTRY +C +C MAXDIM Integer. +C The maximum allowed number of dimensions. +C NDIM Integer. +C Number of variables. 1 < NDIM <= MAXDIM. +C NUMFUN Integer. +C Number of components of the integral. +C MDIV Integer. +C MDIV is the number of subregions that are divided in +C each subdivision step in DADHRE. +C MDIV is chosen default to 1. +C For efficient execution on parallel computers +C with NPROC processors MDIV should be set equal to +C the smallest integer such that MOD(2*MDIV,NPROC) = 0. +C A Real array of dimension NDIM. +C Lower limits of integration. +C B Real array of dimension NDIM. +C Upper limits of integration. +C MINPTS Integer. +C Minimum number of function evaluations. +C MAXPTS Integer. +C Maximum number of function evaluations. +C The number of function evaluations over each subregion +C is NUM. +C If (KEY = 0 or KEY = 1) and (NDIM = 2) Then +C NUM = 65 +C Elseif (KEY = 0 or KEY = 2) and (NDIM = 3) Then +C NUM = 127 +C Elseif (KEY = 0 and NDIM > 3) or (KEY = 3) Then +C NUM = 1 + 4*2*NDIM + 2*NDIM*(NDIM-1) + 4*NDIM*(NDIM-1) + +C 4*NDIM*(NDIM-1)*(NDIM-2)/3 + 2**NDIM +C Elseif (KEY = 4) Then +C NUM = 1 + 3*2*NDIM + 2*NDIM*(NDIM-1) + 2**NDIM +C MAXPTS >= 3*NUM and MAXPTS >= MINPTS +C EPSABS Real. +C Requested absolute error. +C EPSREL Real. +C Requested relative error. +C KEY Integer. +C Key to selected local integration rule. +C KEY = 0 is the default value. +C For NDIM = 2 the degree 13 rule is selected. +C For NDIM = 3 the degree 11 rule is selected. +C For NDIM > 3 the degree 9 rule is selected. +C KEY = 1 gives the user the 2 dimensional degree 13 +C integration rule that uses 65 evaluation points. +C KEY = 2 gives the user the 3 dimensional degree 11 +C integration rule that uses 127 evaluation points. +C KEY = 3 gives the user the degree 9 integration rule. +C KEY = 4 gives the user the degree 7 integration rule. +C This is the recommended rule for problems that +C require great adaptivity. +C NW Integer. +C Defines the length of the working array WORK. +C Let MAXSUB denote the maximum allowed number of subregions +C for the given values of MAXPTS, KEY and NDIM. +C MAXSUB = (MAXPTS-NUM)/(2*NUM) + 1 +C NW should be greater or equal to +C MAXSUB*(2*NDIM+2*NUMFUN+2) + 17*NUMFUN + 1 +C For efficient execution on parallel computers +C NW should be chosen greater or equal to +C MAXSUB*(2*NDIM+2*NUMFUN+2) + 17*NUMFUN*MDIV + 1 +C where MDIV is the number of subregions that are divided in +C each subdivision step. +C MDIV is default set internally in DCUHRE equal to 1. +C For efficient execution on parallel computers +C with NPROC processors MDIV should be set equal to +C the smallest integer such that MOD(2*MDIV,NPROC) = 0. +C RESTAR Integer. +C If RESTAR = 0, this is the first attempt to compute +C the integral. +C If RESTAR = 1, then we restart a previous attempt. +C +C ON RETURN +C +C NUM Integer. +C The number of function evaluations over each subregion. +C MAXSUB Integer. +C The maximum allowed number of subregions for the +C given values of MAXPTS, KEY and NDIM. +C MINSUB Integer. +C The minimum allowed number of subregions for the given +C values of MINPTS, KEY and NDIM. +C IFAIL Integer. +C IFAIL = 0 for normal exit. +C IFAIL = 2 if KEY is less than 0 or KEY greater than 4. +C IFAIL = 3 if NDIM is less than 2 or NDIM greater than +C MAXDIM. +C IFAIL = 4 if KEY = 1 and NDIM not equal to 2. +C IFAIL = 5 if KEY = 2 and NDIM not equal to 3. +C IFAIL = 6 if NUMFUN less than 1. +C IFAIL = 7 if volume of region of integration is zero. +C IFAIL = 8 if MAXPTS is less than 3*NUM. +C IFAIL = 9 if MAXPTS is less than MINPTS. +C IFAIL = 10 if EPSABS < 0 and EPSREL < 0. +C IFAIL = 11 if NW is too small. +C IFAIL = 12 if unlegal RESTAR. +C KEYF Integer. +C Key to selected integration rule. +C WTLENG Integer. +C The number of generators of the chosen integration rule. +C +C***ROUTINES CALLED-NONE +C***END PROLOGUE DCHHRE +C +C Global variables. +C + INTEGER NDIM,NUMFUN,MDIV,MINPTS,MAXPTS,KEY,NW,MINSUB,MAXSUB + INTEGER RESTAR,NUM,KEYF,IFAIL,MAXDIM,WTLENG + DOUBLE PRECISION A(NDIM),B(NDIM),EPSABS,EPSREL +C +C Local variables. +C + INTEGER LIMIT,J +C +C***FIRST EXECUTABLE STATEMENT DCHHRE +C + IFAIL = 0 +C +C Check on legal KEY. +C + IF (KEY.LT.0 .OR. KEY.GT.4) THEN + IFAIL = 2 + GO TO 999 + END IF +C +C Check on legal NDIM. +C + IF (NDIM.LT.2 .OR. NDIM.GT.MAXDIM) THEN + IFAIL = 3 + GO TO 999 + END IF +C +C For KEY = 1, NDIM must be equal to 2. +C + IF (KEY.EQ.1 .AND. NDIM.NE.2) THEN + IFAIL = 4 + GO TO 999 + END IF +C +C For KEY = 2, NDIM must be equal to 3. +C + IF (KEY.EQ.2 .AND. NDIM.NE.3) THEN + IFAIL = 5 + GO TO 999 + END IF +C +C For KEY = 0, we point at the selected integration rule. +C + IF (KEY.EQ.0) THEN + IF (NDIM.EQ.2) THEN + KEYF = 1 + ELSE IF (NDIM.EQ.3) THEN + KEYF = 2 + ELSE + KEYF = 3 + ENDIF + ELSE + KEYF = KEY + ENDIF +C +C Compute NUM and WTLENG as a function of KEYF and NDIM. +C + IF (KEYF.EQ.1) THEN + NUM = 65 + WTLENG = 14 + ELSE IF (KEYF.EQ.2) THEN + NUM = 127 + WTLENG = 13 + ELSE IF (KEYF.EQ.3) THEN + NUM = 1 + 4*2*NDIM + 2*NDIM* (NDIM-1) + 4*NDIM* (NDIM-1) + + + 4*NDIM* (NDIM-1)* (NDIM-2)/3 + 2**NDIM + WTLENG = 9 + IF (NDIM.EQ.2) WTLENG = 8 + ELSE IF (KEYF.EQ.4) THEN + NUM = 1 + 3*2*NDIM + 2*NDIM* (NDIM-1) + 2**NDIM + WTLENG = 6 + END IF +C +C Compute MAXSUB. +C + MAXSUB = (MAXPTS-NUM)/ (2*NUM) + 1 +C +C Compute MINSUB. +C + MINSUB = (MINPTS-NUM)/ (2*NUM) + 1 + IF (MOD(MINPTS-NUM,2*NUM).NE.0) THEN + MINSUB = MINSUB + 1 + END IF + MINSUB = MAX(2,MINSUB) +C +C Check on positive NUMFUN. +C + IF (NUMFUN.LT.1) THEN + IFAIL = 6 + GO TO 999 + END IF +C +C Check on legal upper and lower limits of integration. +C + DO 10 J = 1,NDIM + IF (A(J)-B(J).EQ.0) THEN + IFAIL = 7 + GO TO 999 + END IF +10 CONTINUE +C +C Check on MAXPTS < 3*NUM. +C + IF (MAXPTS.LT.3*NUM) THEN + IFAIL = 8 + GO TO 999 + END IF +C +C Check on MAXPTS >= MINPTS. +C + IF (MAXPTS.LT.MINPTS) THEN + IFAIL = 9 + GO TO 999 + END IF +C +C Check on legal accuracy requests. +C + IF (EPSABS.LT.0 .AND. EPSREL.LT.0) THEN + IFAIL = 10 + GO TO 999 + END IF +C +C Check on big enough double precision workspace. +C + LIMIT = MAXSUB* (2*NDIM+2*NUMFUN+2) + 17*MDIV*NUMFUN + 1 + IF (NW.LT.LIMIT) THEN + IFAIL = 11 + GO TO 999 + END IF +C +C Check on legal RESTAR. +C + IF (RESTAR.NE.0 .AND. RESTAR.NE.1) THEN + IFAIL = 12 + GO TO 999 + END IF +999 RETURN +C +C***END DCHHRE +C + END diff --git a/DCuhre/dcuhre.f b/DCuhre/dcuhre.f new file mode 100755 index 0000000..40a8ab7 --- /dev/null +++ b/DCuhre/dcuhre.f @@ -0,0 +1,473 @@ + +! SUBROUTINE CUHRE_TEST(YRANGE,NDIM,INTEGRAND,INIT,NCALL,ITMX,NPRN, +! + NUMFUN,PDIM,WORKERS,VG_RESULT,VG_ERROR,VG_CHI2) +! IMPLICIT NONE +! INTEGER, PARAMETER :: NW=10000000 +! INTEGER :: KEY,MINPTS,MAXPTS,IFAIL,NUMFUN,PDIM,WORKERS +! INTEGER :: NDIM,RESTART,NCALLS +! INTEGER(8) :: NCALL,ITMX,NPRN +! LOGICAL :: INIT +! REAL(8) :: A(1:NDIM),B(1:NDIM),EPSABS,EPSREL,WORK(1:NW) +! REAL(8) :: VG_RESULT,VG_ERROR,VG_CHI2 +! REAL(8) :: YRANGE(1:NDIM),ERROR(1:NUMFUN),RESULT(1:NUMFUN) +! EXTERNAL INTEGRAND +! +! +! A(:) = 0D0 +! B(:) = 1D0 +! +! MINPTS = 1000 +! MAXPTS = NCALL*ITMX +! EPSABS = 0D0 +! EPSREL = 1e-8 +! KEY = 3 +! RESTART = 0 +! +! +! +! CALL DCUHRE(NDIM,NUMFUN,A,B,MINPTS,MAXPTS,INTEGRAND, +! +EPSABS,EPSREL,KEY,NW,RESTART,RESULT,ERROR,NCALLS,IFAIL,WORK) +! +! +! VG_RESULT= RESULT(1) +! VG_ERROR = ERROR(1) +! print *, "IFAIL",IFAIL +! +! +! +! +! +! +! RETURN +! END SUBROUTINE + + + + SUBROUTINE DCUHRE(NDIM,NUMFUN,A,B,MINPTS,MAXPTS,FUNSUB,EPSABS, + + EPSREL,KEY,NW,RESTAR,RESULT,ABSERR,NEVAL,IFAIL, + + WORK) +C***BEGIN PROLOGUE DCUHRE +C***DATE WRITTEN 900116 (YYMMDD) +C***REVISION DATE 900116 (YYMMDD) +C***CATEGORY NO. H2B1A1 +C***AUTHOR +C Jarle Berntsen, The Computing Centre, +C University of Bergen, Thormohlens gt. 55, +C N-5008 Bergen, Norway +C Phone.. 47-5-544055 +C Email.. jarle@eik.ii.uib.no +C Terje O. Espelid, Department of Informatics, +C University of Bergen, Thormohlens gt. 55, +C N-5008 Bergen, Norway +C Phone.. 47-5-544180 +C Email.. terje@eik.ii.uib.no +C Alan Genz, Computer Science Department, Washington State +C University, Pullman, WA 99163-1210, USA +C Phone.. 509-335-2131 +C Email.. acg@cs2.cs.wsu.edu +C***KEYWORDS automatic multidimensional integrator, +C n-dimensional hyper-rectangles, +C general purpose, global adaptive +C***PURPOSE The routine calculates an approximation to a given +C vector of definite integrals +C +C B(1) B(2) B(NDIM) +C I I ... I (F ,F ,...,F ) DX(NDIM)...DX(2)DX(1), +C A(1) A(2) A(NDIM) 1 2 NUMFUN +C +C where F = F (X ,X ,...,X ), I = 1,2,...,NUMFUN. +C I I 1 2 NDIM +C +C hopefully satisfying for each component of I the following +C claim for accuracy: +C ABS(I(K)-RESULT(K)).LE.MAX(EPSABS,EPSREL*ABS(I(K))) +C***DESCRIPTION Computation of integrals over hyper-rectangular +C regions. +C DCUHRE is a driver for the integration routine +C DADHRE, which repeatedly subdivides the region +C of integration and estimates the integrals and the +C errors over the subregions with greatest +C estimated errors until the error request +C is met or MAXPTS function evaluations have been used. +C +C For NDIM = 2 the default integration rule is of +C degree 13 and uses 65 evaluation points. +C For NDIM = 3 the default integration rule is of +C degree 11 and uses 127 evaluation points. +C For NDIM greater then 3 the default integration rule +C is of degree 9 and uses NUM evaluation points where +C NUM = 1 + 4*2*NDIM + 2*NDIM*(NDIM-1) + 4*NDIM*(NDIM-1) + +C 4*NDIM*(NDIM-1)*(NDIM-2)/3 + 2**NDIM +C The degree 9 rule may also be applied for NDIM = 2 +C and NDIM = 3. +C A rule of degree 7 is available in all dimensions. +C The number of evaluation +C points used by the degree 7 rule is +C NUM = 1 + 3*2*NDIM + 2*NDIM*(NDIM-1) + 2**NDIM +C +C When DCUHRE computes estimates to a vector of +C integrals, all components of the vector are given +C the same treatment. That is, I(F ) and I(F ) for +C J K +C J not equal to K, are estimated with the same +C subdivision of the region of integration. +C For integrals with enough similarity, we may save +C time by applying DCUHRE to all integrands in one call. +C For integrals that vary continuously as functions of +C some parameter, the estimates produced by DCUHRE will +C also vary continuously when the same subdivision is +C applied to all components. This will generally not be +C the case when the different components are given +C separate treatment. +C +C On the other hand this feature should be used with +C caution when the different components of the integrals +C require clearly different subdivisions. +C +C ON ENTRY +C +C NDIM Integer. +C Number of variables. 1 < NDIM <= 15. +C NUMFUN Integer. +C Number of components of the integral. +C A Real array of dimension NDIM. +C Lower limits of integration. +C B Real array of dimension NDIM. +C Upper limits of integration. +C MINPTS Integer. +C Minimum number of function evaluations. +C MAXPTS Integer. +C Maximum number of function evaluations. +C The number of function evaluations over each subregion +C is NUM. +C If (KEY = 0 or KEY = 1) and (NDIM = 2) Then +C NUM = 65 +C Elseif (KEY = 0 or KEY = 2) and (NDIM = 3) Then +C NUM = 127 +C Elseif (KEY = 0 and NDIM > 3) or (KEY = 3) Then +C NUM = 1 + 4*2*NDIM + 2*NDIM*(NDIM-1) + 4*NDIM*(NDIM-1) + +C 4*NDIM*(NDIM-1)*(NDIM-2)/3 + 2**NDIM +C Elseif (KEY = 4) Then +C NUM = 1 + 3*2*NDIM + 2*NDIM*(NDIM-1) + 2**NDIM +C MAXPTS >= 3*NUM and MAXPTS >= MINPTS +C For 3 < NDIM < 13 the minimum values for MAXPTS are: +C NDIM = 4 5 6 7 8 9 10 11 12 +C KEY = 3: 459 819 1359 2151 3315 5067 7815 12351 20235 +C KEY = 4: 195 309 483 765 1251 2133 3795 7005 13299 +C FUNSUB Externally declared subroutine for computing +C all components of the integrand at the given +C evaluation point. +C It must have parameters (NDIM,X,NUMFUN,FUNVLS) +C Input parameters: +C NDIM Integer that defines the dimension of the +C integral. +C X Real array of dimension NDIM +C that defines the evaluation point. +C NUMFUN Integer that defines the number of +C components of I. +C Output parameter: +C FUNVLS Real array of dimension NUMFUN +C that defines NUMFUN components of the integrand. +C +C EPSABS Real. +C Requested absolute error. +C EPSREL Real. +C Requested relative error. +C KEY Integer. +C Key to selected local integration rule. +C KEY = 0 is the default value. +C For NDIM = 2 the degree 13 rule is selected. +C For NDIM = 3 the degree 11 rule is selected. +C For NDIM > 3 the degree 9 rule is selected. +C KEY = 1 gives the user the 2 dimensional degree 13 +C integration rule that uses 65 evaluation points. +C KEY = 2 gives the user the 3 dimensional degree 11 +C integration rule that uses 127 evaluation points. +C KEY = 3 gives the user the degree 9 integration rule. +C KEY = 4 gives the user the degree 7 integration rule. +C This is the recommended rule for problems that +C require great adaptivity. +C NW Integer. +C Defines the length of the working array WORK. +C Let MAXSUB denote the maximum allowed number of subregions +C for the given values of MAXPTS, KEY and NDIM. +C MAXSUB = (MAXPTS-NUM)/(2*NUM) + 1 +C NW should be greater or equal to +C MAXSUB*(2*NDIM+2*NUMFUN+2) + 17*NUMFUN + 1 +C For efficient execution on parallel computers +C NW should be chosen greater or equal to +C MAXSUB*(2*NDIM+2*NUMFUN+2) + 17*NUMFUN*MDIV + 1 +C where MDIV is the number of subregions that are divided in +C each subdivision step. +C MDIV is default set internally in DCUHRE equal to 1. +C For efficient execution on parallel computers +C with NPROC processors MDIV should be set equal to +C the smallest integer such that MOD(2*MDIV,NPROC) = 0. +C +C RESTAR Integer. +C If RESTAR = 0, this is the first attempt to compute +C the integral. +C If RESTAR = 1, then we restart a previous attempt. +C In this case the only parameters for DCUHRE that may +C be changed (with respect to the previous call of DCUHRE) +C are MINPTS, MAXPTS, EPSABS, EPSREL and RESTAR. +C +C ON RETURN +C +C RESULT Real array of dimension NUMFUN. +C Approximations to all components of the integral. +C ABSERR Real array of dimension NUMFUN. +C Estimates of absolute errors. +C NEVAL Integer. +C Number of function evaluations used by DCUHRE. +C IFAIL Integer. +C IFAIL = 0 for normal exit, when ABSERR(K) <= EPSABS or +C ABSERR(K) <= ABS(RESULT(K))*EPSREL with MAXPTS or less +C function evaluations for all values of K, +C 1 <= K <= NUMFUN . +C IFAIL = 1 if MAXPTS was too small for DCUHRE +C to obtain the required accuracy. In this case DCUHRE +C returns values of RESULT with estimated absolute +C errors ABSERR. +C IFAIL = 2 if KEY is less than 0 or KEY greater than 4. +C IFAIL = 3 if NDIM is less than 2 or NDIM greater than 15. +C IFAIL = 4 if KEY = 1 and NDIM not equal to 2. +C IFAIL = 5 if KEY = 2 and NDIM not equal to 3. +C IFAIL = 6 if NUMFUN is less than 1. +C IFAIL = 7 if volume of region of integration is zero. +C IFAIL = 8 if MAXPTS is less than 3*NUM. +C IFAIL = 9 if MAXPTS is less than MINPTS. +C IFAIL = 10 if EPSABS < 0 and EPSREL < 0. +C IFAIL = 11 if NW is too small. +C IFAIL = 12 if unlegal RESTAR. +C WORK Real array of dimension NW. +C Used as working storage. +C WORK(NW) = NSUB, the number of subregions in the data +C structure. +C Let WRKSUB=(NW-1-17*NUMFUN*MDIV)/(2*NDIM+2*NUMFUN+2) +C WORK(1),...,WORK(NUMFUN*WRKSUB) contain +C the estimated components of the integrals over the +C subregions. +C WORK(NUMFUN*WRKSUB+1),...,WORK(2*NUMFUN*WRKSUB) contain +C the estimated errors over the subregions. +C WORK(2*NUMFUN*WRKSUB+1),...,WORK(2*NUMFUN*WRKSUB+NDIM* +C WRKSUB) contain the centers of the subregions. +C WORK(2*NUMFUN*WRKSUB+NDIM*WRKSUB+1),...,WORK((2*NUMFUN+ +C NDIM)*WRKSUB+NDIM*WRKSUB) contain subregion half widths. +C WORK(2*NUMFUN*WRKSUB+2*NDIM*WRKSUB+1),...,WORK(2*NUMFUN* +C WRKSUB+2*NDIM*WRKSUB+WRKSUB) contain the greatest errors +C in each subregion. +C WORK((2*NUMFUN+2*NDIM+1)*WRKSUB+1),...,WORK((2*NUMFUN+ +C 2*NDIM+1)*WRKSUB+WRKSUB) contain the direction of +C subdivision in each subregion. +C WORK(2*(NDIM+NUMFUN+1)*WRKSUB),...,WORK(2*(NDIM+NUMFUN+1)* +C WRKSUB+ 17*MDIV*NUMFUN) is used as temporary +C storage in DADHRE. +C +C +C DCUHRE Example Test Program +C +C +C DTEST1 is a simple test driver for DCUHRE. +C +C Output produced on a SUN 3/50. +c +C DCUHRE TEST RESULTS +C +C FTEST CALLS = 3549, IFAIL = 0 +C N ESTIMATED ERROR INTEGRAL +C 1 0.00000010 0.13850818 +C 2 0.00000013 0.06369469 +C 3 0.00000874 0.05861748 +C 4 0.00000021 0.05407034 +C 5 0.00000019 0.05005614 +C 6 0.00000009 0.04654608 +C +C PROGRAM DTEST1 +C EXTERNAL FTEST +C INTEGER KEY, N, NF, NDIM, MINCLS, MAXCLS, IFAIL, NEVAL, NW +C PARAMETER (NDIM = 5, NW = 5000, NF = NDIM+1) +C DOUBLE PRECISION A(NDIM), B(NDIM), WRKSTR(NW) +C DOUBLE PRECISION ABSEST(NF), FINEST(NF), ABSREQ, RELREQ +C DO 10 N = 1,NDIM +C A(N) = 0 +C B(N) = 1 +C 10 CONTINUE +C MINCLS = 0 +C MAXCLS = 10000 +C KEY = 0 +C ABSREQ = 0 +C RELREQ = 1E-3 +C CALL DCUHRE(NDIM, NF, A, B, MINCLS, MAXCLS, FTEST, ABSREQ, RELREQ, +C * KEY, NW, 0, FINEST, ABSEST, NEVAL, IFAIL, WRKSTR) +C PRINT 9999, NEVAL, IFAIL +C9999 FORMAT (8X, 'DCUHRE TEST RESULTS', //' FTEST CALLS = ', I4, +C * ', IFAIL = ', I2, /' N ESTIMATED ERROR INTEGRAL') +C DO 20 N = 1,NF +C PRINT 9998, N, ABSEST(N), FINEST(N) +C9998 FORMAT (3X, I2, 2F15.8) +C 20 CONTINUE +C END +C SUBROUTINE FTEST(NDIM, Z, NFUN, F) +C INTEGER N, NDIM, NFUN +C DOUBLE PRECISION Z(NDIM), F(NFUN), SUM +C SUM = 0 +C DO 10 N = 1,NDIM +C SUM = SUM + N*Z(N)**2 +C 10 CONTINUE +C F(1) = EXP(-SUM/2) +C DO 20 N = 1,NDIM +C F(N+1) = Z(N)*F(1) +C 20 CONTINUE +C END +C +C***LONG DESCRIPTION +C +C The information for each subregion is contained in the +C data structure WORK. +C When passed on to DADHRE, WORK is split into eight +C arrays VALUES, ERRORS, CENTRS, HWIDTS, GREATE, DIR, +C OLDRES and WORK. +C VALUES contains the estimated values of the integrals. +C ERRORS contains the estimated errors. +C CENTRS contains the centers of the subregions. +C HWIDTS contains the half widths of the subregions. +C GREATE contains the greatest estimated error for each subregion. +C DIR contains the directions for further subdivision. +C OLDRES and WORK are used as work arrays in DADHRE. +C +C The data structures for the subregions are in DADHRE organized +C as a heap, and the size of GREATE(I) defines the position of +C region I in the heap. The heap is maintained by the program +C DTRHRE. +C +C The subroutine DADHRE is written for efficient execution on shared +C memory parallel computer. On a computer with NPROC processors we wil +C in each subdivision step divide MDIV regions, where MDIV is +C chosen such that MOD(2*MDIV,NPROC) = 0, in totally 2*MDIV new region +C Each processor will then compute estimates of the integrals and erro +C over 2*MDIV/NPROC subregions in each subdivision step. +C The subroutine for estimating the integral and the error over +C each subregion, DRLHRE, uses WORK2 as a work array. +C We must make sure that each processor writes its results to +C separate parts of the memory, and therefore the sizes of WORK and +C WORK2 are functions of MDIV. +C In order to achieve parallel processing of subregions, compiler +C directives should be placed in front of the DO 200 +C loop in DADHRE on machines like Alliant and CRAY. +C +C***REFERENCES +C J.Berntsen, T.O.Espelid and A.Genz, An Adaptive Algorithm +C for the Approximate Calculation of Multiple Integrals, +C To be published. +C +C J.Berntsen, T.O.Espelid and A.Genz, DCUHRE: An Adaptive +C Multidimensional Integration Routine for a Vector of +C Integrals, To be published. +C +C***ROUTINES CALLED DCHHRE,DADHRE +C***END PROLOGUE DCUHRE +C +C Global variables. +C + EXTERNAL FUNSUB + INTEGER NDIM,NUMFUN,MINPTS,MAXPTS,KEY,NW,RESTAR + INTEGER NEVAL,IFAIL + DOUBLE PRECISION A(NDIM),B(NDIM),EPSABS,EPSREL + DOUBLE PRECISION RESULT(NUMFUN),ABSERR(NUMFUN),WORK(NW) +C +C Local variables. +C +C MDIV Integer. +C MDIV is the number of subregions that are divided in +C each subdivision step in DADHRE. +C MDIV is chosen default to 1. +C For efficient execution on parallel computers +C with NPROC processors MDIV should be set equal to +C the smallest integer such that MOD(2*MDIV,NPROC) = 0. +C MAXDIM Integer. +C The maximum allowed value of NDIM. +C MAXWT Integer. The maximum number of weights used by the +C integration rule. +C WTLENG Integer. +C The number of generators used by the selected rule. +C WORK2 Real work space. The length +C depends on the parameters MDIV,MAXDIM and MAXWT. +C MAXSUB Integer. +C The maximum allowed number of subdivisions +C for the given values of KEY, NDIM and MAXPTS. +C MINSUB Integer. +C The minimum allowed number of subregions for the given +C values of MINPTS, KEY and NDIM. +C WRKSUB Integer. +C The maximum allowed number of subregions as a function +C of NW, NUMFUN, NDIM and MDIV. This determines the length +C of the main work arrays. +C NUM Integer. The number of integrand evaluations needed +C over each subregion. +C + INTEGER MDIV,MAXWT,WTLENG,MAXDIM,LENW2,MAXSUB,MINSUB + INTEGER NUM,NSUB,LENW,KEYF + PARAMETER (MDIV=1) + PARAMETER (MAXDIM=15) + PARAMETER (MAXWT=14) + PARAMETER (LENW2=2*MDIV*MAXDIM* (MAXWT+1)+12*MAXWT+2*MAXDIM) + INTEGER WRKSUB,I1,I2,I3,I4,I5,I6,I7,I8,K1,K2,K3,K4,K5,K6,K7,K8 + DOUBLE PRECISION WORK2(LENW2) +C +C***FIRST EXECUTABLE STATEMENT DCUHRE +C +C Compute NUM, WTLENG, MAXSUB and MINSUB, +C and check the input parameters. +C + + + CALL DCHHRE(MAXDIM,NDIM,NUMFUN,MDIV,A,B,MINPTS,MAXPTS,EPSABS, + + EPSREL,KEY,NW,RESTAR,NUM,MAXSUB,MINSUB,KEYF, + + IFAIL,WTLENG) + WRKSUB = (NW - 1 - 17*MDIV*NUMFUN)/(2*NDIM + 2*NUMFUN + 2) + IF (IFAIL.NE.0) THEN + GO TO 999 + END IF +C +C Split up the work space. +C + I1 = 1 + I2 = I1 + WRKSUB*NUMFUN + I3 = I2 + WRKSUB*NUMFUN + I4 = I3 + WRKSUB*NDIM + I5 = I4 + WRKSUB*NDIM + I6 = I5 + WRKSUB + I7 = I6 + WRKSUB + I8 = I7 + NUMFUN*MDIV + K1 = 1 + K2 = K1 + 2*MDIV*WTLENG*NDIM + K3 = K2 + WTLENG*5 + K4 = K3 + WTLENG + K5 = K4 + NDIM + K6 = K5 + NDIM + K7 = K6 + 2*MDIV*NDIM + K8 = K7 + 3*WTLENG +C +C On restart runs the number of subregions from the +C previous call is assigned to NSUB. +C + IF (RESTAR.EQ.1) THEN + NSUB = WORK(NW) + END IF +C +C Compute the size of the temporary work space needed in DADHRE. +C + LENW = 16*MDIV*NUMFUN + CALL DADHRE(NDIM,NUMFUN,MDIV,A,B,MINSUB,MAXSUB,FUNSUB,EPSABS, + + EPSREL,KEYF,RESTAR,NUM,LENW,WTLENG, + + RESULT,ABSERR,NEVAL,NSUB,IFAIL,WORK(I1),WORK(I2), + + WORK(I3),WORK(I4),WORK(I5),WORK(I6),WORK(I7),WORK(I8), + + WORK2(K1),WORK2(K2),WORK2(K3),WORK2(K4),WORK2(K5), + + WORK2(K6),WORK2(K7),WORK2(K8)) + WORK(NW) = NSUB +999 RETURN +C +C***END DCUHRE +C + END diff --git a/DCuhre/dfshre.f b/DCuhre/dfshre.f new file mode 100644 index 0000000..9361aed --- /dev/null +++ b/DCuhre/dfshre.f @@ -0,0 +1,119 @@ + SUBROUTINE DFSHRE(NDIM,CENTER,HWIDTH,X,G,NUMFUN,FUNSUB,FULSMS, + + FUNVLS) +C***BEGIN PROLOGUE DFSHRE +C***KEYWORDS fully symmetric sum +C***PURPOSE To compute fully symmetric basic rule sums +C***AUTHOR Alan Genz, Computer Science Department, Washington +C State University, Pullman, WA 99163-1210 USA +C***LAST MODIFICATION 88-04-08 +C***DESCRIPTION DFSHRE computes a fully symmetric sum for a vector +C of integrand values over a hyper-rectangular region. +C The sum is fully symmetric with respect to the center of +C the region and is taken over all sign changes and +C permutations of the generators for the sum. +C +C ON ENTRY +C +C NDIM Integer. +C Number of variables. +C CENTER Real array of dimension NDIM. +C The coordinates for the center of the region. +C HWIDTH Real Array of dimension NDIM. +C HWIDTH(I) is half of the width of dimension I of the region. +C X Real Array of dimension NDIM. +C A work array. +C G Real Array of dimension NDIM. +C The generators for the fully symmetric sum. These MUST BE +C non-negative and non-increasing. +C NUMFUN Integer. +C Number of components for the vector integrand. +C FUNSUB Externally declared subroutine. +C For computing the components of the integrand at a point X. +C It must have parameters (NDIM, X, NUMFUN, FUNVLS). +C Input Parameters: +C X Real array of dimension NDIM. +C Defines the evaluation point. +C NDIM Integer. +C Number of variables for the integrand. +C NUMFUN Integer. +C Number of components for the vector integrand. +C Output Parameters: +C FUNVLS Real array of dimension NUMFUN. +C The components of the integrand at the point X. +C ON RETURN +C +C FULSMS Real array of dimension NUMFUN. +C The values for the fully symmetric sums for each component +C of the integrand. +C FUNVLS Real array of dimension NUMFUN. +C A work array. +C +C***ROUTINES CALLED: FUNSUB +C +C***END PROLOGUE DFSHRE +C +C Global variables. +C + EXTERNAL FUNSUB + INTEGER NDIM,NUMFUN + DOUBLE PRECISION CENTER(NDIM),HWIDTH(NDIM),X(NDIM),G(NDIM), + + FULSMS(NUMFUN),FUNVLS(NUMFUN) +C +C Local variables. +C + INTEGER IXCHNG,LXCHNG,I,J,L + DOUBLE PRECISION GL,GI +C +C***FIRST EXECUTABLE STATEMENT DFSHRE +C + DO 10 J = 1,NUMFUN + FULSMS(J) = 0 +10 CONTINUE +C +C Compute centrally symmetric sum for permutation of G +C +20 DO 30 I = 1,NDIM + X(I) = CENTER(I) + G(I)*HWIDTH(I) +30 CONTINUE +40 CALL FUNSUB(NDIM,X,NUMFUN,FUNVLS) + DO 50 J = 1,NUMFUN + FULSMS(J) = FULSMS(J) + FUNVLS(J) +50 CONTINUE + DO 60 I = 1,NDIM + G(I) = - G(I) + X(I) = CENTER(I) + G(I)*HWIDTH(I) + IF (G(I).LT.0) GO TO 40 +60 CONTINUE +C +C Find next distinct permutation of G and loop back for next sum. +C Permutations are generated in reverse lexicographic order. +C + DO 80 I = 2,NDIM + IF (G(I-1).GT.G(I)) THEN + GI = G(I) + IXCHNG = I - 1 + DO 70 L = 1, (I-1)/2 + GL = G(L) + G(L) = G(I-L) + G(I-L) = GL + IF (GL.LE.GI) IXCHNG = IXCHNG - 1 + IF (G(L).GT.GI) LXCHNG = L +70 CONTINUE + IF (G(IXCHNG).LE.GI) IXCHNG = LXCHNG + G(I) = G(IXCHNG) + G(IXCHNG) = GI + GO TO 20 + END IF +80 CONTINUE +C +C Restore original order to generators +C + DO 90 I = 1,NDIM/2 + GI = G(I) + G(I) = G(NDIM-I+1) + G(NDIM-I+1) = GI +90 CONTINUE +C +C***END DFSHRE +C + END diff --git a/DCuhre/dinhre.f b/DCuhre/dinhre.f new file mode 100644 index 0000000..9796dd2 --- /dev/null +++ b/DCuhre/dinhre.f @@ -0,0 +1,111 @@ + SUBROUTINE DINHRE(NDIM,KEY,WTLENG,W,G,ERRCOF,RULPTS,SCALES,NORMS) +C***BEGIN PROLOGUE DINHRE +C***PURPOSE DINHRE computes abscissas and weights of the integration +C rule and the null rules to be used in error estimation. +C These are computed as functions of NDIM and KEY. +C***DESCRIPTION DINHRE will for given values of NDIM and KEY compute or +C select the correct values of the abscissas and +C corresponding weights for different +C integration rules and null rules and assign them to +C G and W. +C The heuristic error coefficients ERRCOF +C will be computed as a function of KEY. +C Scaling factors SCALES and normalization factors NORMS +C used in the error estimation are computed. +C +C +C ON ENTRY +C +C NDIM Integer. +C Number of variables. +C KEY Integer. +C Key to selected local integration rule. +C WTLENG Integer. +C The number of weights in each of the rules. +C +C ON RETURN +C +C W Real array of dimension (5,WTLENG). +C The weights for the basic and null rules. +C W(1,1), ...,W(1,WTLENG) are weights for the basic rule. +C W(I,1), ...,W(I,WTLENG), for I > 1 are null rule weights. +C G Real array of dimension (NDIM,WTLENG). +C The fully symmetric sum generators for the rules. +C G(1,J),...,G(NDIM,J) are the generators for the points +C associated with the the Jth weights. +C ERRCOF Real array of dimension 6. +C Heuristic error coefficients that are used in the +C error estimation in BASRUL. +C It is assumed that the error is computed using: +C IF (N1*ERRCOF(1) < N2 and N2*ERRCOF(2) < N3) +C THEN ERROR = ERRCOF(3)*N1 +C ELSE ERROR = ERRCOF(4)*MAX(N1, N2, N3) +C ERROR = ERROR + EP*(ERRCOF(5)*ERROR/(ES+ERROR)+ERRCOF(6)) +C where N1-N3 are the null rules, EP is the error for +C the parent +C subregion and ES is the error for the sibling subregion. +C RULPTS Real array of dimension WTLENG. +C A work array containing the number of points produced by +C each generator of the selected rule. +C SCALES Real array of dimension (3,WTLENG). +C Scaling factors used to construct new null rules, +C N1, N2 and N3, +C based on a linear combination of two successive null rules +C in the sequence of null rules. +C NORMS Real array of dimension (3,WTLENG). +C 2**NDIM/(1-norm of the null rule constructed by each of +C the scaling factors.) +C +C***ROUTINES CALLED D132RE,D113RE,D07HRE,D09HRE +C***END PROLOGUE DINHRE +C +C Global variables. +C + INTEGER NDIM,KEY,WTLENG + DOUBLE PRECISION G(NDIM,WTLENG),W(5,WTLENG),ERRCOF(6) + DOUBLE PRECISION RULPTS(WTLENG),SCALES(3,WTLENG) + DOUBLE PRECISION NORMS(3,WTLENG) +C +C Local variables. +C + INTEGER I,J,K + DOUBLE PRECISION WE(14) +C +C***FIRST EXECUTABLE STATEMENT DINHRE +C +C Compute W, G and ERRCOF. +C + IF (KEY.EQ.1) THEN + CALL D132RE(WTLENG,W,G,ERRCOF,RULPTS) + ELSE IF (KEY.EQ.2) THEN + CALL D113RE(WTLENG,W,G,ERRCOF,RULPTS) + ELSE IF (KEY.EQ.3) THEN + CALL D09HRE(NDIM,WTLENG,W,G,ERRCOF,RULPTS) + ELSE IF (KEY.EQ.4) THEN + CALL D07HRE(NDIM,WTLENG,W,G,ERRCOF,RULPTS) + END IF +C +C Compute SCALES and NORMS. +C + DO 100 K = 1,3 + DO 50 I = 1,WTLENG + IF (W(K+1,I).NE.0) THEN + SCALES(K,I) = - W(K+2,I)/W(K+1,I) + ELSE + SCALES(K,I) = 100 + END IF + DO 30 J = 1,WTLENG + WE(J) = W(K+2,J) + SCALES(K,I)*W(K+1,J) +30 CONTINUE + NORMS(K,I) = 0 + DO 40 J = 1,WTLENG + NORMS(K,I) = NORMS(K,I) + RULPTS(J)*ABS(WE(J)) +40 CONTINUE + NORMS(K,I) = 2**NDIM/NORMS(K,I) +50 CONTINUE +100 CONTINUE + RETURN +C +C***END DINHRE +C + END diff --git a/DCuhre/drlhre.f b/DCuhre/drlhre.f new file mode 100644 index 0000000..cea05ce --- /dev/null +++ b/DCuhre/drlhre.f @@ -0,0 +1,209 @@ + SUBROUTINE DRLHRE(NDIM,CENTER,HWIDTH,WTLENG,G,W,ERRCOF,NUMFUN, + + FUNSUB,SCALES,NORMS,X,NULL,BASVAL,RGNERR,DIRECT) +C***BEGIN PROLOGUE DRLHRE +C***KEYWORDS basic numerical integration rule +C***PURPOSE To compute basic integration rule values. +C***AUTHOR Alan Genz, Computer Science Department, Washington +C State University, Pullman, WA 99163-1210 USA +C***LAST MODIFICATION 90-02-06 +C***DESCRIPTION DRLHRE computes basic integration rule values for a +C vector of integrands over a hyper-rectangular region. +C These are estimates for the integrals. DRLHRE also computes +C estimates for the errors and determines the coordinate axis +C where the fourth difference for the integrands is largest. +C +C ON ENTRY +C +C NDIM Integer. +C Number of variables. +C CENTER Real array of dimension NDIM. +C The coordinates for the center of the region. +C HWIDTH Real Array of dimension NDIM. +C HWIDTH(I) is half of the width of dimension I of the region. +C WTLENG Integer. +C The number of weights in the basic integration rule. +C G Real array of dimension (NDIM,WTLENG). +C The fully symmetric sum generators for the rules. +C G(1,J), ..., G(NDIM,J) are the are the generators for the +C points associated with the Jth weights. +C W Real array of dimension (5,WTLENG). +C The weights for the basic and null rules. +C W(1,1),...,W(1,WTLENG) are weights for the basic rule. +C W(I,1),...,W(I,WTLENG), for I > 1 are null rule weights. +C ERRCOF Real array of dimension 6. +C The error coefficients for the rules. +C It is assumed that the error is computed using: +C IF (N1*ERRCOF(1) < N2 and N2*ERRCOF(2) < N3) +C THEN ERROR = ERRCOF(3)*N1 +C ELSE ERROR = ERRCOF(4)*MAX(N1, N2, N3) +C ERROR = ERROR + EP*(ERRCOF(5)*ERROR/(ES+ERROR)+ERRCOF(6)) +C where N1-N4 are the null rules, EP is the error +C for the parent +C subregion and ES is the error for the sibling subregion. +C NUMFUN Integer. +C Number of components for the vector integrand. +C FUNSUB Externally declared subroutine. +C For computing the components of the integrand at a point X. +C It must have parameters (NDIM,X,NUMFUN,FUNVLS). +C Input Parameters: +C X Real array of dimension NDIM. +C Defines the evaluation point. +C NDIM Integer. +C Number of variables for the integrand. +C NUMFUN Integer. +C Number of components for the vector integrand. +C Output Parameters: +C FUNVLS Real array of dimension NUMFUN. +C The components of the integrand at the point X. +C SCALES Real array of dimension (3,WTLENG). +C Scaling factors used to construct new null rules based +C on a linear combination of two successive null rules +C in the sequence of null rules. +C NORMS Real array of dimension (3,WTLENG). +C 2**NDIM/(1-norm of the null rule constructed by each of the +C scaling factors.) +C X Real Array of dimension NDIM. +C A work array. +C NULL Real array of dimension (NUMFUN, 8) +C A work array. +C +C ON RETURN +C +C BASVAL Real array of dimension NUMFUN. +C The values for the basic rule for each component +C of the integrand. +C RGNERR Real array of dimension NUMFUN. +C The error estimates for each component of the integrand. +C DIRECT Real. +C The coordinate axis where the fourth difference of the +C integrand values is largest. +C +C***REFERENCES +C A.C.Genz and A.A.Malik, An adaptive algorithm for numerical +C integration over an N-dimensional rectangular region, +C J.Comp.Appl.Math., 6:295-302, 1980. +C +C T.O.Espelid, Integration Rules, Null Rules and Error +C Estimation, Reports in Informatics 33, Dept. of Informatics, +C Univ. of Bergen, 1988. +C +C***ROUTINES CALLED: DFSHRE, FUNSUB +C +C***END PROLOGUE DRLHRE +C +C Global variables. +C + EXTERNAL FUNSUB + INTEGER WTLENG,NUMFUN,NDIM + DOUBLE PRECISION CENTER(NDIM),X(NDIM),HWIDTH(NDIM),BASVAL(NUMFUN), + + RGNERR(NUMFUN),NULL(NUMFUN,8),W(5,WTLENG), + + G(NDIM,WTLENG),ERRCOF(6),DIRECT,SCALES(3,WTLENG), + + NORMS(3,WTLENG) +C +C Local variables. +C + DOUBLE PRECISION RGNVOL,DIFSUM,DIFMAX,FRTHDF + INTEGER I,J,K,DIVAXN + DOUBLE PRECISION SEARCH,RATIO +C +C***FIRST EXECUTABLE STATEMENT DRLHRE +C +C +C Compute volume of subregion, initialize DIVAXN and rule sums; +C compute fourth differences and new DIVAXN (RGNERR is used +C for a work array here). The integrand values used for the +C fourth divided differences are accumulated in rule arrays. +C + RGNVOL = 1 + DIVAXN = 1 + DO 10 I = 1,NDIM + RGNVOL = RGNVOL*HWIDTH(I) + X(I) = CENTER(I) + IF (HWIDTH(I).GT.HWIDTH(DIVAXN)) DIVAXN = I +10 CONTINUE + CALL FUNSUB(NDIM,X,NUMFUN,RGNERR) + DO 30 J = 1,NUMFUN + BASVAL(J) = W(1,1)*RGNERR(J) + DO 20 K = 1,4 + NULL(J,K) = W(K+1,1)*RGNERR(J) +20 CONTINUE +30 CONTINUE + DIFMAX = 0 + RATIO = (G(1,3)/G(1,2))**2 + DO 60 I = 1,NDIM + X(I) = CENTER(I) - HWIDTH(I)*G(1,2) + CALL FUNSUB(NDIM,X,NUMFUN,NULL(1,5)) + X(I) = CENTER(I) + HWIDTH(I)*G(1,2) + CALL FUNSUB(NDIM,X,NUMFUN,NULL(1,6)) + X(I) = CENTER(I) - HWIDTH(I)*G(1,3) + CALL FUNSUB(NDIM,X,NUMFUN,NULL(1,7)) + X(I) = CENTER(I) + HWIDTH(I)*G(1,3) + CALL FUNSUB(NDIM,X,NUMFUN,NULL(1,8)) + X(I) = CENTER(I) + DIFSUM = 0 + DO 50 J = 1,NUMFUN + FRTHDF = 2* (1-RATIO)*RGNERR(J) - (NULL(J,7)+NULL(J,8)) + + + RATIO* (NULL(J,5)+NULL(J,6)) +C +C Ignore differences below roundoff +C + IF (RGNERR(J)+FRTHDF/4.NE.RGNERR(J)) DIFSUM = DIFSUM + + + ABS(FRTHDF) + DO 40 K = 1,4 + NULL(J,K) = NULL(J,K) + W(K+1,2)* + + (NULL(J,5)+NULL(J,6)) + + + W(K+1,3)* (NULL(J,7)+NULL(J,8)) +40 CONTINUE + BASVAL(J) = BASVAL(J) + W(1,2)* (NULL(J,5)+NULL(J,6)) + + + W(1,3)* (NULL(J,7)+NULL(J,8)) +50 CONTINUE + IF (DIFSUM.GT.DIFMAX) THEN + DIFMAX = DIFSUM + DIVAXN = I + END IF +60 CONTINUE + DIRECT = DIVAXN +C +C Finish computing the rule values. +C + DO 90 I = 4,WTLENG + CALL DFSHRE(NDIM,CENTER,HWIDTH,X,G(1,I),NUMFUN,FUNSUB,RGNERR, + + NULL(1,5)) + DO 80 J = 1,NUMFUN + BASVAL(J) = BASVAL(J) + W(1,I)*RGNERR(J) + DO 70 K = 1,4 + NULL(J,K) = NULL(J,K) + W(K+1,I)*RGNERR(J) +70 CONTINUE +80 CONTINUE +90 CONTINUE +C +C Compute errors. +C + DO 130 J = 1,NUMFUN +C +C We search for the null rule, in the linear space spanned by two +C successive null rules in our sequence, which gives the greatest +C error estimate among all normalized (1-norm) null rules in this +C space. +C + DO 110 I = 1,3 + SEARCH = 0 + DO 100 K = 1,WTLENG + SEARCH = MAX(SEARCH,ABS(NULL(J,I+1)+SCALES(I, + + K)*NULL(J,I))*NORMS(I,K)) +100 CONTINUE + NULL(J,I) = SEARCH +110 CONTINUE + IF (ERRCOF(1)*NULL(J,1).LE.NULL(J,2) .AND. + + ERRCOF(2)*NULL(J,2).LE.NULL(J,3)) THEN + RGNERR(J) = ERRCOF(3)*NULL(J,1) + ELSE + RGNERR(J) = ERRCOF(4)*MAX(NULL(J,1),NULL(J,2),NULL(J,3)) + END IF + RGNERR(J) = RGNVOL*RGNERR(J) + BASVAL(J) = RGNVOL*BASVAL(J) +130 CONTINUE +C +C***END DRLHRE +C + END diff --git a/DCuhre/dtrhre.f b/DCuhre/dtrhre.f new file mode 100644 index 0000000..d52a1de --- /dev/null +++ b/DCuhre/dtrhre.f @@ -0,0 +1,176 @@ + SUBROUTINE DTRHRE(DVFLAG,NDIM,NUMFUN,SBRGNS,VALUES,ERRORS,CENTRS, + + HWIDTS,GREATE,ERROR,VALUE,CENTER,HWIDTH,DIR) +C***BEGIN PROLOGUE DTRHRE +C***PURPOSE DTRHRE maintains a heap of subregions. +C***DESCRIPTION DTRHRE maintains a heap of subregions. +C The subregions are ordered according to the size +C of the greatest error estimates of each subregion(GREATE). +C +C PARAMETERS +C +C DVFLAG Integer. +C If DVFLAG = 1, we remove the subregion with +C greatest error from the heap. +C If DVFLAG = 2, we insert a new subregion in the heap. +C NDIM Integer. +C Number of variables. +C NUMFUN Integer. +C Number of components of the integral. +C SBRGNS Integer. +C Number of subregions in the heap. +C VALUES Real array of dimension (NUMFUN,SBRGNS). +C Used to store estimated values of the integrals +C over the subregions. +C ERRORS Real array of dimension (NUMFUN,SBRGNS). +C Used to store the corresponding estimated errors. +C CENTRS Real array of dimension (NDIM,SBRGNS). +C Used to store the center limits of the stored subregions. +C HWIDTS Real array of dimension (NDIM,SBRGNS). +C Used to store the hwidth limits of the stored subregions. +C GREATE Real array of dimension SBRGNS. +C Used to store the greatest estimated errors in +C all subregions. +C ERROR Real array of dimension NUMFUN. +C Used as intermediate storage for the error of a subregion. +C VALUE Real array of dimension NUMFUN. +C Used as intermediate storage for the estimate +C of the integral over a subregion. +C CENTER Real array of dimension NDIM. +C Used as intermediate storage for the center of +C the subregion. +C HWIDTH Real array of dimension NDIM. +C Used as intermediate storage for the half width of +C the subregion. +C DIR Integer array of dimension SBRGNS. +C DIR is used to store the directions for +C further subdivision. +C +C***ROUTINES CALLED-NONE +C***END PROLOGUE DTRHRE +C +C Global variables. +C + INTEGER DVFLAG,NDIM,NUMFUN,SBRGNS + DOUBLE PRECISION VALUES(NUMFUN,*),ERRORS(NUMFUN,*) + DOUBLE PRECISION CENTRS(NDIM,*) + DOUBLE PRECISION HWIDTS(NDIM,*) + DOUBLE PRECISION GREATE(*) + DOUBLE PRECISION ERROR(NUMFUN),VALUE(NUMFUN) + DOUBLE PRECISION CENTER(NDIM),HWIDTH(NDIM) + DOUBLE PRECISION DIR(*) +C +C Local variables. +C +C GREAT is used as intermediate storage for the greatest error of a +C subregion. +C DIRECT is used as intermediate storage for the direction of further +C subdivision. +C SUBRGN Position of child/parent subregion in the heap. +C SUBTMP Position of parent/child subregion in the heap. +C + INTEGER J,SUBRGN,SUBTMP + DOUBLE PRECISION GREAT,DIRECT +C +C***FIRST EXECUTABLE STATEMENT DTRHRE +C +C Save values to be stored in their correct place in the heap. +C + GREAT = GREATE(SBRGNS) + DIRECT = DIR(SBRGNS) + DO 5 J = 1,NUMFUN + ERROR(J) = ERRORS(J,SBRGNS) + VALUE(J) = VALUES(J,SBRGNS) +5 CONTINUE + DO 10 J = 1,NDIM + CENTER(J) = CENTRS(J,SBRGNS) + HWIDTH(J) = HWIDTS(J,SBRGNS) +10 CONTINUE +C +C If DVFLAG = 1, we will remove the region +C with greatest estimated error from the heap. +C + IF (DVFLAG.EQ.1) THEN + SBRGNS = SBRGNS - 1 + SUBRGN = 1 +20 SUBTMP = 2*SUBRGN + IF (SUBTMP.LE.SBRGNS) THEN + IF (SUBTMP.NE.SBRGNS) THEN +C +C Find max. of left and right child. +C + IF (GREATE(SUBTMP).LT.GREATE(SUBTMP+1)) THEN + SUBTMP = SUBTMP + 1 + END IF + END IF +C +C Compare max.child with parent. +C If parent is max., then done. +C + IF (GREAT.LT.GREATE(SUBTMP)) THEN +C +C Move the values at position subtmp up the heap. +C + GREATE(SUBRGN) = GREATE(SUBTMP) + DO 25 J = 1,NUMFUN + ERRORS(J,SUBRGN) = ERRORS(J,SUBTMP) + VALUES(J,SUBRGN) = VALUES(J,SUBTMP) +25 CONTINUE + DIR(SUBRGN) = DIR(SUBTMP) + DO 30 J = 1,NDIM + CENTRS(J,SUBRGN) = CENTRS(J,SUBTMP) + HWIDTS(J,SUBRGN) = HWIDTS(J,SUBTMP) +30 CONTINUE + SUBRGN = SUBTMP + GO TO 20 + END IF + END IF + ELSE IF (DVFLAG.EQ.2) THEN +C +C If DVFLAG = 2, then insert new region in the heap. +C + SUBRGN = SBRGNS +40 SUBTMP = SUBRGN/2 + IF (SUBTMP.GE.1) THEN +C +C Compare max.child with parent. +C If parent is max, then done. +C + IF (GREAT.GT.GREATE(SUBTMP)) THEN +C +C Move the values at position subtmp down the heap. +C + GREATE(SUBRGN) = GREATE(SUBTMP) + DO 45 J = 1,NUMFUN + ERRORS(J,SUBRGN) = ERRORS(J,SUBTMP) + VALUES(J,SUBRGN) = VALUES(J,SUBTMP) +45 CONTINUE + DIR(SUBRGN) = DIR(SUBTMP) + DO 50 J = 1,NDIM + CENTRS(J,SUBRGN) = CENTRS(J,SUBTMP) + HWIDTS(J,SUBRGN) = HWIDTS(J,SUBTMP) +50 CONTINUE + SUBRGN = SUBTMP + GO TO 40 + END IF + END IF + END IF +C +C Insert the saved values in their correct places. +C + IF (SBRGNS.GT.0) THEN + GREATE(SUBRGN) = GREAT + DO 55 J = 1,NUMFUN + ERRORS(J,SUBRGN) = ERROR(J) + VALUES(J,SUBRGN) = VALUE(J) +55 CONTINUE + DIR(SUBRGN) = DIRECT + DO 60 J = 1,NDIM + CENTRS(J,SUBRGN) = CENTER(J) + HWIDTS(J,SUBRGN) = HWIDTH(J) +60 CONTINUE + END IF +C +C***END DTRHRE +C + RETURN + END diff --git a/DCuhre/manual.pdf b/DCuhre/manual.pdf new file mode 100644 index 0000000000000000000000000000000000000000..63153b5273dc509437e4762b7f3574620b1a72f6 GIT binary patch literal 103624 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%0ALZSpz!pKyuI1hu6H}Dg(4IC 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 literal 0 HcmV?d00001 diff --git a/Foam/DemoFoam.f b/Foam/DemoFoam.f new file mode 100644 index 0000000..0effa4a --- /dev/null +++ b/Foam/DemoFoam.f @@ -0,0 +1,307 @@ +*//////////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Test of Foam (S. Jadach, November 2000) // +*// // +*// To execute this test: make DemoFoam +*// make -f Makefile DemoFoam +*// make -f Makefile DemoFoamMap +*// +*//////////////////////////////////////////////////////////////////////////////////////////// + PROGRAM Main + IMPLICIT NONE + CALL Main2 ! 2-dim test + END + + + SUBROUTINE Main2 +*//////////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Test of Foam with 2-dimensional testing function // +*// gmake TestFoam +*// gmake DemoFoamMap +*// // +*//////////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION Density2 + EXTERNAL Density2 + INTEGER nBuf,nSampl,OptDrive,k + DOUBLE PRECISION MCresult,MCerror,MCwt,MCvector(10) + INTEGER nDim ! dimension of simlical subspace + INTEGER kDim ! dimension of hyp-cubical subspace + INTEGER loop,nevtot,OptEdge,eps,Effic + DOUBLE PRECISION Xsec,Error +* + OPEN(16,FILE='output-DemoFoam') +*========================================================= + nDim = 2 + kDim = 0 + nBuf = 5000 ! Buffer length <5000, default = 1000 + nSampl = 200 ! Number of MC events in exploration of a cell, default = 200 + nBuf = 150 ! SPECIAL for ploting + nSampl = 1000 ! SPECIAL for ploting + OptDrive = 2 ! Type of Drive =0,1,2 for TrueVol,Sigma,WtMax, default = 2 + OptEdge = 1 ! Include vertices in sampling or not, =0,1, default =1 +*========================================================= + CALL GLK_Book1(8100,'WT distribution $', 80, 0.0d0,2d0) +*======================================================================= + CALL FoamA_SetnDim( nDim) + CALL FoamA_SetkDim( kDim) + CALL FoamA_SetnBuf( nBuf) + CALL FoamA_SetnSampl( nSampl) + CALL FoamA_SetOptDrive( OptDrive) + CALL FoamA_SetOptEdge( OptEdge) + CALL FoamA_SetChat(1) +*------------------------------------ + CALL FoamA_Initialize(Density2) +*------------------------------------ + WRITE(*,*) ' ####################################################################' + WRITE(*,*) ' ############## back in main program ################################' + WRITE(*,*) ' ####################################################################' +*------------------------------------ + CALL WtLimitStart(1004,1005,1000,10d0) +*------------------------------------ + nevtot = 200000 + nevtot = 1000000 + DO loop = 1, nevtot +*------------------------------------ + CALL FoamA_MakeEvent(Density2) ! generate MC event + CALL FoamA_GetMCvector(MCvector) ! get MC event, vector + CALL FoamA_GetMCwt(MCwt) ! get MC weight + IF(loop.LE.20) THEN + WRITE(*,'(a,10f10.5)') '##### MCwt,MCvector=',MCwt,(MCvector(k),k=1,nDim) ! + ENDIF +*------------------------------------ + CALL WtLimitFill(MCwt) + CALL GLK_Fil1(8100,MCwt,1d0) + ENDDO + WRITE(*,*) ' ####################################################################' ! + WRITE(*,*) ' ############## generation finished ################################' ! + WRITE(*,*) ' ####################################################################' ! +*------------------------------------ + CALL FoamA_Finalize(MCresult,MCerror) +*------------------------------------ + WRITE(*,'(a,g19.9,a,g19.9,a,f7.5)') + $ 'MCresult= ',MCresult,' +- ',MCerror,' RelErr= ',MCerror/MCresult ! +*------------------------------------ + eps = 5d-4 + CALL WtLimitFind(16,eps,Effic) +*------------------------------------ +* Remember that nbuf=<500, because om TeX memory + OPEN(11, FILE='demo-cell-map.txp') + CALL FoamA_PltBegin(-11) + IF( nBuf.LE.2500) CALL FoamA_PltVert + IF( nBuf.LE. 500) CALL FoamA_PltCell + CALL FoamA_PltEnd +*------------------------------------ + CALL FoamA_BufActPrint(16) + CALL GLK_Print(8100) + WRITE(*,*) ' ####### Main2 finished ######## ' + END ! Main2 + + + DOUBLE PRECISION FUNCTION Density2(Xarg) +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION Xarg(*) + DOUBLE PRECISION TFun2Sphere + DOUBLE PRECISION TFun2Diagon + DOUBLE PRECISION TFun2Void +* +cc Density2 = TFun2Diagon(Xarg) ! (f_a) + Density2 = TFun2Sphere(Xarg) ! (f_b) +cc Density2 = TFun2Void(Xarg) ! (f_c) + END !!!Density2 + + + DOUBLE PRECISION FUNCTION Density3(Xarg) +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION Xarg(*) + DOUBLE PRECISION TFun3Sphere,RFun3Sphere,TFun3Diagon,TFun3Void,RFun3Void +*---------------------------------------------- + Density3 = TFun3Diagon(Xarg) ! Cylinder along diagonal +cc Density3 = TFun3Sphere(Xarg) ! Thin sphere +cc Density3 =TFun3Void(Xarg) ! Big cubical void, efficiency 0.34 + END !!!Density3 + + +*/////////////////////////////////////////////////////////////////////////////////////////////////// +*// Collection of testing functions // +*// // +*/////////////////////////////////////////////////////////////////////////////////////////////////// + + DOUBLE PRECISION FUNCTION TFun3Void(x) +*////////////////////////////////////////////////////////////////////////////////// +*// Big empty void inside cube, only near surface thin uniform layer of density // +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION x(*) + DOUBLE PRECISION Fun + DOUBLE PRECISION Thickness + DATA Thickness / 0.050 / ! Thickness of the cube +*--------------------------------------------------------------- + Fun=0d0 + IF( x(1).LT.Thickness) Fun=1/Thickness + IF( x(2).LT.Thickness) Fun=1/Thickness + IF( x(3).LT.Thickness) Fun=1/Thickness + IF( (1d0-x(1)).LT.Thickness) Fun=1/Thickness + IF( (1d0-x(2)).LT.Thickness) Fun=1/Thickness + IF( (1d0-x(3)).LT.Thickness) Fun=1/Thickness + TFun3Void = Fun + END + + DOUBLE PRECISION FUNCTION TFun2Void(x) +*////////////////////////////////////////////////////////////////////////////////// +*// Big empty void inside cube, only near surface thin uniform layer of density // +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION x(*) + DOUBLE PRECISION Fun + DOUBLE PRECISION Thickness + DATA Thickness / 0.050 / ! Thickness of the cube walls +*--------------------------------------------------------------- + Fun=0d0 + IF( x(1).LT.Thickness) Fun=1/Thickness + IF( x(2).LT.Thickness) Fun=1/Thickness + IF( (1d0-x(1)).LT.Thickness) Fun=1/Thickness + IF( (1d0-x(2)).LT.Thickness) Fun=1/Thickness + TFun2Void = Fun + END + + + DOUBLE PRECISION FUNCTION TFun3Diagon(x) +*////////////////////////////////////////////////////////////////////////////////// +*// Density only within cylinder along diagonal +*// Slight parallel shift off diagonal, see vector A +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION x(*) + DOUBLE PRECISION Pi + PARAMETER( Pi=3.1415926535897932d0) + DOUBLE PRECISION Thickness,R,Fun + DATA Thickness / 0.020 / ! radius of cylinder along diagonal + DOUBLE PRECISION A1,A2,A3 + DATA A1,A2,A3 / 0.15, 0.10, -0.15 / ! slight parallel shift from diagonal +*--------------------------------------------------------------- + R = (x(1)-x(2) -A1+A2)**2 +(x(2)-x(3) -A2+A3)**2 +(x(3)-x(1) -A3+A1)**2 ! distance from diagonal + Fun = Thickness/( R + Thickness**2)/Pi ! Breit-Wigner profile, normalized to delta + TFun3Diagon = Fun*(5d0+x(3)) ! 20% tilt along z-axis + END + + + DOUBLE PRECISION FUNCTION TFun2Diagon(x) +*////////////////////////////////////////////////////////////////////////////////// +*// Density only within cylinder along diagonal +*// Slight parallel shift off diagonal, see vector A +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION x(*) + DOUBLE PRECISION Pi + PARAMETER( Pi=3.1415926535897932d0) + DOUBLE PRECISION Thickness,R,Fun + DATA Thickness / 0.020 / ! radius of cylinder along diagonal + DOUBLE PRECISION A1,A2 + DATA A1,A2 / 0.15, 0.10 / ! slight parallel shift from diagonal +*--------------------------------------------------------------- + R = (x(1)+x(2) -1)**2 ! distance from diagonal + Fun = Thickness/( R + Thickness**2)/Pi ! Breit-Wigner profile, normalized to delta + TFun2Diagon = Fun + END + + DOUBLE PRECISION FUNCTION TFun3Sphere(x) +*////////////////////////////////////////////////////////////////////////////////// +*// 3-dimensional testing function // +*// Thin sphere centered at (A1,A2,A3) with Radius and Thickness defined below // +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION x(*) + DOUBLE PRECISION Pi + PARAMETER( Pi=3.1415926535897932d0) + DOUBLE PRECISION Radius,Thickness,A1,A2,A3,R,Fun + DATA A1,A2,A3 / 0.25, 0.40, 0.50 / ! centre of sphere + DATA Radius / 0.35 / ! radius of sphere + DATA Thickness / 0.020 / ! thickness of sphere +*--------------------------------------------------------------- + R = SQRT( (x(1)-A1)**2 +(x(2)-A2)**2 +(x(3)-A3)**2 ) + Fun = Thickness/( (R-Radius)**2 + Thickness**2)/Pi ! Breit-Wigner profile, normalized to delta + Fun = Fun/(4d0*Pi*Radius**2) ! Normalize to one + TFun3Sphere = Fun + END + + DOUBLE PRECISION FUNCTION TFun2Sphere(x) +*////////////////////////////////////////////////////////////////////////////////// +*// 3-dimensional testing function // +*// Thin sphere centered at (A1,A2,A3) with Radius and Thickness defined below // +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION x(*) + DOUBLE PRECISION Pi + PARAMETER( Pi=3.1415926535897932d0) + DOUBLE PRECISION Radius,Thickness,A1,A2,R,Fun + DATA A1,A2 / 0.25, 0.40 / ! centre of sphere + DATA Radius / 0.35 / ! radius of sphere + DATA Thickness / 0.020 / ! thickness of sphere +*--------------------------------------------------------------- + R = SQRT( (x(1)-A1)**2 +(x(2)-A2)**2 ) + Fun = Thickness/( (R-Radius)**2 + Thickness**2)/Pi ! Breit-Wigner profile + Fun = Fun/(4d0*Pi*Radius**2) ! Normalize to one + TFun2Sphere = Fun + END + + + DOUBLE PRECISION FUNCTION TFun1d1(x) +*////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION x + DOUBLE PRECISION x0,gamma,pi +*--------------------------------------------------------------- + pi = 4d0*DATAN(1d0) +* breit-wigner + x0=0.6d0 + gamma=0.001d0 + TFun1d1 = 1d0/pi*gamma/( (x-x0)**2 + gamma**2 ) + END + + DOUBLE PRECISION FUNCTION TFun1d(x) +*////////////////////////////////////////////////////////////////////////////////// +*// sharp peak on the background of a mild function // +*// // +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION x + DOUBLE PRECISION x0,pi,gamma,lambda +*--------------------------------------------------------------- + pi = 4d0*DATAN(1d0) +* breit-wigner + x0=0.6d0 + gamma=0.00001d0 + lambda = 3d0 + TFun1d = 1d0/pi*gamma/( (x-x0)**2 + gamma**2 ) + $ +EXP(-lambda*x)*lambda + $ +EXP(-lambda) + END + + DOUBLE PRECISION FUNCTION Tfun1d2(x) +*////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION x,eps +*--------------------------------------------------------------- +* 1/x singularity + eps =0.05d0 + Tfun1d2 = 1d0/(x+eps) + END + + DOUBLE PRECISION FUNCTION Tfun1d3(x) +*////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION x,eps +*--------------------------------------------------------------- +* primitive + Tfun1d3 = 1d0-x + END diff --git a/Foam/DemoMCell.f b/Foam/DemoMCell.f new file mode 100644 index 0000000..ac88c7a --- /dev/null +++ b/Foam/DemoMCell.f @@ -0,0 +1,304 @@ +*//////////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Test of MCell (S. Jadach, November 2000) // +*// // +*// To execute this test: make DemoMCell +*// make -f Makefile DemoMCell +*// make -f Makefile DemoMCellMap +*// +*//////////////////////////////////////////////////////////////////////////////////////////// + PROGRAM Main + IMPLICIT NONE + CALL Main2 ! 2-dim test + END + + + SUBROUTINE Main2 +*//////////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Test of MCell with 2-dimensional testing function // +*// gmake TestMCell +*// gmake DemoMCellMap +*// // +*//////////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION Density2 + EXTERNAL Density2 + INTEGER nBuf,nSampl,OptDrive,k + DOUBLE PRECISION MCresult,MCerror,MCwt,MCvector(10) + INTEGER kDim ! dimension of hyp-cubical subspace + INTEGER loop,nevtot,OptEdge,eps,Effic + DOUBLE PRECISION Xsec,Error +* + OPEN(16,FILE='output-DemoMCell') +*========================================================= + kDim = 2 + nBuf = 5000 ! Buffer length <5000, default = 1000 + nSampl = 200 ! Number of MC events in exploration of a cell, default = 200 + nBuf = 150 ! SPECIAL for ploting + nSampl = 1000 ! SPECIAL for ploting + OptDrive = 2 ! Type of Drive =0,1,2 for TrueVol,Sigma,WtMax, default = 2 + OptEdge = 1 ! Include vertices in sampling or not, =0,1, default =1 +*========================================================= + CALL GLK_Book1(8100,'WT distribution $', 80, 0.0d0,2d0) +*======================================================================= + CALL MCellA_SetkDim( kDim) + CALL MCellA_SetnBuf( nBuf) + CALL MCellA_SetnSampl( nSampl) + CALL MCellA_SetOptDrive( OptDrive) + CALL MCellA_SetOptEdge( OptEdge) + CALL MCellA_SetChat(1) +*------------------------------------ + CALL MCellA_Initialize(Density2) +*------------------------------------ + WRITE(*,*) ' ####################################################################' + WRITE(*,*) ' ############## back in main program ################################' + WRITE(*,*) ' ####################################################################' +*------------------------------------ + CALL WtLimitStart(1004,1005,1000,10d0) +*------------------------------------ + nevtot = 200000 + nevtot = 1000000 + DO loop = 1, nevtot +*------------------------------------ + CALL MCellA_MakeEvent(Density2) ! generate MC event + CALL MCellA_GetMCvector(MCvector) ! get MC event, vector + CALL MCellA_GetMCwt(MCwt) ! get MC weight + IF(loop.LE.20) THEN + WRITE(*,'(a,10f10.5)') '##### MCwt,MCvector=',MCwt,(MCvector(k),k=1,kDim) ! + ENDIF +*------------------------------------ + CALL WtLimitFill(MCwt) + CALL GLK_Fil1(8100,MCwt,1d0) + ENDDO + WRITE( *,*) ' ####################################################################' ! + WRITE( *,*) ' ############## generation finished ################################' ! + WRITE(16,*) ' ############## generation finished ################################' ! + WRITE( *,*) ' ####################################################################' ! +*------------------------------------ + CALL MCellA_Finalize(MCresult,MCerror) +*------------------------------------ + WRITE(*,'(a,g19.9,a,g19.9,a,f7.5)') + $ 'MCresult= ',MCresult,' +- ',MCerror,' RelErr= ',MCerror/MCresult ! +*------------------------------------ + eps = 5d-4 + CALL WtLimitFind(16,eps,Effic) +*------------------------------------ +* Remember that nbuf=<500, because om TeX memory + OPEN(11, FILE='demo-cell-map.txp') + CALL MCellA_PltBegin(-11) + IF( nBuf.LE.2000) CALL MCellA_PltCell + CALL MCellA_PltEnd +*------------------------------------ + CALL MCellA_BufActPrint(16) + CALL GLK_Print(8100) + WRITE(*,*) ' ####### Main2 finished ######## ' + END ! Main2 + + + DOUBLE PRECISION FUNCTION Density2(Xarg) +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION Xarg(*) + DOUBLE PRECISION TFun2Sphere + DOUBLE PRECISION TFun2Diagon + DOUBLE PRECISION TFun2Void +* +cc Density2 = TFun2Diagon(Xarg) ! (f_a) + Density2 = TFun2Sphere(Xarg) ! (f_b) +cc Density2 = TFun2Void(Xarg) ! (f_c) + END !!!Density2 + + + DOUBLE PRECISION FUNCTION Density3(Xarg) +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION Xarg(*) + DOUBLE PRECISION TFun3Sphere,RFun3Sphere,TFun3Diagon,TFun3Void,RFun3Void +*---------------------------------------------- + Density3 = TFun3Diagon(Xarg) ! Cylinder along diagonal +cc Density3 = TFun3Sphere(Xarg) ! Thin sphere +cc Density3 =TFun3Void(Xarg) ! Big cubical void, efficiency 0.34 + END !!!Density3 + + +*/////////////////////////////////////////////////////////////////////////////////////////////////// +*// Collection of testing functions // +*// // +*/////////////////////////////////////////////////////////////////////////////////////////////////// + + DOUBLE PRECISION FUNCTION TFun3Void(x) +*////////////////////////////////////////////////////////////////////////////////// +*// Big empty void inside cube, only near surface thin uniform layer of density // +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION x(*) + DOUBLE PRECISION Fun + DOUBLE PRECISION Thickness + DATA Thickness / 0.050 / ! Thickness of the cube +*--------------------------------------------------------------- + Fun=0d0 + IF( x(1).LT.Thickness) Fun=1/Thickness + IF( x(2).LT.Thickness) Fun=1/Thickness + IF( x(3).LT.Thickness) Fun=1/Thickness + IF( (1d0-x(1)).LT.Thickness) Fun=1/Thickness + IF( (1d0-x(2)).LT.Thickness) Fun=1/Thickness + IF( (1d0-x(3)).LT.Thickness) Fun=1/Thickness + TFun3Void = Fun + END + + DOUBLE PRECISION FUNCTION TFun2Void(x) +*////////////////////////////////////////////////////////////////////////////////// +*// Big empty void inside cube, only near surface thin uniform layer of density // +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION x(*) + DOUBLE PRECISION Fun + DOUBLE PRECISION Thickness + DATA Thickness / 0.050 / ! Thickness of the cube walls +*--------------------------------------------------------------- + Fun=0d0 + IF( x(1).LT.Thickness) Fun=1/Thickness + IF( x(2).LT.Thickness) Fun=1/Thickness + IF( (1d0-x(1)).LT.Thickness) Fun=1/Thickness + IF( (1d0-x(2)).LT.Thickness) Fun=1/Thickness + TFun2Void = Fun + END + + + DOUBLE PRECISION FUNCTION TFun3Diagon(x) +*////////////////////////////////////////////////////////////////////////////////// +*// Density only within cylinder along diagonal +*// Slight parallel shift off diagonal, see vector A +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION x(*) + DOUBLE PRECISION Pi + PARAMETER( Pi=3.1415926535897932d0) + DOUBLE PRECISION Thickness,R,Fun + DATA Thickness / 0.020 / ! radius of cylinder along diagonal + DOUBLE PRECISION A1,A2,A3 + DATA A1,A2,A3 / 0.15, 0.10, -0.15 / ! slight parallel shift from diagonal +*--------------------------------------------------------------- + R = (x(1)-x(2) -A1+A2)**2 +(x(2)-x(3) -A2+A3)**2 +(x(3)-x(1) -A3+A1)**2 ! distance from diagonal + Fun = Thickness/( R + Thickness**2)/Pi ! Breit-Wigner profile, normalized to delta + TFun3Diagon = Fun*(5d0+x(3)) ! 20% tilt along z-axis + END + + + DOUBLE PRECISION FUNCTION TFun2Diagon(x) +*////////////////////////////////////////////////////////////////////////////////// +*// Density only within cylinder along diagonal +*// Slight parallel shift off diagonal, see vector A +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION x(*) + DOUBLE PRECISION Pi + PARAMETER( Pi=3.1415926535897932d0) + DOUBLE PRECISION Thickness,R,Fun + DATA Thickness / 0.020 / ! radius of cylinder along diagonal + DOUBLE PRECISION A1,A2 + DATA A1,A2 / 0.15, 0.10 / ! slight parallel shift from diagonal +*--------------------------------------------------------------- + R = (x(1)+x(2) -1)**2 ! distance from diagonal + Fun = Thickness/( R + Thickness**2)/Pi ! Breit-Wigner profile, normalized to delta + TFun2Diagon = Fun + END + + DOUBLE PRECISION FUNCTION TFun3Sphere(x) +*////////////////////////////////////////////////////////////////////////////////// +*// 3-dimensional testing function // +*// Thin sphere centered at (A1,A2,A3) with Radius and Thickness defined below // +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION x(*) + DOUBLE PRECISION Pi + PARAMETER( Pi=3.1415926535897932d0) + DOUBLE PRECISION Radius,Thickness,A1,A2,A3,R,Fun + DATA A1,A2,A3 / 0.25, 0.40, 0.50 / ! centre of sphere + DATA Radius / 0.35 / ! radius of sphere + DATA Thickness / 0.020 / ! thickness of sphere +*--------------------------------------------------------------- + R = SQRT( (x(1)-A1)**2 +(x(2)-A2)**2 +(x(3)-A3)**2 ) + Fun = Thickness/( (R-Radius)**2 + Thickness**2)/Pi ! Breit-Wigner profile, normalized to delta + Fun = Fun/(4d0*Pi*Radius**2) ! Normalize to one + TFun3Sphere = Fun + END + + DOUBLE PRECISION FUNCTION TFun2Sphere(x) +*////////////////////////////////////////////////////////////////////////////////// +*// 3-dimensional testing function // +*// Thin sphere centered at (A1,A2,A3) with Radius and Thickness defined below // +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION x(*) + DOUBLE PRECISION Pi + PARAMETER( Pi=3.1415926535897932d0) + DOUBLE PRECISION Radius,Thickness,A1,A2,R,Fun + DATA A1,A2 / 0.25, 0.40 / ! centre of sphere + DATA Radius / 0.35 / ! radius of sphere + DATA Thickness / 0.020 / ! thickness of sphere +*--------------------------------------------------------------- + R = SQRT( (x(1)-A1)**2 +(x(2)-A2)**2 ) + Fun = Thickness/( (R-Radius)**2 + Thickness**2)/Pi ! Breit-Wigner profile + Fun = Fun/(4d0*Pi*Radius**2) ! Normalize to one + TFun2Sphere = Fun + END + + + DOUBLE PRECISION FUNCTION TFun1d1(x) +*////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION x + DOUBLE PRECISION x0,gamma,pi +*--------------------------------------------------------------- + pi = 4d0*DATAN(1d0) +* breit-wigner + x0=0.6d0 + gamma=0.001d0 + TFun1d1 = 1d0/pi*gamma/( (x-x0)**2 + gamma**2 ) + END + + DOUBLE PRECISION FUNCTION TFun1d(x) +*////////////////////////////////////////////////////////////////////////////////// +*// sharp peak on the background of a mild function // +*// // +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION x + DOUBLE PRECISION x0,pi,gamma,lambda +*--------------------------------------------------------------- + pi = 4d0*DATAN(1d0) +* breit-wigner + x0=0.6d0 + gamma=0.00001d0 + lambda = 3d0 + TFun1d = 1d0/pi*gamma/( (x-x0)**2 + gamma**2 ) + $ +EXP(-lambda*x)*lambda + $ +EXP(-lambda) + END + + DOUBLE PRECISION FUNCTION Tfun1d2(x) +*////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION x,eps +*--------------------------------------------------------------- +* 1/x singularity + eps =0.05d0 + Tfun1d2 = 1d0/(x+eps) + END + + DOUBLE PRECISION FUNCTION Tfun1d3(x) +*////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION x,eps +*--------------------------------------------------------------- +* primitive + Tfun1d3 = 1d0-x + END diff --git a/Foam/FoamA.f b/Foam/FoamA.f new file mode 100644 index 0000000..bcb449d --- /dev/null +++ b/Foam/FoamA.f @@ -0,0 +1,2209 @@ +*/////////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Foam Version 2.02 // +*// November 2000 // +*// // +*// N-dimensional general purpose Monte Carlo sampler // +*// with the self-adapting simplical and hyper-cubical grid // +*// // +*// Author: Stanislaw JADACH // +*// Address: INP Cracow, DESY-Zeuthen // +*// Email: S.Jadach@cern.ch, S.Jadach@ifj.edu.pl // +*// HomePage: http://home.cern.ch/jadach/ // +*// // +*// First version 1.00 written by S.J. in May 1999 during visit in DESY // +*// version 2.00 written by S.J. in Aug 2000 during visit in DESY-Zeuthen // +*/////////////////////////////////////////////////////////////////////////////////////////// + + +*//////////////////////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Pseudoclass Foam // +*// // +*// // +*// Initialization of the grid // +*// FoamA_PreInitialize : Pre-initialization, set all default values (constructor?) // +*// FoamA_Initialize(FunW) : Initialization of the grid etc. // +*// FoamA_InitVertices : Initializes first vertices of the basic cube // +*// FoamA_InitCells : Initializes first n-factorial cells inside original cube // +*// FoamA_DefCell : Create new (daughter) cell and append at end of the buffer // +*// FoamA_Explore(iCell,funW) : Short MC sampling in iCell, determine <wt>, wtMax etc. // +*// FoamA_RanDiscr(Driv,nTot,Power,iRand) : Random choice of cell division direction // +*// FoamA_MakeAlpha(Alpha) : auxiliary procedure for FoamA_Explore // +*// FoamA_MakeLambda(Lambda) : auxiliary procedure for FoamA_Explore // +*// FoamA_Determinant(R,Det) : determinant of matrix R // +*// FoamA_Det2Lapl(R,i1,i2) : Laplace formula for 1-dim. determinant // +*// FoamA_Det3Lapl(R,i1,i2,i3) : Laplace formula for 2-dim. determinant // +*// FoamA_Det4Lapl(R,i1,i2,i3,i4) : Laplace formula for 3-dim. determinant // +*// FoamA_Det5Lapl(R,i1,i2,i3,i4,i5) : Laplace formula for 4-dim. determinant // +*// FoamA_Grow(funW) : grow cells until buffer is full // +*// FoamA_PeekMax(iCell) : choose randomly one cell, used also in MC generation // +*// FoamA_PeekRand1(iCell) : Generates randomly one (active) cell pointer iCell // +*// FoamA_Divide(iCell,funW,RC) :Divide iCell into two daughters; iCell retained, taged as inactive // +*// FoamA_ActUpda : Creates list of active cells (pointers) // +*// Generation // +*// FoamA_MakeEvent(Density) : Generates point/vector Xrand with the weight MCwt // +*// FoamA_CellGener(Density) : Cooses randomly one of active cells // +*// FoamA_GetMCvector(MCvector) : Provides point/vector MCvector generated by MakeEvent // +*// FoamA_GetMCwt(MCwt) : Provides MCwt, MC weight calculated by MakeEvent // +*// FoamA_MCgenerate(funW,X,MCwt) : Alternative entry, Generates point X with the weight MCwt // +*// Finalization // +*// FoamA_Finalize(MCresult,MCerror) : Calculates integral and its error after (only from) MC run // +*// Other Getters and Setters // +*// MCellA_GetTotPrim(TotPrim) :Provides Primary integral used in MC generation // +*// FoamA_SetnDim(nDim) :Sets no. of dimensions simplices (to be called before Initialize)// +*// FoamA_SetkDim(kDim) :Sets no. of dimensions hypercubics (to be called before Initialize)// +*// FoamA_GetnDim(nDim) :Provides nDim, miscelaneous, for tests // +*// FoamA_SetnBuf(nBuf) :Sets nBuf, working area in buffer // +*// FoamA_SetnBin(nBin) :Sets nBin, no of bins in histo in exploration <nBinMax=256 // +*// FoamA_SetOut(Out) :Sets output unit number // +*// FoamA_SetChat(Chat) :Sets chat level; Chat=0,1,2 chat level in output, Chat=1 normal // +*// FoamA_SetnSampl(nSampl) :Sets nSampl; No of MC sampling before dividing cell // +*// FoamA_SetOptDrive(OptDrive) :Sets OptDrive; type of Drive =0,1,2 for True,Sigma,WtMax // +*// FoamA_SetOptPeek :Sets type of method in cell division // +*// FoamA_SetOptEdge(OptEdge) :Sets OptEdge; decides whether vertices are included in the sampling// +*// FoamA_SetOptRanIni(OptRanIni) :Sets OptRanIni=0,1, for rand. numb. initialization inside/outside // +*// FoamA_SetOptRanLux(OptRanLux) :Sets OptRanLux=-1,0,1,2,3 raand.numb.gen. level // +*// FoamA_GetnCalls(nCalls) :Get total no of function calls // +*// Debugging and miscelaneous // +*// FoamA_Check(mout,level) :Checks all pointers (after comression) debuging! // +*// FoamA_BufPrint(mout) :Prints all cells, debugging // +*// FoamA_BufActPrint(mout) :Prints all active cells, debugging // +*// FoamA_VertPrint(mout) :Prints all vertices, debugging // +*// FoamA_PltBegin :Ploting 2-dim. cells and vertices // +*// FoamA_PltVert(mout) :Ploting 2-dim. cells and vertices // +*// FoamA_PltCell(mout) :Ploting 2-dim. cells and vertices // +*// FoamA_PltEnd :Ploting 2-dim. cells and vertices // +*// // +*//////////////////////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Input parameters: // +*// nDim number of dimensions for simplices, for the moment nDim=1-5 in this version, // +*// n>5 requires re-writing FoamA_Determinant, // +*// kDim number of dimensions for hypercubics // +*// Dimen = total number of dimensions = nDim +kDim // +*// for n=1 alternatively Foam1A may be used, could be factor 2 faster! // +*// nBuf Actual dynamic lenth of the buffer m_nBuf<m_nBufMax. For strongly peaked distribution // +*// nBuf should be as large as possible, this will increase CPU time in initialization // +*// MC generation is weakly affected by increasing nBuf // +*// nSampl No of sampling when dividing cell, nSampl=10-100 is OK, further increase improves // +*// costs CPU time and apparently does not increase grid efficiency too much. // +*// This should be checked however for every new distribution. // +*// OptDrive Type of Drive =0,1,2 for TrueInt,Sigma,WtMax, Drive=WtMax is the best if we aim // +*// at rejection leading to wt=1 events. If not then Drive=Sigma iswiser choice leading // +*// to save of CPU time. Simplistic Drive=Sigma is correct but not recommeneded (ineffic.)// +*// OptEdge decides whether vertices are included in the sampling. Default OptEdge=1 causes that // +*// vertices at the edge of simplex cells are included always in MC exploration // +*// of the cell. In the case of density distrib. with weak integrable singularities // +*// at the edges it may be not possible and OptEdge=0 may help. // +*// OptOrd decides whether the integration domain in simplical subspace is unit cube or simplex. // +*// It is active only for nDim=2,3,4. For OptOrd=0 (default) the initial domain is unit // +*// hypercubic split into nDim! simplices in the initialization phase. // +*// If m_OptOrd=1 then initial domain is simplex and the integration variables providede // +*// by FoamA_GetMCvector(V) are ordered: V(1)<V(2)<...<V(nDim)<1. // +*// Hyp-cubical variables 0<V(nDim+1), V(nDim+2),...,V(nDim+kDim)<1 are never ordered. // +*// EvPerBin Limit on effective number of eevents per bin in exploration phase. This option saves // +*// considerably CPU time. =0 option is desabled, recommended value is >20. // +*// Out Miscelaneous. Output unit number. // +*// Chat Miscelaneous. Chat=0,1,2 chat level in output, Chat=1 normal level. // +*// // +*// // +*//////////////////////////////////////////////////////////////////////////////////////////////////////// +*// Terminology: // +*// "Active cells" are these which did not divide and are eligible for division // +*// Remarks: // +*// List of active cells is not realy necessary, but let us keep it for possible // +*// future developements or tests. // +*//////////////////////////////////////////////////////////////////////////////////////////////////////// + + + SUBROUTINE FoamA_PreInitialize !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Presets certain defaults for switches and other and regualtory parameters. // +*// They Can be reset with setters // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER i,j +* + INTEGER m_Magic ! Magic cookie, to avoid multiple initialization + DATA m_Magic /378231178/ + SAVE m_Magic +* ------------------------------------------------- + IF(m_Magic .EQ. 378231178 ) THEN + m_MagicInit = m_Magic + m_Magic = 0 + ENDIF + IF(m_MagicInit .NE. 378231178 ) RETURN + WRITE(m_out,*) '===============FoamA_PreInitialize==============' + m_MagicInit= 0 + m_nDim = 0 ! dimension siplices + m_kDim = 0 ! dimension hypercubics + m_Dimen = m_nDim+m_kDim ! dimension total + m_nBuf = 1000 ! Actual dynamic lenth of the buffer m_nBuf<m_nBufMax + m_nBin = 8 ! No of bins in cell exploration/division <nBinMax + m_nSampl = 200 ! No of sampling when dividing cell + m_OptDrive = 2 ! type of Drive =0,1,2 for TrueVol,Sigma,WtMax + m_OptEdge = 0 ! decides whether vertices are included in the sampling + m_OptPeek = 0 ! type of Peek =0,1 for maximum, random + m_Out = 6 ! Output unit + m_Chat = 1 ! Chat=0,1,2 chat level in output, Chat=1 normal level + m_OptOrd = 0 ! Entire integr domain is hyp-cubic if =0 and simplex if =1 + m_EvPerBin = 25 ! Upper limit on eevents/bin in exploration, =0 disabled + m_OptRanIni= 1 ! Rand.num. generator initialized (=1) inside PianA + m_OptRanLux= 3 ! Rand.num. generator level (-1 for PseuMar) +* + m_LastCe = 0 ! length of dynamical buffor for cells + m_LastVe = 0 ! length of dynamical buffor for vertices +* Clean up list of simplical vertices + DO i=1,m_vMax + DO j=1,m_nDim + m_VerX(i,j) = 0d0 ! vertices + ENDDO + ENDDO +* Clean up hypercubic parameters + DO i=1,m_nBufMax + DO j=1,m_KdiMax + m_CeVer1(i,j)=0d0 ! hcubic position + m_CeVer2(i,j)=0d0 ! hcubic size + ENDDO + ENDDO +* + m_nCalls = 0 ! No of function calls +* + END + + SUBROUTINE FoamA_Flush !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Use this before re-initialization of the Foam // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + m_MagicInit = 378231178 ! Reset Magic cookie, alowing initialization + WRITE(m_out,*) '===============FoamA_Flush==============' + CALL FoamA_PreInitialize + END + + SUBROUTINE FoamA_Initialize(FunW) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Basic initialization, create "foam of cells" // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + DOUBLE PRECISION funW + EXTERNAL funW + INTEGER i,j,k,iCell,kCell + DOUBLE PRECISION TotPrim +*--------------------------------------------- + CALL FoamA_PreInitialize +* User may prefers to initialize r.n.gen. by himsef, the initialization below can be inhibited + IF( m_OptRanIni.EQ. 1 ) THEN + IF(m_OptRanLux.EQ.-1) THEN + CALL PseuMar_Initialize(54217137, 0, 0) ! Initialization of random number generator + ELSEIF(m_OptRanLux.GE.0 .AND. m_OptRanLux.LE.4 ) THEN + CALL RLUXGO( m_OptRanLux, 54217137,0,0) ! Initialization of random number generator + ELSE + WRITE(*, *) ' ### STOP in FoamA_Initialize, wrong OptRanLux =',m_OptRanLux ! + WRITE(m_Out,*) ' ### STOP in FoamA_Initialize, wrong OptRanLux =',m_OptRanLux ! + ENDIF + ENDIF + IF( (m_nBuf .GT. m_nBufMax) .OR. (m_nBuf .LE. 0) ) THEN + WRITE(*, *) ' ### STOP in FoamA_Initialize, wrong m_nBuf =',m_nBuf ! + WRITE(m_Out,*) ' ### STOP in FoamA_Initialize, wrong m_nBuf =',m_nBuf ! + STOP + ENDIF + IF( (m_nBin .GT. m_nBinMax) .OR. (m_nBin .LE. 0) ) THEN + WRITE(*, *) ' ### STOP in PianA_Initialize, wrong m_nBin =',m_nBin ! + WRITE(m_Out,*) ' ### STOP in PianA_Initialize, wrong m_nBin =',m_nBin ! + STOP + ENDIF + IF( m_Dimen .LE. 0 ) THEN + WRITE(*, *) ' ### STOP in FoamA_Initialize, wrong m_Dimen =',m_Dimen ! + WRITE(m_Out,*) ' ### STOP in FoamA_Initialize, wrong m_Dimen =',m_Dimen ! + STOP + ENDIF +* First cells are the (nDim)! simplices from division of the basic unit cube + CALL FoamA_InitVertices + CALL FoamA_InitCells(funW) + +***** CALL FoamA_VertPrint(6) ! debug +***** CALL FoamA_BufPrint(6) ! debug + + CALL FoamA_Grow(funW) +* Update list of active cells, only for internal tests + CALL FoamA_ActUpda + CALL FoamA_Check(6,0) ! Check if the liked list is OK +* -------------------------------------------------------------------------------------------- + IF( m_Chat.GE.1) THEN + WRITE(m_Out,'( 3(a,i4),2(a,g15.8) )') + $ 'Foam_Initialize: No. Cells=',m_LastCe,' Active=',m_LastAc, ' No. Vertices=' ,m_LastVe, ! + $ ' True Integ.=',m_CeIntg(1),' Driver Integ.=',m_CeDriv(1) ! + ENDIF + IF( m_Chat.EQ.2) THEN + CALL FoamA_BufPrint( m_Out) + CALL FoamA_BufActPrint( m_Out) + CALL FoamA_VertPrint( m_Out) + ENDIF +* Initializations for M.C. generation + m_Drive = m_CeDriv(1) ! M.C. generation Drive value of integral + m_SumWt = 0d0 ! M.C. generation sum of Wt + m_SumWt2 = 0d0 ! M.C. generation sum of Wt**2 + m_NevGen = 0d0 ! M.C. generation sum of 1d0 + m_WtMax = -1d99 ! M.C. generation maximum wt + m_WtMin = 1d99 ! M.C. generation minimum wt + m_VolTot = m_CeIntg(1) ! Estimate of integral tot. without error + m_MCresult = m_VolTot ! M.C. generation Final value of ITEGRAL, temporary asignment + m_MCerror = m_VolTot ! M.C. generation Final walue of ERROR , temporary asignment +* +*((((((((((((################################################################################ +*((((((((((((################################################################################ +c CALL FoamA_VertPrint( 6) +c CALL FoamA_BufPrint( 6) +c CALL FoamA_BufActPrint(6) +c CALL FoamA_Check( 6,0) +c WRITE(*,*) ' ########### STOP ########### developement not finished @@@@' ! +c STOP +*))))))))))))################################################################################ +*))))))))))))################################################################################ +* +* Cumulative Primary for MC generation, see FoamA_CellGener + CALL FoamA_ActUpda + TotPrim = 0d0 + m_CePrCu(0)= 0d0 + DO kCell = 1,m_LastAc + iCell = m_ActC(kCell) + TotPrim = TotPrim +m_CePrim( iCell ) + m_CePrCu(kCell)=TotPrim + ENDDO +* ---------------------------------------------------- + IF( m_Chat.GE.1) WRITE(m_Out,'( 2(a,g15.8) )') + $ 'Foam_Initialize: TotPrimary =',TotPrim,' True/Primary =', m_CeIntg(1)/TotPrim + END ! FoamA_Initialize + + SUBROUTINE FoamA_InitVertices !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// In siplical subspace initialize 2^nDim vertices at corners of basic hyper-cube // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER iVe,i,j,l,digit( m_NdiMax) +* + IF( m_OptOrd .EQ.0) THEN +*////////////////////////////////////////////////////////////////////////////////////// +*// Here we have all vertices of the initial unit hypercube +*// like (0000),(1000),(0100),(1100),(0010)...(1111) + m_LastVe = 2**m_nDim + DO i=1,m_nDim + digit(i)=0 + ENDDO + DO iVe=1,m_LastVe +***** WRITE(*,'(a,i5,a,10i5)') 'iVe=', iVe, ' digit=',(digit(j),j=1,m_nDim) + DO i=1,m_nDim + m_VerX(iVe,i) = digit(i) ! Simplical vertex positions + ENDDO + digit(1)=digit(1)+1 ! Basic increment + DO i=1,m_nDim-1 + IF(digit(i).EQ.2) THEN ! Overflow goes to higher digits + digit(i)=0 + digit(i+1)=digit(i+1)+1 + ENDIF + ENDDO + ENDDO + ELSE +*////////////////////////////////////////////////////////////////////////////////////// +*// Here we have only vertices of the SINGLE INITIAL SIMPLEX +*// like (0000),(1000),(1110),(1111) + m_LastVe = m_nDim+1 + DO iVe=1,m_LastVe + DO i=1,m_nDim + m_VerX(iVe,i) =0 + IF(i.LT.iVe) m_VerX(iVe,i) =1 ! Simplical vertex positions + ENDDO +***** WRITE(*,'(a,i5,a,10f5.0)') 'iVe=', iVe, ' m_VerX=',(m_VerX(iVe,i),i=1,m_nDim)! + ENDDO + ENDIF + END !! FoamA_InitVertices + + SUBROUTINE FoamA_InitCells(funW) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Initialize first n-factorial cells inside original cube // +*// MC exploration done for all newly defined cells // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + DOUBLE PRECISION funW + EXTERNAL funW + INTEGER perm(m_NdiMax),mask,iCeNew,iCell + INTEGER iCe,i,j,k,iVe,Vert(m_NdiMax),digit(m_NdiMax),factorial,NoMC ! + DOUBLE PRECISION HcPosi(m_KdiMax), HcSize(m_KdiMax) +* ----------------------------------------------------------------------------- + DO j=1,m_kDim + HcPosi(j)=0d0 + HcSize(j)=1d0 + ENDDO + DO iVe=1,m_nDim+1 + Vert(iVe) =0 + ENDDO + IF( m_nDim .EQ. 0 ) THEN +*////////////////////////////////////////////////////////////////////////////////////// +*// Only hypercubics, no simplices // +*////////////////////////////////////////////////////////////////////////////////////// +* ROOT cell ACTIVE, no daughters + NoMC= m_nSampl +* -------------------- Stat,Pare, Dau1, Dau2, MCsampl,VertList, Position,Size, iCeNew) + CALL FoamA_DefCell( 1, -1, -1, -1, NoMC, Vert, HcPosi, HcSize, iCeNew) ! + CALL FoamA_Explore(iCeNew,funW) ! Initial MC sampling + ELSEIF( m_nDim .EQ. 1 ) THEN +*////////////////////////////////////////////////////////////////////////////////////// +*// Simplical algorithm in one dimension // +*////////////////////////////////////////////////////////////////////////////////////// + Vert(1) =1 + Vert(2) =2 +* ROOT cell ACTIVE, no daughters +* -------------------- Stat,Pare, Dau1, Dau2, MCsampl,VertList, Position,Size, iCeNew + CALL FoamA_DefCell( 1, -1, -1, -1, m_nSampl, Vert, HcPosi, HcSize, iCeNew) ! + CALL FoamA_Explore(iCeNew,funW) ! Initial MC sampling + ELSE + IF( m_OptOrd .EQ.0) THEN +*////////////////////////////////////////////////////////////////////////////////////// +*// (nDim)! Simplices in more two and more dimensions // +*////////////////////////////////////////////////////////////////////////////////////// + factorial=1 + DO k = 1,m_nDim + factorial = factorial*k + ENDDO +* ROOT cell INACTIVE, (nDim)! daugter cells defined below +* ----------------- Stat,Pare, Dau1, Dau2, MCsampl, VertList, Position,Size, iCeNew) + CALL FoamA_DefCell( -1, -1, 2, factorial+1, m_nSampl, Vert, HcPosi, HcSize, iCeNew) ! +* ================================================================ +* START OF LOOP OVER permutations of (1,2,3,...,m_nDim) + iCe=0 + DO i=1,m_nDim + perm(i)=m_nDim + ENDDO + 300 CONTINUE + perm(1)=perm(1)-1 + DO k = 1,m_nDim-1 + IF(perm(k).EQ.0) THEN + perm(k)=m_nDim + perm(k+1)=perm(k+1)-1 + ENDIF + ENDDO + Mask=1 + DO i=1,m_nDim + DO j=i+1,m_nDim + IF( perm(i).EQ.perm(j) ) Mask=0 + ENDDO + ENDDO + IF(Mask.EQ.1) THEN +* At this point NEW PERMUTATION is found !!! + iCe=iCe+1 + DO iVe=1,m_nDim+1 +* This digit represents single BASIC SIMPLEX, other obtained by permuting dimensions + DO k=1,m_nDim + digit(k)=0 + IF(k.LT.iVe) digit(k)=1 + ENDDO +* Translation from "binary" digit to serial pointer of a given vertex + j=0 + DO k=1,m_nDim + j=j+ digit(perm(k)) *2**(k-1) + ENDDO + Vert(iVe)=j+1 + ENDDO +***** WRITE(*,*) '########>>>>>>> iCe =',iCe, 'permut= ',(perm(i),i=1,m_nDim) +***** WRITE(*,*) '########>>>>>>> Vert= ',(vert(i),i=1,m_nDim+1) +* Define ACTIVE simplical cell +* ----------------- Stat,Pare,Dau1,Dau2, MCsampl,VertList, Position,Size, iCeNew + CALL FoamA_DefCell( 1, 1, -1, -1, m_nSampl, Vert, HcPosi, HcSize, iCeNew) ! +* --------------------------------------------------------------------- + IF( iCe.EQ.factorial) GOTO 100 ! Last permutation found + ENDIF + GOTO 300 ! END OF LOOP over permutations +* ================================================================ + 100 CONTINUE + DO iCell = 2,m_LastCe + CALL FoamA_Explore(iCell,funW) ! Initial MC sampling, necessarily in a separate loop + ENDDO + ELSE +*////////////////////////////////////////////////////////////////////////////////////// +*// Single initial simplex in two or more dimension (ordered integr. variables) // +*////////////////////////////////////////////////////////////////////////////////////// + DO k = 1,m_nDim+1 + Vert(k) =k + ENDDO +* ROOT cell ACTIVE, no daughters +* -------------------- Stat,Pare, Dau1, Dau2, MCsampl, VertList, Position,Size, iCeNew) + CALL FoamA_DefCell( 1, -1, -1, -1, m_nSampl, Vert, HcPosi, HcSize, iCeNew) ! + CALL FoamA_Explore(iCeNew,funW) ! Initial MC sampling + ENDIF ! m_OptOrd + ENDIF ! m_nDim + END !!!FoamA_InitCells + + SUBROUTINE FoamA_DefCell(Stat,Pare,Dau1,Dau2,NoMC,Vertex,HcPosi,HcSize,iCeNew) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Create new (daughter) cell and append it at the very end of the buffer // +*// iCeNew is pointer of the new cell // +*// Note clever trick: volume of this daughter is assigned initialy half volume // +*// of the parent, if parent exists. // +*// In Explore this value is used to update all parents such that // +*// in the entrire tree parents have volume being sum of all daughter volumes. // +*// This summation discipline is useful for MC generation of an active cell by // +*// going randomly from top to bottom of the tree. // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER Stat,Pare,Dau1,Dau2,iCeNew,k,NoMC + INTEGER Vertex(m_NdiMax+1) + DOUBLE PRECISION HcPosi(m_KdiMax), HcSize(m_KdiMax) +* ------------------------------------------------------------------ + IF( m_LastCe .EQ. m_nBuf) THEN + WRITE(*,*) ' STOP in FoamA_DefCell: something wrong with m_nBuf=',m_nBuf ! + STOP + ENDIF + m_LastCe = m_LastCe+1 + iCeNew = m_LastCe + m_CeStat(iCeNew)= Stat ! status code, =0 inactive, =1 active + m_CePare(iCeNew)= Pare ! parent cell pointer + m_CeDau1(iCeNew)= Dau1 ! daughter1 cell pointer + m_CeDau2(iCeNew)= Dau2 ! daughter2 cell pointer + m_CeSamp(iCeNew)= NoMC ! No of MC events in exploration + m_CeBest(iCeNew)= -1 ! pointer for planning division of the cell + m_CeXave(iCeNew)= 0.5d0 ! factor for division +* simplical subspace: vertex list + DO k=1,m_NdiMax+1 + m_CeVert(iCeNew,k)= Vertex(k) + ENDDO +* hypercubical subspace: position and size + DO k=1,m_kDim + m_CeVer1(iCeNew,k) = HcPosi(k) + m_CeVer2(iCeNew,k) = HcSize(k) + ENDDO +* + IF(Pare.NE.-1) THEN + m_CeIntg(iCeNew)= m_CeIntg(Pare)/2d0 ! integr. half of parent + m_CeDriv(iCeNew)= m_CeDriv(Pare)/2d0 ! integr. half of parent + ELSE + m_CeIntg(iCeNew)= 0d0 + m_CeDriv(iCeNew)= 0d0 + ENDIF + m_CeVolu(iCeNew)= 0d0 ! cartesian Volume + END ! FoamA_DefCell + + + SUBROUTINE FoamA_Explore(iCell,funW) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Explore newly defined cell with help of special short MC sampling // +*// As a result, estimetes of true and Drive volume will be defined // +*// Average and dispersion of the weight distribution will be found along each // +*// edge and the best edge (minimum dispersion) is memorized for future use. // +*// Axerage x for eventual future cell division is also defined. // +*// Recorded are aso minimum and maximu weight etc. // +*// The volume estimate in all (inactive) parent cells is updated // +*// Note that links to parents and initial volume = 1/2 parent has to be // +*// already defined prior to calling this routine. // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER iCell +* Simplical subspace + DOUBLE PRECISION Vec(m_NdiMax+1,m_NdiMax) + DOUBLE PRECISION Xre(m_NdiMax, m_NdiMax), Yre(m_NdiMax, m_NdiMax) ! + DOUBLE PRECISION Lambda(m_NdiMax),VolPart(m_NdiMax+1) +* Hyper-Cubic subspace + DOUBLE PRECISION Alpha( m_KdiMax) + INTEGER digit( m_KdiMax) +* Total space + DOUBLE PRECISION Vrand( m_DimMax) +* Edge sampling working space, matrices + DOUBLE PRECISION Xdivi(m_NdiviMax) + DOUBLE PRECISION Histo(m_NdiviMax,m_nBinMax),Xsu1(m_NdiviMax),Xsu2(m_NdiviMax) ! +*-------- + INTEGER loop,i,j,k,parent,iv,jv,kv,nEdges,kBest,iBin,nDivi,NevEff ! + DOUBLE PRECISION x,x1,x2,Wt,Vsum,xBest,yBest + DOUBLE PRECISION Det,VolOld, DriOld, XrSum,Factorial + DOUBLE PRECISION Dx,DxHc,DxSp,DxPartial,NoMC + DOUBLE PRECISION funW + EXTERNAL funW +*----------------------------------------------------------------------- +* memorize old values, will be needed for correcting parent cells + VolOld = m_CeIntg(iCell) + DriOld = m_CeDriv(iCell) +* + Factorial=1 + DO i=1,m_nDim + Factorial=Factorial*i + ENDDO + DxSp=1d0 ! Cartesian volume of the simplex + DxHc=1d0 ! Cartesian volume of the hypercube +* + IF( m_nDim.GT.0) THEN + DO iv=1,m_nDim+1 + DO j=1,m_nDim + Vec(iv,j) = m_VerX( m_CeVert(iCell,iv) ,j) ! decode vertex vectors + ENDDO + ENDDO + DO iv=1,m_nDim + DO j=1,m_nDim + Xre(iv,j) = Vec(iv,j)-Vec(m_nDim+1,j) ! relative to last vertex + ENDDO + ENDDO + CALL FoamA_Determinant(Xre,Det) + IF(Det.EQ.0d0) WRITE(*,*) '!!!!! WARNING: Determinant=',Det + DxSp = DxSp*ABS(Det)/Factorial ! Simplical Cartesian volume of the Cell + ENDIF + IF( m_kDim.GT.0) THEN + DO i=1,m_kDim + DxHc = DxHc*m_CeVer2(iCell,i) ! Product of sizes in hypercubical subspace + ENDDO + ENDIF + Dx=DxSp*DxHc ! Total cartesian volume + m_CeVolu(iCell) = Dx +c[[[[[[[[[[[[[[[ +c DO iv=1,m_nDim +c WRITE(*,'(a,9f10.5)') '### Xre=',(Xre(iv,j),j=1,m_nDim) +c ENDDO +c WRITE(*,'(a,f12.6)') 'FoamA_Explore: Cartesian volume Dx =',Dx +c]]]]]]]]]]]]]]] + +*///////////////////////////////////////////////////// +*// Exploratory MC sampling to probe the cell // +*///////////////////////////////////////////////////// + m_CeSum(iCell,1) = 0 + m_CeSum(iCell,2) = 0 + m_CeSum(iCell,3) = 0 + m_CeSum(iCell,4) = 1d90 ! wtmin + m_CeSum(iCell,5) = -1d90 ! wtmax + DO k=1,m_NdiviMax + Xsu1(k)=0d0 + Xsu2(k)=0d0 + DO iBin=1,m_nBin + Histo(k,iBin)=0d0 + ENDDO + ENDDO +*/////////////////////////////////////////////////////////////////////////////////// +* Additional scan over vertices in order to improve max/min weights +* Note that this option adds 2**m_kDim of the function calls, limited to 1000! + IF( m_OptEdge .EQ. 1 ) THEN + DO k=1,m_kDim + digit(k)=0 ! initialize first partitions + ENDDO + DO loop=1,1000 ! start of loop over partitions + DO iv=1,m_nDim+1 + DO j=1,m_nDim + Vrand(j) = m_VerX( m_CeVert(iCell,iv) ,j) ! simplical subspace + ENDDO + DO j=1,m_kDim + Vrand(m_nDim+j) = m_CeVer1(iCell,j) + digit(j)*m_CeVer2(iCell,j) ! h-cubical subspace + ENDDO + Wt =funW(Vrand)*Dx ! weight average normalised to integral over the cell + m_CeSum(iCell,4) = MIN( m_CeSum(iCell,4),Wt) ! minium weight + m_CeSum(iCell,5) = MAX( m_CeSum(iCell,5),Wt) ! maximu weight + ENDDO + digit(1)=digit(1)+1 + DO k=1,m_kDim-1 + IF(digit(k).EQ.2) THEN + digit(k)=0 + digit(k+1)=digit(k+1)+1 + ENDIF + ENDDO + IF( m_kDim .EQ.0 ) GOTO 122 + IF( digit(m_kDim).EQ.2) GOTO 122 + ENDDO ! end of loop over partitions + 122 CONTINUE + ENDIF +*/////////////////////////////////////////////////////////////////////////////////// +* generate randomly/uniformly vector Vrand inside this simplex&hypercube + DO i=1,m_CeSamp(iCell) + CALL FoamA_MakeLambda(Lambda) + CALL FoamA_MakeAlpha( Alpha) + DO j=1,m_nDim + Vrand(j) = Vec(m_nDim+1,j) + DO iv=1,m_nDim + Vrand(j) = Vrand(j) +Lambda(iv)*Xre(iv,j) ! simplical subspace + ENDDO + ENDDO + DO j=1,m_kDim + Vrand(m_nDim+j) = m_CeVer1(iCell,j) +Alpha(j)*m_CeVer2(iCell,j) ! hypcubic subspace + ENDDO +**** WRITE(*,'(a,6f12.6)') ' Lambda =',(Lambda(k),k=1,m_nDim) +**** WRITE(*,'(a,6f12.6)') ' Alpha =',(Alpha(k), k=1,m_kDim) +**** WRITE(*,'(a,6f12.6)') ' Vrand =',(Vrand(k), k=1,m_Dimen) +*/////////////////////////////////////////////////////////////////////////////////// +* Projecting on all simplex edges, preparatory step, partial volumes etc. + IF( m_nDim .GT. 0 ) THEN + Vsum=0d0 + DO jv=1,m_nDim+1 ! vertex jv will be replaced with Vrand + kv=0 ! kv numbers all verices axcept jv + DO iv=1,m_nDim+1 + IF(iv.NE.jv) THEN + kv=kv+1 + DO j=1,m_nDim + Yre(kv,j) = Vec(iv,j)-Vrand(j) ! All vertices except jv relative to Vrand + ENDDO + ENDIF + ENDDO + CALL FoamA_Determinant(Yre,DxPartial) + VolPart(jv) = ABS(DxPartial)/Factorial + Vsum=Vsum + VolPart(jv) + ENDDO + IF( ABS(Vsum-DxSp)/DxSp .GT. 1d-5) GOTO 950 ! X-check + ENDIF +*------------------------------------------------------------------------------------ +* IMPORTANT! Two Loops below determine the indexing of edges (simplex and hypercube) +*------------------------------------------------------------------------------------ + nEdges=0 + DO jv=1,m_nDim+1 + DO iv=jv+1,m_nDim+1 + nEdges=nEdges+1 + Xdivi(nEdges) = VolPart(jv) / ( VolPart(jv)+VolPart(iv) ) + ENDDO + ENDDO + DO j=1,m_kDim + nEdges=nEdges+1 + Xdivi(nEdges) = Alpha(j) + ENDDO +*/////////////////////////////////////////////////////////////////////////////////// + Wt =funW(Vrand)*Dx ! principal weight normalised to integral over the cell +*------------------------------------------------------------------------------------ + m_nCalls = m_nCalls+1 + m_CeSum(iCell,1) = m_CeSum(iCell,1)+ Wt ! sum of weights + m_CeSum(iCell,2) = m_CeSum(iCell,2)+ Wt*Wt ! sum of weights squared + m_CeSum(iCell,3) = m_CeSum(iCell,3)+ 1d0 ! sum of 1 + m_CeSum(iCell,4) = MIN( m_CeSum(iCell,4),Wt) ! minium weight + m_CeSum(iCell,5) = MAX( m_CeSum(iCell,5),Wt) ! maximu weight +* Search for the best edge candidate for future cell division, prepare MC material + Ndivi = (m_nDim+1)*m_nDim/2 +m_kDim + IF(nEdges.NE.nDivi) GOTO 970 + DO k=1,nDivi + Xsu1(k)=Xsu1(k) +Xdivi(k)*Wt ! averages for all Xdivi + Xsu2(k)=Xsu2(k) +Xdivi(k)**2*Wt + iBin = INT(Xdivi(k)*m_nBin)+1d0 + iBin = MIN(MAX(iBin,0),m_nBin) + Histo(k,iBin) = Histo(k,iBin)+Wt ! fill histo for each edge +c[[[[[[[[[[[[ debug [[[[[[[[[[[[ debug [[[[[[[[[[[[ +c IF(iCell.EQ.4) THEN +c CALL GLK_Fil1(1200+k, Xdivi(k),Wt) +c ENDIF +c]]]]]]]]]]]] debug ]]]]]]]]]]]] debug ]]]]]]]]]]]] + ENDDO + IF( m_EvPerBin.GT.0 ) THEN + NevEff = m_CeSum(iCell,1)**2/m_CeSum(iCell,2) + IF( NevEff .GE. m_nBin*m_EvPerBin) GOTO 222 ! + ENDIF + ENDDO + 222 CONTINUE +*/////////////////////////////////////////////////////// +*// End of Special Short MC sampling to probe cell // +*/////////////////////////////////////////////////////// + + +*////////////////////////////////////////////////////////////////////////////////////// +*// Determine the best edge candidate for future cell division, +*// using MC material in Histo,Xsu1,Xsu2 +*// kBest,xBest,yBest are the output results + CALL FoamA_Carver(iCell,Histo,Xsu1,Xsu2,kBest,xBest,yBest) +*////////////////////////////////////////////////////////////////////////////////////// + NoMC =m_CeSum(iCell,3) + IF( m_CeSum(iCell,1) .LT.0d0) GOTO 920 + m_CeXave(iCell) = xBest ! best lambda for future division + m_CeBest(iCell) = kBest ! best edge for future division + m_CeIntg(iCell) = m_CeSum(iCell,1)/NoMC ! estimator of the true integral +*!!!!!!!!! DrivE is for the Foam build-up (not for MC generation) !!!!!!!!!! +*!!!!!!!!! PRIMARY is for MC generation (not for the Foam build-up ) !!!!!!!!!! + IF( m_OptDrive.EQ.0 ) THEN + m_CePrim(iCell) = m_CeIntg(iCell) ! True integral, MC generation + m_CeDriv(iCell) = m_CeIntg(iCell) ! True integral, Foam build-up + ELSEIF( m_OptDrive.EQ.1 ) THEN + m_CePrim(iCell) = DSQRT(m_CeSum(iCell,2)/NoMC) ! Sqrt( <w>**2 + sigma**2 )= Sqrt(<w**2>) + m_CeDriv(iCell) = DSQRT(m_CeSum(iCell,2)/NoMC -m_CeIntg(iCell)**2) ! sigma =Sqrt(<w**2>-<w>**2) + ELSEIF( m_OptDrive.EQ.2 ) THEN + m_CePrim(iCell) = m_CeSum(iCell,5) ! wtmax , MC generation + m_CeDriv(iCell) = m_CeSum(iCell,5) -m_CeIntg(iCell) ! wtmax-<w>, Foam build-up + ELSE + WRITE(m_out,*) ' ++++ STOP in FoamA_Explore, wrong m_OptDrive =',m_OptDrive ! + WRITE( *,*) ' ++++ STOP in FoamA_Explore, wrong m_OptDrive =',m_OptDrive ! + STOP + ENDIF +* correct volume and Drive in all parent cells to the top of the tree + parent = m_CePare(iCell) + DO i = 1,m_nBuf + IF( parent .EQ. -1 ) GOTO 100 ! Exit if no parent exists + m_CeIntg(parent) = m_CeIntg(parent) +( m_CeIntg(iCell) -VolOld) ! + m_CeDriv(parent) = m_CeDriv(parent) +( m_CeDriv(iCell) -DriOld) ! + parent=m_CePare(parent) + ENDDO + 100 CONTINUE + RETURN + 920 WRITE(*,*) ' ### STOP in FoamA_Explore: something wrong with integrand ' ! + STOP + 950 WRITE(*,*) ' ### STOP in FoamA_Explore: something wrong with volume calculation ' ! + WRITE(*,*) ' Vsum,DxSp= ',Vsum,DxSp + STOP + 960 WRITE(*,*) ' ### STOP in FoamA_Explore: something wrong with best pair pointer =',kBest ! + STOP + 970 WRITE(*,*) ' ### STOP in FoamA_Explore: something wrong with Ndivi =',nDivi ! + STOP + END ! FoamA_Explore + + + + SUBROUTINE FoamA_Carver(iCell,Histo,Xsu1,Xsu2,kBest,xBest,yBest) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Determine the best edge candidate for future cell division, using MC material // +*// kBest is the best edge found, xBest and yBest are the best values of lambda // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER iCell,kBest + DOUBLE PRECISION xBest,yBest,zBest + DOUBLE PRECISION Histo(m_NdiviMax,m_nBinMax), Xsu1(m_NdiviMax), Xsu2(m_NdiviMax) ! + DOUBLE PRECISION Bins(m_nBinMax) + INTEGER i,j,k, iBin, nDivi + INTEGER iUp,iLow, jUp,jLow, kDivi, jv,iv, jDivi + DOUBLE PRECISION SumWt,BinMax,This, Carve, yLevel + DOUBLE PRECISION CarvOne,CarvTwo,CarvMax +* + kBest =1 + xBest =0.5d0 + yBest =1d0 + SumWt = m_CeSum(iCell,1) + IF( SumWt .NE. 0d0) THEN + CarvMax = -1d150 + nDivi = (m_nDim+1)*m_nDim/2 +m_kDim + DO kDivi=1,nDivi + BinMax = -1d150 + DO iBin=1,m_nBin ! Unload histo and Maximum bin + Bins(iBin) = Histo(kDivi,iBin) + BinMax = MAX( BinMax, Bins(iBin)) ! Maximum content/bin + ENDDO + CarvTwo = 0d0 + DO iBin=1,m_nBin + Bins(iBin) = Bins(iBin)/BinMax ! Normalize to the highest bin + CarvTwo = CarvTwo + (1d0-Bins(iBin))/m_nBin ! Total carve + ENDDO +* Find maximum 'rectangular carve' in betwen the two bins (jLow,...,jUp) + jLow =1 + jUp =m_nBin + CarvOne = -1d150 + yLevel = -1d150 + DO iBin=1,m_nBin + This = Bins(iBin) + iLow = iBin + DO j=iBin,1,-1 ! walk to the left and find first bin > current + IF(This .LT. Bins(j) ) GOTO 100 + iLow = j + ENDDO + 100 CONTINUE + iUp = iBin + DO j=iBin,m_nBin ! walk to the right and find first bin > current + IF(This .LT. Bins(j) ) GOTO 200 + iUp = j + ENDDO + 200 CONTINUE + Carve = (iUp-iLow+1)*(1d0-This)/m_nBin + IF( Carve .GT. CarvOne) THEN + CarvOne = Carve + jLow = iLow + jUp = iUp + yLevel = This + ENDIF + ENDDO ! end-loop over histogram bins +************************************************************* +** IF( CarvOne .GT. CarvMax) THEN +** CarvMax = CarvOne +************************************************************* + IF( CarvTwo .GT. CarvMax) THEN + CarvMax = CarvTwo + kBest = kDivi ! Best edge + xBest = (jLow-1d0)/m_nBin + yBest = (jUp*1d0)/m_nBin + IF(jLow .EQ. 1 ) xBest = yBest + IF(jUp .EQ. m_nBin) yBest = xBest +* division ratio in units of 1/m_nBin, testing + jDivi = jLow-1 + IF(jLow .EQ. 1 ) jDivi=jUp +************************************************************** +* The improvement below does not seem to matter at all +* IF( 0.5d0*(xBest+yBest) .LT. 0.5d0) THEN +* zBest =xBest +* xBest =yBest +* yBest =zBest +* ENDIF +************************************************************** + ENDIF +*[[[[[[[[[[[[ debug [[[[[[[[[[[[ debug [[[[[[[[[[[[[[[[[[ +* WRITE(*,'(a,4i5,f10.5)') '==iCell,kDivi,jLow,jUp,CarvMax= ',iCell,kDivi,jLow,jUp,CarvOne !! +* IF(iCell.EQ.2 ) THEN +* CALL GLK_Pak( 1200+kDivi,Bins) +* DO iBin = 1,m_nBin +* Bins(iBin) = 1d0 +* ENDDO +* DO iBin=jLow,jUp +* Bins(iBin) = yLevel +* ENDDO +* CALL GLK_Pak( 1400+kDivi,Bins) +* ENDIF +c]]]]]]]]]]]]debug ]]]]]]]]]]]] debug ]]]]]]]]]]]]]]]]]]] + ENDDO ! end-loop over nDivi + ENDIF +*[[[[[[[[[[[[ debug [[[[[[[[[[[[ debug [[[[[[[[[[[[ +* WRITE(*,'(a,i5)') ' FoamA_Carver , iCell = ', iCell +* WRITE(*,'(a,i5,3f10.5)') ' kBest,xBest,yBest= ', kBest, xBest,yBest!! +*]]]]]]]]]]]] debug ]]]]]]]]]]]] debug ]]]]]]]]]]]] + END ! FoamA_Carver + + + SUBROUTINE FoamA_RanDiscr(Driv,nTot,Power,iRand) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// PRESENTLY UNUSED !!! // +*// Generates iRand in (1,nTot) acconding to discrete un-normalized probab. Driv // +*// Power is normaly =1, can be useful for special purposes // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + DOUBLE PRECISION Driv(*),Power + INTEGER nTot,iRand + INTEGER i + DOUBLE PRECISION random,sum,Total + REAL Qrand(10) ! from PseuMar +* + Total = 0d0 + DO i= 1,nTot + Total = Total +Driv( i)**Power + ENDDO + IF(Total .EQ. 0d0) GOTO 990 + IF(m_OptRanLux.EQ.-1) THEN + CALL PseuMar_MakeVec(Qrand,1) + ELSE + CALL RanLux(Qrand,1) + ENDIF + random = Qrand(1) + iRand = -1 + sum = 0d0 + DO i= 1,nTot + iRand = i + sum = sum +Driv( i)**Power + IF( random .LT. sum/Total ) GOTO 100 + ENDDO + IF(iRand .EQ. -1) GOTO 990 + 100 CONTINUE + RETURN + 990 WRITE(*,*) ' ### STOP in FoamA_RanDiscr, something went wrong !!!!' + STOP + END + + + SUBROUTINE FoamA_MakeAlpha(Alpha) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Provides random vector Alpha, each component in (0,1) range // +*// // +*////////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + DOUBLE PRECISION Alpha(m_KdiMax), y + REAL Qrand( m_KdiMax) ! from PseuMar + INTEGER i,k +* -------------------------------------------------------- + IF( m_kDim.LT.0 .OR. m_kDim.GT.m_KdiMax) THEN + WRITE(*,*) 'STOP in FoamA_MakeAlpha: m_kDim=',m_kDim + STOP + ENDIF + IF(m_kDim.LE.0) RETURN + IF(m_OptRanLux.EQ.-1) THEN + CALL PseuMar_MakeVec(Qrand,m_kDim) + ELSE + CALL RanLux(Qrand,m_kDim) + ENDIF + DO k =1,m_kDim + Alpha(k)=Qrand(k) + ENDDO + END + + SUBROUTINE FoamA_MakeLambda(Lambda) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Provides random vector Lambda such that Sum Lamba(i) = 1, with uniform probab. // +*// This vector is used to populate uniformly the interior of a simplex. // +*// The method is: generate point inside cube, order components (maping into simplex) // +*// and take differences of Lambda(i+1) - Lambda(i) // +*// // +*////////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER i,k + DOUBLE PRECISION Lambda(m_NdiMax), y + REAL Qrand( m_NdiMax) ! from PseuMar + REAL x +* -------------------------------------------------------- + IF(m_nDim.LE.0) RETURN + IF(m_OptRanLux.EQ.-1) THEN + CALL PseuMar_MakeVec(Qrand,m_nDim) + ELSE + CALL RanLux(Qrand,m_nDim) + ENDIF +* ordering vector components (maping into simplex) + DO i =m_nDim,1,-1 + DO k =2,i + IF( Qrand(k).LT.Qrand(k-1)) THEN + x = Qrand(k) + Qrand(k) = Qrand(k-1) + Qrand(k-1) = x + ENDIF + ENDDO + ENDDO +* Sum of lambdas should equal one + Lambda(1)=Qrand(1) + DO k =2,m_nDim + Lambda(k)=Qrand(k)-Qrand(k-1) + ENDDO + END ! MakeLambda + + + SUBROUTINE FoamA_Determinant(R,Det) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Calculates determinant of matrix R // +*// Use of Laplace formula should be perhaps replaced with something faster // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + DOUBLE PRECISION R(m_NdiMax,m_NdiMax),Det + DOUBLE PRECISION FoamA_Det2Lapl, FoamA_Det3Lapl,FoamA_Det4Lapl,FoamA_Det5Lapl ! +* ------------------------------------------------- + IF( m_nDim .EQ. 1) THEN + Det= R(1,1) + ELSEIF( m_nDim .EQ. 2) THEN + Det= FoamA_Det2Lapl(R, 1,2) + ELSEIF( m_nDim .EQ. 3) THEN + Det= FoamA_Det3Lapl(R, 1,2,3) + ELSEIF( m_nDim .EQ. 4) THEN + Det= FoamA_Det4Lapl(R, 1,2,3,4) + ELSEIF( m_nDim .EQ. 5) THEN + Det= FoamA_Det5Lapl(R, 1,2,3,4,5) + ELSE + WRITE(*,*) '####FoamA_Determinant: STOP, m_nDim =',m_nDim + STOP + ENDIF + END ! FoamA_Determinant + + DOUBLE PRECISION FUNCTION FoamA_Det2Lapl(R,i1,i2) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + DOUBLE PRECISION R(m_NdiMax,m_NdiMax),Det + INTEGER i1,i2 +* ------------------------------------------------------------ + FoamA_Det2Lapl= R(1,i1)*R(2,i2) - R(1,i2)*R(2,i1) + END + + + DOUBLE PRECISION FUNCTION FoamA_Det3Lapl(R,i1,i2,i3) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// Determinat Laplace method // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + DOUBLE PRECISION R(m_NdiMax,m_NdiMax),Det,FoamA_Det2Lapl + INTEGER i1,i2,i3 +* ------------------------------------------------------------ + FoamA_Det3Lapl=+R(3,i1) *FoamA_Det2Lapl(R,i2,i3) + $ -R(3,i2) *FoamA_Det2Lapl(R,i1,i3) + $ +R(3,i3) *FoamA_Det2Lapl(R,i1,i2) + END + + DOUBLE PRECISION FUNCTION FoamA_Det4Lapl(R,i1,i2,i3,i4) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// Determinat Laplace method // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + DOUBLE PRECISION R(m_NdiMax,m_NdiMax),Det,FoamA_Det3Lapl + INTEGER i1,i2,i3,i4 +* ------------------------------------------------------------ + FoamA_Det4Lapl=-R(4,i1) *FoamA_Det3Lapl(R,i2,i3,i4) + $ +R(4,i2) *FoamA_Det3Lapl(R,i1,i3,i4) + $ -R(4,i3) *FoamA_Det3Lapl(R,i1,i2,i4) + $ +R(4,i4) *FoamA_Det3Lapl(R,i1,i2,i3) + END + + DOUBLE PRECISION FUNCTION FoamA_Det5Lapl(R,i1,i2,i3,i4,i5) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// Determinat Laplace method // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + DOUBLE PRECISION R(m_NdiMax,m_NdiMax), Det, FoamA_Det4Lapl + INTEGER i1,i2,i3,i4,i5 +* ------------------------------------------------------------ + FoamA_Det5Lapl=+R(5,i1) *FoamA_Det4Lapl(R,i2,i3,i4,i5) + $ -R(5,i2) *FoamA_Det4Lapl(R,i1,i3,i4,i5) + $ +R(5,i3) *FoamA_Det4Lapl(R,i1,i2,i4,i5) + $ -R(5,i4) *FoamA_Det4Lapl(R,i1,i2,i3,i5) + $ +R(5,i5) *FoamA_Det4Lapl(R,i1,i2,i3,i4) + END + + + SUBROUTINE FoamA_Grow(funW) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Grow new cells by division // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + DOUBLE PRECISION funW + EXTERNAL funW + INTEGER i,RC,iCell +*--------------------------------------------- +* Final division + DO i=1,100000 + IF( m_OptPeek .EQ. 0 ) THEN + CALL FoamA_PeekMax( iCell) ! choose cell with maximum Drive + ELSE + CALL FoamA_PeekRand1(iCell) ! randomly choose one cell + ENDIF + CALL FoamA_Divide( iCell,funW,RC) ! and divide it into two +c[[[[ +c CALL FoamA_BufPrint( m_Out) +c CALL FoamA_VertPrint( 6) +c]]]] + IF(RC.EQ.-1) GOTO 300 + ENDDO + 300 CONTINUE + WRITE(16,*) '######################### FoamA_Grow #####################' +*****[[[[[[ debug +***** CALL FoamA_BufPrint( 6) +***** CALL FoamA_BufActPrint( 6) +***** CALL FoamA_VertPrint( 6) +*****]]]]]] + CALL FoamA_Check(6,0) + END ! FoamA_Grow + + SUBROUTINE FoamA_PeekMax(iCell) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Create list of active cells (pointers) using DrivE // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER iCell + INTEGER i + DOUBLE PRECISION DrivMax, Driv +* --------------------------------------------------- + iCell = 0 + DrivMax = -1d150 + DO i = 1,m_LastCe + IF( m_CeStat(i).EQ.1 ) THEN + Driv= ABS(m_CeDriv(i)) + IF(Driv .GT. DrivMax) THEN + DrivMax = Driv + iCell = i + ENDIF + ENDIF + ENDDO +**** WRITE(*,*) '###>>> FoamA_PeekMax: iCell=',iCell + IF(iCell.EQ.0) THEN + WRITE(*,*) '### STOP in FoamA_PeekMax: not found iCell=', iCell + STOP + ENDIF + END ! FoamA_PeekMax + + + SUBROUTINE FoamA_PeekRand1(iCell) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Peek up randomly TREE-WISE the pointer iCell of an active cell // +*// Using DrivE // +*// We walk randomly from top of tree downwards until we find active cell m_CeStat=1 // +*// At each step one of daugters cells is choosen randomly according // +*// to their volume estimates. // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER iCell + INTEGER kCell,i,Dau1,Dau2,iDau + DOUBLE PRECISION random,p1,volu1,volu2,volu,TotDri,sum + REAL Qrand(10) ! from PseuMar +* ---------------------------------------------------------------- +* first cell is special because it has nDim-factorial daughters, istead of just 2 + iCell=1 + IF(m_CeStat(iCell).EQ.1) RETURN ! In case of cubics firs cell may be active + kCell = 1 + Dau1 = m_CeDau1(kCell) + Dau2 = m_CeDau2(kCell) + TotDri = 0d0 + DO iCell= Dau1,Dau2 + TotDri = TotDri+m_CeDriv( iCell ) + ENDDO + IF(m_OptRanLux.EQ.-1) THEN + CALL PseuMar_MakeVec(Qrand,1) + ELSE + CALL RanLux(Qrand,1) + ENDIF + random = Qrand(1) + iDau = -1 + sum = 0d0 + DO iCell= Dau1,Dau2 + iDau = iCell + sum = sum+m_CeDriv( iCell ) + IF( random .LT. sum/TotDri ) GOTO 100 + ENDDO + IF(iDau.EQ.-1) GOTO 990 + 100 kCell=iDau +****[[[[[[[[[[[[[[[[ +**** WRITE(*,*) '%%%%%%%%%%%%%%%%%%%%%% FoamA_PeekRand1: top daughter =',kCell +****]]]]]]]]]]]]]]]] + IF( m_CeStat( kCell ) .EQ. 1 ) GOTO 300 +* now the other standard cells with 2 daughters + DO i=1,10000000 + IF( m_CeStat( kCell ) .EQ. 1 ) GOTO 300 + volu1= m_CeDriv( m_CeDau1(kCell) ) + volu2= m_CeDriv( m_CeDau2(kCell) ) + p1 = volu1/(volu1+volu2) + IF(m_OptRanLux.EQ.-1) THEN + CALL PseuMar_MakeVec(Qrand,1) + ELSE + CALL RanLux(Qrand,1) + ENDIF + random = Qrand(1) + IF( random .LT. p1 ) THEN + kCell = m_CeDau1(kCell) + ELSE + kCell = m_CeDau2(kCell) + ENDIF +****[[[[[[[[[[[[[[[[[[[[ +**** WRITE(*,*) '%%%%%%%%%%%%%%%%%%%%%% FoamA_PeekRand1: normal daughter =',kCell +****]]]]]]]]]]]]]]]]]]]]] + ENDDO + GOTO 990 + 300 CONTINUE + iCell=kCell +****[[[[[[[[[[[[[[[[[[[[ +**** WRITE(*,*) '%%%%%%%%%%%%%%%%%%%%%% FoamA_PeekRand1: choosen cell =',kCell +****]]]]]]]]]]]]]]]]]]]]] + RETURN + 990 WRITE(*,*) ' ### STOP in FoamA_PeekRand1, something went wrong !!!!' + STOP + END !!! FoamA_PeekRand1 + + + SUBROUTINE FoamA_Divide(iCell,funW,RC) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Divide cell iCell into two daughter cells // +*// The iCell is retained and taged as inactive, daughter cells are appended // +*// at the end of the buffer. // +*// New vertex is added to list of vertice. // +*// List of active cells is updated, iCell remooved, two daughters added // +*// and their properties set with help of MC sampling (FoamA_Explore) // +*// Return Code RC=-1 of buffer limit is reached, m_LastCe=m_nBuf // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER iCell,RC + INTEGER Dau1, Dau2, kVer1(m_NdiMax+1), kVer2(m_NdiMax+1),p1,p2 ! + DOUBLE PRECISION HcPosi1(m_KdiMax), HcSize1(m_KdiMax) + DOUBLE PRECISION HcPosi2(m_KdiMax), HcSize2(m_KdiMax) + DOUBLE PRECISION funW + EXTERNAL funW + INTEGER Old1,Old2,j,k,jv,iv,nEdges,kBest,kDivi,NoMC + DOUBLE PRECISION Xave + INTEGER nDivi,nDivi0 +*-------------------------------------------------------------------------------------- + RC = 0 + IF( m_LastCe+2 .GT. m_nBuf) GOTO 990 !! abort if no space in buffer +* reset cell as inactive + m_CeStat(iCell) = 0 +*------------------------------------------------------------------------------------ +* Define lists of vertices for daughters, initially inherited... + IF(m_nDim .GT. 0) THEN + DO jv=1,m_nDim+1 + kVer1(jv) = m_CeVert(iCell,jv) + kVer2(jv) = m_CeVert(iCell,jv) + ENDDO + ENDIF +* Position and size initially also inherited + DO j=1,m_kDim + HcPosi1(j)=m_CeVer1(iCell,j) + HcSize1(j)=m_CeVer2(iCell,j) + HcPosi2(j)=m_CeVer1(iCell,j) + HcSize2(j)=m_CeVer2(iCell,j) + ENDDO +*-------------------------------------------------------------------------------------- + nDivi = (m_nDim+1)*m_nDim/2 +m_kDim + nDivi0 = (m_nDim+1)*m_nDim/2 + kBest = m_CeBest(iCell) + IF( kBest.LE.nDivi0) THEN +*////////////////////////////////////////////////////////////////////////////////////// +*// The best division in simplical subspace +*////////////////////////////////////////////////////////////////////////////////////// + m_LastVe=m_LastVe+1 ! add new vertex to the list + IF(m_LastVe.GT.m_vMax) GOTO 980 + Xave = m_CeXave(iCell) + nEdges=0 + DO jv=1,m_nDim+1 + DO iv=jv+1,m_nDim+1 + nEdges=nEdges+1 + IF( nEdges.EQ.kBest) THEN + p1 = m_CeVert(iCell,jv) + p2 = m_CeVert(iCell,iv) + DO j=1,m_nDim + m_VerX(m_LastVe,j) = Xave*m_VerX(p1,j) + (1d0-Xave)*m_VerX(p2,j) ! New Vertex + ENDDO + Old1=jv + Old2=iv + GOTO 100 + ENDIF + ENDDO + ENDDO + 100 CONTINUE + kVer1(Old1)=m_LastVe ! one old vertex replaced by new one + kVer2(Old2)=m_LastVe ! one old vertex replaced by new one + ELSE +*////////////////////////////////////////////////////////////////////////////////////// +*// The best division in hypercubical subspace +*// Position and size inherited except one direction k=kDivi +*////////////////////////////////////////////////////////////////////////////////////// + Xave = m_CeXave(iCell) + kDivi = kBest-nDivi0 + HcPosi1(kDivi)= m_CeVer1(iCell,kDivi) ! (1) Position unchanged + HcSize1(kDivi)= Xave*m_CeVer2(iCell,kDivi) ! (1) Size reduced by Xave + HcPosi2(kDivi)= HcPosi1(kDivi) +HcSize1(kDivi) ! (2) Position shifted + HcSize2(kDivi)= (1d0-Xave)*m_CeVer2(iCell,kDivi) ! (2) Size reduced by (1-Xave) + ENDIF +* define two daughter cells (active) + NoMC= m_nSampl +* ------------------------ Stat, Pare, Dau1,Dau2, MCsampl, VertList, Position,Size, iCeNew + CALL FoamA_DefCell( 1, iCell, -1, -1, NoMC, kVer1, HcPosi1, HcSize1, Dau1) ! + CALL FoamA_DefCell( 1, iCell, -1, -1, NoMC, kVer2, HcPosi2, HcSize2, Dau2) ! + m_CeDau1(iCell) = Dau1 + m_CeDau2(iCell) = Dau2 + CALL FoamA_Explore(Dau1,funW) + CALL FoamA_Explore(Dau2,funW) +* Update list of active cells, only for internal tests + CALL FoamA_ActUpda + RETURN + 990 RC=-1 !!buffer limit is reached, m_LastCe=m_nBuf + RETURN + 980 WRITE(*,*) ' ### STOP in FoamA_Divide: too short list of vertices ' + STOP + END ! FoamA_Divide + + + + SUBROUTINE FoamA_ActUpda !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Create list of active cells (pointers) // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER iCell,Dau1,Dau2 + INTEGER i +* --------------------------------------------------- + m_LastAc=0 + DO iCell = 1,m_LastCe + IF( m_CeStat(iCell).EQ.1 ) THEN + m_LastAc=m_LastAc+1 + IF(m_LastAc .EQ. m_cMax) GOTO 950 + m_ActC(m_LastAc) = iCell + ENDIF + ENDDO + RETURN + 900 WRITE(*,*) '### STOP in FoamA_ActUpda: not found iCell=', iCell + STOP + 950 WRITE(*,*) '### STOP in FoamA_ActUpda: list of active cells too short' + STOP + END ! FoamA_ActUpda + + + SUBROUTINE FoamA_CellGener(iCell) !# Generation +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Peek up randomly pointer iCell of an active cell according to PRIMARY // +*// Straightforward way, using list of active pointes made by ActUpda // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER iCell + INTEGER kCell,i,Dau1,Dau2,iDau + DOUBLE PRECISION random,x1,TotPrim + INTEGER klower,kuper,krange,kurrent,DipSwitch + REAL Qrand(10) ! from PseuMar + INTEGER iCont + DATA iCont/0/ + iCont = iCont+1 +* ---------------------------------------------------------------- + IF(m_OptRanLux.EQ.-1) THEN + CALL PseuMar_MakeVec(Qrand,1) + ELSE + CALL RanLux(Qrand,1) + ENDIF + random = Qrand(1) +* --------------------------------------------------- + TotPrim = m_CePrCu(m_LastAc) + x1 = TotPrim *random + DipSwitch=0 ! =0 is faater + IF( DipSwitch.EQ.1) THEN +*-------- primitive method -------- + DO kCell = 1,m_LastAc + iCell = m_ActC(kCell) + IF( m_CePrCu(kCell) .GE. x1 ) GOTO 800 + ENDDO + WRITE(*,*) '### STOP1 in FoamA_CellGener: something wrong' ! + STOP + 800 CONTINUE + ELSEIF( DipSwitch.EQ.0) THEN +*-------- a bit more sophisticated/faster method ------ + klower = 0 + kuper = m_LastAc + DO i=1,m_LastAc + krange = (kuper-klower+1)/2 + kurrent = klower +krange + IF( x1 .LE. m_CePrCu(kurrent) ) THEN + kuper = kurrent + ELSE + klower = kurrent + ENDIF + IF(kuper-klower.LE.1) GOTO 850 + ENDDO + WRITE(*,*) ' STOP in FoamA_CellGener' + STOP + 850 CONTINUE + iCell = m_ActC(kuper) + kCell = kuper + ELSE + iCell = m_ActC(1) ! nonsense for tests + ENDIF +***** IF(iCont.LE.10) WRITE(*,*) 'LastAc,kCell,iCell = ',m_LastAc,kCell,iCell !! debug + END ! FoamA_CellGener + + + SUBROUTINE FoamA_MakeEvent(funW) !# Generation +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Generates point/vector Xrand with the weight MCwt // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + DOUBLE PRECISION funW + EXTERNAL funW + INTEGER iCell,i,j,iv + DOUBLE PRECISION Wt,x1,x2,Dx,MCwt + DOUBLE PRECISION Alpha( m_KdiMax) ! Hyper-Cubic subspace + DOUBLE PRECISION Lambda(m_NdiMax) ! Simplical subspace +* ----------------------------------------------------------------- +* choose randomly one cell + CALL FoamA_CellGener( iCell) +* generate randomly/uniformly vector Vrand inside this simplex + CALL FoamA_MakeAlpha( Alpha) + CALL FoamA_MakeLambda(Lambda) + DO j=1,m_nDim + m_MCvector(j) = m_VerX( m_CeVert(iCell,m_nDim+1) ,j) + DO iv=1,m_nDim + m_MCvector(j) = m_MCvector(j) + $ +Lambda(iv)*( m_VerX( m_CeVert(iCell,iv) ,j) -m_VerX( m_CeVert(iCell,m_nDim+1) ,j) ) ! + ENDDO + ENDDO + DO j=1,m_kDim + m_MCvector(m_nDim+j) = m_CeVer1(iCell,j) +Alpha(j)*m_CeVer2(iCell,j) ! hypcubic subspace + ENDDO + Dx = m_CeVolu(iCell) ! Cartesian volume of the Cell +*[[[[[[[[[[[[ +***** CALL FoamA_TestNewConcept(iCell) +*]]]]]]]]]]]] +* weight average normalised to PRIMARY integral over the cell + MCwt =funW(m_MCvector)*Dx/m_CePrim(iCell) ! PRIMARY controls normalization + m_nCalls = m_nCalls+1 + m_MCwt = MCwt +* accumulation of statistics for the main MC weight + m_SumWt = m_SumWt +MCwt ! sum of Wt + m_SumWt2 = m_SumWt2 +MCWt*MCwt ! sum of Wt**2 + m_NevGen = m_NevGen +1d0 ! sum of 1d0 + m_WtMax = MAX(m_WtMax,MCwt) ! maximum wt + m_WtMin = MIN(m_WtMin,MCwt) ! minimum wt +* update also weight sums in the cell, +* note weights here are normalized absolutely, eg. to the value of the integral + Wt = MCwt*m_CePrim(iCell) + m_CeSum(iCell,1) = m_CeSum(iCell,1)+ Wt ! sum of weights + m_CeSum(iCell,2) = m_CeSum(iCell,2)+ Wt*Wt ! sum of weights squared + m_CeSum(iCell,3) = m_CeSum(iCell,3)+ 1d0 ! sum of 1 + m_CeSum(iCell,4) = MIN( m_CeSum(iCell,4),Wt) ! minium weight + m_CeSum(iCell,5) = MAX( m_CeSum(iCell,5),Wt) ! maximu weight + END ! FoamA_MakeEvent + + SUBROUTINE FoamA_GetMCvector(MCvector) !# Generation +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + DOUBLE PRECISION MCvector(*) + INTEGER k +*----------------------- + DO k=1,m_Dimen + MCvector(k) = m_MCvector(k) + ENDDO + END + + SUBROUTINE FoamA_GetMCwt(MCwt) !# Generation +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + DOUBLE PRECISION MCwt +*----------------------- + MCwt = m_MCwt + END + + SUBROUTINE FoamA_MCgenerate(funW,MCvector,MCwt) !# Generation +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Obsolete // +*// Generates point/vector MCvector with the weight MCwt // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + DOUBLE PRECISION MCvector(*),MCwt + DOUBLE PRECISION funW + EXTERNAL funW + INTEGER j +* --------------------------------------------------------------- + CALL FoamA_MakeEvent(funW) + MCwt = m_MCwt + DO j=1,m_Dimen + MCvector(j) =m_MCvector(j) + ENDDO + END !!FoamA_MCgenerate + + + SUBROUTINE FoamA_Finalize(MCresult,MCerror) !# Finalization +*////////////////////////////////////////////////////////////////////////////// +*// // +*// After MC run is completed it calculates integral and its error // +*// Also prints some information/statistics on the MC run // +*// Remember that PRIMARY controls normalization of the integration // +*////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' +* + DOUBLE PRECISION MCresult,MCerror,MCerelat + DOUBLE PRECISION Vtot,Verr,VerRela,TotPrim + INTEGER kCell,iCell +*----------------------------------------------------------------------------- + MCresult =0d0 + MCerelat =1d0 + TotPrim = 0d0 + DO kCell = 1,m_LastAc + iCell = m_ActC(kCell) + TotPrim = TotPrim +m_CePrim( iCell ) + ENDDO + IF(m_NevGen .GT. 0) THEN + MCresult = TotPrim *m_SumWt/m_NevGen + IF(m_SumWt.NE.0d0) MCerelat = m_SumWt2/m_SumWt**2 -1d0/m_NevGen ! + IF(MCerelat.GT.0d0) MCerelat = SQRT( ABS(MCerelat) ) ! + IF(MCerelat.LT.0d0) MCerelat = -SQRT( ABS(MCerelat) ) ! + ENDIF + MCerror = MCresult*MCerelat +* some test printouts + WRITE(m_Out,'(3a)') '||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||' ! + WRITE(m_Out,'(3a)') '||||||||||||||||||||||||||||||', ' FoamA_Finalize ', ! + $ '||||||||||||||||||||||||||||||' + WRITE(m_Out,'(a,2g18.9,f11.7)') 'MCresult, MCerror, Errela= ',MCresult,MCerror,MCerelat ! + WRITE(m_Out,'(a,2f11.5)') 'Minimum maximum weight = ',m_WtMin,m_WtMax ! + IF(m_NevGen .GT. 0) WRITE(m_Out,'(a,2f11.5)') 'Average wt SumWt/NevGen = ',m_SumWt/m_NevGen ! + WRITE(m_Out,'(a,i15)') 'Total of function calls = ',m_nCalls ! + WRITE(m_Out,'(a,2i15)') 'Number of cells&vertices = ',m_LastCe,m_LastVe ! + WRITE(m_Out,'(a,f12.1,2g18.9)') 'NevGen,SumWt,m_SumWt2 = ',m_NevGen,m_SumWt,m_SumWt2 ! + END ! FoamA_Finalize + + + + SUBROUTINE FoamA_GetTotPrim(TotPrim) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Total integral from cell statistics, including initialization + MC generation // +*// It can be invoked just after initialization or after MC generation // +*// Note that this estimate is distorted slightly if vertices are included in // +*// the exploration of the cells. // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + INCLUDE 'FoamA.h' + DOUBLE PRECISION TotPrim,Sum + INTEGER kCell, iCell + Sum = 0d0 + DO kCell = 1,m_LastAc + iCell = m_ActC(kCell) + Sum = Sum +m_CePrim( iCell ) + ENDDO + TotPrim=Sum + END + + + SUBROUTINE FoamA_SetnDim(nDim) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER nDim +* ------------------------------------------------- + CALL FoamA_PreInitialize + m_nDim = nDim + m_Dimen=m_nDim+m_kDim + END !!! FoamA_SetnDim + + SUBROUTINE FoamA_SetkDim(kDim) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER kDim +* ------------------------------------------------- + CALL FoamA_PreInitialize + m_kDim = kDim + m_Dimen=m_nDim+m_kDim + END !!! FoamA_SetnDim + + SUBROUTINE FoamA_GetnDim(nDim) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER nDim +* ------------------------------------------------- + nDim = m_nDim + END !!! FoamA_SetnDim + + SUBROUTINE FoamA_GetkDim(kDim) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER kDim +* ------------------------------------------------- + kDim = m_kDim + END !!! FoamA_SetkDim + + SUBROUTINE FoamA_GetnCalls(nCalls) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER nCalls +* ------------------------------------------------- + nCalls = m_nCalls + END !!! FoamA_SetnCalls + + SUBROUTINE FoamA_SetnBuf(nBuf) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER nBuf +* ------------------------------------------------- + CALL FoamA_PreInitialize + m_nBuf = nBuf + END !!! FoamA_SetnBuf + + SUBROUTINE FoamA_SetnBin(nBin) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER nBin +* ------------------------------------------------- + CALL FoamA_PreInitialize + m_nBin = nBin + END !!! FoamA_SetnBin + + SUBROUTINE FoamA_SetOut(Out) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER Out +* ------------------------------------------------- + CALL FoamA_PreInitialize + m_Out = Out + END !!! FoamA_SetOut + + SUBROUTINE FoamA_SetChat(Chat) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER Chat +* ------------------------------------------------- + CALL FoamA_PreInitialize + m_Chat = Chat + END !!! FoamA_SetChat + + SUBROUTINE FoamA_SetnSampl(nSampl) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER nSampl +* ------------------------------------------------- + CALL FoamA_PreInitialize + m_nSampl = nSampl + END !!! FoamA_SetnSampl + + SUBROUTINE FoamA_SetOptDrive(OptDrive) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER OptDrive +* ------------------------------------------------- + CALL FoamA_PreInitialize + m_OptDrive = OptDrive + END !!! FoamA_SetOptDrive + + SUBROUTINE FoamA_SetEvPerBin(EvPerBin) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER EvPerBin +* ------------------------------------------------- + CALL FoamA_PreInitialize + m_EvPerBin = EvPerBin + END !!! FoamA_SetEvPerBin + + SUBROUTINE FoamA_SetOptPeek(OptPeek) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER OptPeek +* ------------------------------------------------- + CALL FoamA_PreInitialize + m_OptPeek = OptPeek + END !!! FoamA_SetOptPeek + + SUBROUTINE FoamA_SetOptEdge(OptEdge) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER OptEdge +* ------------------------------------------------- + CALL FoamA_PreInitialize + m_OptEdge = OptEdge + END !!! FoamA_SetOptEdge + + SUBROUTINE FoamA_SetOptOrd(OptOrd) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER OptOrd +* ------------------------------------------------- + CALL FoamA_PreInitialize + m_OptOrd = OptOrd + END !!! FoamA_SetOptOrd + + + SUBROUTINE FoamA_SetOptRanIni(OptRanIni) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER OptRanIni +* ------------------------------------------------- + CALL FoamA_PreInitialize + m_OptRanIni = OptRanIni + END !!! FoamA_SetOptRanIni + + SUBROUTINE FoamA_SetOptRanLux(OptRanLux) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER OptRanLux +* ------------------------------------------------- + CALL FoamA_PreInitialize + m_OptRanLux = OptRanLux + END !!! FoamA_SetOptRanLux + + SUBROUTINE FoamA_Check(mout,level) !# Miscelaneous and debug +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Checks all pointers, It is is a usefull autodiagnostic. // +*// // +*// level=0, no printout, failures causes STOP // +*// level=1, printout, failures lead to WARNINGS only // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER mout,level + INTEGER nFailures, iCell, Dau1,Dau2, Pare, NoRefs(m_vMax), iVe,n ! + INTEGER NoEmpty, iError +* --------------------------------------------------------- + nFailures=0 + iError =0 + IF(level.EQ.1) WRITE(mout,*) + $'//////////////////////////////////////// FoamA_Checks /////////////////////////////////////////////' ! + DO iCell = 1,m_LastCe + Dau1 = m_CeDau1(iCell) + Dau2 = m_CeDau2(iCell) + Pare = m_CePare(iCell) +* checking on parents + IF(iCell.GT.1) THEN + IF(Pare.GT.m_LastCe) THEN + iError =1 + nFailures = nFailures+1 + IF(level.EQ.1) WRITE(mout,*) '##### iCell= ',iCell,' Parent out of range = ',Pare ! + ENDIF + ENDIF + IF(iCell.GT.1) THEN + IF( (Pare.NE.1) .AND. (m_CeDau1(Pare).NE.iCell) .AND. (m_CeDau2(Pare).NE.iCell) ) THEN ! + iError =2 + nFailures = nFailures+1 + IF(level.EQ.1) + $ WRITE(mout,*) '##### iCell= ',iCell,' Parent not pointing to this daughter Pare= ',Pare ! + ENDIF + ENDIF +* checking on daughters + IF( Dau1 .GT. m_LastCe ) THEN + iError =3 + nFailures = nFailures+1 + IF(level.EQ.1) WRITE(mout,*) '##### iCell= ',iCell,' First Daugter out of range Dau1= ',Dau1 ! + ENDIF + IF( Dau2 .GT.m_LastCe ) THEN + iError =4 + nFailures = nFailures+1 + IF(level.EQ.1) WRITE(mout,*) '##### iCell= ',iCell,' Second Daugter out of range Dau2= ',Dau2 ! + ENDIF + IF( Dau1.GE.1 .AND. Dau1.LE. m_LastCe) THEN + IF( m_CePare(Dau1).NE.iCell ) THEN + iError =5 + nFailures = nFailures+1 + IF(level.EQ.1) + $ WRITE(mout,*) '##### iCell= ',iCell,' First Daugter not pointing to parent Dau1= ',Dau1 ! + ENDIF + ENDIF + IF( Dau2.GE.1 .AND. Dau2.LE. m_LastCe) THEN + IF( m_CePare(Dau2).NE.iCell ) THEN + iError =6 + nFailures = nFailures+1 + IF(level.EQ.1) + $ WRITE(mout,*) '##### iCell= ',iCell,' Second Daugter not pointing to parent Dau2= ',Dau2 ! + ENDIF + ENDIF + ENDDO +* check on vertices + DO iVe = 1, m_LastVe + NoRefs(iVe)=0 + ENDDO + DO iVe = 1, m_LastVe + DO iCell = 1, m_LastCe + DO n=1,m_nDim+1 + IF( iVe .EQ. m_CeVert(iCell,n) ) NoRefs(iVe) =1 + ENDDO + ENDDO + ENDDO + DO iVe = 1, m_LastVe + IF(NoRefs(iVe).EQ.0 .AND. level.EQ.1) WRITE(mout,*) '***** Vertex no. ',iVe, ' NOT referenced!' ! + ENDDO +* Check for empty cells + NoEmpty = 0d0 + DO iCell = 1,m_LastCe + IF( m_CeStat(iCell).EQ.1 ) THEN + IF( m_CeDriv(iCell) .EQ. 0d0) NoEmpty = NoEmpty +1 + ENDIF + ENDDO + IF( NoEmpty.GT.0) THEN + WRITE(mout,*) '++++++++++ FoamA_Check: !!! WARNING!!!! Empty Cells found NoEmpty= ',NoEmpty ! + WRITE( *,*) '++++++++++ FoamA_Check: !!! WARNING!!!! Empty Cells found NoEmpty= ',NoEmpty ! + ENDIF +* summary + IF(level.EQ.1) WRITE(mout,*) '++++++++++ FoamA_Check has found total ', nFailures, ' failures ' ! + IF(level.EQ.1) WRITE(mout,*) + $'///////////////////////////////////////////////////////////////////////////////////////////////////' ! + IF(level.EQ.0 .AND. nFailures.GT.0 ) THEN + WRITE(mout,*) '++++++++++ STOP in FoamA_Check, found total ', nFailures, ' failures ' ! + WRITE(mout,*) '++++++++++ iErro= ',iError + STOP + ENDIF + END ! FoamA_Check + + + + SUBROUTINE FoamA_BufPrint(mout) !# Miscelaneous and debug +*////////////////////////////////////////////////////////////////////////////////////// +*// all cells // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER iCell,mout,active,j +* ---------------------------------------------------------------- + active =0 + WRITE(mout,'(3a)') '==============================================', ' ALL-CELLS ', + $ '==============================================' + WRITE(mout,'(3a)') + $ ' iCell Stat Pare Dau1 Dau2 kBest Xave Volume Drive TrueInteg Ver1 Ver2 ...' + DO iCell = 1, m_LastCe + WRITE(mout,'(6i6,4f11.5,20i6)') + $ iCell, m_CeStat(iCell), m_CePare(iCell), m_CeDau1(iCell), m_CeDau2(iCell), ! + $ m_CeBest(iCell), ! pointer to best division + $ m_CeXave(iCell), ! factor for Best division + $ m_CeVolu(iCell), ! Cartesian Volume + $ m_CeDriv(iCell), ! Drive + $ m_CeIntg(iCell), ! TrueInteg + $ (m_CeVert(iCell,j), j=1,m_nDim+1) ! vertices + IF(m_kDim .GT. 0 ) THEN + WRITE(mout,'(a,(50g11.6))') + $ ' HypCubs Posit&Size: ', + $ (m_CeVer1(iCell,j), j=1,m_kDim), ! position + $ (m_CeVer2(iCell,j), j=1,m_kDim) ! size + ENDIF + IF(m_CeStat(iCell).EQ.1) active = active +1 + ENDDO + WRITE(mout,*) ' All cells: ',m_LastCe, ' Active: ', active + END !! FoamA_BufPrint + + + + SUBROUTINE FoamA_BufActPrint(mout) !# Miscelaneous and debug +*////////////////////////////////////////////////////////////////////////////////////// +*// Active cells only // +*// Side=1 indicates that this cell is "side leaf" sticking out of main branch // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER iCell,mout,active,Side,Pare,j + DOUBLE PRECISION DriRat,IntgSum,DrivSum,Fact,WtMin,WtMax + DOUBLE PRECISION AveWt, Sigma, Nentry +* ---------------------------------------------------------------- + WRITE(mout,'(3a)') '==================================================', ' ACTIVE CELLS ', + $ '==================================================' + IntgSum =0d0 + DrivSum =0d0 + WtMin = 1d60 + WtMax = -1d60 + active =0 + WRITE(mout,'(2a)') ' iCell Stat Pare Dau1 Dau2', + $ ' WtMin WtMax <w> sigma/<w> Volume Drive TrueInt Ver1 Ver2 ...' ! + DO iCell = 1, m_LastCe + IF(m_CeStat(iCell).EQ.1) THEN + Nentry = m_CeSum(iCell,3) + AveWt = m_CeSum(iCell,1)/m_CeSum(iCell,3) + Sigma = DSQRT( ABS(m_CeSum(iCell,2)/Nentry - AveWt**2)) + IF(AveWt.NE.0d0) WtMin = Min( WtMin, m_CeSum(iCell,4)/AveWt) + IF(AveWt.NE.0d0) WtMax = Max( WtMax, m_CeSum(iCell,5)/AveWt) + IF(AveWt.NE.0d0) Sigma = Sigma/AveWt + WRITE(mout,'(5i5, 7f11.5 ,10i5)') + $ iCell, m_CeStat(iCell), m_CePare(iCell), m_CeDau1(iCell), m_CeDau2(iCell), ! + $ m_CeSum(iCell,4), ! minWt/AveWt + $ m_CeSum(iCell,5), ! maxWt/AveWt + $ m_CeIntg(iCell) /(m_CeDriv(iCell)+1d-100), ! average weight + $ Sigma/(AveWt+1d-100), ! sigma/AveWt + $ m_CeVolu(iCell), ! Cartesian volume + $ m_CeDriv(iCell), ! Driver Integral + $ m_CeIntg(iCell), ! True Integral + $ (m_CeVert(iCell,j), j=1,m_nDim+1) ! vertices + IF(m_kDim .GT. 0 ) THEN + WRITE(mout,'(a,(50g11.6))') + $ ' HypCubs Posit&Size: ', + $ (m_CeVer1(iCell,j), j=1,m_kDim), ! position + $ (m_CeVer2(iCell,j), j=1,m_kDim) ! size + ENDIF + IntgSum = IntgSum +m_CeIntg(iCell) + DrivSum = DrivSum +m_CeDriv(iCell) + active = active +1 + ENDIF + ENDDO + WRITE(mout,'(a,i6,a,2i6)') 'All cells: ',m_LastCe, ' Active: ', active, m_LastAc ! + WRITE(mout,'(a,2f12.5)') 'Minimum and Maximum Weight/<Wt> = ',WtMin,WtMax ! + WRITE(mout,'(a,2g20.13)') 'Total True Integral in active cells = ', IntgSum, m_CeIntg(1) ! + WRITE(mout,'(a,2g20.13)') 'Total Driver Integral in active cells = ', DrivSum, m_CeDriv(1) ! + WRITE(mout,'(a,f12.5)') 'True/Drive = ', IntgSum/DrivSum + END !! FoamA_BufActPrint + + + SUBROUTINE FoamA_VertPrint(mout) !# Miscelaneous and debug +*////////////////////////////////////////////////////////////////////////////////////// +*// all vertices // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER mout, iCell, iVe, NoRefs(m_vMax), NoRefsAc(m_vMax), k,j +* ---------------------------------------------------------------- + DO iVe = 1, m_LastVe + NoRefs(iVe)=0 + ENDDO + DO iVe = 1, m_LastVe + DO iCell = 1, m_LastCe + DO k=1,m_nDim+1 + IF( iVe .EQ. m_CeVert(iCell,k) ) NoRefs(iVe) =NoRefs(iVe) +1 ! + IF(m_CeStat(iCell) .EQ. 1) THEN + IF( iVe .EQ. m_CeVert(iCell,k) ) NoRefsAc(iVe) =NoRefsAc(iVe) +1 ! + ENDIF + ENDDO + ENDDO + ENDDO + WRITE(mout,*) '=====================ALL VERTICES===================================' ! + WRITE(mout,*) ' iVert NoRefs NoRefsAc Vertex Componets ' ! + DO iVe = 1, m_LastVe + WRITE(mout,'(i6,2i10,5f17.10)') iVe,NoRefs(iVe),NoRefsAc(iVe), (m_VerX(iVe,j),j=1,m_nDim) ! + ENDDO + END !! VertPrint + + + + SUBROUTINE FoamA_PltBegin(ltx) !# Miscelaneous and debug +*////////////////////////////////////////////////////////////////////////////////////// +*// DEBUG // +*// Initialization, write header of TeX file // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER ltx +*--------------------------------------------------- + m_ltx = ABS(ltx) + IF(ltx .GT. 0 ) THEN + WRITE(m_ltx,'(2A)') '\\newpage' + ELSE +*------------------------------! +* Header +*------------------------------! + WRITE(m_ltx,'(A)') '\\documentclass[12pt]{article}' + WRITE(m_ltx,'(A)') '\\usepackage{color}' !<-for colors!!! + WRITE(m_ltx,'(A)') '\\usepackage{epic}' !<-for extended ploting + WRITE(m_ltx,'(A)') '\\textwidth = 16cm' + WRITE(m_ltx,'(A)') '\\textheight = 18cm' + WRITE(m_ltx,'(A)') '\\pagestyle{empty}' + WRITE(m_ltx,'(A)') '\\begin{document}' + WRITE(m_ltx,'(A)') ' ' + WRITE(m_ltx,'(A)') '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%' ! + WRITE(m_ltx,'(A)') '\\begin{figure}[!ht]' + WRITE(m_ltx,'(A)') '\\centering' +*------------------------------! +* Frames and labels +*------------------------------! + WRITE(m_ltx,'(A)') '% =========== big frame, title etc. =======' + WRITE(m_ltx,'(A)') '\\setlength{\\unitlength}{0.1mm}' + WRITE(m_ltx,'(A)') '\\begin{picture}(1600,1600)' + WRITE(m_ltx,'(A)') '\\put(0,0){\\framebox(1600,1600){ }}' + ENDIF + END + + SUBROUTINE FoamA_PltVert !# Miscelaneous and debug +*////////////////////////////////////////////////////////////////////////////////////// +*// DEBUG // +*// Plot all vertices // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER iCell, iVe, NoRefs(m_vMax), NoRefsAc(m_vMax), k,j +*------------------------------------------------------------------------------ +* Mark plots for plots + CHARACTER*62 star,diamond,circle,ring,times,disc,plus,box,dot + PARAMETER (diamond ='\\makebox(0,0){\\Large $\\diamond$}') + PARAMETER (star ='\\makebox(0,0){\\Large $\\star$}') + PARAMETER (circle ='\\circle{30}') + PARAMETER (ring ='\\circle{20}') + PARAMETER (times ='\\makebox(0,0){\\Large $\\times$}') + PARAMETER (disc ='\\circle*{20}') + PARAMETER (plus ='\\makebox(0,0){\\Large $+$}') + PARAMETER (box ='\\makebox(0,0){\\Large $\\Box$}') !!! does not work??? + PARAMETER (dot ='\\circle*{10}') +*------------------------------------------------------------------------------ + CHARACTER*62 chmark + INTEGER kx,ky +*--------------------------------------------------------------------------------------------- + IF(m_nDim.EQ.2) THEN +* Count references of vertices + DO iVe = 1, m_LastVe + NoRefs(iVe)=0 + ENDDO + DO iVe = 1, m_LastVe + DO iCell = 1, m_LastCe + DO k=1,m_nDim+1 + IF( iVe .EQ. m_CeVert(iCell,k) ) NoRefs(iVe) =NoRefs(iVe) +1 ! + IF(m_CeStat(iCell) .EQ. 1) THEN + IF( iVe .EQ. m_CeVert(iCell,k) ) NoRefsAc(iVe) =NoRefsAc(iVe) +1 ! + ENDIF + ENDDO + ENDDO + ENDDO +*--------------------------------------------------------------------------------------------- +* Begin frame + WRITE(m_ltx,'(A)') '% =========== Vertices Vertices ===========' + WRITE(m_ltx,'(A)') '\\put(0,0){\\begin{picture}( 1600,1600)' ! + WRITE(m_ltx,'(A)') '\\put(0,0){\\framebox( 1600,1600){ }}' ! +* Plotting symbol + IF(m_LastVe.LE.250) THEN + WRITE(m_ltx,'(10A)') '\\newcommand{\\VD}[2]{\\put(#1,#2){',disc,'}}' ! + WRITE(m_ltx,'(10A)') '\\newcommand{\\VS}[2]{\\put(#1,#2){',star,'}}' ! + ELSE + WRITE(m_ltx,'(10A)') '\\newcommand{\\VD}[2]{\\put(#1,#2){',dot,'}}' ! + WRITE(m_ltx,'(10A)') '\\newcommand{\\VS}[2]{\\put(#1,#2){',dot,'}}' ! + ENDIF + WRITE(m_ltx,'(10A)') + $ '\\newcommand{\\VN}[3]{\\put(#1,#2){\\makebox(0,0)[b]{\\hbox{\\color{red}\\scriptsize #3}}}}' ! + DO iVe = 1, m_LastVe + kx = m_VerX(iVe,1)*1600 + ky = m_VerX(iVe,2)*1600 +***** WRITE(*,*) NoRefs(iVe),NoRefsAc(iVe) + IF( NoRefsAc(iVe).LE.2 ) THEN + WRITE(m_ltx,'(A,I5,A,I5,A)') '\\VD{',kx,'}{',ky,'}' + ELSE + WRITE(m_ltx,'(A,I5,A,I5,A)') '\\VS{',kx,'}{',ky,'}' + ENDIF + IF(m_LastVe.LE.250) WRITE( m_ltx,'(A,I5,A,I5,A,I5,A)') '\\VN{',kx-8,'}{',ky+12,'}{',iVe,'}' ! + ENDDO +* Close frame + WRITE(m_ltx,'(A)') '\\end{picture}}' + WRITE(m_ltx,'(A)') '% ============== End Vertices ===========' + ENDIF +*--------------------------------------------------------------------------------------------- + END !! VertPrint + + + SUBROUTINE FoamA_PltCell !# Miscelaneous and debug +*////////////////////////////////////////////////////////////////////////////////////// +*// DEBUG // +*// Plot all simplectic cells // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' + INTEGER iCell,active,j + INTEGER iV1,iV2,iV3 + INTEGER kx1,ky1,kx2,ky2,kx3,ky3,kx,ky,lx,ly +*--------------------------------------------------------------------------------------------- +* Rectangular 2-dim FOAM +*--------------------------------------------------------------------------------------------- + IF(m_kDim.EQ.2) THEN + WRITE(m_ltx,'(A)') '% =========== Vertices Vertices ===========' + WRITE(m_ltx,'(A)') '\\put(0,0){\\begin{picture}( 1600,1600)' ! + DO iCell = 2, m_LastCe + IF(m_CeStat(iCell).EQ.1) THEN ! Only active cells + kx = m_CeVer1(iCell,1)*1600 + ky = m_CeVer1(iCell,2)*1600 + lx = m_CeVer2(iCell,1)*1600 + ly = m_CeVer2(iCell,2)*1600 + kx1 = kx+lx/2 + ky1 = ky+ly/2 +* cell rectangle + WRITE(m_ltx,'(A,I5,A,I5,A,I5,A,I5,A)') + $ '\\put(',kx,',',ky,'){\\color{black}\\framebox(',lx,',',ly,'){ }}' ! +*** WRITE(m_ltx,'(A,I5,A,I5,A,I5,A,I5,A)') +*** $ '\\put(',kx,',',ky,'){\\color{black}\\dashbox{7}(',lx,',',ly,'){ }}' ! +* cell number + IF(m_LastCe.LE.250) WRITE(m_ltx,'(A,I4,A,I4,A,I4,A)') + $ '\\put(',kx1,',',ky1,'){\\makebox(0,0)[b]{\\hbox{\\small\\color{magenta}\\scriptsize ',iCell,' }}}' ! + ENDIF + ENDDO +* Close frame + WRITE(m_ltx,'(A)') '\\end{picture}}' + WRITE(m_ltx,'(A)') '% ============== End Vertices ===========' + ENDIF +*--------------------------------------------------------------------------------------------- +* Triangulare 2-dim FOAM +*--------------------------------------------------------------------------------------------- + IF(m_nDim.EQ.2) THEN + WRITE(m_ltx,'(A)') '% =========== Vertices Vertices ===========' + WRITE(m_ltx,'(A)') '\\put(0,0){\\begin{picture}( 1600,1600)' ! + DO iCell = 2, m_LastCe + iV1=m_CeVert(iCell,1) + iV2=m_CeVert(iCell,2) + iV3=m_CeVert(iCell,3) + kx1 = m_VerX(iV1,1)*1600 + ky1 = m_VerX(iV1,2)*1600 + kx2 = m_VerX(iV2,1)*1600 + ky2 = m_VerX(iV2,2)*1600 + kx3 = m_VerX(iV3,1)*1600 + ky3 = m_VerX(iV3,2)*1600 + kx= (kx1+kx2+kx3)/3 + ky= (ky1+ky2+ky3)/3 + IF(m_CeStat(iCell).EQ.1) THEN +*** WRITE(*,*) iCell,iV1,iV2,iV3 + WRITE(m_ltx,'(A,I4,A,I4,A,I4,A,I4,A)') '\\drawline(',kx1,',',ky1,')(',kx2,',',ky2,')' ! + WRITE(m_ltx,'(A,I4,A,I4,A,I4,A,I4,A)') '\\drawline(',kx2,',',ky2,')(',kx3,',',ky3,')' ! + WRITE(m_ltx,'(A,I4,A,I4,A,I4,A,I4,A)') '\\drawline(',kx3,',',ky3,')(',kx1,',',ky1,')' ! + IF(m_LastCe.LE.250) WRITE(m_ltx,'(A,I4,A,I4,A,I4,A)') + $ '\\put(',kx,',',ky,'){\\makebox(0,0)[b]{\\hbox{\\color{magenta}\\scriptsize ',iCell,' }}}' ! + ENDIF + ENDDO +* Close frame + WRITE(m_ltx,'(A)') '\\end{picture}}' + WRITE(m_ltx,'(A)') '% ============== End Vertices ===========' + ENDIF + END !! FoamA_BufPrint + + SUBROUTINE FoamA_PltMisc !# Miscelaneous and debug +*////////////////////////////////////////////////////////////////////////////////////// +*// Miscelaneous // +*// Plot of frame for 2-dim void testing function // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' +* + WRITE(m_ltx,'(A)') '\\put(80,80){\\color{blue}\\dashbox{7}( 1440,1440){ }}' ! 5% edge band + END !! FoamA_PltMisc + + SUBROUTINE FoamA_PltEnd !# Miscelaneous and debug +*////////////////////////////////////////////////////////////////////////////////////// +*// DEBUG // +*// Close Tex file with plot // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'FoamA.h' +* + WRITE(m_ltx,'(A)') '\\end{picture}' + WRITE(m_ltx,'(A)') '\\end{figure}' + WRITE(m_ltx,'(A)') '\\end{document}' + CLOSE(m_ltx) + END + +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// diff --git a/Foam/FoamA.h b/Foam/FoamA.h new file mode 100644 index 0000000..eac42bd --- /dev/null +++ b/Foam/FoamA.h @@ -0,0 +1,97 @@ +*/////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Pseudoclass FoamA // +*// // +*/////////////////////////////////////////////////////////////////////////////////////// +* +* + INTEGER m_nBinMax + PARAMETER ( m_nBinMax =256 ) + INTEGER m_NdiMax + PARAMETER ( m_NdiMax = 5 ) ! maximum dimension for siplices + INTEGER m_KdiMax + PARAMETER ( m_KdiMax = 15 ) ! maximum dimension for hypercubics + INTEGER m_DimMax + PARAMETER ( m_DimMax = m_NdiMax+ m_KdiMax ) ! maximum total dimension + INTEGER m_nBufMax + PARAMETER ( m_nBufMax = 10000 ) ! maximum buffer length for all cells + INTEGER m_vMax + PARAMETER ( m_vMax = 10000 ) ! maximum number of vertices + INTEGER m_cMax + PARAMETER ( m_cMax = 10000 ) ! maximum number of (active) Cells + INTEGER m_sMax + PARAMETER ( m_sMax = 5 ) ! statistics of the weight + INTEGER m_NpairMax + PARAMETER ( m_NpairMax = m_NdiMax*(m_NdiMax+1)/2 ) ! no. of pairs of vertices + INTEGER m_NdiviMax + PARAMETER ( m_NdiviMax = m_NpairMax+m_KdiMax ) ! Total no. of division samplings +* + INTEGER m_CeStat, m_CePare, m_CeDau1, m_CeDau2, m_CeSamp, m_CeVert, m_CeBest ! + DOUBLE PRECISION m_CeIntg, m_CeSum, m_CeDriv, m_CePrim, m_CePrCu, m_CeXave, m_CeVolu ! + INTEGER m_LastCe, m_LastAc, m_nBuf, m_nBin, m_LastVe ! + INTEGER m_ActC + DOUBLE PRECISION m_VerX, m_VolTot ! + INTEGER m_Ndim, m_Kdim, m_Dimen + INTEGER m_Chat, m_Out, m_nSampl, m_Ncalls ! + INTEGER m_OptPeek, m_OptDrive, m_OptEdge, m_OptOrd, m_EvPerBin, m_OptRanIni, m_OptRanLux! + DOUBLE PRECISION m_Drive, m_SumWt, m_SumWt2, m_NevGen, m_WtMax, m_WtMin ! + DOUBLE PRECISION m_MCresult, m_MCerror, m_MCwt, m_MCvector ! + DOUBLE PRECISION m_CeVer1, m_CeVer2 + INTEGER m_Ltx, m_MagicInit +* + COMMON /c_FoamA/ + $ m_CeStat(m_nBufMax), ! Cell member: status=0 inactive, =1 active + $ m_CePare(m_nBufMax), ! Cell member: parent cell pointer + $ m_CeDau1(m_nBufMax), ! Cell member: daughter1 cell pointer + $ m_CeDau2(m_nBufMax), ! Cell member: daughter2 cell pointer + $ m_CeSamp(m_nBufMax), ! Cell member: No of MC events in exploration + $ m_CeVert(m_nBufMax,m_NdiMax+1),! Cell member: simplex vertex pointers + $ m_CeVer1(m_nBufMax,m_KdiMax), ! Cell member: hypercubic vertex position + $ m_CeVer2(m_nBufMax,m_KdiMax), ! Cell member: hypercubic vertex size + $ m_CeIntg(m_nBufMax), ! Cell member: integral estimator + $ m_CeDriv(m_nBufMax), ! Cell member: Drive integral estimate, from build-up + $ m_CePrim(m_nBufMax), ! Cell member: Primary integral estimate, MC generation + $ m_CePrCu(0:m_nBufMax), ! Cell member: Cumulative Primary + $ m_CeVolu(m_nBufMax), ! Cell member: Cartesian volume + $ m_CeXave(m_nBufMax), ! Cell member: Average best X + $ m_CeBest(m_nBufMax), ! Cell member: Best pair of vertices, pointer + $ m_CeSum( m_nBufMax,m_sMax), ! Cell member: weight summaries + $ m_VerX( m_vMax, m_NdiMax), ! List of all VERTEX positions + $ m_ActC(m_cMax), ! List of all pointers to ACTIVE cells + $ m_VolTot, ! Estimate of Volume total, without error + $ m_Drive, ! M.C. generation Drive value of integral + $ m_SumWt, ! M.C. generation sum of Wt + $ m_SumWt2, ! M.C. generation sum of Wt**2 + $ m_NevGen, ! M.C. generation sum of 1d0 + $ m_WtMax, ! M.C. generation maximum wt + $ m_WtMin, ! M.C. generation minimum wt + $ m_MCresult, ! M.C. generation Final value of INTEGRAL + $ m_MCerror, ! M.C. generation Final walue of ERROR + $ m_MCwt, ! M.C. generation current event weight + $ m_MCvector(m_DimMax),! M.C. generated vector, dimension=m_NdiMax+ m_KdiMax + $ m_Ndim, ! dimension of the siplices + $ m_Kdim, ! dimension of the hypercubics + $ m_Dimen, ! total dimension of the problem =m_Ndim+m_Kdim + $ m_nBuf, ! Actual dynamic lenth of the buffer m_nBuf<m_nBufMax + $ m_nBin, ! No of bins in histogram for cell exploration/division + $ m_LastVe, ! Last vertex + $ m_LastAc, ! Last active cell + $ m_LastCe, ! Last cell in buffer + $ m_nSampl, ! No. of sampling when dividing cell + $ m_Ncalls, ! No. of function calls, total + $ m_OptPeek, ! Flag for random ceel choice: Peek =0,1 for maximum, + $ m_OptDrive, ! Flag for type of Drive =0,1,2 for TrueVol,Sigma,WtMax + $ m_OptEdge, ! Flag which decides whether vertices are included in the sampling + $ m_OptOrd, ! Flag =0 default, entire domain is hyp-cubic, =1 it is simplex + $ m_EvPerBin, ! Maximum effective eevents per bin, saves CPU, =0 inactive + $ m_OptRanIni, ! Flag =0 default, =1 r.n. generator not initialized in PianA + $ m_OptRanLux, ! Flag =-1,0,1,2,3,4 r.n. generator level + $ m_Chat, ! Flag for chat level in output, Chat=1 normal level + $ m_Ltx, ! Latex Output unit, for debug + $ m_Out, ! Output unit + $ m_MagicInit ! Magic cookie of initialization (global variable) +* + SAVE /c_FoamA/ +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// diff --git a/Foam/GLK.f b/Foam/GLK.f new file mode 100644 index 0000000..3c4295f --- /dev/null +++ b/Foam/GLK.f @@ -0,0 +1,4565 @@ +*////////////////////////////////////////////////////////////////////////////// +*// // +*// Pseudo-Class GLK // +*// // +*////////////////////////////////////////////////////////////////////////////// +* +* +*////////////////////////////////////////////////////////////////////////////// +*// ======================================================================= // +*// ========================== _GLK_ ==================================== // +*// ========== General Library of histogramming/ploting utilities ========= // +*// ========== It is similar but not identical to HBOOK and HPLOT ========= // +*// ======================================================================= // +*////////////////////////////////////////////////////////////////////////////// +*// // +*// Version: 1.30 // +*// Last correction: January 1999 // +*// // +*////////////////////////////////////////////////////////////////////////////// +*// +*// ******************************************************************** +*// * History of the package: * +*// * MINI-HBOOK writen by S. Jadach, Rutherford Lab. 1976 * +*// * Rewritten December 1989 (S.J.) and in 1997 (S.J.) * +*// ******************************************************************** +*// +*// Installation remarks: +*// (1) printing backslash character depends on F77 compilator, +*// user may need to modify definition of BS variable in HPLCAP +*// +*// Usage of the program: +*// (1) In many cases names and meanings of programs and their +*// parameters is the same as in original CERN libraries HBOOK +*// (2) Unlike to original HBOOK and HPLOT, all floating parameters +*// of the programs are in DOUBLE PRECISION ! +*// (3) GLK stores histograms in DOUBLE PRECISION and always with +*// errors. DOUBLE PRECISION storage is essential for 10**7 events statistics! +*// (4) Output from GLK is a picture recorded as regular a LaTeX file +*// with frame and curves/histograms, it is easy to change fonts +*// add captions, merge plots, etc. by normal editing. Finally, +*// picture may be inserted in any place into LaTeX source of the +*// article. +*// (5) WARNING: two-dimensional histograms are not active!!! +*// +*////////////////////////////////////////////////////////////////////////////// +*// List of procedures, non-user subprograms in brackets // +*////////////////////////////////////////////////////////////////////////////// +* SUBR/FUNC 1 PAR. 2 PAR. 3 PAR. 4 PAR. 5 PAR. 6 PAR. +* ==================================================================== +* (GLK_Initialize) ---- ---- ---- ---- ---- ---- +* GLK_hi INT INT ---- ---- ---- ---- +* GLK_hie INT INT ---- ---- ---- ---- +* GLK_Fil1 INT DBL DBL ---- ---- ---- +* GLK_Fil2 INT DBL DBL DBL ---- ---- +* GLK_Book1 INT CHR*80 INT DBL DBL ---- +* (GLK_OptOut) INT INT INT INT INT INT +* (L.F. GLK_Exist) INT ----- ------ ---- ---- ---- +* GLK_Idopt INT CHR*4 ----- ---- ---- ---- +* GLK_BookFun1 INT CHR*80 INT DBL DBL DP-FUNC +* GLK_Idopt INT CHR*4 ----- ---- ---- ---- +* GLK_Book2 INT CHR*80 INT DBL DBL INT DBL DBL +* GLK_PrintAll --- ---- ---- ---- ---- ---- +* GLK_SetNout INT ---- ---- ---- ---- ---- +* GLK_Print INT ---- ---- ---- ---- ---- +* GLK_Operat INT CHR*1 INT INT DBL DBL +* GLK_Hinbo1 INT CHR*8 INT DBL DBL ---- +* GLK_Unpak INT DBL(*) CHR*(*) INT --- ---- +* GLK_Pak INT DBL(*) ---- ---- --- ---- +* GLK_Pake INT DBL(*) ---- ---- --- ---- +* GLK_Range1 INT DBL DBL ---- --- ---- +* GLK_Hinbo2 INT INT DBL DBL INT DBL DBL +* GLK_Ymaxim INT DBL ---- ---- --- ---- +* GLK_Yminim INT DBL ---- ---- --- ---- +* GLK_Reset INT CHR*(*) ---- ---- --- ---- +* GLK_Delet INT ---- ---- ---- ---- ---- +* (GLK_Copch) CHR*80 CHR*80 ---- ---- ---- ---- +* (GLK_hadres) INT INT ---- ---- ---- ---- +* GLK_Hrfile INT CHR*(*) CHR*(*) ---- ---- ---- +* GLK_Hrout INT INT CHR*8 ---- ---- ---- +* GLK_Hrin INT INT INT ---- ---- ---- +* GLK_Hrend CHR*(*) ---- ---- ---- ---- ---- +* ******************* HPLOT entries ****************** +* GLK_PlInt INT ---- ---- ---- ---- ---- +* GLK_PlCap INT ---- ---- ---- ---- ---- +* GLK_PlEnd ---- ---- ---- ---- ---- ---- +* GLK_Plot INT CHR*1 CHR*1 INT ---- ---- +* (GLK_Plfram1) INT INT INT ---- ---- ---- +* (GLK_SAxisX) INT DBL DBL INT DBL ---- +* (GLK_SAxisY) INT DBL DBL INT DBL ---- +* (GLK_PlHist) INT INT DBL DBL INT INT +* (GLK_PlHis2) INT INT DBL DBL INT INT +* (GLK_PlCirc) INT INT INT DBL DBL DBL +* (GLK_aprof) DBL INT DBL ---- ---- ---- +* GLK_PlSet INT DBL ---- ---- ---- ---- +* GLK_PlTitle INT CHR*80 ---- ---- ---- ---- +* ******************* WMONIT entries ****************** +* GLK_WtMon INT ??? +* ******************************************************************* +* END OF TABLE +* ******************************************************************* +* Map of memory for single histogram +* ---------------------------------- +* (1-7) Header +* ist +1 mark 9999999999999 +* ist +2 mark 9d12 + id*10 + 9 +* ist +3 iflag1 9d12 + iflag1*10 +9 +* ist +4 iflag2 9d12 + iflag2*10 +9 +* ist +5 scamin minimum y-scale +* ist +6 scamax maximum y-scale +* ist +7 jdlast address of the next histogram +* from previous history of calls (see hadres) +* ---------------------------------- +* Binning size informations +* ---------------------------------- +* One dimensional histogram Two dimensional histog. +* ------------------------- ---------------------- +* (8-11) Binning information (8-15) Binning information +* ist2 = ist+7 +* ist2 +1 NCHX ist2 +5 NCHY +* ist2 +2 XL ist2 +6 YL +* ist2 +3 XU ist2 +7 YU +* ist2 +4 FACTX ist2 +8 FACTY +* +* ---------------------------------- +* All kind of sums and maxwt +* ---------------------------------- +* One dimensional histogram Two dimensional histog. +* ------------------------- ---------------------- +* (12-24) Under/over-flow average x (16-24) +* ist3 = ist+11 +* ist3 +1 Underflow All nine combinations +* ist3 +2 Normal (U,N,O) x (U,N,O) +* ist3 +3 Overflow sum wt only (no errors) +* ist3 +4 U sum w**2 +* ist3 +5 N sum w**2 +* ist3 +6 O sum w**2 +* ist3 +7 Sum 1 +* ist3 +8 Sum wt*x +* ist3 +9 Sum wt*x*x +* ist3 +10 nevzer (GLK_WtMon) +* ist3 +11 nevove (GLK_WtMon) +* ist3 +12 nevacc (GLK_WtMon) +* ist3 +13 maxwt (GLK_WtMon) +* ---------------------------------- +* Content of bins including errors +* ---------------------------------- +* (25 to 24+2*nchx) (25 to 24 +nchx*nchy) +* sum wt and sum wt**2 sum wt only (no errors) +* ---------------------------------------------------------------- +*////////////////////////////////////////////////////////////////////////////// + + SUBROUTINE GLK_Initialize +* ************************* +* First Initialization called from may routines +* ************************************* + IMPLICIT NONE +*---------------------------------------------------------------------- + INCLUDE 'GLK.h' + SAVE +*---------------------------------------------------------------------- +* Note that backslash definition is varying from one +* instalation/compiler to another, you have to figure out by yourself +* how to fill backslash code into m_BS +ccc CHARACTER*1 BBS1 +ccc DATA BBS1 /'\\'/ ! IBM or HP with 'f77 +B ' +ccc CHARACTER*1 BBS2 +ccc DATA BBS2 /1H\ / ! HP f77 with standard options +*----------------------------------------------- + INTEGER init,i,j,k + DATA init /0/ +*----------------------------------------------- + IF(init .NE. 0) RETURN + init=1 +* default output unit + m_out=16 + m_length=0 +* color + m_KeyCol=0 +* table range + m_KeyTbr = 0 + DO k=1,3 + m_TabRan(k)=1 + ENDDO +* labels for 1-st col of table + m_KeyTbl = 0 + DO j=1,m_MaxNlab + DO k=1,32 + m_TabLab(j)(k:k)=' ' + ENDDO + ENDDO +* + DO k=1,80 + m_Color(k:k)=' ' + ENDDO + m_Color(1:1)='%' +* + DO i=1,m_idmax + DO k=1,3 + m_index(i,k)=0 + ENDDO + DO k=1,80 + m_titlc(i)(k:k)=' ' + ENDDO + ENDDO + DO k=1,m_LenmB + m_b(k)=0d0 + ENDDO +*---------------------------------------------------------------------- +** m_BS = BBS1 ! IBM or HP with 'f77 +B ' +** m_BS = BBS2 ! HP standard options + m_BS = '\\' ! +*---------------------------------------------------------------------- + END + + SUBROUTINE GLK_Flush +* ******************** +* FLUSH memory, all histos erased! +* ************************************* + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER i,k +*------------------------------------------------ + CALL GLK_Initialize + m_length=0 + DO i=1,m_idmax + DO k=1,3 + m_index(i,k)=0 + ENDDO + DO k=1,80 + m_titlc(i)(k:k)=' ' + ENDDO + ENDDO + DO k=1,m_LenmB + m_b(k)=0d0 + ENDDO + END + + LOGICAL FUNCTION GLK_Exist(id) +* ****************************** +* this function is true when id exists !!!! +* *************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id,lact +*------------------------------------------------ + CALL GLK_hadres(id,lact) + GLK_Exist = lact .NE. 0 +*** IF(GLK_Exist) WRITE(6,*) 'GLK_Exist: does ID,lact=',id,lact +*** IF(.not.GLK_Exist) write(6,*) 'GLK_Exist: doesnt ID,lact=',id,lact + END + + + SUBROUTINE GLK_SetBin(id,ib,xb) +*////////////////////////////////////////////////// +*// Setting out bin content S.J. 20 apr 2000 +*////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id,ib + DOUBLE PRECISION xb + INTEGER ist,ist2,ist3,iflag2,ityphi,nch,idmem,lact + SAVE idmem + DATA idmem / -1256765/ +*------------------------------------------------------ + IF(id .EQ. idmem) goto 100 + idmem=id + CALL GLK_hadres(id,lact) ! some checks, not repeated if id the same as previously + IF(lact .EQ. 0) THEN + CALL GLK_Stop1(' GLK_hi: nonexisting histo id=',id) + ENDIF + ist = m_index(lact,2) + ist2 = ist+7 + ist3 = ist+11 + iflag2 = nint(m_b(ist+4)-9d0-9d12)/10 ! checking if histo is of proper type + ityphi = mod(iflag2,10) + IF(ityphi .NE. 1 .AND. ityphi.NE.3) THEN + CALL GLK_Stop1(' GLK_hi: 1-dim histos only !!! id=',id) + ENDIF + 100 CONTINUE + nch = nint(m_b(ist2+1)) + IF(ib .EQ. 0) THEN ! underflow + m_b(ist3 +1) = xb + ELSEIF(ib .GE. 1.and.ib .LE. nch) THEN ! normal bin + m_b(ist +m_buf1+ib) = xb + ELSEIF(ib .EQ. nch+1) THEN ! overflow + m_b(ist3 +3) = xb + ELSE + CALL GLK_Stop1('+++++ GLK_SetBin: wrong binning id=',id) + ENDIF + END + + SUBROUTINE GLK_SetErr(id,ib,xe) +*////////////////////////////////////////////////////// +*// getting out error of the bin, s.j. 20 apr 2000 // +*////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + DOUBLE PRECISION xe + INTEGER ist,ist2,ist3,iflag2,ityphi,nch,lact,ib,id + SAVE idmem + INTEGER idmem + DATA idmem / -1256765/ +*--------------------------------------------------------- + IF(id .EQ. idmem) goto 100 + idmem=id + CALL GLK_hadres(id,lact) ! some checks, not repeated if id the same as previously + IF(lact .EQ. 0) THEN + CALL GLK_Stop1(' GLK_hie: nonexisting histo id=',id) + ENDIF + ist = m_index(lact,2) + ist2 = ist+7 + ist3 = ist+11 + iflag2 = nint(m_b(ist+4)-9d0-9d12)/10 ! checking if histo is of proper type + ityphi = mod(iflag2,10) + IF(ityphi .NE. 1) THEN + CALL GLK_Stop1(' GLK_hie: 1-dim histos only !!! id=',id) + ENDIF + 100 CONTINUE + nch = m_b(ist2+1) + IF(ib .EQ. 0) THEN ! underflow + m_b(ist3 +4) = xe**2 + ELSEIF(ib .GE. 1.and.ib .LE. nch) THEN ! normal bin, error content + m_b(ist+m_buf1+nch+ib) = xe**2 + ELSEIF(ib .EQ. nch+1) THEN ! overflow + m_b(ist3 +6) = xe**2 + ELSE + CALL GLK_Stop1('+++GLK_SetErr: wrong binning id= ',id) + ENDIF + END + + + SUBROUTINE GLK_GetBin(id,ib,xb) +*////////////////////////////////////////////////// +*// getting out bin content S.J. 20 apr 2000 +*////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id,ib + DOUBLE PRECISION xb + INTEGER ist,ist2,ist3,iflag2,ityphi,nch,idmem,lact + SAVE idmem + DATA idmem / -1256765/ +*------------------------------------------------------ + IF(id .EQ. idmem) goto 100 + idmem=id + CALL GLK_hadres(id,lact) ! some checks, not repeated if id the same as previously + IF(lact .EQ. 0) THEN + CALL GLK_Stop1(' GLK_hi: nonexisting histo id=',id) + ENDIF + ist = m_index(lact,2) + ist2 = ist+7 + ist3 = ist+11 + iflag2 = nint(m_b(ist+4)-9d0-9d12)/10 ! checking if histo is of proper type + ityphi = mod(iflag2,10) + IF(ityphi .NE. 1 .AND. ityphi.NE.3) THEN + CALL GLK_Stop1(' GLK_hi: 1-dim histos only !!! id=',id) + ENDIF + 100 CONTINUE + nch = nint(m_b(ist2+1)) + IF(ib .EQ. 0) THEN ! underflow + xb = m_b(ist3 +1) + ELSEIF(ib .GE. 1.and.ib .LE. nch) THEN ! normal bin + xb = m_b(ist +m_buf1+ib) + ELSEIF(ib .EQ. nch+1) THEN ! overflow + xb = m_b(ist3 +3) + ELSE + CALL GLK_Stop1('+++++ GLK_GetBin: wrong binning id=',id) + ENDIF + END + + SUBROUTINE GLK_GetErr(id,ib,xe) +*////////////////////////////////////////////////////// +*// getting out error of the bin, s.j. 20 apr 2000 // +*////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + DOUBLE PRECISION xe + INTEGER ist,ist2,ist3,iflag2,ityphi,nch,lact,ib,id + SAVE idmem + INTEGER idmem + DATA idmem / -1256765/ +*--------------------------------------------------------- + IF(id .EQ. idmem) goto 100 + idmem=id + CALL GLK_hadres(id,lact) ! some checks, not repeated if id the same as previously + IF(lact .EQ. 0) THEN + CALL GLK_Stop1(' GLK_hie: nonexisting histo id=',id) + ENDIF + ist = m_index(lact,2) + ist2 = ist+7 + ist3 = ist+11 + iflag2 = nint(m_b(ist+4)-9d0-9d12)/10 ! checking if histo is of proper type + ityphi = mod(iflag2,10) + IF(ityphi .NE. 1) THEN + CALL GLK_Stop1(' GLK_hie: 1-dim histos only !!! id=',id) + ENDIF + 100 CONTINUE + nch = m_b(ist2+1) + IF(ib .EQ. 0) THEN ! underflow + xe= DSQRT( DABS(m_b(ist3 +4))) + ELSEIF(ib .GE. 1.and.ib .LE. nch) THEN ! normal bin, error content + xe= DSQRT( DABS(m_b(ist+m_buf1+nch+ib)) ) + ELSEIF(ib .EQ. nch+1) THEN ! overflow + xe= DSQRT( DABS(m_b(ist3 +6))) + ELSE + CALL GLK_Stop1('+++GLK_GetErr: wrong binning id= ',id) + ENDIF + END + + + DOUBLE PRECISION FUNCTION GLK_hi(id,ib) +* ********************** +* getting out bin content S.J. 18-Nov. 90 +* *********************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id,ib +* locals + INTEGER ist,ist2,ist3,iflag2,ityphi,nch,idmem,lact + SAVE idmem + DATA idmem / -1256765/ +*------------------------------------------------------ + IF(id .EQ. idmem) goto 100 + idmem=id + CALL GLK_hadres(id,lact) ! some checks, not repeated if id the same as previously + IF(lact .EQ. 0) THEN + CALL GLK_Stop1(' GLK_hi: nonexisting histo id=',id) + ENDIF + ist = m_index(lact,2) + ist2 = ist+7 + ist3 = ist+11 + iflag2 = nint(m_b(ist+4)-9d0-9d12)/10 ! checking if histo is of proper type + ityphi = mod(iflag2,10) + IF(ityphi .NE. 1 .AND. ityphi.NE.3) THEN + CALL GLK_Stop1(' GLK_hi: 1-dim histos only !!! id=',id) + ENDIF + 100 CONTINUE + nch = nint(m_b(ist2+1)) + IF(ib .EQ. 0) THEN ! underflow + GLK_hi= m_b(ist3 +1) + ELSEIF(ib .GE. 1.and.ib .LE. nch) THEN ! normal bin + GLK_hi= m_b(ist +m_buf1+ib) + ELSEIF(ib .EQ. nch+1) THEN ! overflow + GLK_hi= m_b(ist3 +3) + ELSE + CALL GLK_Stop1(' GLK_hi: wrong binning id=',id) + ENDIF + END + + DOUBLE PRECISION FUNCTION GLK_hie(id,ib) +* ************************ +* getting out error of the bin, s.j. 18-nov. 90 +* *********************************** + IMPLICIT NONE + INCLUDE 'GLK.h' +* locals + INTEGER ist,ist2,ist3,iflag2,ityphi,nch,lact,ib,id + SAVE idmem + INTEGER idmem + DATA idmem / -1256765/ +*--------------------------------------------------------- + IF(id .EQ. idmem) goto 100 + idmem=id + CALL GLK_hadres(id,lact) ! some checks, not repeated if id the same as previously + IF(lact .EQ. 0) THEN + CALL GLK_Stop1(' GLK_hie: nonexisting histo id=',id) + ENDIF + ist = m_index(lact,2) + ist2 = ist+7 + ist3 = ist+11 + iflag2 = nint(m_b(ist+4)-9d0-9d12)/10 ! checking if histo is of proper type + ityphi = mod(iflag2,10) + IF(ityphi .NE. 1) THEN + CALL GLK_Stop1(' GLK_hie: 1-dim histos only !!! id=',id) + ENDIF + 100 CONTINUE + nch = m_b(ist2+1) + IF(ib .EQ. 0) THEN ! underflow + GLK_hie= dsqrt( dabs(m_b(ist3 +4))) + ELSEIF(ib .GE. 1.and.ib .LE. nch) THEN ! normal bin, error content + GLK_hie= dsqrt( dabs(m_b(ist+m_buf1+nch+ib)) ) + ELSEIF(ib .EQ. nch+1) THEN ! overflow + GLK_hie= dsqrt( dabs(m_b(ist3 +6))) + ELSE + CALL GLK_Stop1('+++GLK_hie: wrong binning id= ',id) + ENDIF + END + + SUBROUTINE GLK_Fil1(id,xx,wtx) +* ***************************** +* recommended fast filling 1-dim. histogram s.j. 18 nov. 90 +* overflow/underflow corrected by Maciek and Zbyszek +* *********************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id + DOUBLE PRECISION xx,wtx +* local + INTEGER ist,ist2,ist3,iflag2,ityphi,ipose1,iposx1,kposx1,kpose1,kx,nchx,lact + DOUBLE PRECISION x1,wt1,xl,factx,xu +*------------------------------------------------------------------------- + CALL GLK_hadres(id,lact) +* exit for non-existig histo + IF(lact .EQ. 0) RETURN + ist = m_index(lact,2) + ist2 = ist+7 + ist3 = ist+11 +* one-dim. histo only + iflag2 = nint(m_b(ist+4)-9d0-9d12)/10 + ityphi = mod(iflag2,10) + IF(ityphi .NE. 1) CALL GLK_Stop1('+++GLK_Fil1: wrong id= ',id) + x1= xx + wt1= wtx + m_index(lact,3)=m_index(lact,3)+1 +* all entries + m_b(ist3 +7) =m_b(ist3 +7) +1 +* for average x + m_b(ist3 +8) =m_b(ist3 +8) +wt1 + m_b(ist3 +9) =m_b(ist3 +9) +wt1*x1 +* filling coordinates + nchx =m_b(ist2 +1) + xl =m_b(ist2 +2) + xu =m_b(ist2 +3) + factx =m_b(ist2 +4) + IF(x1 .LT. xl) THEN +* underflow + iposx1 = ist3 +1 + ipose1 = ist3 +4 + kposx1 = 0 + ELSEIF(x1 .GT. xu) THEN +* or overflow + iposx1 = ist3 +3 + ipose1 = ist3 +6 + kposx1 = 0 + ELSE +* or any normal bin + iposx1 = ist3 +2 + ipose1 = ist3 +5 +* or given normal bin + kx = (x1-xl)*factx+1d0 + kx = MIN( MAX(kx,1) ,nchx) + kposx1 = ist +m_buf1+kx + kpose1 = ist +m_buf1+nchx+kx + ENDIF + m_b(iposx1) = m_b(iposx1) +wt1 + m_b(ipose1) = m_b(ipose1) +wt1*wt1 + IF( kposx1 .NE. 0) m_b(kposx1) = m_b(kposx1) +wt1 + IF( kposx1 .NE. 0) m_b(kpose1) = m_b(kpose1) +wt1*wt1 + END !GLK_Fil1 + + SUBROUTINE GLK_Fil1diff(id,xx,wtx,yy,wty) +* ***************************************** +* Special filling routine to fill the difference f(x)-g(y) +* in the case when f and g are very similar x and y are close for each event. +* In this case coherent filling is done if x and y fall into the same bin. +* Note that bin width starts to be important in this method. +* *********************************** + IMPLICIT NONE + INCLUDE 'GLK.h' +* + INTEGER id + DOUBLE PRECISION xx,wtx,yy,wty +* + DOUBLE PRECISION x1,x2,wt2,wt1,factx,xl,xu + INTEGER ist,ist2,ist3,iflag2,ityphi,kx,ke1,ie1,kx1,kx2,ke2,ix2,ie2,nchx,lact,ix1 +*----------------------------------------------------------------- + CALL GLK_hadres(id,lact) +* exit for non-existig histo + IF(lact .EQ. 0) RETURN + ist = m_index(lact,2) + ist2 = ist+7 + ist3 = ist+11 +* one-dim. histo only + iflag2 = nint(m_b(ist+4)-9d0-9d12)/10 + ityphi = mod(iflag2,10) + IF(ityphi .NE. 1) THEN + CALL GLK_Stop1('GLK_Fil1diff: 1-dim histos only !!! id=',id) + ENDIF + x1= xx + x2= yy + wt1= wtx + wt2= wty + m_index(lact,3)=m_index(lact,3)+1 +* all entries + m_b(ist3 +7) =m_b(ist3 +7) +1 +* for average x or y not very well defined yet + m_b(ist3 +8) =m_b(ist3 +8) +wt1*x1 - wt2*x2 + m_b(ist3 +9) =m_b(ist3 +9) +wt1*x1*x1 - wt2*x2*x2 +* filling coordinates + nchx =m_b(ist2 +1) + xl =m_b(ist2 +2) + xu =m_b(ist2 +3) + factx =m_b(ist2 +4) +* first variable + IF(x1 .LT. xl) THEN ! underflow + ix1 = ist3 +1 + ie1 = ist3 +4 + kx1 = 0 + ELSEIF(x1 .GT. xu) THEN ! or overflow + ix1 = ist3 +3 + ie1 = ist3 +6 + kx1 = 0 + ELSE ! normal bin + ix1 = ist3 +2 + ie1 = ist3 +5 + kx = (x1-xl)*factx+1d0 + kx = MIN( MAX(kx,1) ,nchx) + kx1 = ist +m_buf1+kx + ke1 = ist +m_buf1+nchx+kx + ENDIF +* second variable + IF(x2 .LT. xl) THEN ! underflow + ix2 = ist3 +1 + ie2 = ist3 +4 + kx2 = 0 + ELSEIF(x2 .GT. xu) THEN ! or overflow + ix2 = ist3 +3 + ie2 = ist3 +6 + kx2 = 0 + ELSE ! normal bin + ix2 = ist3 +2 + ie2 = ist3 +5 + kx = (x2-xl)*factx+1d0 + kx = MIN( MAX(kx,1) ,nchx) + kx2 = ist +m_buf1+kx + ke2 = ist +m_buf1+nchx+kx + ENDIF +* coherent filling + IF( ix1 .EQ. ix2 ) THEN + m_b(ix1) = m_b(ix1) +wt1-wt2 + m_b(ie1) = m_b(ie1) +(wt1-wt2)**2 + ELSE + m_b(ix1) = m_b(ix1) +wt1 + m_b(ie1) = m_b(ie1) +wt1*wt1 + m_b(ix2) = m_b(ix2) -wt2 + m_b(ie2) = m_b(ie2) +wt2*wt2 + ENDIF + IF( kx1 .EQ. kx2 ) THEN + IF( kx1 .NE. 0) THEN + m_b(kx1) = m_b(kx1) +wt1-wt2 + m_b(ke1) = m_b(ke1) +(wt1-wt2)**2 + ENDIF + ELSE + IF( kx1 .NE. 0) THEN + m_b(kx1) = m_b(kx1) +wt1 + m_b(ke1) = m_b(ke1) +wt1*wt1 + ENDIF + IF( kx2 .NE. 0) THEN + m_b(kx2) = m_b(kx2) -wt2 + m_b(ke2) = m_b(ke2) +wt2*wt2 + ENDIF + ENDIF + END !GLK_Fil1diff + + SUBROUTINE GLK_Fil2(id,x,y,wtw) +* **************************** +* this routine not finished, 1-dim only! +* *********************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id + DOUBLE PRECISION x,y,wtw +* local + INTEGER ist,iflag2,ityphi,ist2,ist3,nchx,nchy,ly,ky,k2,kx,lact,lx,k,l + DOUBLE PRECISION xx,yy,wt,factx,xl,yl,facty +*------------------------------------------------------- + CALL GLK_hadres(id,lact) + IF(lact .EQ. 0) RETURN + ist = m_index(lact,2) +* one-dim. histo + iflag2 = nint(m_b(ist+4)-9d0-9d12)/10 + ityphi = mod(iflag2,10) + IF(ityphi .NE. 2) THEN + CALL GLK_Stop1('GLK_Fil2: 2-dim histos only !!! id=',id) + ENDIF +*...two-dim. scattergram, no errors! + ist2 = ist+7 + ist3 = ist+15 + xx= x + yy= y + wt= wtw + m_index(lact,3)=m_index(lact,3)+1 +* x-axis + nchx =m_b(ist2 +1) + xl =m_b(ist2 +2) + factx =m_b(ist2 +4) + kx=(xx-xl)*factx+1d0 + lx=2 + IF(kx .LT. 1) lx=1 + IF(kx .GT. nchx) lx=3 + l = ist+34 +lx + m_b(l) = m_b(l) +wt + k = ist+m_buf2 +kx + IF(lx .EQ. 2) m_b(k) =m_b(k) +wt + k2 = ist+m_buf2 +nchx+kx + IF(lx .EQ. 2) m_b(k2) =m_b(k2) +wt**2 +* y-axix + nchy =m_b(ist2 +5) + yl =m_b(ist2 +6) + facty =m_b(ist2 +8) + ky=(yy-yl)*facty+1d0 + ly=2 + IF(ky .LT. 1) ly=1 + IF(ky .GT. nchy) ly=3 +* under/over-flow + l = ist3 +lx +3*(ly-1) + m_b(l) =m_b(l)+wt +* regular bin + k = ist+m_buf2 +kx +nchx*(ky-1) + IF(lx .EQ. 2.and.ly .EQ. 2) m_b(k)=m_b(k)+wt + END + + SUBROUTINE GLK_Book1(id,title,nnchx,xxl,xxu) +* ******************************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id + DOUBLE PRECISION xxl,xxu + CHARACTER*80 title +* locals + DOUBLE PRECISION xl,xu,ddx + INTEGER ist,nchx,ioplog,iopsla,ioperb,iflag2,ityphi,iflag1 + INTEGER ist3,ist2,lengt2,lact,nnchx,iopsc2,iopsc1,j + LOGICAL GLK_Exist +*------------------------------------------------- + CALL GLK_Initialize + IF(GLK_Exist(id)) goto 900 + ist=m_length + CALL GLK_hadres(0,lact) +* Check if there is a free entry in the m_index + IF(lact .EQ. 0) + $ CALL GLK_Stop1('GLK_Book1: to many histos !!!!!, id= ',id) + m_index(lact,1)=id + m_index(lact,2)=m_length + m_index(lact,3)=0 +* ------- + CALL GLK_Copch(title,m_titlc(lact)) + nchx =nnchx + IF(nchx .GT. m_MaxNb) + $ CALL GLK_Stop1(' GLK_Book1: To many bins requested,id= ',id) + xl =xxl + xu =xxu +* ---------- title and bin content ---------- + lengt2 = m_length +2*nchx +m_buf1+1 + IF(lengt2 .GE. m_LenmB) + $ CALL GLK_Stop1('GLK_Book1:too litle storage, m_LenmB= ',m_LenmB) +* + DO j=m_length+1,lengt2+1 + m_b(j) = 0d0 + ENDDO + m_length=lengt2 +*... default flags + ioplog = 1 + iopsla = 1 + ioperb = 1 + iopsc1 = 1 + iopsc2 = 1 + iflag1 = + $ ioplog+10*iopsla+100*ioperb+1000*iopsc1+10000*iopsc2 + ityphi = 1 + iflag2 = ityphi +* examples of decoding flags +* id = nint(m_b(ist+2)-9d0-9d12)/10 +* iflag1 = nint(m_b(ist+3)-9d0-9d12)/10 +* ioplog = mod(iflag1,10) +* iopsla = mod(iflag1,100)/10 +* ioperb = mod(iflag1,1000)/100 +* iopsc1 = mod(iflag1,10000)/1000 +* iopsc2 = mod(iflag1,100000)/10000 +* iflag2 = nint(m_b(ist+4)-9d0-9d12)/10 +* ityphi = mod(iflag2,10) +*--------- buffer ----------------- +* header + m_b(ist +1) = 9999999999999d0 + m_b(ist +2) = 9d12 + id*10 +9d0 + m_b(ist +3) = 9d12 + iflag1*10 +9d0 + m_b(ist +4) = 9d12 + iflag2*10 +9d0 +* dummy vertical scale + m_b(ist +5) = -100d0 + m_b(ist +6) = 100d0 +* pointer used to speed up search of histogram address + m_b(ist +7) = 0d0 +* information on binning + ist2 = ist+7 + m_b(ist2 +1) = nchx + m_b(ist2 +2) = xl + m_b(ist2 +3) = xu + ddx = xu-xl + IF(ddx .EQ. 0d0) CALL GLK_Stop1('+++GLK_Book1: xl=xu, id= ',id) + m_b(ist2 +4) = DFLOAT(nchx)/ddx +* +* under/over-flow etc. + ist3 = ist+11 + DO j=1,13 + m_b(ist3 +j)=0d0 + ENDDO + RETURN +*---------------- + 900 CALL GLK_Retu1(' WARNING GLK_Book1: already exists id= ', id) + END + + SUBROUTINE GLK_Retu1(mesage,id) +* ******************************* + IMPLICIT NONE + INCLUDE 'GLK.h' + SAVE + INTEGER id + CHARACTER*(*) mesage +*----------------------------- + WRITE(m_out,'(a)') + $ '++++++++++++++++++++++++++++++++++++++++++++++++++++++' + WRITE(m_out,'(a,a,i10,a)') + $ '++ ', mesage, id, ' ++' + WRITE(m_out,'(a)') + $ '++++++++++++++++++++++++++++++++++++++++++++++++++++++' + WRITE(6 ,'(a)') + $ '++++++++++++++++++++++++++++++++++++++++++++++++++++++' + WRITE(6 ,'(a,a,i10,a)') + $ '++ ', mesage, id, ' ++' + WRITE(6 ,'(a)') + $ '++++++++++++++++++++++++++++++++++++++++++++++++++++++' + END + + SUBROUTINE GLK_Stop1(mesage,id) +* ******************************* + IMPLICIT NONE + INCLUDE 'GLK.h' + SAVE + CHARACTER*(*) mesage + INTEGER id +*----------------------------- + WRITE(m_out,'(a)') + $ '++++++++++++++++++++++++++++++++++++++++++++++++++++++' + WRITE(m_out,'(a,a,i10,a)') + $ '++ ', mesage, id, ' ++' + WRITE(m_out,'(a)') + $ '++++++++++++++++++++++++++++++++++++++++++++++++++++++' + WRITE(6 ,'(a)') + $ '++++++++++++++++++++++++++++++++++++++++++++++++++++++' + WRITE(6 ,'(a,a,i10,a)') + $ '++ ', mesage, id, ' ++' + WRITE(6 ,'(a)') + $ '++++++++++++++++++++++++++++++++++++++++++++++++++++++' + STOP + END + + + SUBROUTINE GLK_OptOut(id,ioplog,iopsla,ioperb,iopsc1,iopsc2) +* ******************************************************** +* decoding option flags +* ********************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id,ioplog,iopsla,ioperb,iopsc1,iopsc2 + INTEGER ist,iflag1,lact +*---------------------------------------------------------------- + CALL GLK_hadres(id,lact) + IF(lact .EQ. 0) RETURN + ist=m_index(lact,2) +* decoding flags + iflag1 = nint(m_b(ist+3)-9d0-9d12)/10 + ioplog = mod(iflag1,10) + iopsla = mod(iflag1,100)/10 + ioperb = mod(iflag1,1000)/100 + iopsc1 = mod(iflag1,10000)/1000 + iopsc2 = mod(iflag1,100000)/10000 + END + + SUBROUTINE GLK_idopt(id,ch) +* ************************ + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id + CHARACTER*4 ch +* + INTEGER lact,ist,ioplog,ioperb,iopsla,iopsc1,iopsc2,iflag1 +*---------------------------------------------------------------- + CALL GLK_hadres(id,lact) + IF(lact .EQ. 0) RETURN + ist=m_index(lact,2) +* decoding flags + CALL GLK_OptOut(id,ioplog,iopsla,ioperb,iopsc1,iopsc2) + IF(ch .EQ. 'LOGY' ) THEN +* log scale for print + ioplog = 2 + ELSEIF(ch .EQ. 'ERRO' ) THEN +* errors in printing/plotting + ioperb = 2 + ELSEIF(ch .EQ. 'SLAN' ) THEN +* slanted line in plotting + iopsla = 2 + ELSEIF(ch .EQ. 'YMIN' ) THEN + iopsc1 = 2 + ELSEIF(ch .EQ. 'YMAX' ) THEN + iopsc2 = 2 + ENDIF +* encoding back + iflag1 = ioplog+10*iopsla+100*ioperb+1000*iopsc1+10000*iopsc2 + m_b(ist+3) = 9d12 + iflag1*10 +9d0 + END + + + SUBROUTINE GLK_BookFun1(id,title,nchx,xmin,xmax,func) +*///////////////////////////////////////////////////////////////////////// +*// fills histogram with function func(x) // +*///////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id + DOUBLE PRECISION xmin,xmax,func + CHARACTER*80 title +* + DOUBLE PRECISION yy(m_MaxNb) + EXTERNAL func + LOGICAL GLK_Exist + INTEGER ib,nchx + DOUBLE PRECISION xl,xu,x +*--------------------------------------------------------------------- + CALL GLK_Initialize + IF(GLK_Exist(id)) GOTO 900 + 15 xl=xmin + xu=xmax + CALL GLK_Book1(id,title,nchx,xl,xu) +*...slanted line in plotting + CALL GLK_idopt(id,'SLAN') + IF(nchx .GT. 200) goto 901 + DO ib=1,nchx + x= xmin +(xmax-xmin)/nchx*(ib-0.5d0) + yy(ib) = func(x) + ENDDO + CALL GLK_Pak(id,yy) + RETURN + 900 CALL GLK_Retu1('+++GLK_BookFun1: already exists id=',id) + CALL GLK_Delet(id) + GOTO 15 + 901 CALL GLK_Stop1('+++GLK_BookFun1: to many bins, id=',id) + END + + SUBROUTINE GLK_BookFun1I(id,title,nchx,xmin,xmax,func) +*///////////////////////////////////////////////////////////////////////// +*// Fills histogram with function func(x) // +*// Gauss integration over each bin is done, can be slow. // +*///////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id + DOUBLE PRECISION xmin,xmax,func + CHARACTER*80 title +* + DOUBLE PRECISION yy(m_MaxNb) + EXTERNAL func + LOGICAL GLK_Exist + INTEGER ib,nchx + DOUBLE PRECISION xl,xu,x + DOUBLE PRECISION GLK_Gauss,a,b,Eeps,dx +*--------------------------------------------------------------------- + CALL GLK_Initialize + IF(GLK_Exist(id)) GOTO 900 + 15 xl=xmin + xu=xmax + CALL GLK_Book1(id,title,nchx,xl,xu) + IF(nchx .GT. 200) goto 901 + Eeps = -0.01d0 !!! relat. precision requirement not very demanding + dx = (xmax-xmin)/nchx + DO ib=1,nchx + a= xmin +dx*(ib-1) + b= xmin +dx*ib + yy(ib) = GLK_Gauss(func,a,b,Eeps)/dx !! 16-point Gauss integration over bin + ENDDO + CALL GLK_Pak(id,yy) + RETURN + 900 CALL GLK_Retu1('+++GLK_BookFun1I: already exists id=',id) + CALL GLK_Delet(id) + GOTO 15 + 901 CALL GLK_Stop1('+++GLK_BookFun1I: to many bins, id=',id) + END + + SUBROUTINE GLK_BookFun1S(id,title,nchx,xmin,xmax,func) +*///////////////////////////////////////////////////////////////////////// +*// Fills histogram with function func(x) // +*// three point fit used // +*///////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + DOUBLE PRECISION xmin,xmax,func + EXTERNAL func + INTEGER id,nchx + CHARACTER*80 title +* locals + DOUBLE PRECISION yy(m_MaxNb),yy1(0:m_MaxNb) + LOGICAL GLK_Exist + DOUBLE PRECISION xl,xu,x3,x2,dx + INTEGER ib +*-------------------------------------------------------- + CALL GLK_Initialize + IF( GLK_Exist(id) ) GOTO 900 + 15 xl=xmin + xu=xmax + CALL GLK_Book1(id,title,nchx,xl,xu) + +*...slanted line in plotting + CALL GLK_idopt(id,'SLAN') + IF(nchx.gt.200) GOTO 901 + + yy1(0) = func(xmin) + dx=(xmax-xmin)/nchx + + DO ib=1,nchx + x2= xmin +dx*(ib-0.5d0) + x3= x2 +dx*0.5d0 + yy(ib) = func(x2) + yy1(ib) = func(x3) +*.. simpson + yy(ib) = ( yy1(ib-1) +4*yy (ib) +yy1(ib))/6d0 + ENDDO + + CALL GLK_Pak(id,yy) + RETURN + 900 CALL GLK_Retu1('+++GLK_BookFun1S: already exists, id=',id) + CALL GLK_Delet(id) + GOTO 15 + 901 CALL GLK_Stop1(' +++GLK_BookFun1S: to many bins, id=',id) + END + + DOUBLE PRECISION FUNCTION GLK_Gauss(f,a,b,Eeps) +*////////////////////////////////////////////////////////////////////////////// +*// // +*// This is iterative integration procedure // +*// originates probably from CERN library // +*// it subdivides inegration range until required precision is reached // +*// precision is a difference from 8 and 16 point Gauss itegr. result // +*// Eeps POSITIVE treated as absolute precision // +*// Eeps NEGATIVE treated as relative precision // +*// // +*////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + DOUBLE PRECISION f,a,b,Eeps +* + DOUBLE PRECISION c1,c2,bb,s8,s16,y,aa,const,delta,eps,u + INTEGER i +* + DOUBLE PRECISION w(12),x(12) + EXTERNAL f + DATA const /1.0d-19/ + DATA w + 1/0.10122 85362 90376, 0.22238 10344 53374, 0.31370 66458 77887, + 2 0.36268 37833 78362, 0.02715 24594 11754, 0.06225 35239 38648, + 3 0.09515 85116 82493, 0.12462 89712 55534, 0.14959 59888 16577, + 4 0.16915 65193 95003, 0.18260 34150 44924, 0.18945 06104 55069/ + DATA x + 1/0.96028 98564 97536, 0.79666 64774 13627, 0.52553 24099 16329, + 2 0.18343 46424 95650, 0.98940 09349 91650, 0.94457 50230 73233, + 3 0.86563 12023 87832, 0.75540 44083 55003, 0.61787 62444 02644, + 4 0.45801 67776 57227, 0.28160 35507 79259, 0.09501 25098 37637/ +*----------------------------------------------------------------------------- + eps=abs(Eeps) + delta=const*abs(a-b) + GLK_Gauss=0d0 + aa=a + 5 y=b-aa + IF(abs(y) .LE. delta) RETURN + 2 bb=aa+y + c1=0.5d0*(aa+bb) + c2=c1-aa + s8=0d0 + s16=0d0 + DO 1 i=1,4 + u=x(i)*c2 + 1 s8=s8+w(i)*(f(c1+u)+f(c1-u)) + DO 3 i=5,12 + u=x(i)*c2 + 3 s16=s16+w(i)*(f(c1+u)+f(c1-u)) + s8=s8*c2 + s16=s16*c2 + IF(Eeps .LT. 0d0) THEN + IF(abs(s16-s8) .GT. eps*abs(s16)) GOTO 4 + ELSE + IF(abs(s16-s8) .GT. eps) GOTO 4 + ENDIF + GLK_Gauss=GLK_Gauss+s16 + aa=bb + GOTO 5 + 4 y=0.5d0*y + IF(abs(y) .GT. delta) GOTO 2 + WRITE(*,7) + GLK_Gauss=0d0 + RETURN + 7 FORMAT(1x,36hgaus ... too high accuracy required) + END + + + + SUBROUTINE GLK_Book2(ID,TITLE,NCHX,XL,XU,NCHY,YL,YU) +* *************************************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER ID,NCHX,NCHY + DOUBLE PRECISION XL,XU,YL,YU + CHARACTER*80 TITLE +* + INTEGER ist,lact,lengt2,j,nnchx,nnchy + LOGICAL GLK_EXIST +*------------------------------------------------------------------------- + CALL GLK_Initialize + IF(GLK_EXIST(ID)) GOTO 900 + ist=m_length + CALL GLK_hadres(0,lact) + IF(LACT .EQ. 0) GOTO 901 + m_index(LACT,1)=ID + m_index(LACT,2)=m_length + CALL GLK_COPCH(TITLE,M_TITLC(LACT)) + nnchx=NCHX + nnchy=NCHY + LENGT2 = M_LENGTH +44+nnchx*nnchy + IF(LENGT2 .GE. m_LenmB) GOTO 902 + DO 10 J=M_LENGTH+1,LENGT2+1 + 10 m_b(J) = 0D0 + M_LENGTH=LENGT2 + m_b(ist+1)=nnchx + m_b(ist+2)=XL + m_b(ist+3)=XU + m_b(ist+4)=float(nnchx)/(m_b(ist+3)-m_b(ist+2)) + m_b(ist+5)=nnchy + m_b(ist+6)=YL + m_b(ist+7)=YU + m_b(ist+8)=float(nnchy)/(m_b(ist+7)-m_b(ist+6)) + RETURN + 900 CALL GLK_Retu1('GLK_Book2: histo already exists!!!! id=',id) + RETURN + 901 CALL GLK_Stop1('GLK_Book2: too many histos !!!!! lact= ',LACT) + RETURN + 902 CALL GLK_Stop1('GLK_Book2: too litle storage, m_LenmB=',m_LenmB) + RETURN + END + + SUBROUTINE GLK_PrintAll +* *********************** + IMPLICIT NONE + INCLUDE 'GLK.h' + SAVE + INTEGER i,id + + DO i=1,m_idmax + id=m_index(i,1) + IF(id .GT. 0) CALL GLK_Print(id) + ENDDO + END + + SUBROUTINE GLK_ListPrint(mout) +*////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER i,id + CHARACTER*80 title + INTEGER nb,mout + DOUBLE PRECISION xmin,xmax +*---------------------------------- + WRITE(mout,*) + $'============================================================================================' + WRITE(mout,*) + $' ID TITLE nb, xmin, xmax' + DO i=1,m_idmax + id=m_index(i,1) + IF(id .NE. 0) THEN + CALL GLK_hinbo1(id,title,nb,xmin,xmax) + WRITE(mout,'(i8,a,a,i8,2g14.6)') id, ' ', title, nb,xmin,xmax + ENDIF + ENDDO + END + + + + SUBROUTINE GLK_Print(id) +* *********************** + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id +* + DOUBLE PRECISION xl,bind,xlow,z,er,avex,dx,fact,ovef,undf,bmax,bmin,deltb + DOUBLE PRECISION sum,sumw,sumx + INTEGER ist,ist2,ist3,idec,k2,k1,kros,j,ind,i,n,i1,ky,nchy,kx,nent,iflag2,lmx + INTEGER ioplog,iopsla,ioperb,iopsc1,iopsc2,lact,ker,ityphi,kzer,k,ibn,nchx,istr + LOGICAL llg + CHARACTER*1 line(0:105),lchr(22),lb,lx,li,l0 + SAVE lb,lx,li,l0,lchr + DATA lb,lx,li,l0 /' ','X','I','0'/ + DATA lchr/' ','1','2','3','4','5','6','7','8','9', + $ 'A','B','C','D','E','F','G','H','I','J','K','*'/ +*--------------------------------------------------------------------------------- + CALL GLK_hadres(id,lact) + IF(lact .EQ. 0) goto 900 + ist = m_index(lact,2) + ist2 = ist+7 + ist3 = ist+11 + idec = nint(m_b(ist+2)-9d0-9d12)/10 + IF(idec .NE. id) WRITE(6,*) '++++GLK_PRINT: PANIC! ID,IDEC= ',ID,IDEC + CALL GLK_OptOut(id,ioplog,iopsla,ioperb,iopsc1,iopsc2) + ker = ioperb-1 + lmx = 67 + IF(ker .EQ. 1) lmx=54 + nent=m_index(lact,3) + IF(nent .EQ. 0) GOTO 901 + WRITE(m_out,1000) id,m_titlc(lact) + 1000 FORMAT('1',/,1X,I9,10X,A) +* +* one-dim. histo + iflag2 = nint(m_b(ist+4)-9d0-9d12)/10 + ityphi = mod(iflag2,10) + IF(ityphi .EQ. 2) GOTO 200 + IF( (ityphi.NE.1) .AND. (ityphi.NE.3) ) + $ CALL GLK_Stop1(' GLK_PRINT: wrong histo type, id=',id) + + nchx = m_b(ist2 +1) + xl = m_b(ist2 +2) + dx = ( m_b(ist2 +3)-m_b(ist2 +2) )/float(nchx) +* fixing vertical scale + istr=ist+m_buf1+1 + bmin = m_b(istr) + bmax = m_b(istr)+1d-5*abs(m_b(istr)) ! problems for single bin case + DO ibn=istr,istr+nchx-1 + bmax = max(bmax,m_b(ibn)) + bmin = min(bmin,m_b(ibn)) + ENDDO + IF(bmin .EQ. bmax) GOTO 903 + IF(iopsc1 .EQ. 2) bmin=m_b(ist +5) + IF(iopsc2 .EQ. 2) bmax=m_b(ist +6) +* + llg=ioplog .EQ. 2 + IF(llg.and.bmin .LE. 0d0) bmin=bmax/10000.d0 +* + deltb = bmax-bmin + IF(deltb .EQ. 0d0) GOTO 902 + fact = (lmx-1)/deltb + kzer = -bmin*fact+1.00001d0 + IF(llg) fact=(lmx-1)/(log(bmax)-log(bmin)) + IF(llg) kzer=-log(bmin)*fact+1.00001d0 +* + undf = m_b(ist3 +1) + ovef = m_b(ist3 +3) + avex = 0d0 + sumw = m_b(ist3 +8) + sumx = m_b(ist3 +9) + IF(sumw .NE. 0d0) avex = sumx/sumw + WRITE(m_out,'(4a15 )') 'nent',' sum','bmin','bmax' + WRITE(m_out,'(i15,3e15.5)') nent, sum, bmin, bmax + WRITE(m_out,'(4a15 )') 'undf','ovef','sumw','avex' + WRITE(m_out,'(4e15.5)') undf, ovef, sumw, avex +* + IF(llg) write(m_out,1105) + 1105 format(35x,17hlogarithmic scale) +* + kzer=max0(kzer,0) + kzer=min0(kzer,lmx) + xlow=xl + do 100 k=1,nchx +* first fill with blanks + do 45 j=1,105 + 45 line(j) =lb +* THEN fill upper and lower boundry + line(1) =li + line(lmx)=li + ind=istr+k-1 + bind=m_b(ind) + bind= max(bind,bmin) + bind= min(bind,bmax) + kros=(bind-bmin)*fact+1.0001d0 + IF(llg) kros=log(bind/bmin)*fact+1.0001d0 + k2=max0(kros,kzer) + k2=min0(lmx,max0(1,k2)) + k1=min0(kros,kzer) + k1=min0(lmx,max0(1,k1)) + do 50 j=k1,k2 + 50 line(j)=lx + line(kzer)=l0 + z=m_b(ind) + IF(ker .NE. 1) THEN + WRITE(m_out,'(a, f7.4, a, d14.6, 132a1)') + $ ' ', xlow,' ', z,' ',(line(i),i=1,lmx) + ELSE + er=dsqrt(dabs(m_b(ind+nchx))) + WRITE(m_out,'(a,f7.4, a,d14.6, a,d14.6, 132a1 )') + $ ' ',xlow,' ', z,' ', er,' ',(line(i),i=1,lmx) + ENDIF + xlow=xlow+dx + 100 continue + RETURN +*////////////////////////////////////////////////////////////////////// +*// two dimensional requires complete restoration and tests // +*////////////////////////////////////////////////////////////////////// + 200 continue + nchx=m_b(ist+1) + nchy=m_b(ist+5) + WRITE(m_out,2000) (lx,i=1,nchy) + 2000 format(1h ,10x,2hxx,100a1) + do 300 kx=1,nchx + do 250 ky=1,nchy + k=ist +m_buf2 +kx+nchx*(ky-1) + N=m_b(K)+1.99999D0 + n=max0(n,1) + n=min0(n,22) + IF(DABS(m_b(k)) .LT. 1D-20) n=1 + line(ky)=lchr(n) + 250 continue + line(nchy+1)=lx + i1=nchy+1 + WRITE(m_out,2100) (line(i),i=1,i1) + 2100 format(1h ,10x,1hx,100a1) + 300 continue + WRITE(m_out,2000) (lx,i=1,nchy) + RETURN + 900 CALL GLK_Retu1('GLK_PRINT: nonexisting histo',id) + RETURN + 901 CALL GLK_Retu1(' GLK_PRINT: nent.eq.0',ID) + RETURN + 902 CALL GLK_Retu1(' GLK_PRINT: wrong plotting limits, id=',id) + RETURN + 903 CALL GLK_Retu1(' GLK_PRINT: bmin.eq.bmax, id=',id) + END + + SUBROUTINE GLK_Operat(ida,chr,idb,idc,coef1,coef2) +* ********************************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER ida,idb,idc + DOUBLE PRECISION coef1,coef2 + CHARACTER*80 title + CHARACTER*1 chr +* + DOUBLE PRECISION xl,xu + INTEGER ista,ista2,ista3,ncha,iflag2a,ityphia,lactb + INTEGER k,j,nchc,istc2,istc3,i1,j2,j3,j1,i2,i3,istc,istb2,istb3,nchb + INTEGER lacta,id,istb,nchx,iflag2b,ityphib,lactc +*---------------------------------------------------------- + CALL GLK_hadres(ida,lacta) + IF(lacta .EQ. 0) RETURN + ista = m_index(lacta,2) + ista2 = ista+7 + ista3 = ista+11 + ncha = m_b(ista2+1) +* check for type + iflag2a = nint(m_b(ista+4)-9d0-9d12)/10 + ityphia = mod(iflag2a,10) + IF(ityphia .NE. 1) CALL GLK_Stop1('GLK_Operat: 1-dim histos only, id=',id) +*------------------ + CALL GLK_hadres(idb,lactb) + IF(lactb .EQ. 0) RETURN + istb = m_index(lactb,2) + istb2 = istb+7 + istb3 = istb+11 + nchb = m_b(istb2+1) + IF(nchb .NE. ncha) goto 900 +* check for type + iflag2b = nint(m_b(istb+4)-9d0-9d12)/10 + ityphib = mod(iflag2b,10) + IF(ityphib .NE. 1) CALL GLK_Stop1('GLK_Operat: 1-dim histos only, id=',id) +*------------------ + CALL GLK_hadres(idc,lactc) + IF(lactc .EQ. 0) THEN +* ...if nonexistent, histo idc is here defined + CALL GLK_hinbo1(ida,title,nchx,xl,xu) + CALL GLK_Book1(idc,title,nchx,xl,xu) + CALL GLK_hadres(idc,lactc) + istc = m_index(lactc,2) +*...option copied from ida + m_b(istc+ 3)= m_b(ista +3) + ENDIF +*...one nominal entry recorded + m_index(lactc,3) = 1 +* + istc = m_index(lactc,2) + istc2 = istc+7 + istc3 = istc+11 + nchc = m_b(istc2+1) +* + IF(nchc .NE. ncha) goto 900 + IF(ncha .NE. nchb .OR. nchb .NE. nchc) GOTO 900 + DO k=1,ncha+3 + IF(k .GT. ncha) THEN +* underflow, overflow + j=k-ncha + i1 = ista3 +j + i2 = istb3 +j + i3 = istc3 +j + j1 = ista3 +3+j + j2 = istb3 +3+j + j3 = istc3 +3+j + ELSE +* normal bins + i1 = ista +m_buf1 +k + i2 = istb +m_buf1 +k + i3 = istc +m_buf1 +k + j1 = ista +m_buf1 +ncha+k + j2 = istb +m_buf1 +ncha+k + j3 = istc +m_buf1 +ncha+k + ENDIF + IF (chr .EQ. '+') THEN + m_b(i3) = coef1*m_b(i1) + coef2*m_b(i2) + m_b(j3) = coef1**2*m_b(j1) + coef2**2*m_b(j2) + ELSEIF(chr .EQ. '-') THEN + m_b(i3) = coef1*m_b(i1) - coef2*m_b(i2) + m_b(j3) = coef1**2*m_b(j1) + coef2**2*m_b(j2) + ELSEIF(chr .EQ. '*') THEN + m_b(j3) = (coef1*coef2)**2 + $ *(m_b(j1)*m_b(i2)**2 + m_b(j2)*m_b(i1)**2) + m_b(i3) = coef1*m_b(i1) * coef2*m_b(i2) + ELSEIF(chr .EQ. '/') THEN + IF(m_b(i2) .EQ. 0d0) THEN + m_b(i3) = 0d0 + m_b(j3) = 0d0 + ELSE +*** m_b(j3) = (coef1/coef2)**2/m_b(i2)**4 ! problems with overflow +*** $ *(m_b(j1)*m_b(i2)**2 + m_b(j2)*m_b(i1)**2) ! problems with overflow + m_b(j3) = (coef1/coef2)**2 *m_b(j1) /m_b(i2)**2 + $ +(coef1/coef2)**2 *m_b(j2) *(m_b(i1)/m_b(i2)**2)**2 + m_b(i3) = (coef1*m_b(i1) )/( coef2*m_b(i2)) + ENDIF + ELSE + GOTO 901 + ENDIF + ENDDO + RETURN + 900 WRITE(m_out,*) '+++++ GLK_Operat: non-equal no. bins ',ida,idb,idc + WRITE( 6,*) '+++++ GLK_Operat: non-equal no. bins ',ida,idb,idc + STOP + 901 WRITE(m_out,*) '+++++ GLK_Operat: wrong chr=',chr + WRITE( 6,*) '+++++ GLK_Operat: wrong chr=',chr + STOP + END + + SUBROUTINE GLK_hinbo1(id,title,nchx,xl,xu) +* ************************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id,nchx + DOUBLE PRECISION xl,xu + CHARACTER*80 title + INTEGER lact,ist,ist2 +*---------------------------------------------------------------------- + CALL GLK_hadres(id,lact) + IF(lact .EQ. 0) THEN + CALL GLK_Stop1('+++STOP in GLK_hinbo1: wrong id=',id) + ENDIF + ist=m_index(lact,2) + ist2 = ist+7 + nchx = m_b(ist2 +1) + xl = m_b(ist2 +2) + xu = m_b(ist2 +3) + title = m_titlc(lact) + END + + SUBROUTINE GLK_UnPak(id,a,chd1,idum) +* ********************************* +* getting out histogram content (and error) +* chd1= 'ERRO' is nonstandard option (unpack errors) +* *********************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id,idum + DOUBLE PRECISION a(*) + CHARACTER*(*) chd1 +* + INTEGER lact,ist,ist2,iflag2,ityphi,local,nch,nchy,ib +*------------------------------------------------------------------------ + CALL GLK_hadres(id,lact) + IF(lact .EQ. 0) goto 900 + ist = m_index(lact,2) + ist2 = ist+7 + iflag2 = nint(m_b(ist+4)-9d0-9d12)/10 + ityphi = mod(iflag2,10) + IF(ityphi .EQ. 1) THEN + nch = m_b(ist2 +1) + local = ist +m_buf1 + ELSEIF(ityphi .EQ. 2) THEN + nchy = m_b(ist2+5) + nch = nch*nchy + local = ist+ m_buf2 + ELSE + CALL GLK_Stop1('+++GLK_UnPak: check type of histo id=',id) + ENDIF + do 10 ib=1,nch + IF(chd1 .NE. 'ERRO') THEN +* normal bin + a(ib) = m_b(local+ib) + ELSE +* error content + IF(ityphi .EQ. 2) goto 901 + a(ib) = dsqrt( dabs(m_b(local+nch+ib) )) + ENDIF + 10 continue + RETURN + 900 CALL GLK_Retu1('+++GLK_UnPak: nonexisting id=',id) + RETURN + 901 CALL GLK_Retu1('+++GLK_UnPak: no errors, two-dim, id=',id) + END + + SUBROUTINE GLK_Pak(id,a) +* ************************ +* Loading in histogram content +* *********************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id + DOUBLE PRECISION a(*) +* + INTEGER lact,ist,ist2,iflag2,ityphi,nch,local,ib,nchy +*---------------------------------------------------- + CALL GLK_hadres(id,lact) + IF(lact .EQ. 0) goto 900 + ist = m_index(lact,2) + ist2 = ist+7 +* 2-dimens histo alowed + iflag2 = nint(m_b(ist+4)-9d0-9d12)/10 + ityphi = mod(iflag2,10) + IF(ityphi .EQ. 1) THEN + nch = m_b(ist2 +1) + local = ist+m_buf1 + ELSEIF(ityphi .EQ. 2) THEN + nchy = m_b(ist2+5) + nch = nch*nchy + local = ist+m_buf2 + ELSE + CALL GLK_Stop1('+++GLK_Pak: wrong histo type, id=',id) + ENDIF + DO ib=1,nch + m_b(local +ib) = a(ib) + ENDDO +* one nominal entry recorded + m_index(lact,3) = 1 + RETURN + 900 CONTINUE + CALL GLK_Stop1('+++GLK_Pak: nonexisting id=',id) + END + + SUBROUTINE GLK_Pake(id,a) +* ********************** +* Loading in error content +* *********************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id + DOUBLE PRECISION a(*) +* + INTEGER lact,ist,ist2,nch,iflag2,ityphi + INTEGER nb,ib +*--------------------------------------------------------------------- + CALL GLK_hadres(id,lact) + IF(lact .EQ. 0) goto 901 + ist = m_index(lact,2) + ist2 = ist+7 + nch=m_b(ist2+1) +* 2-dimens histo NOT alowed + iflag2 = nint(m_b(ist+4)-9d0-9d12)/10 + ityphi = mod(iflag2,10) + IF(ityphi .NE. 1) GOTO 900 + DO ib=1,nch + m_b(ist+m_buf1+nch+ib) = a(ib)**2 + ENDDO + CALL GLK_idopt( id,'ERRO') + RETURN + 900 CALL GLK_Stop1('+++GLK_Pake: only for 1-dim hist, id=',id) + RETURN + 901 CALL GLK_Stop1('+++GLK_Pake: nonexisting id=',id) + END + + + SUBROUTINE GLK_Range1(id,ylr,yur) +* ***************************** +* provides y-scale for 1-dim plots +* *********************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id + DOUBLE PRECISION ylr,yur +* + INTEGER lact,ist,ist2,nch,ib,ioplog,iopsla,ioperb,iopsc1,iopsc2 + DOUBLE PRECISION yl,yu +*------------------------------------------------------------- + CALL GLK_hadres(id,lact) + IF(lact .EQ. 0) RETURN + ist = m_index(lact,2) + ist2 = ist+7 + nch = m_b(ist2 +1) + yl = m_b(ist+m_buf1+1) + yu = m_b(ist+m_buf1+1) + DO ib=1,nch + yl = min(yl,m_b(ist+m_buf1+ib)) + yu = max(yu,m_b(ist+m_buf1+ib)) + ENDDO +* For default range some safety range is added + yu = yu + 0.05*ABS(yu-yl) +*** yl = yl - 0.05*ABS(yu-yl) ! to be decided later on + +* If range was pre-defined then yl,yu are overwritten + CALL GLK_OptOut(id,ioplog,iopsla,ioperb,iopsc1,iopsc2) + IF(iopsc1 .EQ. 2) yl= m_b( ist +5) + IF(iopsc2 .EQ. 2) yu= m_b( ist +6) + ylr = yl + yur = yu + END + + + SUBROUTINE GLK_hinbo2(id,nchx,xl,xu,nchy,yl,yu) +* ******************************************* + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id,nchx,nchy + DOUBLE PRECISION xl,xu,yl,yu + INTEGER lact,ist,ist2 +*-------------------------------------------------- + CALL GLK_hadres(id,lact) + IF(lact .EQ. 0) goto 900 + ist = m_index(lact,2) + ist2 = ist+7 + nchx = m_b(ist2 +1) + xl = m_b(ist2 +2) + xu = m_b(ist2 +3) + nchy = m_b(ist2 +5) + yl = m_b(ist2 +6) + yu = m_b(ist2 +7) + RETURN + 900 CALL GLK_Stop1(' +++GLK_hinbo2: nonexisting histo id= ',id) + END + + + SUBROUTINE GLK_Ymaxim(id,wmax) +* ************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id + DOUBLE PRECISION wmax + INTEGER lact,ist,jd,k +*------------------------------------------------------- + IF(id .NE. 0) THEN + CALL GLK_hadres(id,lact) + IF(lact .EQ. 0) RETURN + ist= m_index(lact,2) + m_b(ist+6) =wmax + CALL GLK_idopt(id,'YMAX') + ELSE + DO k=1,m_idmax + IF(m_index(k,1) .EQ. 0) GOTO 20 + ist=m_index(k,2) + jd =m_index(k,1) + m_b(ist+6) =wmax + CALL GLK_idopt(jd,'YMAX') + ENDDO + 20 CONTINUE + ENDIF + END + + SUBROUTINE GLK_Yminim(id,wmin) +* ****************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id + DOUBLE PRECISION wmin + INTEGER lact,ist,k,jd +*--------------------------------------------- + IF(id .NE. 0) THEN + CALL GLK_hadres(id,lact) + IF(lact .EQ. 0) RETURN + ist =m_index(lact,2) + m_b(ist+5) =wmin + CALL GLK_idopt(id,'YMIN') + ELSE + DO k=1,m_idmax + IF(m_index(k,1) .EQ. 0) GOTO 20 + ist=m_index(k,2) + jd =m_index(k,1) + m_b(ist+5) =wmin + CALL GLK_idopt(jd,'YMIN') + ENDDO + 20 CONTINUE + ENDIF + END + + SUBROUTINE GLK_Reset(id,chd1) +* ************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id + CHARACTER*(*) chd1 + INTEGER lact,ist,ist2,iflag2,ityphi,ist3,nchx,nch,local,nchy,j +*------------------------------------------- + CALL GLK_hadres(id,lact) + IF(lact .LE. 0) RETURN + ist =m_index(lact,2) + ist2 = ist+7 +* + iflag2 = nint(m_b(ist+4)-9d0-9d12)/10 + ityphi = mod(iflag2,10) + IF(ityphi .EQ. 1) THEN +* one-dim. + ist3 = ist+11 + nchx = m_b(ist2 +1) + nch = 2*nchx + local = ist + m_buf1 + ELSEIF(ityphi .EQ. 2) THEN +* two-dim. + ist3 = ist+15 + nchx = m_b(ist2 +1) + nchy = m_b(ist2 +5) + nch = nchx*nchy + local = ist +m_buf2 + ELSE + CALL GLK_Stop1('+++GLK_Reset: wrong type id=',id) + ENDIF +* reset miscaelaneous entries and bins + DO j=ist3+1,local +nch + m_b(j) = 0d0 + ENDDO +* and no. of entries in m_index + m_index(lact,3) = 0 + END + + SUBROUTINE GLK_Delet(id1) +* ********************* +* Now it should work (stj Nov. 91) but watch out! +* should works for 2-dim histos, please check this! +* *********************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id1 +* + LOGICAL GLK_Exist + INTEGER id,lact,ist,ist2,nch,iflag2,ityphi,local,k,i,l,next,idec,nchx,nchy +*-------------------------------------------- + ID=ID1 + IF(id .EQ. 0) GOTO 300 + IF( .NOT. GLK_Exist(id)) GOTO 900 + CALL GLK_hadres(id,lact) + ist = m_index(lact,2) + ist2 = ist+7 +*---- +*[[[ WRITE(6,*) 'GLK_DELET-ing ID= ',ID + idec = nint(m_b(ist+2)-9d0-9d12)/10 + IF(idec .NE. id) WRITE(6,*) + $ '++++GLK_DELET: ALARM! ID,IDEC= ',ID,IDEC +*---- + nch = m_b(ist2 +1) + iflag2 = nint(m_b(ist+4)-9d0-9d12)/10 + ityphi = MOD(iflag2,10) + IF(ityphi .EQ. 1) THEN +* one-dim. + nchx = m_b(ist2 +1) + nch = 2*nchx +* lenght of local histo to be removed + local = nch+m_buf1+1 + ELSEIF(ityphi .EQ. 2) THEN +* two-dim. + nchx = m_b(ist2 +1) + nchy = m_b(ist2 +5) + nch = nchx*nchy +* lenght of local histo to be removed + local = nch+m_buf2+1 + ELSE + CALL GLK_Stop1('+++GLK_Delet: wrong type id=',id) + ENDIF +* starting position of next histo in storage b + next = ist+1 +local +* move down all histos above this one + DO 15 k =next,m_length + m_b(k-local)=m_b(k) + 15 CONTINUE +* define new end of storage + m_length=m_length-local +* clean free space at the end of storage b + DO 20 k=m_length+1, m_length+local + 20 m_b(k)=0d0 +* shift adresses of all displaced histos + DO 25 l=lact+1,m_idmax + IF(m_index(l,1) .NE. 0) m_index(l,2)=m_index(l,2)-local + 25 CONTINUE +* move entries in m_index down by one and remove id=lact entry + DO 30 l=lact+1,m_idmax + m_index(l-1,1)=m_index(l,1) + m_index(l-1,2)=m_index(l,2) + m_index(l-1,3)=m_index(l,3) + m_titlc(l-1)=m_titlc(l) + 30 CONTINUE +* last entry should be always empty + m_index(m_idmax,1)=0 + m_index(m_idmax,2)=0 + m_index(m_idmax,3)=0 + do 50 k=1,80 + 50 m_titlc(m_idmax)(k:k)=' ' + RETURN +* ----------------------------------- +* Deleting all histos at once!!! + 300 m_length=0 + DO 400 i=1,m_idmax + DO 340 k=1,3 + 340 m_index(i,k)=0 + DO 350 k=1,80 + 350 m_titlc(i)(k:k)=' ' + 400 CONTINUE + RETURN +* ----------------------------------- + 900 CONTINUE + CALL GLK_Retu1(' +++GLK_DELET: nonexisting histo id= ',id) + END + + + SUBROUTINE GLK_Copch(ch1,ch2) +* ***************************** + IMPLICIT NONE +* copies CHARACTER*80 ch1 into ch2 up to a first $ sign + CHARACTER*80 ch1,ch2 + LOGICAL met + INTEGER i +*---------------------------- + met = .FALSE. + DO i=1,80 + IF( ch1(i:i) .EQ. '$' .or. met ) THEN + ch2(i:i)=' ' + met=.TRUE. + ELSE + ch2(i:i)=ch1(i:i) + ENDIF + ENDDO + END + + INTEGER FUNCTION GLK_jadre2(id) +*------------------------------------------------ +* Good old version -- but it is very very slow!!! +* In the case of 100 histograms or more. +*------------------------------------------------ + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id,i +*--------------------------------------- + GLK_jadre2=0 + DO 1 i=1,m_idmax + IF(m_index(i,1) .EQ. id) goto 2 + 1 CONTINUE +* Nothing found. + RETURN +* Found: id=0 is also legitimate find!!! + 2 GLK_jadre2=i + END + + SUBROUTINE GLK_hadres(id1,jadres) +* ********************************* +*-------------------------------------------------------------------- +* Educated guess based on past history is used to find quickly +* location of the histogram in the matrix m_index. +* This is based on observation that subsequent histogram calls +* are linked into loops (so one can predict easily which histo will +* be called next time). +*-------------------------------------------------------------------- + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id1,jadres + INTEGER ist,i,id +*---------------------------------------------------------------------- + INTEGER iguess,jdlast,idlast + DATA iguess,jdlast,idlast /-2141593,-3141593,-3141593/ + SAVE iguess,jdlast,idlast +*---------------------------------------------------------------------- + id=id1 +* --- The case of ID=0 treated separately, it is used to find out +* --- last entry in the m_index (it is marked with zero) + IF(id .EQ. 0) THEN + DO i=1,m_idmax + IF(m_index(i,1) .EQ. 0) GOTO 44 + ENDDO + CALL GLK_Stop1('+++GLK_hadres: Too short m_index=',m_index) + 44 CONTINUE + jadres = i + RETURN + ENDIF + +* --- Omit sophistications if lack of initialization + IF(jdlast .EQ. -3141593) GOTO 10 + IF(iguess .EQ. -2141593) GOTO 10 + IF(iguess .EQ. 0) GOTO 10 + IF(jdlast .EQ. 0) GOTO 10 + +* --- Try first previous histo (for repeated calls) + IF(jdlast .LT. 1 .OR. jdlast .GT. m_idmax) THEN + WRITE(6,*) '+++++ hadres: jdlast=',jdlast + ENDIF + IF(m_index(jdlast,1) .EQ. id) THEN + jadres = jdlast +*## WRITE(6,*) +*## $ 'found, guess based on previous call to jadres ',jdlast + GOTO 20 + ENDIF + +* --- Try current guess based on previous call + IF(iguess .LT. 1 .OR. iguess .GT. m_idmax) THEN + WRITE(6,*)'+++++ hadres: iguess=',iguess + ENDIF + IF(m_index(iguess,1) .EQ. id) THEN + jadres = iguess +*## WRITE(6,*) +*## $ 'found, guess on previous calls recorded in m_b(ist+7)',jdlast + GOTO 20 + ENDIF + +* ================================================ +* Do it HARD WAY, Search all matrix m_index +* ================================================ + 10 CONTINUE +*## WRITE(6,*) 'trying HARD WAY' + DO i=1,m_idmax + jadres=i + IF(m_index(i,1) .EQ. id) GOTO 20 + ENDDO +* ------------------------------------- +* Nothing found: jadres=0 +* ------------------------------------- + jadres=0 + RETURN +* ===================================== +* Found: Set new guess for next call +* ===================================== + 20 CONTINUE +* --- and store result as a new guess in previous histo +* --- but only if it existed!!!! + DO i=1,m_idmax + IF(m_index(i,1) .EQ. 0) GOTO 40 + IF(m_index(i,1) .EQ. idlast) THEN + ist=m_index(i,2) + IF(ist .GT. 0 .AND. ist .LT. m_LenmB) m_b(ist +7) = jadres +*## WRITE(6,*) 'STORED id=',id + GOTO 40 + ENDIF + ENDDO + 40 CONTINUE +*## WRITE(6,*) 'found, hard way searching all of m_index)', jdlast + iguess = m_b( m_index(jadres,2) +7) + jdlast = jadres + idlast = id + END + + +*-------------------------------------------------------------- +* ----------- storing histograms in the disk file ------------- +*-------------------------------------------------------------- + + SUBROUTINE GLK_ReadFile(Dname) +* ****************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + SAVE + INTEGER ninph + CHARACTER*60 Dname +*------------------------------------------------- + CALL GLK_Initialize +* Read histograms + WRITE( *,*) 'GLK_ReadFile: Reading histos from ', Dname + WRITE(m_out,*) 'GLK_ReadFile: Reading histos from ', Dname + ninph = 21 + OPEN(ninph,file=Dname) ! Open dump-file + CALL GLK_hrfile(ninph,' ',' ') ! Define dump-file unit in GKL + CALL GLK_hrin(0,0,0) ! Read histos from dump-file + CALL GLK_hrend(' ') ! Close dump-file + END + + SUBROUTINE GLK_WriteFile(Dname) +* ****************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + SAVE + INTEGER nouth + CHARACTER*60 Dname +*------------------------------------------------- + CALL GLK_Initialize +* Write all histograms into disk file + WRITE( *,*) 'GLK_WriteFile: Writing histos into ', Dname + WRITE(m_out,*) 'GLK_WriteFile: Writing histos into ', Dname + nouth=22 + OPEN(nouth,file=Dname) ! Open dump-file + CALL GLK_hrfile(nouth,' ',' ') ! Define dump-file in GLK + CALL GLK_hrout(0,0,' ') ! Dump all histos on disk + CALL GLK_hrend(' ') ! Close dump-file + END + + SUBROUTINE GLK_hrfile(nhruni,chd1,chd2) +* *************************************** + IMPLICIT NONE + CHARACTER*(*) chd1,chd2 + INCLUDE 'GLK.h' + SAVE + INTEGER nhruni +*------------------------------------------------- + CALL GLK_Initialize + m_huni=nhruni + END + + SUBROUTINE GLK_hrout(idum1,idum2,chdum) +* *************************************** + IMPLICIT NONE + CHARACTER*8 chdum +* + INCLUDE 'GLK.h' + SAVE + INTEGER i,k,last,idum1,idum2 +*----------------------------------------------------------------------- + CALL GLK_Initialize + CALL GLK_hadres(0,last) + IF(last.EQ.0) GOTO 900 + m_LenInd = last -1 + WRITE(m_huni,'(6i10)') m_version, m_LenInd, m_LenmB, m_Length + WRITE(m_huni,'(6i15)') ((m_index(i,k),k=1,3),i=1,m_LenInd) + WRITE(m_huni,'(a80)') (m_titlc(i), i=1,m_LenInd) + WRITE(m_huni,'(3d24.16)') (m_b(i), i=1,m_length) + RETURN + 900 CONTINUE + WRITE(m_out,*) '+++ GLK_hrout: no space in index' + WRITE( *,*) '+++ GLK_hrout: no space in index' + END + + + SUBROUTINE GLK_hrin(idum1,idum2,idum3) +* ************************************** +* New version which has a possibility to +* MERGE histograms +* If given ID already exists then it is modified by adding 1000000 !!!! +* Mergigng is done simply by appending new histograms at the +* very end of the m_index and bin matrices. +* *********************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER idum1,idum2,idum3 + INTEGER l,lact,lenold,istn,idn,k,lenind3,nvrs3,nouth + INTEGER i,lengt3,lenma3 +* Copy of the new m_index from the disk + INTEGER lndex(m_idmax,3) + CHARACTER*80 titld(m_idmax) + LOGICAL GLK_Exist +*----------------------------------------------------------- + CALL GLK_Initialize + nouth=m_huni +* Read basic params + READ(nouth,'(6i10)') nvrs3,lenind3,lenma3,lengt3 + IF(m_length+lengt3 .GE. m_LenmB) GOTO 900 +* Check version + IF(m_version .NE. nvrs3) WRITE(m_out,*) + $ '+++++WARNING (GLK_hrin): histos produced by older version',nvrs3 + IF(m_version .NE. nvrs3) WRITE(6,*) + $ '+++++WARNING (GLK_hrin): histos produced by older version',nvrs3 + DO i=1,m_idmax + DO k=1,3 + lndex(i,k)=0 + ENDDO + ENDDO +* Read new index and title from the disk +* We keep backward compatibility for reading disk files + IF(nvrs3. LT. 130) lenind3 = m_idmax + IF(nvrs3. LT. 134) THEN + READ(nouth,'(6i10)') ((lndex(i,k),k=1,3),i=1,lenind3) + ELSE + READ(nouth,'(6i15)') ((lndex(i,k),k=1,3),i=1,lenind3) + ENDIF + READ(nouth,'(a80)') (titld(i), i=1,lenind3) + lenold=m_length +* Append AT ONCE content of new histos at the end of storage m_b + m_length=m_length+lengt3 + READ(nouth,'(3d24.16)') (m_b(i),i=lenold+1,m_length) + +* Append ONE BY ONE m_index and m_titlc with new histos + CALL GLK_hadres(0,lact) + DO l=1,lenind3 + IF(lact .EQ. 0) GOTO 901 + idn= lndex(l,1) + IF(idn .EQ. 0) GOTO 100 +* Identical id's are changed by adding big number = 1000000 + 10 CONTINUE + IF( GLK_Exist(idn) ) THEN + idn = idn +1000000*(idn/iabs(idn)) + GOTO 10 + ENDIF + m_index(lact,1)=idn + m_index(lact,2)=lndex(l,2)+lenold + m_index(lact,3)=lndex(l,3) + m_titlc(lact) =titld(l) +* Still one small correction in the newly appended histo + istn = m_index(lact,2) + m_b(istn +2) = 9d12 + idn*10 +9d0 + lact=lact+1 + ENDDO + 100 CONTINUE + RETURN + + 900 CONTINUE + CALL GLK_Stop1('++++ GLK_hrin: to litle space, m_LenmB= ',m_LenmB) + 901 CONTINUE + CALL GLK_Stop1('++++ GLK_hrin: to many histos, m_idmax= ',m_idmax) + END + + + SUBROUTINE GLK_hrin2(idum1,idum2,idum3) +* ********************************** +* New version which has a possibility to +* ADD histograms +* If ID is not existing already then no action is taken +* *********************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER idum1,idum2,idum3 +* Copy of the histos from the disk + DOUBLE PRECISION bz(m_LenmB) + INTEGER indez(m_idmax,3) + CHARACTER*80 titlz(m_idmax) + LOGICAL GLK_Exist + INTEGER nouth,ist3,nchx,ist,ist2,ist3z,nchxz,istz + INTEGER ist2z,lact,lenmaz,lengtz,nvrsz,lenindz,lz,id,i,k +*------------------------------------------------------------- + CALL GLK_Initialize + nouth=m_huni +* Read basic params + READ(nouth,'(6i10)') nvrsz,lenindz,lenmaz,lengtz +* Check version + IF(m_version .NE. nvrsz) WRITE(m_out,*) + $ '++++WARNING (GLK_hrin2): histos produced by older version',nvrsz + IF(m_version .NE. nvrsz) WRITE(*,*) + $ '++++WARNING (GLK_hrin2): histos produced by older version',nvrsz + +* We keep backward compatibility for reading disk files + IF(nvrsz. LT. 130) lenindz = m_idmax + DO i=1,m_idmax + DO k=1,3 + indez(i,k)=0 + ENDDO + ENDDO +* Read new m_index, title and bins from the disk + IF(nvrsz. LT. 140) THEN + READ(nouth,'(6i10)') ((indez(i,k),k=1,3),i=1,lenindz) + ELSE + READ(nouth,'(6i15)') ((indez(i,k),k=1,3),i=1,lenindz) + ENDIF + READ(nouth,'(a80)') (titlz(i) , i=1,lenindz) + READ(nouth,'(3d24.16)') (bz(i),i=1,lengtz) + +* Add new histos from disk to existing ones one by one + DO lz=1,lenindz + id= indez(lz,1) + IF(id .EQ. 0) GOTO 200 + IF( .NOT. GLK_Exist(id)) THEN + CALL GLK_Retu1('GLK_hrin2: unmached skipped histo ID=', id) + GOTO 100 + ENDIF +* parameters of existing histo + CALL GLK_hadres(id,lact) + ist = m_index(lact,2) + ist2 = ist+7 + ist3 = ist+11 + nchx = m_b(ist2 +1) +* parameters of the histo from the disk + istz = indez(lz,2) + ist2z = istz+7 + ist3z = istz+11 + nchxz = bz(ist2z +1) + IF(nchx .NE. nchxz) THEN + CALL GLK_Retu1('GLK_hrin2: non-equal bins, skipped ID=', id) + GOTO 100 + ENDIF +* Add/Merge all additive entries of the two histos +* No of entries in m_index + m_index(lact,3) = m_index(lact,3)+indez(lact,3) +* Overflows, underflows etc. + DO i=1,12 + m_b(ist3+i)=m_b(ist3+i) +bz(ist3z+i) + ENDDO +* Except of this one non-additive entry + m_b(ist3+13)=max(m_b(ist3+13),m_b(ist3z+13)) +* Regular bin content added now! + DO i= 1, 2*nchx + m_b(ist+m_buf1+i)=m_b(ist+m_buf1+i) +bz(istz+m_buf1+i) + ENDDO + 100 CONTINUE + ENDDO + 200 CONTINUE + END + + SUBROUTINE GLK_hrend(chdum) +* *********************** + IMPLICIT NONE + INCLUDE 'GLK.h' + CHARACTER*(*) chdum +*--------------------------- + CLOSE(m_huni) + END +*====================================================================== +* End of histograming procedures +*====================================================================== + + + +*====================================================================== +* Ploting procedures using LaTeX +*====================================================================== + + SUBROUTINE GLK_PlInitialize(Lint,TeXfile) +*---------------------------------------------------------------------- +* Lint =0 +* Normal mode, full LaTeX header +* Lint =1 +* For TeX file is used in \input, no LaTeX header +* Lint =2 +* LaTeX header for one-page plot used as input for postscript +* +* Negative Lint only for debug, big frame around plot is added. +*---------------------------------------------------------------------- + IMPLICIT NONE + INCLUDE 'GLK.h' + SAVE + INTEGER Lint,noufig + CHARACTER*60 TeXfile +*--------------------------------- +* Initialize GLK_Plot + CALL GLK_PlInt(Lint) ! Define header style + noufig=11 ! + OPEN(noufig,file=TeXfile) ! Open LaTeX file + CALL GLK_PlCap(noufig) ! Initialize GLK_Plot + END + + SUBROUTINE GLK_PlEnd +* ******************** + IMPLICIT NONE + INCLUDE 'GLK.h' + SAVE +*--------------------------------------------------- +* Note that TeX file is used in \input then you may not want +* to have header and \end{document} + IF( ABS(m_lint) .NE. 1) THEN + WRITE(m_ltx,'(2A)') m_BS,'end{document}' + ENDIF + CLOSE(m_ltx) + END + + SUBROUTINE GLK_PlInt(Lint) +* ************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + SAVE + INTEGER Lint +*--------------------------------- + m_lint = Lint + END + + SUBROUTINE GLK_PlCap(LtxUnit) +* **************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER LtxUnit,i,k +*--------- + CALL GLK_Initialize + m_KeyTit= 0 + DO i=1,m_titlen + DO k=1,80 + m_titch(i)(k:k)=' ' + ENDDO + ENDDO +*--------- + m_tline = 1 + m_ltx=IABS(LtxUnit) + + IF( ABS(m_lint) .EQ. 0) THEN +* Normal mode, no colors!!! + WRITE(m_ltx,'(A,A)') m_BS,'documentclass[12pt]{article}' +*!! WRITE(m_ltx,'(A,A)') m_BS,'usepackage{html}' + WRITE(m_ltx,'(A,A)') m_BS,'textwidth = 16cm' + WRITE(m_ltx,'(A,A)') m_BS,'textheight = 18cm' + WRITE(m_ltx,'(A,A)') m_BS,'begin{document}' + WRITE(m_ltx,'(A)') ' ' + ELSEIF( ABS(m_lint) .EQ. 1) THEN +* For TeX file is used in \input + WRITE(m_ltx,'(A)') ' ' + ELSEIF( ABS(m_lint) .EQ. 2) THEN +* For one-page plot being input for postrscript +*!! WRITE(m_ltx,'(A,A)') m_BS,'documentclass[12pt,html]{article}' +*!! WRITE(m_ltx,'(A,A)') m_BS,'documentclass[12pt,dvips]{seminar}' !<-for colors!!! + WRITE(m_ltx,'(A,A)') m_BS,'documentclass[12pt,dvips]{article}' + WRITE(m_ltx,'(A,A)') m_BS,'usepackage{amsmath}' + WRITE(m_ltx,'(A,A)') m_BS,'usepackage{amssymb}' +*!! WRITE(m_ltx,'(A,A)') m_BS,'usepackage{html}' + WRITE(m_ltx,'(A,A)') m_BS,'usepackage{epsfig}' + WRITE(m_ltx,'(A,A)') m_BS,'usepackage{epic}' + WRITE(m_ltx,'(A,A)') m_BS,'usepackage{eepic}' + WRITE(m_ltx,'(A,A)') m_BS,'usepackage{color}' !<-for colors!!! +*!! WRITE(m_ltx,'(A,A)') m_BS,'hoffset = -1in' +*!! WRITE(m_ltx,'(A,A)') m_BS,'voffset = -1in' +*!! WRITE(m_ltx,'(A,A)') m_BS,'textwidth = 16cm' +*!! WRITE(m_ltx,'(A,A)') m_BS,'textheight = 16cm' +*!! WRITE(m_ltx,'(A,A)') m_BS,'oddsidemargin = 0cm' +*!! WRITE(m_ltx,'(A,A)') m_BS,'topmargin = 0cm' +*!! WRITE(m_ltx,'(A,A)') m_BS,'headheight = 0cm' +*!! WRITE(m_ltx,'(A,A)') m_BS,'headsep = 0cm' + WRITE(m_ltx,'(A,A)') m_BS,'begin{document}' + WRITE(m_ltx,'(A,A)') m_BS,'pagestyle{empty}' + WRITE(m_ltx,'(A)') ' ' + ELSE + CALL GLK_Stop1('+++STOP in GLK_PlInt, wrong m_lint=',m_lint) + ENDIF + END + + + SUBROUTINE GLK_Plot(id,ch1,ch2,kdum) +* ************************************ + IMPLICIT NONE + INCLUDE 'GLK.h' + CHARACTER CH1,CH2,CHR + CHARACTER*80 TITLE + INTEGER id,kdum + DOUBLE PRECISION YY(m_MaxNb),YER(m_MaxNb) + LOGICAL GLK_EXIST + INTEGER idum,kax,kay,ioplog,iopsla,ioperb,iopsc1,iopsc2 + INTEGER ker,nchx + DOUBLE PRECISION XL,XU,DXL,DXU,yl,yu +*-------------------------------------------- + DATA CHR /' '/ +* RETURN if histo non-existing + IF(.NOT.GLK_EXIST(ID)) GOTO 900 +* ...unpack histogram + CALL GLK_UNPAK(ID,YY ,' ',IDUM) + CALL GLK_UNPAK(ID,YER,'ERRO',IDUM) + CALL GLK_HINBO1(ID,TITLE,NCHX,DXL,DXU) + XL = DXL + XU = DXU + CALL GLK_RANGE1(ID,YL,YU) + kax=1200 + kay=1200 + IF(CH1 .EQ. 'S') THEN +* ...superimpose plot + BACKSPACE(m_ltx) + BACKSPACE(m_ltx) + ELSE +* ...new frame only + CHR=CH1 + CALL GLK_Plfram1(ID,kax,kay) + ENDIF + WRITE(m_ltx,'(A)') '%========== next plot (line) ==========' + WRITE(m_ltx,'(A,I10)') '%==== HISTOGRAM ID=',ID + WRITE(m_ltx,'(A,A70 )')'% ',TITLE +*...cont. line for functions + CALL GLK_OptOut(id,ioplog,iopsla,ioperb,iopsc1,iopsc2) + ker = ioperb-1 + IF (iopsla .EQ. 2) CHR='C' +*...suppress GLK_PLOT assignments + IF (CH2 .EQ. 'B') CHR=' ' + IF (CH2 .EQ. '*') CHR='*' + IF (CH2 .EQ. 'C') CHR='C' +*...various types of lines + IF (CHR .EQ. ' ') THEN +*...contour line used for histogram + CALL GLK_PlHist(kax,kay,NCHX,YL,YU,YY,KER,YER) + ELSE IF(CHR .EQ. '*') THEN +*...marks in the midle of the bin + CALL GLK_PlHis2(kax,kay,NCHX,YL,YU,YY,KER,YER) + ELSE IF(CHR .EQ. 'C') THEN +*...slanted (dotted) line in plotting non-MC functions + CALL GLK_PlCirc(kax,kay,NCHX,YL,YU,YY) + ENDIF +*------------------------------! +* Ending +*------------------------------! + WRITE(m_ltx,'(2A)') m_BS,'end{picture} % close entire picture ' + WRITE(m_ltx,'(2A)') m_BS,'end{figure}' + + RETURN + 900 CALL GLK_Retu1('+++GLK_PLOT: Nonexistig histo, skipped, id=' ,ID) + END + + SUBROUTINE GLK_Plfram1(ID,kax,kay) +* ********************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER ID,kax,kay + CHARACTER*80 title + DOUBLE PRECISION TIPSY(20),TIPSX(20) + DOUBLE PRECISION XL,DXL,XU,DXU + INTEGER ntipy,ntipx,nchx,icont + DOUBLE PRECISION yu,yl + DATA ICONT/0/ +*---------------- + ICONT=ICONT+1 + CALL GLK_HINBO1(ID,TITLE,NCHX,DXL,DXU) + XL = DXL + XU = DXU + CALL GLK_RANGE1(ID,YL,YU) + + IF(ICONT .GT. 1) WRITE(m_ltx,'(2A)') m_BS,'newpage' +*------------------------------! +* Header +*------------------------------! + WRITE(m_ltx,'(A)') ' ' + WRITE(m_ltx,'(A)') ' ' + WRITE(m_ltx,'(A)') '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + $%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%' + WRITE(m_ltx,'(A)') '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + $%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%' + WRITE(m_ltx,'(2A)') m_BS,'begin{figure}[!ht]' + WRITE(m_ltx,'(2A)') m_BS,'centering' +*------------------------------! +* General Caption +*------------------------------! + WRITE(m_ltx,'(4A)') m_BS,'caption{',m_BS,'small' + IF(M_KEYTIT.EQ.0) THEN + WRITE(m_ltx,'(A)') TITLE + ELSE + WRITE(m_ltx,'(A)') m_titch(1) + ENDIF + WRITE(m_ltx,'(A)') '}' +*------------------------------! +* Frames and labels +*------------------------------! + WRITE(m_ltx,'(A)') '% =========== big frame, title etc. =======' + WRITE(m_ltx,'(4A)') m_BS,'setlength{',m_BS,'unitlength}{0.1mm}' + WRITE(m_ltx,'(2A)') m_BS,'begin{picture}(1600,1500)' + WRITE(m_ltx,'(4A)') + $ m_BS,'put(0,0){',m_BS,'framebox(1600,1500){ }}' + WRITE(m_ltx,'(A)') '% =========== small frame, labeled axis ===' + WRITE(m_ltx,'(4A,I4,A,I4,A)') + $ m_BS,'put(300,250){',m_BS,'begin{picture}( ',kax,',',kay,')' + WRITE(m_ltx,'(4A,I4,A,I4,A)') + $ m_BS,'put(0,0){',m_BS,'framebox( ',kax,',',kay,'){ }}' + WRITE(m_ltx,'(A)') '% =========== x and y axis ================' + CALL GLK_SAxisX(kax,XL,XU,NTIPX,TIPSX) + CALL GLK_SAxisY(kay,YL,YU,NTIPY,TIPSY) + WRITE(m_ltx,'(3A)') m_BS,'end{picture}}' + $ ,'% end of plotting labeled axis' + END + + SUBROUTINE GLK_SAxisX(kay,YL,YU,NLT,TIPSY) +* *************************************** +* plotting x-axis with long and short tips + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER kay,NLT + DOUBLE PRECISION YL,YU,TIPSY(20) +* + INTEGER LY,JY,n,nts,k,lex + DOUBLE PRECISION DY,pds,scmx,p0s,ddys,yy0l,ddyl,pdl,p0l,yy0s +*--------------------------------------------------- + DY= ABS(YU-YL) + LY = NINT( LOG10(DY) -0.4999999d0 ) + JY = NINT(DY/10d0**LY) + DDYL = DY*10d0**(-LY) + IF( JY .EQ. 1) DDYL = 10d0**LY*0.25d0 + IF( JY .GE. 2.AND.JY .LE. 3) DDYL = 10d0**LY*0.5d0 + IF( JY .GE. 4.AND.JY .LE. 6) DDYL = 10d0**LY*1.0d0 + IF( JY .GE. 7) DDYL = 10d0**LY*2.0d0 + WRITE(m_ltx,'(A)') '% .......GLK_SAxisX........ ' + WRITE(m_ltx,'(A,I4)') '% JY= ',JY +*------- + NLT = INT(DY/DDYL) + NLT = MAX0(MIN0(NLT,20),1)+1 + YY0L = NINT(YL/DDYL+0.5d0)*DDYL + DDYS = DDYL/10d0 + YY0S = NINT(YL/DDYS+0.4999999d0)*DDYS + P0L = kay*(YY0L-YL)/(YU-YL) + PDL = kay*DDYL/(YU-YL) + P0S = kay*(YY0S-YL)/(YU-YL) + PDS = kay*DDYS/(YU-YL) + NLT = INT(ABS(YU-YY0L)/DDYL+0.0000001d0)+1 + NTS = INT(ABS(YU-YY0S)/DDYS+0.0000001d0)+1 + DO 41 N=1,NLT + TIPSY(N) =YY0L+ DDYL*(N-1) + 41 CONTINUE + WRITE(m_ltx,1000) + $ m_BS,'multiput(' ,P0L, ',0)(' ,PDL, ',0){' ,NLT, '}{', + $ m_BS,'line(0,1){25}}', + $ m_BS,'multiput(' ,P0S, ',0)(' ,PDS, ',0){' ,NTS, '}{', + $ m_BS,'line(0,1){10}}' + WRITE(m_ltx,1001) + $ m_BS,'multiput(' ,P0L, ',' ,kay, ')(' ,PDL, ',0){' ,NLT, + $ '}{' ,m_BS, 'line(0,-1){25}}', + $ m_BS,'multiput(' ,P0S, ',' ,kay, ')(' ,PDS, ',0){' ,NTS, + $ '}{' ,m_BS, 'line(0,-1){10}}' + 1000 FORMAT(2A,F8.2,A,F8.2,A,I4,3A) + 1001 FORMAT(2A,F8.2,A,I4,A,F8.2,A,I4,3A) +* ...labeling of axis + SCMX = DMAX1(DABS(YL),DABS(YU)) + LEX = NINT( LOG10(SCMX) -0.50001) + DO 45 N=1,NLT + K = NINT(kay*(TIPSY(N)-YL)/(YU-YL)) + IF(LEX .LT. 2.AND.LEX .GT. -1) THEN +* ...without exponent + WRITE(m_ltx,'(2A,I4,5A,F8.3,A)') + $ m_BS,'put(',K,',-25){',m_BS,'makebox(0,0)[t]{',m_BS,'large $ ', + $ TIPSY(N), ' $}}' + ELSE +* ...with exponent + WRITE(m_ltx,'(2A,I4,5A,F8.3,2A,I4,A)') + $ m_BS,'put(' ,K, ',-25){',m_BS,'makebox(0,0)[t]{',m_BS,'large $ ', + $ TIPSY(N)/(10d0**LEX),m_BS,'cdot 10^{',LEX,'} $}}' + ENDIF + 45 CONTINUE + END + + SUBROUTINE GLK_SAxisY(kay,yl,yu,nlt,tipsy) +* ****************************************** +* plotting y-axis with long and short tips + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER kay,nlt + DOUBLE PRECISION yl,yu,tipsy(20) +* + DOUBLE PRECISION dy,ddyl,z0l,scmx,yy0s,ddys,yy0l,p0l,pds,p0s,pdl + INTEGER ly,jy,n,nts,k,lex +*--------------------------------------------------- + DY= ABS(YU-YL) + LY = NINT( LOG10(DY) -0.49999999d0 ) + JY = NINT(DY/10d0**LY) + DDYL = DY*10d0**(-LY) + IF( JY .EQ. 1) DDYL = 10d0**LY*0.25d0 + IF( JY .GE. 2.AND.JY .LE. 3) DDYL = 10d0**LY*0.5d0 + IF( JY .GE. 4.AND.JY .LE. 6) DDYL = 10d0**LY*1.0d0 + IF( JY .GE. 7) DDYL = 10d0**LY*2.0d0 + WRITE(m_ltx,'(A)') '% .......GLK_SAxisY........ ' + WRITE(m_ltx,'(A,I4)') '% JY= ',JY +*------- + NLT = INT(DY/DDYL) + NLT = MAX0(MIN0(NLT,20),1)+1 + YY0L = NINT(YL/DDYL+0.4999999d0)*DDYL + DDYS = DDYL/10d0 + YY0S = NINT(YL/DDYS+0.5d0)*DDYS + P0L = kay*(YY0L-YL)/(YU-YL) + PDL = kay*DDYL/(YU-YL) + P0S = kay*(YY0S-YL)/(YU-YL) + PDS = kay*DDYS/(YU-YL) + NLT= INT(ABS(YU-YY0L)/DDYL+0.0000001d0) +1 + NTS= INT(ABS(YU-YY0S)/DDYS+0.0000001d0) +1 + DO 41 N=1,NLT + TIPSY(N) =YY0L+ DDYL*(N-1) + 41 CONTINUE +* plotting tics on vertical axis + WRITE(m_ltx,1000) + $ m_BS,'multiput(0,' ,P0L, ')(0,' ,PDL ,'){' ,NLT, '}{', + $ m_BS,'line(1,0){25}}', + $ m_BS,'multiput(0,' ,P0S, ')(0,' ,PDS, '){' ,NTS, '}{', + $ m_BS,'line(1,0){10}}' + WRITE(m_ltx,1001) + $ m_BS,'multiput(' ,kay, ',' ,P0L, ')(0,' ,PDL, '){' ,NLT, + $ '}{',m_BS,'line(-1,0){25}}', + $ m_BS,'multiput(' ,kay, ',' ,P0S, ')(0,' ,PDS, '){' ,NTS, + $ '}{',m_BS,'line(-1,0){10}}' + 1000 FORMAT(2A,F8.2,A,F8.2,A,I4,3A) + 1001 FORMAT(2A,I4,A,F8.2,A,F8.2,A,I4,3A) +* ...Zero line if necessary + Z0L = kay*(-YL)/(YU-YL) + IF(Z0L .GT. 0D0.AND.Z0L .LT. FLOAT(kay)) + $ WRITE(m_ltx,'(2A,F8.2,3A,I4,A)') + $ m_BS,'put(0,' ,Z0L, '){',m_BS,'line(1,0){' ,kay, '}}' +* ...labeling of axis + SCMX = DMAX1(DABS(YL),DABS(YU)) + LEX = NINT( LOG10(SCMX) -0.50001d0) + DO 45 N=1,NLT + K = NINT(kay*(TIPSY(N)-YL)/(YU-YL)) + IF(LEX .LT. 2.AND.LEX .GT. -1) THEN +* ...without exponent + WRITE(m_ltx,'(2A,I4,5A,F8.3,A)') + $ m_BS,'put(-25,' ,K, '){',m_BS,'makebox(0,0)[r]{', + $ m_BS,'large $ ' ,TIPSY(N), ' $}}' + ELSE +* ...with exponent + WRITE(m_ltx,'(2A,I4,5A,F8.3,2A,I4,A)') + $ m_BS,'put(-25,' ,K, '){',m_BS,'makebox(0,0)[r]{', + $ m_BS,'large $ ' + $ ,TIPSY(N)/(10d0**LEX), m_BS,'cdot 10^{' ,LEX, '} $}}' + ENDIF + 45 CONTINUE + END + + SUBROUTINE GLK_PlHist(kax,kay,nchx,yl,yu,yy,ker,yer) +* ************************************************ +* plotting contour line for histogram +* *********************** + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER kax,kay,nchx,ker + DOUBLE PRECISION yl,yu,yy(*),yer(*) + CHARACTER*80 FMT1 +* + INTEGER IX0,ix2,idx,ie,ierr,idy,ib,iy0,iy1,ix1 +*--------------------------------------------------- + WRITE(m_ltx,'(4A,I4,A,I4,A)') + $ m_BS,'put(300,250){',m_BS,'begin{picture}( ',kax,',',kay,')' + WRITE(m_ltx,'(A)') '% ========== plotting primitives ==========' +*...various types of line + IF(m_tline .EQ. 1) THEN + WRITE(m_ltx,'(2A)') m_BS,'thicklines ' + ELSE + WRITE(m_ltx,'(2A)') m_BS,'thinlines ' + ENDIF +*...short macros for vertical/horizontal straight lines + WRITE(m_ltx,'(8A)') + $ m_BS,'newcommand{',m_BS,'x}[3]{',m_BS,'put(#1,#2){', + $ m_BS,'line(1,0){#3}}}' + WRITE(m_ltx,'(8A)') + $ m_BS,'newcommand{',m_BS,'y}[3]{',m_BS,'put(#1,#2){', + $ m_BS,'line(0,1){#3}}}' + WRITE(m_ltx,'(8A)') + $ m_BS,'newcommand{',m_BS,'z}[3]{',m_BS,'put(#1,#2){', + $ m_BS,'line(0,-1){#3}}}' +* error bars + WRITE(m_ltx,'(8A)') + $ m_BS,'newcommand{',m_BS,'e}[3]{', + $ m_BS,'put(#1,#2){',m_BS,'line(0,1){#3}}}' + IX0=0 + IY0=0 + DO 100 IB=1,NCHX + IX1 = NINT(kax*(IB-0.00001)/NCHX) !ib=7 + IY1 = NINT(kay*(YY(IB)-YL)/(YU-YL)) !iy1=775,while ix0=168,iy0=770 + IDY = IY1-IY0 + IDX = IX1-IX0 + FMT1 = '(2(2A,I4,A,I4,A,I4,A))' + IF( IDY .GE. 0) THEN + IF(IY1 .GE. 0.AND.IY1 .LE. kay) + $ WRITE(m_ltx,FMT1) m_BS,'y{',IX0,'}{',IY0,'}{',IDY,'}', + $ m_BS,'x{',IX0,'}{',IY1,'}{',IDX,'}' + ELSE + IF(IY1 .GE. 0.AND.IY1 .LE. kay) + $ WRITE(m_ltx,FMT1) m_BS,'z{',IX0,'}{',IY0,'}{',-IDY,'}', + $ m_BS,'x{',IX0,'}{',IY1,'}{',IDX,'}' + ENDIF + IX0=IX1 + IY0=IY1 + IF(KER .EQ. 1) THEN + IX2 = NINT(kax*(IB-0.5000d0)/NCHX) + IERR = NINT(kay*((YY(IB)-YER(IB))-YL)/(YU-YL)) + IE = NINT(kay*YER(IB)/(YU-YL)) + IF(IY1 .GE. 0.AND.IY1 .LE. kay.and.abs(ierr) .LE. 9999 + $ .and.2*ie .LE. 9999) WRITE(m_ltx,8000) m_BS,IX2,IERR,IE*2 + ENDIF + 100 CONTINUE +8000 FORMAT(4(A1,2He{,I4,2H}{,I5,2H}{,I4,1H}:1X )) + WRITE(m_ltx,'(3A)') m_BS,'end{picture}}', + $ ' % end of plotting histogram' +* change line-style + m_tline= m_tline+1 + IF(m_tline .GT. 2) m_tline=1 + END + + SUBROUTINE GLK_PlHis2(kax,kay,nchx,yl,yu,yy,ker,yer) +* ************************************************ +* marks in the midle of the bin +* ********************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + DOUBLE PRECISION yl,yu,yy(*),yer(*) + INTEGER kax,kay,nchx,ker +* + INTEGER iy1,ierr,ie,ix1,irad1,irad2,ib +*--------------------------------------------------- + + WRITE(m_ltx,'(4A,I4,A,I4,A)') + $ m_BS,'put(300,250){',m_BS,'begin{picture}( ',kax,',',kay,')' + WRITE(m_ltx,'(A)') '% ========== plotting primitives ==========' +*...various types of mark + IRAD1= 6 + IRAD2=10 + IF(m_tline .EQ. 1) THEN +* small filled circle + WRITE(m_ltx,'(8A,I3,A)') + $ m_BS,'newcommand{',m_BS,'R}[2]{', + $ m_BS,'put(#1,#2){',m_BS,'circle*{',IRAD1,'}}}' + ELSEIF(m_tline .EQ. 2) THEN +* small open circle + WRITE(m_ltx,'(8A,I3,A)') + $ m_BS,'newcommand{',m_BS,'R}[2]{', + $ m_BS,'put(#1,#2){',m_BS,'circle{',IRAD1,'}}}' + ELSEIF(m_tline .EQ. 3) THEN +* big filled circle + WRITE(m_ltx,'(8A,I3,A)') + $ m_BS,'newcommand{',m_BS,'R}[2]{', + $ m_BS,'put(#1,#2){',m_BS,'circle*{',IRAD2,'}}}' + ELSEIF(m_tline .EQ. 4) THEN +* big open circle + WRITE(m_ltx,'(8A,I3,A)') + $ m_BS,'newcommand{',m_BS,'R}[2]{', + $ m_BS,'put(#1,#2){',m_BS,'circle{',IRAD2,'}}}' +* Other symbols + ELSEIF(m_tline .EQ. 5) THEN + WRITE(m_ltx,'(10A)') + $ m_BS,'newcommand{',m_BS,'R}[2]{', + $ m_BS,'put(#1,#2){',m_BS,'makebox(0,0){$',m_BS,'diamond$}}}' + ELSE + WRITE(m_ltx,'(10A)') + $ m_BS,'newcommand{',m_BS,'R}[2]{', + $ m_BS,'put(#1,#2){',m_BS,'makebox(0,0){$',m_BS,'star$}}}' + ENDIF +* error bars + WRITE(m_ltx,'(8A)') + $ m_BS,'newcommand{',m_BS,'E}[3]{', + $ m_BS,'put(#1,#2){',m_BS,'line(0,1){#3}}}' + DO 100 IB=1,NCHX + IX1 = NINT(kax*(IB-0.5000d0)/NCHX) + IY1 = NINT(kay*(YY(IB)-YL)/(YU-YL)) + IF(IY1 .GE. 0.AND.IY1 .LE. kay) WRITE(m_ltx,7000) m_BS,IX1,IY1 + IF(KER .EQ. 1) THEN + IERR = NINT(kay*((YY(IB)-YER(IB))-YL)/(YU-YL)) + IE = NINT(kay*YER(IB)/(YU-YL)) + IF(IY1 .GE. 0.AND.IY1 .LE. kay.and.abs(ierr) .LE. 9999 + $ .and.2*ie .LE. 9999) WRITE(m_ltx,8000) m_BS,IX1,IERR,IE*2 + ENDIF + 100 CONTINUE +7000 FORMAT(4(A1,2HR{,I4,2H}{,I4,1H}:1X )) +8000 FORMAT(4(A1,2HE{,I4,2H}{,I5,2H}{,I4,1H}:1X )) + WRITE(m_ltx,'(3A)') m_BS,'end{picture}}', + $ ' % end of plotting histogram' +* change line-style + m_tline= m_tline+1 + IF(m_tline .GT. 6) m_tline=1 + END + + SUBROUTINE GLK_PlCirc(kax,kay,nchx,yl,yu,yy) +* **************************************** +* plots equidistant points, four-point interpolation, + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER kax,kay,nchx + DOUBLE PRECISION yl,yu,yy(*) +* + INTEGER IX(m_MaxNb),IY(m_MaxNb) + DOUBLE PRECISION ai0,dx,aj0,ds,facy,aj,ai + INTEGER ipnt,i,iter,ipoin,irad1,irad2 + DOUBLE PRECISION GLK_AproF +*--------------------------------------------------- + +* ...various types of line +* ...distance between points is DS, radius of a point is IRAD + IRAD2=6 + IRAD1=3 +* ............. + WRITE(m_ltx,'(4A,I4,A,I4,A)') + $ m_BS,'put(300,250){',m_BS,'begin{picture}( ',kax,',',kay,')' + WRITE(m_ltx,'(A)') '% ========== plotting primitives ==========' + IF(m_tline .EQ. 1) THEN +* small filled circle + DS = 10 + WRITE(m_ltx,'(8A,I3,A)') + $ m_BS,'newcommand{',m_BS,'R}[2]{', + $ m_BS,'put(#1,#2){',m_BS,'circle*{',IRAD1,'}}}' + ELSEIF(m_tline .EQ. 2) THEN +* small open circle + DS = 10 + WRITE(m_ltx,'(8A,I3,A)') + $ m_BS,'newcommand{',m_BS,'R}[2]{', + $ m_BS,'put(#1,#2){',m_BS,'circle{',IRAD1,'}}}' + ELSEIF(m_tline .EQ. 3) THEN +* big filled circle + DS = 20 + WRITE(m_ltx,'(8A,I3,A)') + $ m_BS,'newcommand{',m_BS,'R}[2]{', + $ m_BS,'put(#1,#2){',m_BS,'circle*{',IRAD2,'}}}' + ELSEIF(m_tline .EQ. 4) THEN +* big open circle + DS = 20 + WRITE(m_ltx,'(8A,I3,A)') + $ m_BS,'newcommand{',m_BS,'R}[2]{', + $ m_BS,'put(#1,#2){',m_BS,'circle{',IRAD2,'}}}' +* Other symbols + ELSEIF(m_tline .EQ. 5) THEN + DS = 20 + WRITE(m_ltx,'(10A)') + $ m_BS,'newcommand{',m_BS,'R}[2]{', + $ m_BS,'put(#1,#2){',m_BS,'makebox(0,0){$',m_BS,'diamond$}}}' + ELSE + DS = 20 + WRITE(m_ltx,'(10A)') + $ m_BS,'newcommand{',m_BS,'R}[2]{', + $ m_BS,'put(#1,#2){',m_BS,'makebox(0,0){$',m_BS,'star$}}}' + ENDIF + FACY = kay/(YU-YL) +* plot first point + AI = 0. + AJ = (GLK_AproF( (AI/kax)*NCHX+0.5d0, NCHX, YY) -YL)*FACY + IPNT =1 + IX(IPNT) = INT(AI) + IY(IPNT) = INT(AJ) + DX = DS + AI0 = AI + AJ0 = AJ +* plot next points + DO 100 IPOIN=2,3000 +* iteration to get (approximately) equal distance among ploted points + DO 50 ITER=1,3 + AI = AI0+DX + AJ = (GLK_AproF( (AI/kax)*NCHX+0.5d0, NCHX, YY) -YL)*FACY + DX = DX *DS/SQRT(DX**2 + (AJ-AJ0)**2) + 50 CONTINUE + IF(INT(AJ) .GE. 0.AND.INT(AJ) .LE. kay.AND.INT(AI) .LE. kax) THEN + IPNT = IPNT+1 + IX(IPNT) = INT(AI) + IY(IPNT) = INT(AJ) + ENDIF + AI0 = AI + AJ0 = AJ + IF(INT(AI) .GT. kax) GOTO 101 + 100 CONTINUE + 101 CONTINUE + WRITE(m_ltx,7000) (m_BS,IX(I),IY(I), I=1,IPNT) +7000 FORMAT(4(A1,2HR{,I4,2H}{,I4,1H}:1X )) + WRITE(m_ltx,'(2A)') m_BS,'end{picture}} % end of plotting line' +* change line-style + m_tline= m_tline+1 + IF(m_tline .GT. 2) m_tline=1 + END + + DOUBLE PRECISION FUNCTION GLK_AproF(px,nch,yy) +* ************************************************ +* PX is a continuous extension of the m_index in array YY + IMPLICIT NONE + INTEGER nch,ip + DOUBLE PRECISION px,yy(*),X,p +*----------------------------------------------------- + X=PX + IF(X .LT. 0.0.OR.X .GT. FLOAT(NCH+1)) THEN + GLK_AproF= -1E-20 + RETURN + ENDIF + IP=INT(X) + IF(IP .LT. 2) IP=2 + IF(IP .GT. NCH-2) IP=NCH-2 + P=X-IP + GLK_AproF = + $ -(1./6.)*P*(P-1)*(P-2) *YY(IP-1) + $ +(1./2.)*(P*P-1)*(P-2) *YY(IP ) + $ -(1./2.)*P*(P+1)*(P-2) *YY(IP+1) + $ +(1./6.)*P*(P*P-1) *YY(IP+2) + END + + SUBROUTINE GLK_PlTitle(title) +* ***************************** + IMPLICIT NONE + INCLUDE 'GLK.h' + SAVE + CHARACTER*80 title +*---------------------------------------- + m_KeyTit=1 + CALL GLK_Copch(title,m_titch(1)) + END + + SUBROUTINE GLK_PlCapt(lines) +* **************************** +* This routine defines caption and should be called +* before CALL GLK_Plot2, GLK_PlTable or bpltab2 +* The matrix CHARACTER*80 lines containes text of the caption ended +* with the last line '% end-of-caption' + IMPLICIT NONE + CHARACTER*80 lines(*) + INCLUDE 'GLK.h' + SAVE + INTEGER i +*---------------------------------- + m_KeyTit=0 + DO i=1,m_titlen + m_titch(i)=lines(i) + m_KeyTit= m_KeyTit+1 + IF(lines(i) .EQ. '% end-of-caption' ) GOTO 100 + ENDDO + CALL GLK_Retu1(' WARNING from GLK_PlCapt: to many lines =',m_titlen) + 100 CONTINUE + END + + SUBROUTINE GLK_PlLabel(lines) +* ***************************** +* This should be envoked after 'CALL GLK_Plot2' +* to add lines of TeX to a given plot +* *********************************** + IMPLICIT NONE + CHARACTER*80 lines(*) + INCLUDE 'GLK.h' + SAVE + INTEGER i +*---------------------------------- + m_KeyTit=0 + DO i=1,m_titlen + m_titch(i)=lines(i) + m_KeyTit= m_KeyTit+1 + IF(lines(i) .EQ. '% end-of-label' ) GOTO 100 + ENDDO + CALL GLK_Retu1(' WARNING from GLK_PlLabel: to many lines =',m_titlen) + 100 CONTINUE +*------------------------------! +* erase Ending ! +*------------------------------! + BACKSPACE(m_ltx) + BACKSPACE(m_ltx) +* + DO i=1,m_KeyTit + WRITE(m_ltx,'(A)') m_titch(i) + ENDDO +*------------------------------! +* restore Ending ! +*------------------------------! + WRITE(m_ltx,'(2A)') m_BS,'end{picture} % close entire picture ' + IF(ABS(m_lint) .EQ. 2) THEN + WRITE(m_ltx,'(A)') '%====== end of GLK_PlLabel ==========' + ELSE + WRITE(m_ltx,'(2A)') m_BS,'end{figure}' + ENDIF + END + + + SUBROUTINE GLK_Plot2(id,ch1,ch2,chmark,chxfmt,chyfmt) +* ***************************************************** +* The new, more user-friendly, version of older GLK_Plot +* INPUT: +* ID histogram identifier +* ch1 = ' ' normal new plot +* = 'S' impose new plot on previous one +* ch2 = ' ' ploting line default, contour +* = '*' error bars in midle of the bin +* = 'R' error bars at Right edge of the bin +* = 'L' error bars at Left edge of the bin +* = 'C' slanted continuous smooth line +* chmark = TeX symbol for ploting points +* chxfmt = format (string) for labeling x-axis +* chyfmt = format (string) for labeling y-axis +* Furthermore: +* Captions are defined by means of +* CALL GLK_PlCapt(capt) before CALL GLK_Plot2 +* where CHARACTER*80 capt(50) is content of +* caption, line by line, see also comments in GLK_PlCapt routine. +* Additional text as a TeX source text can be appended by means of +* CALL GLK_PlLabel(lines) after CALL GLK_Plot2 +* where CHARACTER*80 lines(50) is the TeX add-on. +* This is to be used to decorate plot with +* any kind marks, special labels and text on the plot. +* +* ************************************ + IMPLICIT NONE + INTEGER id + CHARACTER ch1,ch2,chmark*(*) + CHARACTER*8 chxfmt,chyfmt + INCLUDE 'GLK.h' + SAVE + DOUBLE PRECISION yy(m_MaxNb),yer(m_MaxNb) + CHARACTER*80 title +*--------------------------------------------------------------------- + LOGICAL GLK_Exist + INTEGER kax,kay,incr,ker,nchx + INTEGER iopsla,ioplog,ioperb,iopsc1,iopsc2,idum + DOUBLE PRECISION dxl,dxu,xu,xl,yu,yl + CHARACTER chr + DATA CHR /' '/ +* TeX Names of the error-bar command and of the point-mark command + CHARACTER*1 chre, chrp1 + PARAMETER ( chre = 'E', chrp1= 'R' ) + CHARACTER*2 chrp +* TeX Name of the point-mark command + CHARACTER*1 chrx(12) + DATA chrx /'a','b','c','d','f','g','h','i','j','k','l','m'/ +*--------------------------------------------------------------------- +* RETURN if histo non-existing + IF(.NOT.GLK_Exist(id)) GOTO 900 +* ...unpack histogram + CALL GLK_UnPak(id,yy ,' ',idum) + CALL GLK_UnPak(id,yer,'ERRO',idum) + CALL GLK_hinbo1(id,title,nchx,dxl,dxu) +* Header + kax=1200 + kay=1200 + IF(CH1 .EQ. 'S') THEN +* Superimpose plot + incr=incr+1 + BACKSPACE(m_ltx) + BACKSPACE(m_ltx) + ELSE +* New frame only + incr=1 + CHR=CH1 + CALL GLK_PlFrame(id,kax,kay,chxfmt,chyfmt) +* The Y-range from first plot is preserved + CALL GLK_Range1(id,yl,yu) + ENDIF +* The X-range as in histo + xl = dxl + xu = dxu +* + chrp= chrp1//chrx(incr) + WRITE(m_ltx,'(A)') '%=GLK_Plot2: next plot (line) ==========' + WRITE(m_ltx,'(A,I10)')'%====HISTOGRAM ID=',ID + WRITE(m_ltx,'(A,A70 )') '% ',TITLE + CALL GLK_OptOut(id,ioplog,iopsla,ioperb,iopsc1,iopsc2) + ker = ioperb-1 +* Default line type + IF (iopsla .EQ. 2) THEN + CHR='C' + ELSE + CHR=' ' + ENDIF +* User defined line-type + IF (CH2 .EQ. 'B') CHR=' ' +*...marks in the midle of the bin + IF (CH2 .EQ. '*') CHR='*' +*...marks on the right edge of the bin + IF (CH2 .EQ. 'R') CHR='R' +*...marks on the left edge of the bin + IF (CH2 .EQ. 'L') CHR='L' + IF (CH2 .EQ. 'C') CHR='C' +*...various types of lines + IF (CHR .EQ. ' ') THEN +*...contour line used for histogram + CALL GLK_PlKont(kax,kay,nchx,yl,yu,yy,ker,yer) + ELSE IF(CHR .EQ. '*' .OR. CHR .EQ. 'R'.OR. CHR .EQ. 'L') THEN +*...marks on the right/left/midle of the bin + CALL GLK_PlMark(kax,kay,nchx,yl,yu,yy,ker,yer,chmark,chr,chrp,chre) + ELSE IF(CHR .EQ. 'C') THEN +*...slanted (dotted) line in plotting non-MC functions + CALL GLK_PlCirc(kax,kay,nchx,yl,yu,yy) + ENDIF +*------------------------------! +* ENDing ! +*------------------------------! + WRITE(m_ltx,'(2A)') m_BS,'end{picture} % close entire picture ' + IF(ABS(m_lint) .EQ. 2) THEN + WRITE(m_ltx,'(A)') '%== GLK_Plot2: end of plot ==========' + ELSE + WRITE(m_ltx,'(2A)') m_BS,'end{figure}' + ENDIF + RETURN + 900 CALL GLK_Stop1('+++GLK_Plot2: Nonexistig histo, skipped, id= ',ID) + END + + SUBROUTINE GLK_PlFrame(id,kax,kay,chxfmt,chyfmt) +* ************************************************ + IMPLICIT NONE + INTEGER id,kax,kay + CHARACTER chxfmt*(*),chyfmt*(*) + INCLUDE 'GLK.h' + SAVE +*--------------------------------------------------- + CHARACTER*80 title + DOUBLE PRECISION dxl,dxu,xl,xu,yl,yu + INTEGER icont,i,nchx + DATA icont/0/ +*--------------------------------------------------- + icont=icont+1 + CALL GLK_hinbo1(id,title,nchx,dxl,dxu) + xl = dxl + xu = dxu + CALL GLK_Range1(id,yl,yu) +* + IF(icont .GT. 1) WRITE(m_ltx,'(2A)') m_BS,'newpage' +*------------------------------! +* Header +*------------------------------! + WRITE(m_ltx,'(A)') ' ' + WRITE(m_ltx,'(A)') ' ' + WRITE(m_ltx,'(A)') + $'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%' + WRITE(m_ltx,'(A)') + $'%%%%%%%%%%%%%%%%%%%%%%GLK_PlFrame%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%' + IF(ABS(m_lint) .EQ. 2) THEN + WRITE(m_ltx,'(2A)') m_BS,'noindent' + ELSE + WRITE(m_ltx,'(2A)') m_BS,'begin{figure}[!ht]' + WRITE(m_ltx,'(2A)') m_BS,'centering' +* WRITE(m_ltx,'(2A)') m_BS,'htmlimage{scale=1.4}' + ENDIF +*------------------------------! +* General Caption +*------------------------------! + IF(ABS(m_lint) .NE. 2) THEN + WRITE(m_ltx,'(6A)') + $ m_BS,'caption{',m_BS,'footnotesize',m_BS,'sf' + DO i=1,m_KeyTit + WRITE(m_ltx,'(A)') m_titch(i) + ENDDO + WRITE(m_ltx,'(A)') '}' + ENDIF +*------------------------------! +* Frames and labels +*------------------------------! + WRITE(m_ltx,'(A)') '% =========== big frame, title etc. =======' + WRITE(m_ltx,'(4A)') m_BS,'setlength{',m_BS,'unitlength}{0.1mm}' + WRITE(m_ltx,'(2A)') m_BS,'begin{picture}(1600,1500)' + IF( m_lint .LT. 0) THEN +* Big frame usefull for debuging + WRITE(m_ltx,'(4A)') + $ m_BS,'put(0,0){',m_BS,'framebox(1600,1500){ }}' + ENDIF + WRITE(m_ltx,'(A)') '% =========== small frame, labeled axis ===' + WRITE(m_ltx,'(4A,I4,A,I4,A)') + $ m_BS,'put(300,250){',m_BS,'begin{picture}( ',kax,',',kay,')' + WRITE(m_ltx,'(4A,I4,A,I4,A)') + $ m_BS,'put(0,0){',m_BS,'framebox( ',kax,',',kay,'){ }}' + WRITE(m_ltx,'(A)') '% =========== x and y axis ================' + CALL GLK_AxisX(kax,xl,xu,chxfmt) + CALL GLK_AxisY(kay,yl,yu,chyfmt) + WRITE(m_ltx,'(3A)') m_BS,'end{picture}}' + $ ,'% end of plotting labeled axis' + END + + SUBROUTINE GLK_AxisX(kay,yl,yu,chxfmt) +* *************************************** +* plotting x-axis with long and short tips + IMPLICIT NONE + INTEGER kay + DOUBLE PRECISION yl,yu + CHARACTER chxfmt*16 + INCLUDE 'GLK.h' + SAVE +*------------------------------------------------------- + CHARACTER*64 fmt1,fmt2 + PARAMETER (fmt1 = '(2A,F8.2,A,F8.2,A,I4,3A)') + PARAMETER (fmt2 = '(2A,F8.2,A,I4,A,F8.2,A,I4,3A)') + DOUBLE PRECISION dy,ddy,ddyl,yy0l,ddys,yy0s,p0s,pds,scmx,p0l,pdl + INTEGER ly,jy,nlt,nts,lex,k,n + DOUBLE PRECISION tipsy(20) +*------------------------------------------------------- + dy= ABS(yu-yl) + ly = NINT( LOG10(dy) -0.4999999d0 ) + jy = NINT(dy/10d0**ly) + ddyl = dy*10d0**(-ly) + IF( jy .EQ. 1) ddyl = 10d0**ly*0.25d0 + IF( jy .GE. 2 .AND. jy .LE. 3) ddyl = 10d0**ly*0.5d0 + IF( jy .GE. 4 .AND. jy .LE. 6) ddyl = 10d0**ly*1.0d0 + IF( jy .GE. 7) ddyl = 10d0**ly*2.0d0 + WRITE(m_ltx,'(A)') '% -------GLK_AxisX---- ' + WRITE(m_ltx,'(A,I4)') '% JY= ',JY +*------- + nlt = INT(dy/ddyl) + nlt = MAX0(MIN0(nlt,20),1)+1 + yy0l = NINT(yl/ddyl+0.5d0)*ddyl + ddys = ddyl/10d0 + yy0s = NINT(yl/ddys+0.4999999d0)*ddys + p0l = kay*(yy0l-yl)/(yu-yl) + pdl = kay*ddyl/(yu-yl) + p0s = kay*(yy0s-yl)/(yu-yl) + pds = kay*ddys/(yu-yl) + nlt = INT(ABS(yu-yy0l)/ddyl+0.0000001d0)+1 + nts = INT(abs(yu-yy0s)/ddys+0.0000001d0)+1 + DO n=1,nlt + tipsy(n) =yy0l+ ddyl*(n-1) + ENDDO + WRITE(m_ltx,fmt1) + $ m_BS,'multiput(' ,P0L, ',0)(' ,PDL, ',0){' ,NLT, '}{', + $ m_BS,'line(0,1){25}}', + $ m_BS,'multiput(' ,P0S, ',0)(' ,PDS, ',0){' ,NTS, '}{', + $ m_BS,'line(0,1){10}}' + WRITE(m_ltx,fmt2) + $ m_BS,'multiput(' ,P0L, ',' ,kay, ')(' ,PDL, ',0){' ,NLT, + $ '}{' ,m_BS, 'line(0,-1){25}}', + $ m_BS,'multiput(' ,P0S, ',' ,kay, ')(' ,PDS, ',0){' ,NTS, + $ '}{' ,m_BS, 'line(0,-1){10}}' +* ...labeling of axis + scmx = DMAX1(DABS(yl),DABS(YU)) + lex = NINT( LOG10(scmx) -0.50001) + DO n=1,nlt + k = nint(kay*(tipsy(n)-yl)/(yu-yl)) + IF(lex .LE. 3 .AND. lex .GE. -3) THEN +* ...without exponent + WRITE(m_ltx,'(2A,I4,5A,'//chxfmt//',A)') + $ m_BS,'put(',K,',-25){',m_BS,'makebox(0,0)[t]{', + $ m_BS,'Large $ ', TIPSY(N), ' $}}' + ELSE +* ...with exponent + WRITE(m_ltx,'(2A,I4,5A,'//chxfmt//',2A,I4,A)') + $ m_BS,'put(' ,K, ',-25){',m_BS,'makebox(0,0)[t]{', + $ m_BS,'Large $ ', + $ TIPSY(N)/(10d0**LEX),m_BS,'cdot 10^{',LEX,'} $}}' + ENDIF + ENDDO + END + + SUBROUTINE GLK_AxisY(kay,yl,yu,chyfmt) +* *************************************** +* plotting y-axis with long and short tips + IMPLICIT NONE + INTEGER kay + DOUBLE PRECISION yl,yu + CHARACTER chyfmt*16 + INCLUDE 'GLK.h' + SAVE + DOUBLE PRECISION tipsy(20) +*------------------------------------------------------------------ + CHARACTER*64 fmt1,fmt2 + PARAMETER (fmt1 = '(2A,F8.2,A,F8.2,A,I4,3A)') + PARAMETER (fmt2 = '(2A,I4,A,F8.2,A,F8.2,A,I4,3A)') + INTEGER ly,jy,nlt,nts,lex,n,k + DOUBLE PRECISION ddyl,dy,yy0l,p0l,pdl,pds,scmx,z0l,p0s,yy0s,ddys +*------------------------------------------------------------------ + dy= ABS(yu-yl) + ly = NINT( log10(dy) -0.49999999d0 ) + jy = NINT(dy/10d0**ly) + ddyl = dy*10d0**(-ly) + IF( jy .EQ. 1) ddyl = 10d0**ly*0.25d0 + IF( jy .GE. 2 .AND. jy .LE. 3) ddyl = 10d0**ly*0.5d0 + IF( jy .GE. 4 .AND. jy .LE. 6) ddyl = 10d0**ly*1.0d0 + IF( jy .GE. 7) ddyl = 10d0**ly*2.0d0 + WRITE(m_ltx,'(A)') '% --------GLK_SAxisY------- ' + WRITE(m_ltx,'(A,I4)') '% JY= ',JY +*------- + nlt = INT(dy/ddyl) + nlt = MAX0(MIN0(nlt,20),1)+1 + yy0l = NINT(yl/ddyl+0.4999999d0)*ddyl + ddys = ddyl/10d0 + yy0s = nint(yl/ddys+0.5d0)*ddys + p0l = kay*(yy0l-yl)/(yu-yl) + pdl = kay*ddyl/(yu-yl) + p0s = kay*(yy0s-yl)/(yu-yl) + pds = kay*ddys/(yu-yl) + nlt= INT(ABS(yu-yy0l)/ddyl+0.0000001d0) +1 + nts= INT(ABS(yu-yy0s)/ddys+0.0000001d0) +1 + DO N=1,NLT + tipsy(n) =yy0l+ ddyl*(n-1) + ENDDO +* plotting tics on vertical axis + WRITE(m_ltx,fmt1) + $ m_BS,'multiput(0,' ,P0L, ')(0,' ,PDL ,'){' ,NLT, '}{', m_BS,'line(1,0){25}}', + $ m_BS,'multiput(0,' ,P0S, ')(0,' ,PDS, '){' ,NTS, '}{', m_BS,'line(1,0){10}}' + WRITE(m_ltx,fmt2) + $ m_BS,'multiput(' ,kay, ',' ,P0L, ')(0,' ,PDL, '){' ,NLT, + $ '}{',m_BS,'line(-1,0){25}}', + $ m_BS,'multiput(' ,kay, ',' ,P0S, ')(0,' ,PDS, '){' ,NTS, + $ '}{',m_BS,'line(-1,0){10}}' +* ...Zero line if necessary + Z0L = kay*(-YL)/(YU-YL) + IF( (Z0L .GT. 0D0) .AND. (Z0L .LT. FLOAT(kay)) ) + $ WRITE(m_ltx,'(2A,F8.2,3A,I4,A)') m_BS,'put(0,' ,Z0L, '){',m_BS,'line(1,0){' ,kay, '}}' +* ...labeling of axis + SCMX = DMAX1(DABS(YL),DABS(YU)) + LEX = NINT( LOG10(SCMX) -0.50001d0) + DO n=1,nlt + k = nint(kay*(tipsy(n)-yl)/(yu-yl)) + IF(lex .LE. 3 .AND. lex .GE. -3) THEN +* ...without exponent + WRITE(m_ltx,'(2A,I4,5A,'//chyfmt//',A)') + $ m_BS,'put(-25,' ,K, '){',m_BS,'makebox(0,0)[r]{', + $ m_BS,'Large $ ' ,TIPSY(N), ' $}}' + ELSE +* ...with exponent + WRITE(m_ltx,'(2A,I4,5A,'//chyfmt//',2A,I4,A)') + $ m_BS,'put(-25,' ,K, '){',m_BS,'makebox(0,0)[r]{', + $ m_BS,'Large $ ', + $ TIPSY(N)/(10d0**LEX), m_BS,'cdot 10^{' ,LEX, '} $}}' + ENDIF + ENDDO + END + + SUBROUTINE GLK_PlKont(kax,kay,nchx,yl,yu,yy,ker,yer) +*///////////////////////////////////////////////////////////////////////////////////// +*// // +*// Plotting contour line for histogram (formely PlHis) // +*// // +*///////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INTEGER kax,kay,nchx,ker + DOUBLE PRECISION yl, yu, yy(*),yer(*),z0l + INCLUDE 'GLK.h' + SAVE +*--------------------------------------------------- + CHARACTER*80 fmt1 + INTEGER ix0,iy0,ib,ix1,iy1,ie,ierr,ix2,idy,idx + DOUBLE PRECISION yib +*--------------------------------------------------- + WRITE(m_ltx,'(4A,I4,A,I4,A)') m_BS,'put(300,250){',m_BS,'begin{picture}( ',kax,',',kay,')' + WRITE(m_ltx,'(A)') '% ========== plotting primitives ==========' +* Color string, optionaly + IF(m_KeyCol .EQ. 1) THEN + WRITE(m_ltx,'(A)') m_Color + m_KeyCol = 0 + ENDIF +*...short macros for vertical/horizontal straight lines + WRITE(m_ltx,'(8A)') + $ m_BS,'newcommand{',m_BS,'x}[3]{',m_BS,'put(#1,#2){', m_BS,'line(1,0){#3}}}' + WRITE(m_ltx,'(8A)') + $ m_BS,'newcommand{',m_BS,'y}[3]{',m_BS,'put(#1,#2){', m_BS,'line(0,1){#3}}}' + WRITE(m_ltx,'(8A)') + $ m_BS,'newcommand{',m_BS,'z}[3]{',m_BS,'put(#1,#2){', m_BS,'line(0,-1){#3}}}' +* error bars + WRITE(m_ltx,'(8A)') + $ m_BS,'newcommand{',m_BS,'e}[3]{', m_BS,'put(#1,#2){',m_BS,'line(0,1){#3}}}' +* Starting point for the line + ix0=0 + iy0=0 +* Start at Zero line if possible + z0l = kay*(-yl)/(yu-yl) + IF( (z0l .GT. 0d0) .AND. (z0l .LT. FLOAT(kay)) ) iy0=z0l + DO ib=1,nchx + yib = yy(ib) + ix1 = NINT(kax*(ib-0.00001d0)/nchx) ! new x + iy1 = NINT(kay*(yib-yl)/(yu-yl)) ! new y + iy1 = MIN(MAX(iy1,-1),kay+1) ! cosmetics + idx = ix1-ix0 ! delta x + idy = iy1-iy0 ! delta y + fmt1 = '(2(2a,i4,a,i4,a,i4,a))' + IF(iy1 .GE. 0 .AND. iy1 .LE. kay) THEN + IF( idy .GE. 0) THEN ! up + WRITE(m_ltx,fmt1) m_BS,'y{',ix0,'}{',iy0,'}{',idy,'}', + $ m_BS,'x{',ix0,'}{',iy1,'}{',idx,'}' + ELSE ! down + WRITE(m_ltx,fmt1) m_BS,'z{',IX0,'}{',IY0,'}{',-idy,'}', + $ m_BS,'x{',IX0,'}{',IY1,'}{',idx,'}' + ENDIF + ENDIF + ix0=ix1 + iy0=iy1 + IF(ker .EQ. 1) THEN + ix2 = NINT(kax*(ib-0.5000d0)/nchx) + ierr = NINT(kay*((yy(ib)-yer(ib))-yl)/(yu-yl)) ! bottom of error bar + ie = NINT(kay*yer(ib)/(yu-yl)) ! total length of error bar +* Cosmetics + IF(ierr .LT. 0) THEN + ie= ie+ierr + ierr = 0 + ENDIF + IF( (ierr+2*ie) .GT. kay) THEN + ie= IABS(kay-ierr)/2 + ENDIF + IF( (iy1.GE.0).AND.(iy1.LE. kay).AND.(ABS(1d0*ierr).LE.9999d0).AND.(2d0*ie.LE.9999d0) ) + $ WRITE(m_ltx,8000) m_BS,ix2,ierr,2*ie + ENDIF + ENDDO +8000 FORMAT(4(A1,2He{,I4,2H}{,I5,2H}{,I4,1H}:1X )) + WRITE(m_ltx,'(3A)') m_BS,'end{picture}}', ' % end of plotting histogram' +* change line-style + m_tline= m_tline+1 + IF(m_tline .GT. 2) m_tline=1 + END + + SUBROUTINE GLK_PlMark(kax,kay,nchx,yl,yu,yy,ker,yer,chmark,chr,chr2,chr3) +*///////////////////////////////////////////////////////////////////////////////////// +*// // +*// marks in the midle of the bin // +*// // +*///////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INTEGER kax,kay,nchx,ker + DOUBLE PRECISION yl,yu, yy(*),yer(*) + CHARACTER*1 chr + CHARACTER chmark*(*),chr2*(*),chr3*(*) +*--------------------------------------------------- + INCLUDE 'GLK.h' + SAVE + INTEGER ib,ix1,iy1,ierr,ie +*--------------------------------------------------- + WRITE(m_ltx,'(4A,I4,A,I4,A)') m_BS,'put(300,250){',m_BS,'begin{picture}( ',kax,',',kay,')' + WRITE(m_ltx,'(A)') '% ===GLK_PlMark: plotting primitives ======' +* Color string, optionaly + IF(m_KeyCol .EQ. 1) THEN + WRITE(m_ltx,'(A)') m_Color + m_KeyCol = 0 + ENDIF +* Plotting symbol + WRITE(m_ltx,'(10A)') m_BS,'newcommand{',m_BS,chr2 , '}[2]{', m_BS,'put(#1,#2){',chmark,'}}' +* Error bar symbol + WRITE(m_ltx,'(10A)') + $ m_BS,'newcommand{',m_BS,chr3 , '}[3]{', m_BS,'put(#1,#2){',m_BS,'line(0,1){#3}}}' + + DO ib=1,nchx + IF(chr .EQ. '*') THEN + ix1 = NINT(kax*(ib-0.5000d0)/nchx) ! Midle of bin + ELSEIF(chr .EQ. 'R') THEN + ix1 = NINT(kax*(ib*1d0)/nchx) ! Right edge of bin + ELSEIF(chr .EQ. 'L') THEN + ix1 = NINT(kax*(ib-1d0)/nchx) ! Left edge of bin + ELSE + WRITE(6,*) '+++++ plamark: wrong line type:',chr + RETURN + ENDIF + iy1 = NINT(kay*(yy(ib)-yl)/(yu-yl)) + IF(iy1 .GE. 0 .AND. iy1 .LE. kay) + $ WRITE(m_ltx,'(A,A,A,I4,A,I4,A)') + $ m_BS,chr2, '{' ,IX1, '}{' ,IY1, '}' + IF(ker .EQ. 1) THEN + ierr = NINT(kay*((yy(ib)-yer(ib))-yl)/(yu-yl)) ! bottom of error bar + ie = NINT(kay*yer(ib)/(yu-yl)) ! total length of error bar +* Cosmetics + IF(ierr .LT. 0) THEN + ie= ie+ierr + ierr = 0 + ENDIF + IF( (ierr+2*ie) .GT. kay) THEN + ie= IABS(kay-ierr)/2 + ENDIF + IF((iy1.GE.0) .AND.(iy1.LE.kay) .AND.(ABS(1d0*ierr).LE.9999d0) .AND.(2d0*ie.LE.9999d0)) + $ WRITE(m_ltx,'(A,A,A,I4,A,I5,A,I4,A)') + $ m_BS, chr3, '{' ,IX1, '}{' ,ierr, '}{' ,2*ie, '}' + ENDIF + ENDDO + WRITE(m_ltx,'(3A)') m_BS,'end{picture}}', + $ ' % end of plotting histogram' + END + + + SUBROUTINE GLK_PlTable(Npl,idl,capt,fmt,nch1,incr,npag) +* ****************************************************** +* Tables in TeX, up to 9 columns +* Npl = numbers of columns/histograms +* idl(1:Npl) = list of histo id's +* capt(1:Npl+1) = list of captions above each column +* fmt(1:1) = format to print x(i) in first columb, +* h(i) and error he(i) in further columns +* nch1,incr = raws are printet in the sequence +* (h(i),he(i),i=nch1,nbin,incr), nbin is no. of bins. +* npag = 0 no page eject, =1 with page eject +* ****************************************************** + IMPLICIT NONE +*--------------- parameters ------------ + INTEGER Npl,idl(*),nch1,incr,npag + CHARACTER*(*) capt(*) + CHARACTER*(*) fmt(3) +*------------------------------------------- + INCLUDE 'GLK.h' + SAVE +*--------------------------------------------------- + CHARACTER*16 fmt1,fmt2,fmt3 + LOGICAL GLK_Exist + INTEGER i,j,k,n,nchx,nplt,idum,id1,id + INTEGER iopsc1,ioperb,iopsla,iopsc2,ioplog + DOUBLE PRECISION xl,xu,dxl,dxu,xi + DOUBLE PRECISION yyy(m_MaxNb),yer(m_MaxNb),bi(m_MaxNb,9),er(m_MaxNb,9) + CHARACTER*80 title + CHARACTER*1 Cn(9) + DATA Cn /'1','2','3','4','5','6','7','8','9'/ +*----------------------------------------------------------------------------- +* Return if histo non-existing or to many columns + IF(.NOT.GLK_EXIST(ID)) GOTO 900 + IF(Npl .GT. 9 ) GOTO 901 + fmt1 = fmt(1) + fmt2 = fmt(2) + fmt3 = fmt(3) +* +* npack histograms + id1=idl(1) + CALL GLK_hinbo1( id1,title,nchx,dxl,dxu) + xl = dxl + xu = dxu + DO n=1,Npl + CALL GLK_UnPak( idl(n),yyy ,' ',idum) + CALL GLK_UnPak( idl(n),yer ,'ERRO',idum) + DO k=1,nchx + bi(k,n)=yyy(k) + er(k,n)=yer(k) + ENDDO + ENDDO +*------------------------------! +* Header +*------------------------------! + WRITE(m_ltx,'(A)') ' ' + WRITE(m_ltx,'(A)') ' ' + WRITE(m_ltx,'(A)') '% =========================================' + WRITE(m_ltx,'(A)') '% ============= begin table ===============' + WRITE(m_ltx,'(2A)') m_BS,'begin{table}[!ht]' + WRITE(m_ltx,'(2A)') m_BS,'centering' +*------------------------------! +* Central Caption +*------------------------------! + WRITE(m_ltx,'(4A)') m_BS,'caption{',m_BS,'small' + DO i=1,m_KeyTit + WRITE(m_ltx,'(A)') m_titch(i) + ENDDO + WRITE(m_ltx,'(A)') '}' +*------------------------------! +* Tabular header +*------------------------------! + WRITE(m_ltx,'(20A)') m_BS,'begin{tabular} + $ {|', ('|r',j=1,Npl+1), '||}' +* + WRITE(m_ltx,'(4A)') m_BS,'hline',m_BS,'hline' +*------------------------------! +* Captions in columns +*------------------------------! + WRITE(m_ltx,'(2A)') capt(1),('&',capt(j+1),j=1,Npl) +* + WRITE(m_ltx,'(2A)') m_BS,m_BS + WRITE(m_ltx,'(2A)') m_BS,'hline' +*----------------------------------------! +* Table content +* Note that by default RIGHT EDGE of bin is printed, as necessary for +* cumulative distributions, this can be changed with SLAN option +*----------------------------------------! + CALL GLK_OptOut(idl(1),ioplog,iopsla,ioperb,iopsc1,iopsc2) + DO k=nch1,nchx,incr + xi= dxl + (dxu-dxl)*k/(1d0*nchx) + IF(iopsla.eq.2) xi= dxl + (dxu-dxl)*(k-0.5d0)/(1d0*nchx) + IF(ioperb.eq.2) THEN + WRITE(m_ltx,'(A,'//fmt1//','//Cn(Npl)//'(A,'//fmt2//',A,A,'//fmt3//'), A)') + $ '$', xi, ('$ & $', bi(k,j), m_BS, 'pm', er(k,j), j=1,Npl), '$' + WRITE(m_ltx,'(2A)') m_BS,m_BS + ELSE + WRITE(m_ltx,'(A,'//fmt1//','//Cn(Npl)//'(A,'//fmt2//'), A)') + $ '$', xi, ('$ & $', bi(k,j), j=1,Npl), '$' + WRITE(m_ltx,'(2A)') m_BS,m_BS + ENDIF + ENDDO +*------------------------------! +* Ending +*------------------------------! + WRITE(m_ltx,'(4A)') m_BS,'hline',m_BS,'hline' + WRITE(m_ltx,'(2A)') m_BS,'end{tabular}' + WRITE(m_ltx,'(2A)') m_BS,'end{table}' + WRITE(m_ltx,'(A)') '% ============= end table ===============' + WRITE(m_ltx,'(A)') '% =========================================' + IF(npag .NE. 0) WRITE(m_ltx,'(2A)') m_BS,'newpage' + + RETURN + 900 CALL GLK_Retu1('++++ GLK_PlTable: Nonexistig histo id=',ID) + RETURN + 901 CALL GLK_Retu1('++++ GLK_PlTable: To many columns Nplt=',Nplt) + END + + SUBROUTINE GLK_PlTable2(Npl,idl,ccapt,mcapt,fmt,chr1,chr2,chr3) +* *************************************************************** +* Tables in TeX, up to 9 columns +* Npl = numbers of columns/histograms +* idl(1:Npl) = list of histo id's +* ccapt(1:Npl+1)= list of column-captions above each column +* mcapt = multicolumn header, none if mcapt=' ', +* fmt(1:1) = format to print x(i) in first columb, +* h(i) and error he(i) in further columns +* chr1 = ' ' normal default, ='S' the Same table continued +* chr2 = ' ' midle of the bin for x(i) in the first column +* = 'R' right edge, ='L' left edge of the bin +* chr3 = ' ' no page eject, ='E' with page eject at the end. +* Furthermore: +* Captions are defined by means of +* CALL GLK_PlCapt(capt) before CALL GLK_PlTable2 +* where CHARACTER*80 capt(50) is content of +* caption, line by line, see also comments in GLK_PlCapt routine. +* +* ****************************************************** + IMPLICIT NONE +*-------------- parameters-------------- + INTEGER Npl,idl(*) + CHARACTER*(*) ccapt(*) + CHARACTER*(*) fmt(3) + CHARACTER*1 chr1,chr2,chr3 + CHARACTER*(*) mcapt +*---------------------------------------------------------------------- + INCLUDE 'GLK.h' + SAVE +*---------------------------------------------------------------------- + CHARACTER*16 fmt1,fmt2,fmt3 + LOGICAL GLK_Exist + INTEGER iopsc1,ioperb,iopsla,iopsc2,ioplog + INTEGER i,j,k,n,idum,id1,id,nchx,Nplt + DOUBLE PRECISION xl,xu,xi,dxu,dxl + DOUBLE PRECISION yyy(m_MaxNb),yer(m_MaxNb),bi(m_MaxNb,9),er(m_MaxNb,9) + CHARACTER*80 title + CHARACTER*1 Cn(9) + CHARACTER*32 TabLab(11) ! label in 1-st column of table + INTEGER k1,k2,k3,iraw + DATA Cn /'1','2','3','4','5','6','7','8','9'/ +*---------------------------------------------------------------------- +* RETURN if histo non-existing or to many columns + IF(.NOT.GLK_EXIST(ID)) GOTO 900 + IF(Npl .GT. 9 ) GOTO 901 + fmt1 = fmt(1) + fmt2 = fmt(2) + fmt3 = fmt(3) +* +* unpack histograms + id1 = idl(1) + CALL GLK_hinbo1( id1,title,nchx,dxl,dxu) + xl = dxl + xu = dxu + DO n=1,Npl + CALL GLK_UnPak( idl(n),yyy ,' ',idum) + CALL GLK_UnPak( idl(n),yer ,'ERRO',idum) + DO k=1,nchx + bi(k,n)=yyy(k) + er(k,n)=yer(k) + ENDDO + ENDDO + + IF(chr1 .EQ. ' ' ) THEN +*------------------------------! +* Header +*------------------------------! + WRITE(m_ltx,'(A)') ' ' + WRITE(m_ltx,'(A)') ' ' + WRITE(m_ltx,'(A)') '% ========================================' + WRITE(m_ltx,'(A)') '% ============ begin table ===============' +* + IF(ABS(m_lint) .EQ. 2 ) THEN + WRITE(m_ltx,'(2A)') m_BS,'noindent' + ELSE + WRITE(m_ltx,'(2A)') m_BS,'begin{table}[!ht]' + WRITE(m_ltx,'(2A)') m_BS,'centering' + ENDIF +*------------------------------! +* Central Caption +*------------------------------! + IF(ABS(m_lint) .NE. 2 ) THEN + WRITE(m_ltx,'(6A)') + $ m_BS,'caption{',m_BS,'footnotesize',m_BS,'sf' + DO i=1,m_KeyTit + WRITE(m_ltx,'(A)') m_titch(i) + ENDDO + WRITE(m_ltx,'(A)') '}' + ENDIF +*------------------------------! +* Tabular header +*------------------------------! + WRITE(m_ltx,'(20A)') m_BS,'begin{tabular} + $ {|', ('|r',j=1,Npl+1), '||}' + WRITE(m_ltx,'(4A)') m_BS,'hline',m_BS,'hline' +*------------------------------! +* Captions in columns +*------------------------------! + WRITE(m_ltx,'(2A)') ccapt(1),('&',ccapt(j+1),j=1,Npl) +*------------------------------! +* Append previous table +*------------------------------! + ELSEIF(chr1 .EQ. 'S' ) THEN + DO i=1,7 + BACKSPACE(m_ltx) + ENDDO + ELSE + WRITE(*,*) ' ++++ GLK_PlTable2: WRONG chr1 ' ,chr1 + ENDIF + + WRITE(m_ltx,'(2A)') m_BS,m_BS + WRITE(m_ltx,'(2A)') m_BS,'hline' + +*------------------------------! +* Optional multicolumn caption +*------------------------------! + IF(mcapt .NE. ' ') THEN + WRITE(m_ltx,'(3A,I2,A)') '& ',m_BS,'multicolumn{',Npl,'}{c||}{' + WRITE(m_ltx,'(3A)') ' ',mcapt, ' }' + WRITE(m_ltx,'(2A)') m_BS,m_BS + WRITE(m_ltx,'(2A)') m_BS,'hline' + ENDIF + +*----------------------------------------! +* Table content +* Note that by default RIGHT EDGE of bin is printed, as necessary for +* cumulative distributions, this can be changed with SLAN option +*----------------------------------------! + CALL GLK_OptOut(idl(1),ioplog,iopsla,ioperb,iopsc1,iopsc2) +* +* table printout can be controlled by GLK_SetTabRan(i1,i2,i3) + k1=1 + k2=nchx + k3=1 + IF( m_KeyTbr .EQ. 1 ) THEN + k1 = MAX(k1,m_TabRan(1)) + k2 = MIN(k2,m_TabRan(2)) + k3 = MAX(k3,m_TabRan(3)) + m_KeyTbr = 0 + ENDIF + IF( m_KeyTbl .EQ. 0 ) THEN +* In the FIRST COLUMN the position of the bin edge/midle is ploted + DO k=k1,k2,k3 + IF(chr2 .EQ. 'R') THEN + xi= dxl + (dxu-dxl)*k/(1d0*nchx) ! right + ELSEIF(chr2 .EQ. 'L') THEN + xi= dxl + (dxu-dxl)*(k-1d0)/(1d0*nchx) ! left + ELSE + xi= dxl + (dxu-dxl)*(k-0.5d0)/(1d0*nchx) ! middle + ENDIF + IF(ioperb.eq.2) THEN + WRITE(m_ltx,'(A,'//fmt1//','//Cn(Npl)//'(A,'//fmt2//',A,A,'//fmt3//'), A)') ! + $ '$', xi, ('$ & $', bi(k,j), m_BS, 'pm', er(k,j), j=1,Npl), '$' ! + WRITE(m_ltx,'(2A)') m_BS,m_BS + ELSE + WRITE(m_ltx,'(A,'//fmt1//','//Cn(Npl)//'(A,'//fmt2//'), A)') ! + $ '$', xi, ('$ & $', bi(k,j), j=1,Npl), '$' ! + WRITE(m_ltx,'(2A)') m_BS,m_BS + ENDIF + ENDDO + ELSE + m_KeyTbl = 0 + iraw=0 + DO k=k1,k2,k3 + iraw=iraw+1 + IF(ioperb.eq.2) THEN + WRITE(m_ltx,'(A, '//Cn(Npl)//'(A,'//fmt2//',A,A,'//fmt3//',A) )' ) ! + $ m_TabLab(iraw), (' & $', bi(k,j), m_BS, 'pm', er(k,j),'$', j=1,Npl) ! + WRITE(m_ltx,'(2A)') m_BS,m_BS + ELSE + WRITE(m_ltx,'(A, '//Cn(Npl)//'(A,'//fmt2//',A) )' ) ! + $ m_TabLab(iraw), (' & $', bi(k,j),'$', j=1,Npl) ! + WRITE(m_ltx,'(2A)') m_BS,m_BS + ENDIF + ENDDO + ENDIF +*------------------------------! +* Ending +*------------------------------! + WRITE(m_ltx,'(4A)') m_BS,'hline',m_BS,'hline' + WRITE(m_ltx,'(2A)') m_BS,'end{tabular}' + IF(ABS(m_lint) .EQ. 2 ) THEN + WRITE(m_ltx,'(A)') '% ========================================' + ELSE + WRITE(m_ltx,'(2A)') m_BS,'end{table}' + ENDIF + WRITE(m_ltx,'(A)') '% ============= end table ==============' + WRITE(m_ltx,'(A)') '% ========================================' + IF(chr3 .EQ. 'E') THEN + WRITE(m_ltx,'(2A)') m_BS,'newpage' + ELSE + WRITE(m_ltx,'(A)') '% ========================================' + ENDIF + RETURN + 900 CALL GLK_Retu1(' ++++ GLK_PlTable2: Nonexistig histo,id= ',ID) + RETURN + 901 CALL GLK_Retu1(' ++++ GLK_PlTable2: To many columns Nplt= ',Nplt) + END + + + SUBROUTINE GLK_WtMon(mode,id,par1,par2,par3) +* ******************************************** +* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +* !!!! It is now replaces by GKL_M package, see below !!! +* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +* +* Utility program for monitoring M.C. rejection weights. +* --------------------------------------------------------- +* It is backward compatible with WMONIT except: +* (1) for id=-1 one should call as follows: +* GLK_WtMon(-1,id,0d0,1d0,1d0) or skip initialisation completely! +* (2) maximum absolute weight is looked for, +* (3) GLK_Print(-id) prints weight distribution, net profit! +* (4) no restriction id<100 any more! +* --------------------------------------------------------- +* wt is weight, wtmax is maximum weight and rn is random number. +* IF(mode .EQ. -1) then +* initalization if entry id, +* - wtmax is maximum weight used for couting overweighted +* other arguments are ignored +* ELSEIF(mode .EQ. 0) then +* summing up weights etc. for a given event for entry id +* - wt is current weight. +* - wtmax is maximum weight used for couting overweighted +* events with wt>wtmax. +* - rn is random number used in rejection, it is used to +* count no. of accepted (rn < wt/wtmax) and rejected +* (wt > wt/wtmax) events, +* if ro rejection then put rn=0d0. +* ELSEIF(mode .EQ. 1) THEN +* in this mode wmonit repports on accumulated statistics +* - averwt= average weight wt counting all event +* - errela= relative error of averwt +* - nevtot= total number of accounted events +* - nevacc= no. of accepted events (rn < wt/wtmax) +* - nevneg= no. of events with negative weight (wt < 0) +* - nevzer= no. of events with zero weight (wt = 0d0) +* - nevove= no. of overweghted events (wt > wtmax) +* and if you do not want to use cmonit then the value +* the value of averwt is assigned to wt, +* the value of errela is assigned to wtmax and +* the value of wtmax is assigned to rn in this mode. +* ELSEIF(mode .EQ. 2) THEN +* all information defined for entry id defined above +* for mode=2 is just printed of unit nout +* ENDIF +* note that output repport (mode=1,2) is done dynamically just for a +* given entry id only and it may be repeated many times for one id and +* for various id's as well. +* ************************ + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER mode,id + DOUBLE PRECISION par1,par2,par3 +* locals + INTEGER idg,nevneg,nevzer,nevtot,nevove,nevacc,nbin,lact,ist3,ntot,ist,ist2 + DOUBLE PRECISION xl,xu,errela,sswt,averwt,wwmax,swt,wt,wtmax,rn +*--------------------------------------------------------------------------- + idg = -id + IF(id .LE. 0) THEN + CALL GLK_Stop1(' =====> GLK_WtMon: wrong id= ',id) + ENDIF + IF(mode .EQ. -1) THEN +* ******************* + nbin = nint(dabs(par3)) + IF(nbin .GT. 100) nbin =100 + IF(nbin .EQ. 0) nbin =1 + xl = par1 + xu = par2 + IF(xu .LE. xl) THEN + xl = 0d0 + xu = 1d0 + ENDIF + CALL GLK_hadres(idg,lact) + IF(lact .EQ. 0) THEN + CALL GLK_Book1(idg,' GLK_WtMon $',nbin,xl,xu) + ELSE + WRITE(m_out,*) ' WARNING GLK_WtMon: exists, id= ',id + WRITE( 6,*) ' WARNING GLK_WtMon: exists, id= ',id + ENDIF + ELSEIF(mode .EQ. 0) THEN +* ********************** + CALL GLK_hadres(idg,lact) + IF(lact .EQ. 0) THEN + WRITE(m_out,*) ' *****> GLK_WtMon: uninitialized, id= ',id + WRITE( 6,*) ' *****> GLK_WtMon: uninitialized, id= ',id + CALL GLK_Book1(idg,' GLK_WtMon $',1,0d0,1d0) + CALL GLK_hadres(idg,lact) + ENDIF + wt =par1 + wtmax=par2 + rn =par3 +* standard entries + CALL GLK_Fil1(idg,wt,1d0) !!!! <-- principal filling!!!! +* additional goodies + ist = m_index(lact,2) + ist2 = ist+7 + ist3 = ist+11 +* maximum weight -- maximum by absolute value but keeping sign + m_b(ist3+13) = max( dabs(m_b(ist3+13)) ,dabs(wt)) + IF(wt .NE. 0d0) m_b(ist3+13)=m_b(ist3+13) *wt/dabs(wt) +* nevzer,nevove,nevacc + IF(wt .EQ. 0d0) m_b(ist3+10) =m_b(ist3+10) +1d0 + IF(wt .GT. wtmax) m_b(ist3+11) =m_b(ist3+11) +1d0 + IF(rn*wtmax .LE. wt) m_b(ist3+12) =m_b(ist3+12) +1d0 + ELSEIF(mode .GE. 1 .OR. mode .LE. 10) THEN +* ************************************* + CALL GLK_hadres(idg,lact) + IF(lact .EQ. 0) THEN + CALL GLK_Stop1(' lack of initialization, id=',id) + ENDIF + ist = m_index(lact,2) + ist2 = ist+7 + ist3 = ist+11 + ntot = nint(m_b(ist3 +7)) + swt = m_b(ist3 +8) + sswt = m_b(ist3 +9) + IF(ntot.LE.0 .OR. swt.EQ.0d0 ) THEN + averwt=0d0 + errela=0d0 + ELSE + averwt=swt/float(ntot) + errela=sqrt(abs(sswt/swt**2-1d0/float(ntot))) + ENDIF + nevneg = m_b(ist3 +1) !!! it us underflow, xlow=0 assumed!!! + nevzer = m_b(ist3 +10) + nevove = m_b(ist3 +11) + nevacc = m_b(ist3 +12) + wwmax = m_b(ist3 +13) + nevtot = ntot +* Output through parameters + par1 = averwt + par2 = errela + par3 = nevtot + IF(mode .EQ. 2) THEN + par1 = nevacc + par2 = nevneg + par3 = nevove + ELSEIF(mode .EQ. 3) THEN + par1 = nevneg + par2 = wwmax + ENDIF +* no printout for mode <10 +* ************************ + IF(mode .LE. 9) RETURN + WRITE(m_out,1003) id, averwt, errela, wwmax + WRITE(m_out,1004) nevtot,nevacc,nevneg,nevove,nevzer + IF(mode .LE. 10) RETURN + CALL GLK_Print(idg) + ELSE +* **** + CALL GLK_Stop1('+++GLK_WtMon: wrong mode=',mode) + ENDIF +* ***** + 1003 FORMAT( + $ ' ======================= GLK_WtMon =========================' + $/,' id averwt errela wwmax' + $/, i5, e17.7, f15.9, e17.7) + 1004 FORMAT( + $ ' -----------------------------------------------------------' + $/,' nevtot nevacc nevneg nevove nevzer' + $/, 5i12) + END + + SUBROUTINE GLK_CumHis(IdGen,id1,id2) +* ************************************ +*/////////////////////////////////////////////////////////////////////////// +*// Cumulates histogram content starting from UNDERFLOW // +*// and normalizes to the total x-section in NANOBARNS // +*// IdGen is ID of special histogram written by M.C. generator itself // +*// id2. NE. id1 required!!! // +*/////////////////////////////////////////////////////////////////////////// +* *********************************** + IMPLICIT NONE + INTEGER IdGen,id1,id2 +*---------------------------------------------------------------------- + INCLUDE 'GLK.h' + SAVE +*---------------------------------------------------------------------- + CHARACTER*80 TITLE + DOUBLE PRECISION X(m_MaxNb),ER(m_MaxNb) + LOGICAL GLK_EXIST + DOUBLE PRECISION swt,sswt,xsec,errel,tmin,tmax + DOUBLE PRECISION xscrnb,ERela,WtSup + INTEGER i,nbt,nevt + DOUBLE PRECISION GLK_hi,GLK_hie +*---------------------------------------------------------------------- + IF (GLK_Exist(id2)) GOTO 900 +* + CALL GLK_MgetNtot(IdGen,nevt) + CALL GLK_MgetAve( IdGen,xscrnb,ERela,WtSup) +* + IF(nevt .EQ. 0) GOTO 901 + CALL GLK_hinbo1(id1,title,nbt,tmin,tmax) + swt = GLK_hi( id1,0) ! UNDERFLOW + sswt = GLK_hie(id1,0)**2 ! UNDERFLOW + DO i=1,nbt + swt = swt + GLK_hi( id1,i) + sswt = sswt+ GLK_hie(id1,i)**2 +* note NEVT in error calc. is for the entire sample related +* to the crude x-section XCRU including !!! zero weight events !!!! + xsec = 0d0 + errel = 0d0 + IF(swt .NE. 0d0 .AND. nevt .NE. 0) THEN + xsec = swt*(xscrnb/nevt) + errel = SQRT(ABS(sswt/swt**2-1d0/FLOAT(nevt))) + ENDIF + x(i) = xsec + er(i) = xsec*errel + ENDDO +*! store result in id2 + CALL GLK_Book1(id2,title,nbt,tmin,tmax) + CALL GLK_Pak( id2,x) + CALL GLK_Pake( id2,er) + CALL GLK_idopt(id2,'ERRO') + RETURN + 900 WRITE(6,*) '+++++ CUMHIS: ID2 exixsts!!',ID2 + RETURN + 901 WRITE(6,*) '+++++ CUMHIS: EMPTY HISTO ID=',ID1 + END + + + + + SUBROUTINE GLK_RenHst(chak,IdGen,id1,id2) +* ***************************************** +*/////////////////////////////////////////////////////////////////////////// +*// IdGen is ID of special histogram written by M.C. generator itself // +*// This routine RE-NORMALIZES to NANOBARNS or to UNITY // +*// CHAK = 'NB ' normal case [nb] // +*// CHAK = 'NB10' log10 x-scale assumed [nb] // +*// CHAK = 'UNIT' normalization to unity // +*// id2 .NE. id1 required !!! // +*/////////////////////////////////////////////////////////////////////////// +* *********************************** + IMPLICIT NONE + CHARACTER*4 CHAK + INTEGER IdGen,id1,id2 +*---------------------------------------------------------------------- + INCLUDE 'GLK.h' + SAVE + CHARACTER*80 TITLE + DOUBLE PRECISION xscrnb,ERela,WtSup,tmin,tmax + DOUBLE PRECISION swt,fln10,fact + INTEGER i,nbt,nevt + DOUBLE PRECISION GLK_hi,GLK_hie +*---------------------------------------------------------------------- + IF( id2 .eq. id1) GOTO 900 + + CALL GLK_MgetNtot(IdGen,nevt) + CALL GLK_MgetAve( IdGen,xscrnb,ERela,WtSup) +* + CALL GLK_hinbo1(id1,title,nbt,tmin,tmax) + IF( chak .EQ. 'NB ') THEN + fact = nbt*xscrnb/(nevt*(tmax-tmin)) + CALL GLK_Operat(id1,'+',id1,id2, fact, 0d0) + ELSEIF( chak .EQ. 'NB10') THEN + fln10 = log(10.) + fact = nbt*xscrnb/(nevt*(tmax-tmin)*fln10) + CALL GLK_Operat(id1,'+',id1,id2, fact, 0d0) + ELSEIF( chak .EQ. 'UNIT') THEN + swt = GLK_hi(id1,0) + DO i=1,nbt+1 + swt = swt + GLK_hi(id1,i) + ENDDO + fact = nbt/((tmax-tmin))/swt + CALL GLK_Operat(id1,'+',id1,id2, fact, 0d0) + ELSEIF( chak .EQ. 'UN10') THEN + swt = GLK_hi(id1,0) + DO i=1,nbt+1 + swt = swt + GLK_hi(id1,i) + ENDDO + fact = nbt/((tmax-tmin)*log(10.))/swt + CALL GLK_Operat(id1,'+',id1,id2, fact, 0d0) + ELSEIF( chak .EQ. ' ') THEN + CALL GLK_Operat(id1,'+',id1,id2, 1d0, 0d0) + ELSE + WRITE(6,*) '+++++ RENHST: wrong chak=',chak + ENDIF +* + RETURN + 900 WRITE(6,*) '+++++ RENHST: ID1=ID2=',ID1 + END + + +*/////////////////////////////////////////////////////////////////////// +*// New Weight Motoring ToolBox +*// (replacement for WTmonit etc.) +*// +*// The tool to monitor very precisely the average weigh +*// and other features of the weight distribution. +*// Note that in principle we are vitaly interested in three parts +*// of the weight distribution: +*// Underflow (-infty,0) +*// Regular (0, WTmax) +*// Overflow (WTmax,+infty) +*// with special emphasis on events with exactly zero weight WT=0d0. +*// Nevertheless, we split (0, WTmax) range into several bins +*// in order to be able to visualise the weight distribution. +*// (Using stardard tools for histogram) +*// +*// +*/////////////////////////////////////////////////////////////////////// + SUBROUTINE GLK_Mbook(idm,title,nnchx,WTmax) +* ****************************************** +*/////////////////////////////////////////////////////////////////////// +*// +*// Booking one entry. Note it is not an ordinary histogram!!! +*// It works just like GLK_Book1 except that it +*// has internaly negative id and x_minimum is always zero. +*// +*/////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + SAVE + INTEGER idm + CHARACTER*80 title + DOUBLE PRECISION WTmax +* + LOGICAL GLK_Exist + INTEGER j,id,nnchx,nchx,lact,lengt2,ist,ist2,ist3 + INTEGER iopsc1, iopsc2, ioperb, ioplog, iopsla + INTEGER iflag1, iflag2 + INTEGER ityphi + DOUBLE PRECISION xl,xu,ddx +*------------------------------------------------- + CALL GLK_Initialize + id = -idm + IF(GLK_Exist(id)) goto 900 + ist=m_length + CALL GLK_hadres(0,lact) +* Check if there is a free entry in the m_index + IF(lact .EQ. 0) CALL GLK_Stop1('GLK_Mbook: no space left,id= ',id) + m_index(lact,1)=id + m_index(lact,2)=m_length + m_index(lact,3)=0 +* ---------- limits + CALL GLK_Copch(title,m_titlc(lact)) + nchx =nnchx + IF(nchx .GT. m_MaxNb) + $ CALL GLK_Stop1(' GLK_Mbook: Too many bins ,id= ',id) + xl = 0d0 + xu = WTmax +* ---------- title and bin content ---------- + lengt2 = m_length +2*nchx +m_buf1+1 + IF(lengt2 .GE. m_LenmB) + $ CALL GLK_Stop1('GLK_Mbook:too litle storage, m_LenmB= ',m_LenmB) +* + DO j=m_length+1,lengt2+1 + m_b(j) = 0d0 + ENDDO + m_length=lengt2 +*... default flags + ioplog = 1 + iopsla = 1 + ioperb = 1 + iopsc1 = 1 + iopsc2 = 1 + iflag1 = + $ ioplog+10*iopsla+100*ioperb+1000*iopsc1+10000*iopsc2 + ityphi = 3 !!!! <-- new type of histo !!!! + iflag2 = ityphi +* examples of decoding flags +* id = nint(m_b(ist+2)-9d0-9d12)/10 +* iflag1 = nint(m_b(ist+3)-9d0-9d12)/10 +* ioplog = mod(iflag1,10) +* iopsla = mod(iflag1,100)/10 +* ioperb = mod(iflag1,1000)/100 +* iopsc1 = mod(iflag1,10000)/1000 +* iopsc2 = mod(iflag1,100000)/10000 +* iflag2 = nint(m_b(ist+4)-9d0-9d12)/10 +* ityphi = mod(iflag2,10) +*--------- buffer ----------------- +* header + m_b(ist +1) = 9999999999999d0 + m_b(ist +2) = 9d12 + id*10 +9d0 + m_b(ist +3) = 9d12 + iflag1*10 +9d0 + m_b(ist +4) = 9d12 + iflag2*10 +9d0 +* dummy vertical scale + m_b(ist +5) = -100d0 + m_b(ist +6) = 100d0 +* pointer used to speed up search of histogram address + m_b(ist +7) = 0d0 +* information on binning + ist2 = ist+7 + m_b(ist2 +1) = nchx + m_b(ist2 +2) = xl + m_b(ist2 +3) = xu + ddx = xu-xl + IF(ddx .EQ. 0d0) + $ CALL GLK_Stop1(' GLK_Mbook: xl=xu, id= ',id) + m_b(ist2 +4) = float(nchx)/ddx +* +* under/over-flow etc. + ist3 = ist+11 + DO j=1,13 + m_b(ist3 +j)=0d0 + ENDDO + RETURN +*---------------- + 900 CALL GLK_Retu1(' WARNING GLK_Mbook: already exists id= ', id) + END + + + SUBROUTINE GLK_Mfill(idm,Wtm,rn) +* ******************************** +*/////////////////////////////////////////////////////////////////////// +*// +*// filling of M-subpackage entry +*// simillar as fil1 for 1-dim histo but the storage for error +*// is now used to store sum for 'partial averages' <wt-xlowedge> +*// +*/////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INTEGER idm + DOUBLE PRECISION Wtm,rn + INCLUDE 'GLK.h' + SAVE + INTEGER id + INTEGER lact, ist, ist2, ist3, iflag2, nchx, ityphi + INTEGER iposx1,ipose1, kposx1, kpose1, kx + DOUBLE PRECISION Wt, deltx, factx, xlowedge + DOUBLE PRECISION xu, xl, x1, wtmax +*--------------------------------- + id = -idm + Wt = Wtm + CALL GLK_hadres(id,lact) +* exit for non-existig histo + IF(lact .EQ. 0) + $ CALL GLK_Stop1('+++GLK_Mfill: nonexisting id= ',id) + + ist = m_index(lact,2) + ist2 = ist+7 + ist3 = ist+11 +* one-dim. histo only + iflag2 = nint(m_b(ist+4)-9d0-9d12)/10 + ityphi = mod(iflag2,10) + IF(ityphi .NE. 3) CALL GLK_Stop1('+++GLK_Mfill: wrong id= ',id) + x1 = Wt + m_index(lact,3)=m_index(lact,3)+1 +* for standard average of x=Wt and its error + m_b(ist3 +7) =m_b(ist3 +7) +1 + m_b(ist3 +8) =m_b(ist3 +8) +x1 + m_b(ist3 +9) =m_b(ist3 +9) +x1*x1 +* filling coordinates + nchx = m_b(ist2 +1) + xl = m_b(ist2 +2) !!<--- It was set to zero in book!!! + xu = m_b(ist2 +3) + WtMax = xu + factx = m_b(ist2 +4) ! (fact=nchx/(xu-xl) + deltx = 1d0/factx + IF(x1 .LT. xl) THEN +* (U)nderflow + iposx1 = ist3 +1 + ipose1 = ist3 +4 + m_b(iposx1) = m_b(iposx1) +1d0 + m_b(ipose1) = m_b(ipose1) +Wt + ELSEIF(x1 .GT. xu) THEN +* (O)verflow + iposx1 = ist3 +3 + ipose1 = ist3 +6 + kposx1 = 0 + m_b(iposx1) = m_b(iposx1) +1d0 + m_b(ipose1) = m_b(ipose1) +(Wt- WtMax) + ELSE +* All of (R)egular range (0,WtMax) in one bin + iposx1 = ist3 +2 + ipose1 = ist3 +5 + m_b(iposx1) = m_b(iposx1) +1d0 + m_b(ipose1) = m_b(ipose1) +Wt +* (R)egular bin, the ACTUAL one + kx = (x1-xl)*factx+1d0 + kx = MIN( MAX(kx,1) ,nchx) + kposx1 = ist +m_buf1+kx + kpose1 = ist +m_buf1+nchx+kx + xlowedge = deltx*(kx-1) + m_b(kposx1) = m_b(kposx1) +1d0 + m_b(kpose1) = m_b(kpose1) +(Wt-xlowedge) + ENDIF +*-------------------------------- +* Additional goodies: +* maximum weight -- maximum by absolute value but keeping sign + m_b(ist3+13) = MAX( DABS(m_b(ist3+13)) ,DABS(wt)) + IF(wt .NE. 0d0) m_b(ist3+13)=m_b(ist3+13) *wt/dabs(wt) +* nevzer,nevove,nevacc + IF(wt .EQ. 0d0) m_b(ist3+10) =m_b(ist3+10) +1d0 + IF(wt .GT. wtmax) m_b(ist3+11) =m_b(ist3+11) +1d0 + IF(rn*wtmax .LE. wt) m_b(ist3+12) =m_b(ist3+12) +1d0 +*--- + END !GLK_Mfill + + + SUBROUTINE GLK_MgetAll(idm, + $ AveWt,ERela, WtSup, AvUnd, AvOve, + $ Ntot,Nacc,Nneg,Nove,Nzer) +* *************************************************************** +*/////////////////////////////////////////////////////////////////////// +*// +*// Get all statistics out +*// +*/////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INTEGER idm + DOUBLE PRECISION AveWt,ERela, WtSup, AvUnd, AvOve + INTEGER Ntot,Nacc,Nneg,Nove,Nzer + INCLUDE 'GLK.h' + SAVE + INTEGER id,ist,ist2,ist3,lact + DOUBLE PRECISION swt,sswt +*-------------------- + id= -idm + CALL GLK_hadres(id,lact) + IF(lact .EQ. 0) + $ CALL GLK_Stop1('GLK_MgetAll:lack of initialization, id=',id) + ist = m_index(lact,2) + ist2 = ist+7 + ist3 = ist+11 + Ntot = nint(m_b(ist3 +7)) + swt = m_b(ist3 +8) + sswt = m_b(ist3 +9) + IF(Ntot.LE.0 .OR. swt.EQ.0d0 ) THEN + AveWt=0d0 + ERela=0d0 + ELSE + AveWt=swt/DFLOAT(Ntot) + ERela=sqrt(abs(sswt/swt**2-1d0/float(Ntot))) + ENDIF + WtSup = m_b(ist3 +13) + AvUnd = m_b(ist3 +4)/Ntot + AvOve = m_b(ist3 +6)/Ntot + Nneg = m_b(ist3 +1) ! NB. it is underflow + Nzer = m_b(ist3 +10) + Nove = m_b(ist3 +11) + Nacc = m_b(ist3 +12) +*----------------------------- +* WRITE(m_out,1003) idm, AveWt, ERela, WtSup +* WRITE(m_out,1004) Ntot,Nacc,Nneg,Nove,Nzer +* 1003 FORMAT( +* $ ' ======================= GLK_Mget ==========================' +* $/,' id AveWt ERela WtSup' +* $/, i5, e17.7, f15.9, e17.7) +* 1004 FORMAT( +* $ ' -----------------------------------------------------------' +* $/,' Ntot Nacc Nneg Nove Nzer' +* $/, 5i12) +*------------------------------ + END + + SUBROUTINE GLK_MgetNtot(id,Ntot) +*/////////////////////////////////////////////////////////////////////// +*// +*// Get Ntotal only +*// +*/////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + SAVE + INTEGER idm,id + DOUBLE PRECISION AveWt, ERela, WtSup, AvUnd, AvOve + INTEGER Ntot, Nacc, Nneg, Nove, Nzer +*-------------------- + CALL GLK_MgetAll(id, + $ AveWt,ERela, WtSup, AvUnd, AvOve, + $ Ntot,Nacc,Nneg,Nove,Nzer) + END + + SUBROUTINE GLK_MgetAve(id,AveWt,ERela,WtSup) +*/////////////////////////////////////////////////////////////////////// +*// +*// Get averages only and highest weight +*// +*/////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + SAVE + INTEGER idm,id + DOUBLE PRECISION AveWt, ERela, WtSup, AvUnd, AvOve + INTEGER Ntot, Nacc, Nneg, Nove, Nzer +*-------------------- + CALL GLK_MgetAll(id, + $ AveWt,ERela, WtSup, AvUnd, AvOve, + $ Ntot,Nacc,Nneg,Nove,Nzer) + END + + SUBROUTINE GLK_Mprint(idm) +*/////////////////////////////////////////////////////////////////////// +*// +*// Printout +*// Note that bin errors have now changed meaning +*// +*/////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + SAVE + INTEGER idm,id + id= -idm + CALL GLK_Print(id) + END + +*////////////////////////////////////////////////////////////////////////////// +*////////////////////////////////////////////////////////////////////////////// +*////////////////////////////////////////////////////////////////////////////// +*// // +*// Setters and Getters // +*// // +*////////////////////////////////////////////////////////////////////////////// + + SUBROUTINE GLK_Clone1(id1,id2,title2) +*////////////////////////////////////////////////////////////////////////////// +*// Clone 1-dimensional histo with onl bining and new title // +*////////////////////////////////////////////////////////////////////////////// + CHARACTER*80 title1, title2, title3 + INTEGER i,nb + DOUBLE PRECISION xmin,xmax + + CALL GLK_hinbo1(id1,title1,nb,xmin,xmax) + CALL GLK_Copch(title2,title3) + CALL GLK_Book1(id2,title3,nb,xmin,xmax) + + END + + SUBROUTINE GLK_Ymimax(id,wmin,wmax) +*////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INTEGER id + DOUBLE PRECISION wmin,wmax + + CALL GLK_Yminim(id,wmin) + CALL GLK_Ymaxim(id,wmax) + END + + + SUBROUTINE GLK_PLset(ch,xx) +*////////////////////////////////////////////////////////////////////////////// +*// // +*// Old style seter, sets type of the ploting mark // +*// // +*////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + CHARACTER*4 CH + DOUBLE PRECISION xx + INCLUDE 'GLK.h' + SAVE +*---------------------------------- + IF(CH .EQ. 'DMOD') THEN + m_tline = NINT(xx) + ENDIF + END + + SUBROUTINE GLK_SetNout(ilun) +*////////////////////////////////////////////////////////////////////////////// +*// // +*// Sets output unit number // +*// // +*////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + SAVE + INTEGER ilun + + CALL GLK_Initialize + m_out=ilun + END + + SUBROUTINE GLK_GetYmin(id,ymin) +*////////////////////////////////////////////////////////////////////////////// +*// Sets vertical scale // +*////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id + DOUBLE PRECISION ymin + INTEGER lact,ist +* + CALL GLK_hadres(id,lact) + IF(lact .EQ. 0) RETURN + ist= m_index(lact,2) + ymin = m_b(ist+5) + END + + SUBROUTINE GLK_GetYmax(id,ymax) +*////////////////////////////////////////////////////////////////////////////// +*// Sets vertical scale // +*////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id + DOUBLE PRECISION ymax + INTEGER lact,ist +* + CALL GLK_hadres(id,lact) + IF(lact .EQ. 0) RETURN + ist= m_index(lact,2) + ymax = m_b(ist+6) + END + + SUBROUTINE GLK_SetYmin(id,ymin) +*////////////////////////////////////////////////////////////////////////////// +*// Sets vertical scale // +*////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id + DOUBLE PRECISION ymin + INTEGER lact,ist +* + CALL GLK_hadres(id,lact) + IF(lact .EQ. 0) RETURN + ist= m_index(lact,2) + m_b(ist+5) = ymin + CALL GLK_idopt(id,'YMIN') + END + + SUBROUTINE GLK_SetYmax(id,ymax) +*////////////////////////////////////////////////////////////////////////////// +*// Sets vertical scale // +*////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id + DOUBLE PRECISION ymax + INTEGER lact,ist +* + CALL GLK_hadres(id,lact) + IF(lact .EQ. 0) RETURN + ist= m_index(lact,2) + m_b(ist+6) = ymax + CALL GLK_idopt(id,'YMAX') + END + + + SUBROUTINE GLK_GetYminYmax(id,ymin,ymax) +*////////////////////////////////////////////////////////////////////////////// +*// Sets vertical scale // +*////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id + DOUBLE PRECISION ymin,ymax +* + CALL GLK_GetYmin(id,ymin) + CALL GLK_GetYmax(id,ymax) + END + + SUBROUTINE GLK_SetYminYmax(id,ymin,ymax) +*////////////////////////////////////////////////////////////////////////////// +*// Sets vertical scale // +*////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id + DOUBLE PRECISION ymin,ymax +* + CALL GLK_SetYmin(id,ymin) + CALL GLK_SetYmax(id,ymax) + END + + SUBROUTINE GLK_CopyYmin(id1,id2) +*////////////////////////////////////////////////////////////////////////////// +*// Sets vertical scale // +*////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id1,id2 + DOUBLE PRECISION ymin +* + CALL GLK_GetYmin(id1,ymin) + CALL GLK_SetYmin(id2,ymin) + END + + SUBROUTINE GLK_CopyYmax(id1,id2) +*////////////////////////////////////////////////////////////////////////////// +*// Sets vertical scale // +*////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id1,id2 + DOUBLE PRECISION ymax +* + CALL GLK_GetYmax(id1,ymax) + CALL GLK_SetYmax(id2,ymax) + END + + SUBROUTINE GLK_SetColor(Color) +*////////////////////////////////////////////////////////////////////////////// +*// // +*// Sets output unit number // +*// // +*////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + CHARACTER*(*) Color +* + CALL GLK_Copch(Color,m_Color) +* + m_KeyCol = 1 !flag set up + END + + SUBROUTINE GLK_SetTabRan(i1,i2,i3) +*////////////////////////////////////////////////////////////////////////////// +*// // +*// Sets table range for taple printout in GKL_PlTable2 // +*// i1,i2,i3 are lower limit, upper limit and increment // +*// // +*////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER i1,i2,i3 +* + m_KeyTbr = 1 !flag set up + m_TabRan(1) = i1 + m_TabRan(2) = i2 + m_TabRan(3) = i3 + END + + SUBROUTINE GLK_SetTabLab(Nent,TabLab) +*////////////////////////////////////////////////////////////////////////////// +*// // +*// Sets table range for taple printout in GKL_PlTable2 // +*// i1,i2,i3 are lower limit, upper limit and increment // +*// // +*////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + CHARACTER*32 TabLab(*) + INTEGER Nent,j + m_KeyTbl = 1 + IF( Nent.LE.0 .OR. Nent.GT.m_MaxNlab ) THEN + CALL GLK_Stop1('+++STOP in GLK_SetTabLab: wrong Nent=',Nent) + ENDIF + DO j=1,m_MaxNlab + m_TabLab(j)=TabLab(j) + ENDDO + END + + SUBROUTINE GLK_GetNb(id,Nb) +*////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'GLK.h' + INTEGER id,Nb +* local + CHARACTER*80 title + INTEGER lact,ist,ist2 +*------------- + CALL GLK_hadres(id,lact) + IF(lact .EQ. 0) THEN + CALL GLK_Stop1('+++STOP in GLK_GetNb: wrong id=',id) + ENDIF + ist = m_index(lact,2) + ist2 = ist+7 + Nb = m_b(ist2 +1) + END + +*////////////////////////////////////////////////////////////////////////////// +*// // +*// End of CLASS GLK // +*////////////////////////////////////////////////////////////////////////////// + diff --git a/Foam/GLK.h b/Foam/GLK.h new file mode 100644 index 0000000..2e2659b --- /dev/null +++ b/Foam/GLK.h @@ -0,0 +1,78 @@ +*////////////////////////////////////////////////////////////////////////////// +*// // +*// Pseudo-Class GLK // +*// // +*////////////////////////////////////////////////////////////////////////////// + +*////////////////////////////////////////////////////////////////////////////// +*// ======================================================================= // +*// ========================== _GLK_ ==================================== // +*// ========== General Library of histogramming/ploting utilities ========= // +*// ========== It is similar but not identical to HBOOK and HPLOT ========= // +*// ======================================================================= // +*////////////////////////////////////////////////////////////////////////////// +*// // +*// Version: 1.31 // +*// Last correction: May 2000 // +*// // +*////////////////////////////////////////////////////////////////////////////// + + INTEGER m_version ! this is the actual version number + PARAMETER( m_version = 140) +*----------------------------------------------------------------------------- + INTEGER m_idmax ! maximum number of bins + PARAMETER( m_idmax=400) +* Parameters m_buf1 and m_buf2 are lenths of buffors/headers in the histogram +* m_buf1 is for 1-dim histogram and m_buf2 for 2-dim histo +* m_buf2 is still not very consequently implemented +* so m_buf1=m_buf2 is still required + INTEGER m_buf1, m_buf2 + PARAMETER( m_buf1=24, m_buf2=24) + INTEGER m_MaxNb + PARAMETER( m_MaxNb = 50000) ! maximum numbers of bins + INTEGER m_MaxNlab + PARAMETER( m_MaxNlab = 100) ! maximum numbers labels in table 1-st col. +*----------------------------------------------------------------------------- + INTEGER m_LenmB + PARAMETER (m_LenmB = 100000) + DOUBLE PRECISION m_b + INTEGER m_out, m_huni, m_length, m_LenInd, m_index + CHARACTER*80 m_titlc + INTEGER m_lint, m_ltx, m_KeyTit + CHARACTER*80 m_titch ! title of plot, several lines + INTEGER m_titlen ! number of lines + PARAMETER( m_titlen =50) + CHARACTER*1 m_BS ! backslash character + INTEGER m_tline ! variable controling style of line or mark + CHARACTER*80 m_Color ! string defining color + INTEGER m_KeyCol ! control of color use, reset internaly! + INTEGER m_KeyTbr ! control of table range, reset after use! + INTEGER m_TabRan ! Table range for ploting + INTEGER m_KeyTbl ! Tag for Table first column label + CHARACTER*32 m_TabLab ! label in 1-st column of table +*----------------------------------------------------------------------------- + COMMON /c_GLK/ + $ m_b(m_LenmB), ! storage for all histograms + $ m_out, ! general output for printouts + $ m_huni, ! disk unit number for histos + $ m_length, ! act. length of m_b (less than m_LenmB ) + $ m_LenInd, ! act. length of index, UNDER DEVELOPEMENT! + $ m_index(m_idmax,3), ! index of histos + $ m_titlc(m_idmax), ! titles of histos + $ m_tline, ! general output for printouts + $ m_lint, ! argument of gplint, sets various styles + $ m_ltx, ! output unit for latex + $ m_titch(m_titlen), ! title of plot, several lines + $ m_Color, ! string defining color + $ m_KeyTit, ! status key of plot Title + $ m_KeyCol, ! status key of Color + $ m_KeyTbr, ! status key of Table range for ploting + $ m_TabRan(3), ! Table range for ploting + $ m_KeyTbl, ! status for Table first column label + $ m_TabLab(m_MaxNlab), ! Label in 1-st column of table + $ m_BS ! backslash for LaTex (machine dependent!) + +*////////////////////////////////////////////////////////////////////////////// +*// // +*// End of CLASS GLG // +*////////////////////////////////////////////////////////////////////////////// diff --git a/Foam/MCellA.f b/Foam/MCellA.f new file mode 100644 index 0000000..3494f36 --- /dev/null +++ b/Foam/MCellA.f @@ -0,0 +1,1537 @@ +*/////////////////////////////////////////////////////////////////////////////////////////// +*// // +*// MCell Mega Cell MC sampler // +*// Version 2.02 November 2000 // +*// // +*// N-dimensional general purpose Monte Carlo sampler // +*// with the self-adapting HYPER-CUBICAL grid // +*// // +*// Author: Stanislaw JADACH // +*// Address: INP Cracow, DESY-Zeuthen // +*// Email: Stanislaw.Jadach@cern.ch, Stanislaw.Jadach@ifj.edu.pl // +*// HomePage: http://home.cern.ch/jadach/ // +*// // +*// First version 1.00 written by S.J. in August 2000 during visit in DESY-Zeuthen // +*/////////////////////////////////////////////////////////////////////////////////////////// + + +*///////////////////////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Pseudoclass MCellA // +*// // +*// // +*// Initialization of the grid // +*// MCellA_PreInitialize : Pre-initialization, set all default values (constructor?) // +*// MCellA_Initialize(FunW) : Initialization of the grid etc. // +*// MCellA_InitCells : Initializes first n-factorial cells inside original cube // +*// MCellA_DefCell : Create new (daughter) cell and append at end of the buffer // +*// MCellA_Explore(iCell,funW) : Short MC sampling in iCell, determine <wt>, wtMax etc. // +*// MCellA_RanDiscr(Driv,nTot,Power,iRand) : Random choice of cell division direction // +*// MCellA_MakeAlpha(Alpha) : auxiliary procedure for MCellA_Explore // +*// MCellA_Grow(funW) : grow cells until buffer is full // +*// MCellA_PeekMax(iCell) : choose randomly one cell, used also in MC generation // +*// MCellA_PeekRand1(iCell) : Generates randomly one (active) cell pointer iCell // +*// MCellA_Divide(iCell,funW,RC) :Divide iCell into two daughters; iCell retained, taged as inactive // +*// MCellA_ActUpda : Creates list of active cells (pointers) // +*// Generation // +*// MCellA_MakeEvent(Density) : Generates point/vector Xrand with the weight MCwt // +*// MCellA_CellGener(Density) : Cooses randomly one of active cells // +*// MCellA_GetMCvector(MCvector) : Provides point/vector MCvector generated by MakeEvent // +*// MCellA_GetMCwt(MCwt) : Provides MCwt, MC weight calculated by MakeEvent // +*// MCellA_MCgenerate(funW,X,MCwt) : Alternative entry, Generates point X with the weight MCwt // +*// Finalization // +*// MCellA_Finalize(MCresult,MCerror) : Calculates integral and its error after (only from) MC run // +*// Other Getters and Setters // +*// MCellA_GetTotPrim(TotPrim) !Provides Prrimary used in MC generation // +*// MCellA_SetKdim(Kdim) :Sets no. of dimensions hypercubics (to be called before Initialize)// +*// MCellA_SetnBuf(nBuf) :Sets nBuf, working area in buffer // +*// MCellA_SetnBin(nBin) :Sets nBin, histogram size for cell exploration/division // +*// MCellA_SetOut(Out) :Sets output unit number // +*// MCellA_SetChat(Chat) :Sets chat level; Chat=0,1,2 chat level in output, Chat=1 normal // +*// MCellA_SetnSampl(nSampl) :Sets nSampl; No of MC sampling before dividing cell // +*// MCellA_SetOptDrive(OptDrive) :Sets OptDrive; type of Driver =0,1,2 for True,Sigma,WtMax // +*// MCellA_SetOptPeek :Sets type of method in cell division // +*// MCellA_SetOptEdge(OptEdge) :Sets OptEdge; decides whether vertices are included in the sampling// +*// MCellA_SetOptRanIni(OptRanIni) :Sets OptRanIni=0,1, for rand. numb. initialization inside/outside // +*// MCellA_SetOptRanLux(OptRanLux) :Sets OptRanLux=-1,0,1,2,3 raand.numb.gen. level // +*// MCellA_GetnCalls(nCalls) :Get total no of function calls // +*// Debugging and miscelaneous // +*// MCellA_Check(mout,level) :Checks all pointers (after comression) debuging! // +*// MCellA_BufPrint(mout) :Prints all cells, debugging // +*// MCellA_BufActPrint(mout) :Prints all active cells, debugging // +*// MCellA_PltBegin :Ploting 2-dim. cells and vertices // +*// MCellA_PltCell(mout) :Ploting 2-dim. cells and vertices // +*// MCellA_PltEnd :Ploting 2-dim. cells and vertices // +*// // +*///////////////////////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Input parameters: // +*// kDim number of dimensions for hypercubics // +*// nBuf Actual dynamic lenth of the buffer m_nBuf<m_nBufMax. For strongly peaked distribution // +*// nBuf should be as large as possible, this will increase CPU time in initialization // +*// MC generation is weakly affected by increasing nBuf // +*// nSampl No of sampling when dividing cell, nSampl=10-100 is OK, further increase improves // +*// costs CPU time and apparently does not increase grid efficiency too much. // +*// This should be checked however for every new distribution. // +*// OptDrive Type of Driver =0,1,2 for TrueInt,Sigma,WtMax, Driver=WtMax is the best if we aim // +*// at rejection leading to wt=1 events. If not then Driver=Sigma iswiser choice leading // +*// to save of CPU time. Simplistic Driver=Sigma is correct but not recommeneded (ineffic.)// +*// OptEdge decides whether vertices are included in the sampling. Default OptEdge=1 causes that // +*// vertices at the edge of simplex cells are included always in MC exploration // +*// of the cell. In the case of density distrib. with weak integrable singularities // +*// at the edges it may be not possible and OptEdge=0 may help. // +*// EvPerBin Enhancement of MC statistics in the beginning of the foam build-up (testing new ideas). // +*// =0 (default) no enhacement, =0 enhancement is none, fo hyp-cubic foeam only. // +*// Out Miscelaneous. Output unit number. // +*// Chat Miscelaneous. Chat=0,1,2 chat level in output, Chat=1 normal level. // +*// // +*// // +*///////////////////////////////////////////////////////////////////////////////////////////////////////// +*// Terminology: // +*// "Active cells" are these which did not divide and are eligible for division // +*// Remarks: // +*// List of active cells is not realy necessary, but let us keep it for possible // +*// future developements or tests. // +*///////////////////////////////////////////////////////////////////////////////////////////////////////// + + + SUBROUTINE MCellA_PreInitialize !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Presets certain defaults for switches and other and regualtory parameters. // +*// They Can be reset with setters // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER i,j +* + INTEGER m_Magic ! Magic cookie, to avoid multiple initialization + DATA m_Magic /378231178/ + SAVE m_Magic +* ------------------------------------------------- + IF(m_Magic .EQ. 378231178 ) THEN + m_MagicInit = m_Magic + m_Magic = 0 + ENDIF + IF(m_MagicInit .NE. 378231178 ) RETURN + IF(m_Chat.GT.0) THEN + WRITE(m_out,*) '================================================' ! + WRITE(m_out,*) '===============MCellA_PreInitialize==============' ! + WRITE(m_out,*) '================================================' ! + ENDIF + m_MagicInit= 0 + m_kDim = 0 ! dimension hypercubics + m_Dimen = m_kDim ! dimension total + m_nBuf = 1000 ! Actual dynamic lenth of the buffer m_nBuf<m_nBufMax + m_nBin = 8 ! No of histogram bins in exploring cell + m_nSampl = 200 ! No of sampling when dividing cell + m_OptDrive = 2 ! type of Driver =0,1,2 for TrueVol,Sigma,WtMax + m_OptEdge = 0 ! decides whether vertices are included in the sampling + m_OptPeek = 1 ! type of Peek =0,1 for maximum, random + m_Out = 6 ! Output unit + m_Chat = 1 ! Chat=0,1,2 chat level in output, Chat=1 normal level + m_OptRanIni= 1 ! Rand.num. generator initialized (=1) inside MCellA + m_OptRanLux= 3 ! Rand.num. generator level =-1,0,1,2,3,4 + m_EvPerBin =25 ! Cut MC statistics in the end of build-up <m_EvPerBin*nBin +* + m_LastCe = 0 ! Initial length of dynamical buffor for cells + m_nCalls = 0 ! Initial counter of function calls + END + + SUBROUTINE MCellA_Flush !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Use this before re-initialization of the MCellA // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + m_MagicInit = 378231178 ! Reset Magic cookie, alowing initialization + IF(m_Chat.GT.0) THEN + WRITE(m_out,*) '========================================' + WRITE(m_out,*) '===============MCellA_Flush==============' + WRITE(m_out,*) '========================================' + ENDIF + CALL MCellA_PreInitialize + END + + SUBROUTINE MCellA_Initialize(FunW) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Basic initialization, create "foam of cells" // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + DOUBLE PRECISION funW + EXTERNAL funW + INTEGER i,j,k,iCell,kCell + DOUBLE PRECISION TotPrim +*--------------------------------------------- + CALL MCellA_PreInitialize +* User may prefers to initialize r.n.gen. by himsef, the initialization below can be inhibited + IF( m_OptRanIni.EQ. 1 ) THEN + IF(m_OptRanLux.EQ.-1) THEN + CALL PseuMar_Initialize(54217137, 0, 0) ! Initialization of random number generator + ELSEIF(m_OptRanLux.GE.0 .AND. m_OptRanLux.LE.4 ) THEN + CALL RLUXGO( m_OptRanLux, 54217137,0,0) ! Initialization of random number generator + ELSE + WRITE(*, *) ' ### STOP in MCellA_Initialize, wrong OptRanLux =',m_OptRanLux ! + WRITE(m_Out,*) ' ### STOP in MCellA_Initialize, wrong OptRanLux =',m_OptRanLux ! + ENDIF + ENDIF +* + IF( m_nBuf .GT. m_nBufMax) THEN + WRITE(*, *) ' ### STOP in MCellA_Initialize, to big m_nBuf =',m_nBuf ! + WRITE(m_Out,*) ' ### STOP in MCellA_Initialize, to big m_nBuf =',m_nBuf ! + STOP + ENDIF + IF( m_nBin .GT. m_nBinMax) THEN + WRITE(*, *) ' ### STOP in MCellA_Initialize, to big m_nBin =',m_nBin ! + WRITE(m_Out,*) ' ### STOP in MCellA_Initialize, to big m_nBin =',m_nBin ! + STOP + ENDIF + IF( m_Dimen .LE. 0 ) THEN + WRITE(*, *) ' ### STOP in MCellA_Initialize, m_Dimen =',m_Dimen ! + WRITE(m_Out,*) ' ### STOP in MCellA_Initialize, m_Dimen =',m_Dimen ! + STOP + ENDIF +* Initialize cells + CALL MCellA_InitCells(funW) +***** CALL MCellA_BufPrint(m_Out) + + CALL MCellA_Grow(funW) +* Update list of active cells, only for internal tests + CALL MCellA_ActUpda + CALL MCellA_Check(6,0) ! Check if the liked list is OK +* ----------------------- + IF( m_Chat.GE.1) THEN + WRITE(m_Out,'( 2(a,i9), 2(a,g18.9) )') + $ 'Initialize>>>>GROWTH Cells:',m_LastCe,' Active:',m_LastAc, ! + $ ' Integral:',m_CeIntg(1),' Driver:',m_CeDriv(1) ! + ENDIF + IF( m_Chat.EQ.2) THEN + CALL MCellA_BufPrint( m_Out) + CALL MCellA_BufActPrint( m_Out) + ENDIF +* Initializations for M.C. generation + m_Drive = m_CeDriv(1) ! M.C. generation value of Driver integral + m_SumWt = 0d0 ! M.C. generation sum of Wt + m_SumWt2 = 0d0 ! M.C. generation sum of Wt**2 + m_NevGen = 0d0 ! M.C. generation sum of 1d0 + m_WtMax = -1d99 ! M.C. generation maximum wt + m_WtMin = 1d99 ! M.C. generation minimum wt + m_VolTot = m_CeIntg(1) ! Estimate of integral tot. without error + m_MCresult = m_VolTot ! M.C. generation Final value of ITEGRAL, temporary asignment + m_MCerror = m_VolTot ! M.C. generation Final walue of ERROR , temporary asignment +* +*((((((((((((################################################################################ +*((((((((((((################################################################################ +c CALL MCellA_BufPrint( 6) +c CALL MCellA_BufActPrint(6) +c CALL MCellA_Check( 6,0) +c WRITE(*,*) ' ########### STOP ########### developement not finished @@@@' ! +c STOP +*))))))))))))################################################################################ +*))))))))))))################################################################################ +* +* Cumulative Primary for MC generation, see MCellA_CellGener + CALL MCellA_ActUpda + TotPrim = 0d0 + m_CePrCu(0)= 0d0 + DO kCell = 1,m_LastAc + iCell = m_ActC(kCell) + TotPrim = TotPrim +m_CePrim( iCell ) + m_CePrCu(kCell)=TotPrim + ENDDO + + END ! MCellA_Initialize + + SUBROUTINE MCellA_InitCells(funW) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Initialize first n-factorial cells inside original cube // +*// MC exploration done for all newly defined cells // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + DOUBLE PRECISION funW + EXTERNAL funW + INTEGER iCeNew,iCell,NoMC + INTEGER i,j,k +* ----------------------------------------------------------------------------- +*////////////////////////////////////////////////////////////////////////////////////// +* ROOT cell ACTIVE, no daughters + NoMC= m_nSampl +* -------------------- Stat,Pare, Dau1, Dau2, MCsampl, iCeNew) + CALL MCellA_DefCell( 1, -1, -1, -1, NoMC, iCeNew) ! + CALL MCellA_Explore(iCeNew,funW) ! Initial MC sampling + END !!!MCellA_InitCells + + SUBROUTINE MCellA_DefCell(Stat,Pare,Dau1,Dau2,NoMC,iCeNew) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Create new (daughter) cell and append it at the very end of the buffer // +*// iCeNew is pointer of the new cell // +*// Note clever trick: volume of this daughter is assigned initialy half volume // +*// of the parent, if parent exists. // +*// In Explore this value is used to update all parents such that // +*// in the entrire tree parents have volume being sum of all daughter volumes. // +*// This summation discipline is useful for MC generation of an active cell by // +*// going randomly from top to bottom of the tree. // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER Stat,Pare,Dau1,Dau2,iCeNew,k,NoMC +* ------------------------------------------------------------------ + IF( m_LastCe .EQ. m_nBuf) THEN + WRITE(*,*) ' STOP in MCellA_DefCell: something wrong with m_nBuf=',m_nBuf ! + STOP + ENDIF + m_LastCe = m_LastCe+1 + iCeNew = m_LastCe + m_CeStat(iCeNew)= Stat ! status code, =0 inactive, =1 active + m_CePare(iCeNew)= Pare ! parent cell pointer + m_CeDau1(iCeNew)= Dau1 ! daughter1 cell pointer + m_CeDau2(iCeNew)= Dau2 ! daughter2 cell pointer + m_CeSamp(iCeNew)= NoMC ! No of MC events in exploration +* + IF(Pare.EQ.-1) THEN + m_CeIntg(iCeNew)= 0d0 + m_CeDriv(iCeNew)= 0d0 + ELSE + m_CeIntg(iCeNew)= m_CeIntg(Pare)/2d0 ! integr. half of parent + m_CeDriv(iCeNew)= m_CeDriv(Pare)/2d0 ! integr. half of parent + ENDIF + END ! MCellA_DefCell + + + SUBROUTINE MCellA_Explore(iCell,funW) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Explore newly defined cell with help of special short MC sampling // +*// As a result, estimetes of true and driver integral will be defined // +*// Average and dispersion of the weight distribution will be found along each // +*// edge and the best edge (minimum dispersion) is memorized for future use. // +*// Axerage x for eventual future cell division is also defined. // +*// Recorded are aso minimum and maximu weight etc. // +*// The volume estimate in all (inactive) parent cells is updated // +*// Note that links to parents and initial volume = 1/2 parent has to be // +*// already defined prior to calling this routine. // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER iCell +* Hyper-Cubic subspace + DOUBLE PRECISION Alpha( m_KdiMax) + INTEGER digit( m_KdiMax) +* Total space + DOUBLE PRECISION Vrand( m_DimMax) +* Edge sampling working space, matrices + DOUBLE PRECISION Xdivi( m_KdiMax) + DOUBLE PRECISION Histo( m_KdiMax,m_nBinMax) +*-------- + INTEGER loop,i,j,k,parent,iv,jv,kv,iBin,nDivi,NevEff ! + DOUBLE PRECISION x,x1,x2,Wt,Vsum,SumWt,NoMC + DOUBLE PRECISION Dx,VolOld, DriOld, XrSum + DOUBLE PRECISION Posi(m_KdiMax),Size(m_KdiMax) + DOUBLE PRECISION CeSum(10) + DOUBLE PRECISION funW + EXTERNAL funW +*----------------------------------------------------------------------- +* memorize old values, will be needed for correcting parent cells + VolOld = m_CeIntg(iCell) + DriOld = m_CeDriv(iCell) +* get position and size vectors from PARENT explorations + CALL MCellA_GetHcube(iCell,Posi,Size) + Dx=1d0 ! Cartesian volume of the hypercube + DO i=1,m_Kdim + Dx = Dx*Size(i) ! Product of sizes in hypercubical subspace + ENDDO +*///////////////////////////////////////////////////// +*// Exploratory MC sampling to probe the cell // +*///////////////////////////////////////////////////// + CeSum(1) = 0 + CeSum(2) = 0 + CeSum(3) = 0 + CeSum(4) = 1d90 ! wtmin + CeSum(5) = -1d90 ! wtmax + DO k=1,m_KdiMax + DO iBin=1,m_nBin + Histo(k,iBin)=0d0 + ENDDO + ENDDO +*/////////////////////////////////////////////////////////////////////////////////// +* Additional scan over vertices in order to improve max/min weights +* Note that this option adds 2**m_Kdim of the function calls, limited to 1000! + IF( m_OptEdge .EQ. 1 ) THEN + DO k=1,m_Kdim + digit(k)=0 ! initialize first partitions + ENDDO + DO loop=1,1000 ! start of loop over partitions + DO j=1,m_Kdim + Vrand(j) = Posi(j) + digit(j)*Size(j) ! h-cubical subspace + ENDDO + Wt =funW(Vrand)*Dx ! weight average normalised to integral over the cell + CeSum(4) = MIN( CeSum(4),Wt) ! minium weight + CeSum(5) = MAX( CeSum(5),Wt) ! maximu weight + digit(1)=digit(1)+1 + DO k=1,m_Kdim-1 + IF(digit(k).EQ.2) THEN + digit(k)=0 + digit(k+1)=digit(k+1)+1 + ENDIF + ENDDO + IF( m_Kdim .EQ.0 ) GOTO 122 + IF( digit(m_Kdim).EQ.2) GOTO 122 + ENDDO ! end of loop over partitions + 122 CONTINUE + ENDIF +*/////////////////////////////////////////////////////////////////////////////////// +* generate randomly/uniformly vector Vrand inside this simplex&hypercube + DO i=1,m_CeSamp(iCell) + CALL MCellA_MakeAlpha( Alpha) + DO j=1,m_Kdim + Vrand(j) = Posi(j) +Alpha(j)*Size(j) ! hypcubic subspace + ENDDO +*------------------------------------------------------------------------------------ +* IMPORTANT! Two Loops below determine the indexing of edges (simplex and hypercube) +*------------------------------------------------------------------------------------ + DO j=1,m_Kdim + Xdivi(j) = Alpha(j) + ENDDO +*/////////////////////////////////////////////////////////////////////////////////// + Wt =funW(Vrand)*Dx ! principal weight normalised to integral over the cell +*------------------------------------------------------------------------------------ + m_nCalls = m_nCalls+1 + CeSum(1) = CeSum(1)+ Wt ! sum of weights + CeSum(2) = CeSum(2)+ Wt*Wt ! sum of weights squared + CeSum(3) = CeSum(3)+ 1d0 ! sum of 1 + CeSum(4) = MIN( CeSum(4),Wt) ! minium weight + CeSum(5) = MAX( CeSum(5),Wt) ! maximu weight +* Search for the best edge candidate for future cell division, prepare MC material + Ndivi = m_kDim + DO k=1,nDivi + iBin = INT(Xdivi(k)*m_nBin)+1d0 + iBin = MIN(MAX(iBin,0),m_nBin) + Histo(k,iBin) = Histo(k,iBin)+Wt ! fill histo for each edge +c[[[[[[[[[[[[ debug [[[[[[[[[[[[ debug [[[[[[[[[[[[ +c IF(iCell.EQ.4) THEN +c CALL GLK_Fil1(1200+k, Xdivi(k),Wt) +c ENDIF +c]]]]]]]]]]]] debug ]]]]]]]]]]]] debug ]]]]]]]]]]]] + ENDDO + IF( m_EvPerBin.GT.0 ) THEN + NevEff = CeSum(1)**2/CeSum(2) + IF( NevEff .GE. m_nBin*m_EvPerBin) GOTO 222 ! + ENDIF + ENDDO + 222 CONTINUE +*/////////////////////////////////////////////////////// +*// End of Special Short MC sampling to probe cell // +*/////////////////////////////////////////////////////// + + +*////////////////////////////////////////////////////////////////////////////////////// +*// Determine the best edge candidate for future cell division, +*// using MC material in Histo + SumWt = CeSum(1) + NoMC = CeSum(3) + CALL MCellA_Carver(iCell,SumWt,Histo) +*////////////////////////////////////////////////////////////////////////////////////// + IF( CeSum(1) .LT.0d0) GOTO 920 + m_CeIntg(iCell) = CeSum(1)/NoMC ! estimator of the true integral +*!!!!!!!!! DRIVER is for the Foam build-up (not for MC generation) !!!!!!!!!! +*!!!!!!!!! PRIMARY is for MC generation (not for the Foam build-up ) !!!!!!!!!! + IF( m_OptDrive.EQ.0 ) THEN + m_CePrim(iCell) = m_CeIntg(iCell) ! True integral, MC generation + m_CeDriv(iCell) = m_CeIntg(iCell) ! True integral, Foam build-up + ELSEIF( m_OptDrive.EQ.1 ) THEN + m_CePrim(iCell) = DSQRT(CeSum(2)/NoMC) ! Sqrt( <w>**2 + sigma**2 )=Sqrt(<w**2>) + m_CeDriv(iCell) = DSQRT(CeSum(2)/NoMC -m_CeIntg(iCell)**2) ! sigma=Sqrt(<w**2>-<w>**2) + ELSEIF( m_OptDrive.EQ.2 ) THEN + m_CePrim(iCell) = CeSum(5) ! wtmax , MC generation + m_CeDriv(iCell) = CeSum(5) -m_CeIntg(iCell) ! wtmax-<w>, Foam build-up + ELSE + WRITE(m_out,*) ' ++++ STOP in MCellA_Explore, wrong m_OptDrive =',m_OptDrive ! + WRITE( *,*) ' ++++ STOP in MCellA_Explore, wrong m_OptDrive =',m_OptDrive ! + STOP + ENDIF +c{{{ WRITE(*,*) 'iCell=',iCell,NoMC,INT(CeSum(1)**2/CeSum(2)) +* correct volume and driver in all parent cells to the top of the tree + parent = m_CePare(iCell) + DO i = 1,m_nBuf + IF( parent .EQ. -1 ) GOTO 100 ! Exit if no parent exists + m_CeIntg(parent) = m_CeIntg(parent) +( m_CeIntg(iCell) -VolOld) ! + m_CeDriv(parent) = m_CeDriv(parent) +( m_CeDriv(iCell) -DriOld) ! + parent=m_CePare(parent) + ENDDO + 100 CONTINUE + RETURN + 920 WRITE(*,*) ' ### STOP in MCellA_Explore: something wrong with integrand ' ! + STOP + 970 WRITE(*,*) ' ### STOP in MCellA_Explore: something wrong with Ndivi =',nDivi ! + STOP + END ! MCellA_Explore + + + SUBROUTINE MCellA_Carver(iCell,SumWt,Histo) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Determine the best edge candidate for future cell division, using MC material // +*// kBest is the best edge found, xBest and yBest are the best values of lambda // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER iCell + DOUBLE PRECISION SumWt, Histo(m_KdiMax,m_nBinMax) + DOUBLE PRECISION xBest,yBest,zBest + DOUBLE PRECISION Bins(m_nBinMax) + INTEGER i,j,k, iBin, nDivi,kBest + INTEGER iUp,iLow, jUp,jLow, kDivi, jv,iv, jDivi + DOUBLE PRECISION BinMax,This, Carve, yLevel + DOUBLE PRECISION CarvOne,CarvTwo,CarvMax +* + kBest =1 + xBest =0.5d0 + yBest =1d0 + IF( SumWt .NE. 0d0) THEN + CarvMax = -1d150 + nDivi = m_kDim + DO kDivi=1,nDivi + BinMax = -1d150 + DO iBin=1,m_nBin ! Unload histo and Maximum bin + Bins(iBin) = Histo(kDivi,iBin) + BinMax = MAX( BinMax, Bins(iBin)) ! Maximum content/bin + ENDDO + CarvTwo = 0d0 + DO iBin=1,m_nBin + Bins(iBin) = Bins(iBin)/BinMax ! Normalize to the highest bin + CarvTwo = CarvTwo + (1d0-Bins(iBin))/m_nBin ! Another carve (more stable) + ENDDO +* Find maximum 'rectangular carve' in betwen the two bins (jLow,...,jUp) + jLow =1 + jUp =m_nBin + CarvOne = -1d150 + yLevel = -1d150 + DO iBin=1,m_nBin + This = Bins(iBin) + iLow = iBin + DO j=iBin,1,-1 ! walk to the left and find first bin > current + IF(This .LT. Bins(j) ) GOTO 100 + iLow = j + ENDDO + 100 CONTINUE + iUp = iBin + DO j=iBin,m_nBin ! walk to the right and find first bin > current + IF(This .LT. Bins(j) ) GOTO 200 + iUp = j + ENDDO + 200 CONTINUE + Carve = (iUp-iLow+1)*(1d0-This)/m_nBin + IF( Carve .GT. CarvOne) THEN + CarvOne = Carve + jLow = iLow + jUp = iUp + yLevel = This + ENDIF + ENDDO ! end-loop over histogram bins +************************************************************* +** IF( CarvOne .GT. CarvMax) THEN +** CarvMax = CarvOne +************************************************************* + IF( CarvTwo .GT. CarvMax) THEN + CarvMax = CarvTwo + kBest = kDivi ! Best edge + xBest = (jLow-1d0)/m_nBin + yBest = (jUp*1d0)/m_nBin + IF(jLow .EQ. 1 ) xBest = yBest + IF(jUp .EQ. m_nBin) yBest = xBest +* division ratio in units of 1/m_nBin, testing + jDivi = jLow-1 + IF(jLow .EQ. 1 ) jDivi=jUp +************************************************************** +* The improvement below does not seem to matter at all +* IF( 0.5d0*(xBest+yBest) .LT. 0.5d0) THEN +* zBest =xBest +* xBest =yBest +* yBest =zBest +* ENDIF +************************************************************** + ENDIF + ENDDO ! end-loop over nDivi + ENDIF + m_CeDivi(iCell) = jDivi +kBest*32768 ! parameters for future division + END ! MCellA_Carver + + + SUBROUTINE MCellA_GetHcube(iCell,Posi,Size) +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Testing new concept of the Cell encodong/decoding using short integers // +*// Using m_CeDivi(iCell) we recover cell position Posi(tion) and Size vectors // +*// using all parents and grandparents in the tree. // +*// The CPU overhead in generation is 50% // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER iCell + DOUBLE PRECISION Posi(*),Size(*) + INTEGER i,j,k, kBest, jDivi, parent,daughter + DOUBLE PRECISION xDivi + DOUBLE PRECISION sum1,sum2 +*-------------------- + DO j=1,m_Kdim + Size(j)=1d0 + Posi(j)=0d0 + ENDDO +* loop over parent cells to the top of the tree + daughter = iCell + parent = m_CePare(iCell) + DO i = 1,m_nBuf + IF( parent .EQ. -1 ) GOTO 100 ! Exit if no parent exists + jDivi = MOD(m_CeDivi(parent),32768) ! division bin < 32768 + kBest = m_CeDivi(parent)/32768 ! best edge + xDivi = (jDivi*1d0)/m_nBin + IF( m_CeDau1(parent).EQ.daughter ) THEN + Size(kBest)=Size(kBest)*xDivi + Posi(kBest)=Posi(kBest)*xDivi + ELSEIF( m_CeDau2(parent).EQ.daughter ) THEN + Size(kBest)=Size(kBest)*(1d0-xDivi) + Posi(kBest)=Posi(kBest)*(1d0-xDivi)+xDivi + ELSE + WRITE(*,*) ' STOP in MCellA_TestNew, daughter,parent=',daughter,parent ! + ENDIF + daughter = parent + parent = m_CePare(parent) + ENDDO + 100 CONTINUE + END ! MCellA_GetHcube + + + SUBROUTINE MCellA_RanDiscr(Driv,nTot,Power,iRand) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// PRESENTLY UNUSED !!! // +*// Generates iRand in (1,nTot) acconding to discrete un-normalized probab. Driv // +*// Power is normaly =1, can be useful for special purposes // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + DOUBLE PRECISION Driv(*),Power + INTEGER nTot,iRand + INTEGER i + DOUBLE PRECISION random,sum,Total + REAL Qrand(10) ! from PseuMar +* + Total = 0d0 + DO i= 1,nTot + Total = Total +Driv( i)**Power + ENDDO + IF(Total .EQ. 0d0) GOTO 990 + IF(m_OptRanLux.EQ.-1) THEN + CALL PseuMar_MakeVec(Qrand,1) + ELSE + CALL RanLux(Qrand,1) + ENDIF + random = Qrand(1) + iRand = -1 + sum = 0d0 + DO i= 1,nTot + iRand = i + sum = sum +Driv( i)**Power + IF( random .LT. sum/Total ) GOTO 100 + ENDDO + IF(iRand .EQ. -1) GOTO 990 + 100 CONTINUE + RETURN + 990 WRITE(*,*) ' ### STOP in MCellA_RanDiscr, something went wrong !!!!' + STOP + END + + + SUBROUTINE MCellA_MakeAlpha(Alpha) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Provides random vector Alpha, each component in (0,1) range // +*// // +*////////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + DOUBLE PRECISION Alpha(m_KdiMax), y + REAL Qrand( m_KdiMax) ! from PseuMar + INTEGER i,k +* -------------------------------------------------------- + IF( m_Kdim.LT.0 .OR. m_Kdim.GT.m_KdiMax) THEN + WRITE(*,*) 'STOP in MCellA_MakeAlpha: m_Kdim=',m_Kdim + STOP + ENDIF + IF(m_Kdim.LE.0) RETURN + IF(m_OptRanLux.EQ.-1) THEN + CALL PseuMar_MakeVec(Qrand,m_Kdim) + ELSE + CALL RanLux(Qrand,m_Kdim) + ENDIF + DO k =1,m_Kdim + Alpha(k)=Qrand(k) + ENDDO + END + + + + SUBROUTINE MCellA_Grow(funW) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Grow new cells by division // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + DOUBLE PRECISION funW + EXTERNAL funW + INTEGER i,RC,iCell +*--------------------------------------------- +* Final division + DO i=1,100000 + IF( m_OptPeek .EQ. 0 ) THEN + CALL MCellA_PeekMax( iCell) ! choose cell with maximum driver functional + ELSE + CALL MCellA_PeekRand1(iCell) ! randomly choose one cell + ENDIF + CALL MCellA_Divide( iCell,funW,RC) ! and divide it into two +c[[[[ +c CALL MCellA_BufPrint( m_Out) +c]]]] + IF(RC.EQ.-1) GOTO 300 + ENDDO + 300 CONTINUE + WRITE(16,*) '######################### MCellA_Grow #####################' +*****[[[[[[ debug +***** CALL MCellA_BufPrint( 6) +***** CALL MCellA_BufActPrint( 6) +*****]]]]]] + CALL MCellA_Check(6,0) + END ! MCellA_Grow + + SUBROUTINE MCellA_PeekMax(iCell) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Find active cell containing maximum Driver functional (foam built-up only) // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER iCell + INTEGER i + DOUBLE PRECISION DrivMax, Driv +* --------------------------------------------------- + iCell = 0 + DrivMax = -1d150 + DO i = 1,m_LastCe + IF( m_CeStat(i).EQ.1 ) THEN + Driv= ABS(m_CeDriv(i)) + IF(Driv .GT. DrivMax) THEN + DrivMax = Driv + iCell = i + ENDIF + ENDIF + ENDDO +**** WRITE(*,*) '###>>> MCellA_PeekMax: iCell=',iCell + IF(iCell.EQ.0) THEN + WRITE(*,*) '### STOP in MCellA_PeekMax: not found iCell=', iCell + STOP + ENDIF + END ! MCellA_PeekMax + + + SUBROUTINE MCellA_PeekRand1(iCell) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Peek up randomly TREE-WISE the pointer iCell of an active cell // +*// Using DRIVER functional // +*// We walk randomly from top of tree downwards until we find active cell m_CeStat=1 // +*// At each step one of daugters cells is choosen randomly according // +*// to their DRIVER functional estimates. // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER iCell + INTEGER kCell,i,Dau1,Dau2,iDau + DOUBLE PRECISION random,p1,volu1,volu2,volu,TotDri,sum + REAL Qrand(10) ! from PseuMar +* ---------------------------------------------------------------- + kCell=1 +* All standard cells with 2 daughters + DO i=1,10000000 + IF( m_CeStat( kCell ) .EQ. 1 ) GOTO 300 + volu1= m_CeDriv( m_CeDau1(kCell) ) + volu2= m_CeDriv( m_CeDau2(kCell) ) + p1 = volu1/(volu1+volu2) + IF(m_OptRanLux.EQ.-1) THEN + CALL PseuMar_MakeVec(Qrand,1) + ELSE + CALL RanLux(Qrand,1) + ENDIF + random = Qrand(1) + IF( random .LT. p1 ) THEN + kCell = m_CeDau1(kCell) + ELSE + kCell = m_CeDau2(kCell) + ENDIF + ENDDO + GOTO 990 + 300 CONTINUE + iCell=kCell + RETURN + 990 WRITE(*,*) ' ### STOP in MCellA_PeekRand1, something went wrong !!!!' + STOP + END !!! MCellA_PeekRand1 + + + SUBROUTINE MCellA_Divide(iCell,funW,RC) !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Divide cell iCell into two daughter cells // +*// The iCell is retained and taged as inactive, daughter cells are appended // +*// at the end of the buffer. // +*// New vertex is added to list of vertice. // +*// List of active cells is updated, iCell remooved, two daughters added // +*// and their properties set with help of MC sampling (MCellA_Explore) // +*// Return Code RC=-1 of buffer limit is reached, m_LastCe=m_nBuf // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER iCell,RC + INTEGER Dau1, Dau2 + DOUBLE PRECISION funW + EXTERNAL funW + INTEGER Old1,Old2,j,k,jv,iv,nEdges,NoMC +c DOUBLE PRECISION Xave +*-------------------------------------------------------------------------------------- + RC = 0 + IF( m_LastCe+2 .GT. m_nBuf) GOTO 990 !! abort if no space in buffer +* reset cell as inactive + m_CeStat(iCell) = 0 + NoMC= m_nSampl +* --------------------- Stat, Pare, Dau1,Dau2, MCsampl,iCeNew + CALL MCellA_DefCell( 1, iCell, -1, -1, NoMC, Dau1) ! + CALL MCellA_DefCell( 1, iCell, -1, -1, NoMC, Dau2) ! + m_CeDau1(iCell) = Dau1 + m_CeDau2(iCell) = Dau2 + CALL MCellA_Explore(Dau1,funW) + CALL MCellA_Explore(Dau2,funW) +* Update list of active cells, only for internal tests + CALL MCellA_ActUpda + RETURN + 990 RC=-1 !!buffer limit is reached, m_LastCe=m_nBuf + RETURN + 980 WRITE(*,*) ' ### STOP in MCellA_Divide: too short list of vertices ' + STOP + END ! MCellA_Divide + + + + SUBROUTINE MCellA_ActUpda !# Initialization +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Create list of active cells (pointers) // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER iCell,Dau1,Dau2 + INTEGER i +* --------------------------------------------------- + m_LastAc=0 + DO iCell = 1,m_LastCe + IF( m_CeStat(iCell).EQ.1 ) THEN + m_LastAc=m_LastAc+1 + IF(m_LastAc .EQ. m_cMax) GOTO 950 + m_ActC(m_LastAc) = iCell + ENDIF + ENDDO + RETURN + 900 WRITE(*,*) '### STOP in MCellA_ActUpda: not found iCell=', iCell + STOP + 950 WRITE(*,*) '### STOP in MCellA_ActUpda: list of active cells too short' ! + STOP + END ! MCellA_ActUpda + + + SUBROUTINE MCellA_CellGener(iCell) !# Generation +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Peek up randomly pointer iCell of an active cell according to PRIMARY // +*// Straightforward way, using list of active pointes made by ActUpda // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER iCell + INTEGER kCell,i,Dau1,Dau2,iDau + DOUBLE PRECISION random,x1,TotPrim + INTEGER klower,kuper,krange,kurrent,DipSwitch + REAL Qrand(10) ! from PseuMar + INTEGER iCont + DATA iCont/0/ + iCont = iCont+1 +* ---------------------------------------------------------------- + IF(m_OptRanLux.EQ.-1) THEN + CALL PseuMar_MakeVec(Qrand,1) + ELSE + CALL RanLux(Qrand,1) + ENDIF + random = Qrand(1) +* --------------------------------------------------- + TotPrim = m_CePrCu(m_LastAc) + x1 = TotPrim *random + DipSwitch=0 ! =0 is faater + IF( DipSwitch.EQ.1) THEN +*-------- primitive method -------- + DO kCell = 1,m_LastAc + iCell = m_ActC(kCell) + IF( m_CePrCu(kCell) .GE. x1 ) GOTO 800 + ENDDO + WRITE(*,*) '### STOP1 in MCellA_CellGener: something wrong' ! + STOP + 800 CONTINUE + ELSEIF( DipSwitch.EQ.0) THEN +*-------- a bit more sophisticated/faster method ------ + klower = 0 + kuper = m_LastAc + DO i=1,m_LastAc + krange = (kuper-klower+1)/2 + kurrent = klower +krange + IF( x1 .LE. m_CePrCu(kurrent) ) THEN + kuper = kurrent + ELSE + klower = kurrent + ENDIF + IF(kuper-klower.LE.1) GOTO 850 + ENDDO + WRITE(*,*) ' STOP in MCellA_CellGener' + STOP + 850 CONTINUE + iCell = m_ActC(kuper) + kCell = kuper + ELSE + iCell = m_ActC(1) ! nonsense for tests + ENDIF +***** IF(iCont.LE.10) WRITE(*,*) 'LastAc,kCell,iCell = ',m_LastAc,kCell,iCell !! debug + END ! MCellA_CellGener + + + SUBROUTINE MCellA_MakeEvent(funW) !# Generation +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Generates point/vector Xrand with the weight MCwt // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + DOUBLE PRECISION funW + EXTERNAL funW + INTEGER iCell,i,j,iv + DOUBLE PRECISION Wt,x1,x2,Dx,MCwt + DOUBLE PRECISION Alpha( m_KdiMax) ! Hyper-Cubic subspace + DOUBLE PRECISION Posi(m_KdiMax),Size(m_KdiMax) +* ----------------------------------------------------------------- +* choose randomly one cell + CALL MCellA_CellGener( iCell) +* generate randomly/uniformly vector Vrand inside this simplex + CALL MCellA_MakeAlpha( Alpha) + CALL MCellA_GetHcube(iCell,Posi,Size) + DO j=1,m_Kdim + m_MCvector(j) = Posi(j) +Alpha(j)*Size(j) ! hypcubic subspace + ENDDO + Dx =1d0 + DO j=1,m_Kdim + Dx=Dx*Size(j) + ENDDO +* weight average normalised to PRIMARY integral over the cell + MCwt =funW(m_MCvector)*Dx/m_CePrim(iCell) ! PRIMARY controls normalization + m_nCalls = m_nCalls+1 + m_MCwt = MCwt +* accumulation of statistics for the main MC weight + m_SumWt = m_SumWt +MCwt ! sum of Wt + m_SumWt2 = m_SumWt2 +MCWt*MCwt ! sum of Wt**2 + m_NevGen = m_NevGen +1d0 ! sum of 1d0 + m_WtMax = MAX(m_WtMax,MCwt) ! maximum wt + m_WtMin = MIN(m_WtMin,MCwt) ! minimum wt + END ! MCellA_MakeEvent + + SUBROUTINE MCellA_GetMCvector(MCvector) !# Generation +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + DOUBLE PRECISION MCvector(*) + INTEGER k +*----------------------- + DO k=1,m_Dimen + MCvector(k) = m_MCvector(k) + ENDDO + END + + SUBROUTINE MCellA_GetMCwt(MCwt) !# Generation +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + DOUBLE PRECISION MCwt +*----------------------- + MCwt = m_MCwt + END + + SUBROUTINE MCellA_MCgenerate(funW,MCvector,MCwt) !# Generation +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Obsolete // +*// Generates point/vector MCvector with the weight MCwt // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + DOUBLE PRECISION MCvector(*),MCwt + DOUBLE PRECISION funW + EXTERNAL funW + INTEGER j +* --------------------------------------------------------------- + CALL MCellA_MakeEvent(funW) + MCwt = m_MCwt + DO j=1,m_Dimen + MCvector(j) =m_MCvector(j) + ENDDO + END !!MCellA_MCgenerate + + + SUBROUTINE MCellA_Finalize(MCresult,MCerror) !# Finalization +*////////////////////////////////////////////////////////////////////////////// +*// // +*// After MC run is completed it calculates integral and its error // +*// Also prints some information/statistics on the MC run // +*// Remember that PRIMARY controls normalization of the integration // +*////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' +* + DOUBLE PRECISION MCresult,MCerror,MCerelat + DOUBLE PRECISION Vtot,Verr,VerRela,TotPrim + INTEGER kCell,iCell +*----------------------------------------------------------------------------- + MCresult =0d0 + MCerelat =1d0 + TotPrim = 0d0 + DO kCell = 1,m_LastAc + iCell = m_ActC(kCell) + TotPrim = TotPrim +m_CePrim( iCell ) + ENDDO + IF(m_NevGen .GT. 0) THEN + MCresult = TotPrim *m_SumWt/m_NevGen + IF(m_SumWt.NE.0d0) MCerelat = m_SumWt2/m_SumWt**2 -1d0/m_NevGen ! + IF(MCerelat.GT.0d0) MCerelat = SQRT( ABS(MCerelat) ) ! + IF(MCerelat.LT.0d0) MCerelat = -SQRT( ABS(MCerelat) ) ! + ENDIF + MCerror = MCresult*MCerelat + Vtot=m_CeIntg(1) +* some test printouts + IF(m_Chat.GT.0) THEN + WRITE(m_Out,'(3a)') '||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||' ! + WRITE(m_Out,'(3a)') '||||||||||||||||||||||||||||||', ' MCellA_Finalize ', ! + $ '||||||||||||||||||||||||||||||' + WRITE(m_Out,'(a,2g18.9,f11.7)') 'MCresult, MCerror, Errela= ',MCresult,MCerror,MCerelat ! + WRITE(m_Out,'(a,2f11.5)') 'Minimum maximum weight = ',m_WtMin,m_WtMax ! + IF(m_NevGen .GT. 0) WRITE(m_Out,'(a,2f11.5)') 'Average wt SumWt/NevGen = ',m_SumWt/m_NevGen ! + WRITE(m_Out,'(a,i15)') 'Total of function calls = ',m_nCalls ! + WRITE(m_Out,'(a,2i15)') 'Number of cells = ',m_LastCe ! + WRITE(m_Out,'(a,f12.1,2g18.9)') 'NevGen,SumWt,m_SumWt2 = ',m_NevGen,m_SumWt,m_SumWt2 ! + WRITE(m_Out,'(a,2g18.9)') 'Integ.Est. from Explorat.= ',Vtot ! + WRITE(m_Out,'(3a)') '||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||' ! + ENDIF + END ! MCellA_Finalize + + + + SUBROUTINE MCellA_GetTotPrim(TotPrim) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Total integral from cell statistics, including initialization + MC generation // +*// It can be invoked just after initialization or after MC generation // +*// Note that this estimate is distorted slightly if vertices are included in // +*// the exploration of the cells. // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + INCLUDE 'MCellA.h' + DOUBLE PRECISION TotPrim,Sum + INTEGER kCell, iCell + Sum = 0d0 + DO kCell = 1,m_LastAc + iCell = m_ActC(kCell) + Sum = Sum +m_CePrim( iCell ) + ENDDO + TotPrim=Sum + END + + + SUBROUTINE MCellA_SetKdim(Kdim) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER Kdim +* ------------------------------------------------- + CALL MCellA_PreInitialize + m_Kdim = Kdim + m_Dimen=m_Kdim + END !!! MCellA_SetKdim + + SUBROUTINE MCellA_GetKdim(Kdim) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER Kdim +* ------------------------------------------------- + Kdim = m_Kdim + END !!! MCellA_SetKdim + + SUBROUTINE MCellA_SetnBuf(nBuf) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER nBuf +* ------------------------------------------------- + CALL MCellA_PreInitialize + m_nBuf = nBuf + END !!! MCellA_SetnBuf + + SUBROUTINE MCellA_SetnBin(nBin) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER nBin +* ------------------------------------------------- + CALL MCellA_PreInitialize + m_nBin = nBin + END !!! MCellA_SetnBin + + SUBROUTINE MCellA_SetOut(Out) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER Out +* ------------------------------------------------- + CALL MCellA_PreInitialize + m_Out = Out + END !!! MCellA_SetOut + + SUBROUTINE MCellA_SetChat(Chat) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER Chat +* ------------------------------------------------- + CALL MCellA_PreInitialize + m_Chat = Chat + END !!! MCellA_SetChat + + SUBROUTINE MCellA_SetnSampl(nSampl) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER nSampl +* ------------------------------------------------- + CALL MCellA_PreInitialize + m_nSampl = nSampl + END !!! MCellA_SetnSampl + + SUBROUTINE MCellA_SetOptDrive(OptDrive) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER OptDrive +* ------------------------------------------------- + CALL MCellA_PreInitialize + m_OptDrive = OptDrive + END !!! MCellA_SetOptDrive + + SUBROUTINE MCellA_SetEvPerBin(EvPerBin) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER EvPerBin +* ------------------------------------------------- + CALL MCellA_PreInitialize + m_EvPerBin = EvPerBin + END !!! MCellA_SetEvPerBin + + + SUBROUTINE MCellA_SetOptPeek(OptPeek) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER OptPeek +* ------------------------------------------------- + CALL MCellA_PreInitialize + m_OptPeek = OptPeek + END !!! MCellA_SetOptPeek + + SUBROUTINE MCellA_SetOptEdge(OptEdge) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER OptEdge +* ------------------------------------------------- + CALL MCellA_PreInitialize + m_OptEdge = OptEdge + END !!! MCellA_SetOptEdge + + SUBROUTINE MCellA_SetOptRanIni(OptRanIni) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER OptRanIni +* ------------------------------------------------- + CALL MCellA_PreInitialize + m_OptRanIni = OptRanIni + END !!! MCellA_SetOptRanIni + + SUBROUTINE MCellA_SetOptRanLux(OptRanLux) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER OptRanLux +* ------------------------------------------------- + CALL MCellA_PreInitialize + m_OptRanLux = OptRanLux + END !!! MCellA_SetOptRanLux + + SUBROUTINE MCellA_GetnCalls(nCalls) !# Getters and Setters +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER nCalls +* ------------------------------------------------- + nCalls = m_nCalls + END !!! MCellA_SetnCalls + + SUBROUTINE MCellA_Check(mout,level) !# Miscelaneous and debug +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Checks all pointers, It is is a usefull autodiagnostic. // +*// // +*// level=0, no printout, failures causes STOP // +*// level=1, printout, failures lead to WARNINGS only // +*// // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER mout,level + INTEGER nFailures, iCell, Dau1,Dau2, Pare, iVe,n ! + INTEGER NoEmpty, iError +* --------------------------------------------------------- + nFailures=0 + iError =0 + IF(level.EQ.1) WRITE(mout,*) + $'//////////////////////////////////////// MCellA_Checks /////////////////////////////////////////////' ! + DO iCell = 1,m_LastCe + Dau1 = m_CeDau1(iCell) + Dau2 = m_CeDau2(iCell) + Pare = m_CePare(iCell) +* checking on parents + IF(iCell.GT.1) THEN + IF(Pare.GT.m_LastCe) THEN + iError =1 + nFailures = nFailures+1 + IF(level.EQ.1) WRITE(mout,*) '##### iCell= ',iCell,' Parent out of range = ',Pare ! + ENDIF + ENDIF + IF(iCell.GT.1) THEN + IF( (Pare.NE.1) .AND. (m_CeDau1(Pare).NE.iCell) .AND. (m_CeDau2(Pare).NE.iCell) ) THEN ! + iError =2 + nFailures = nFailures+1 + IF(level.EQ.1) + $ WRITE(mout,*) '##### iCell= ',iCell,' Parent not pointing to this daughter Pare= ',Pare ! + ENDIF + ENDIF +* checking on daughters + IF( Dau1 .GT. m_LastCe ) THEN + iError =3 + nFailures = nFailures+1 + IF(level.EQ.1) WRITE(mout,*) '##### iCell= ',iCell,' First Daugter out of range Dau1= ',Dau1 ! + ENDIF + IF( Dau2 .GT.m_LastCe ) THEN + iError =4 + nFailures = nFailures+1 + IF(level.EQ.1) WRITE(mout,*) '##### iCell= ',iCell,' Second Daugter out of range Dau2= ',Dau2 ! + ENDIF + IF( Dau1.GE.1 .AND. Dau1.LE. m_LastCe) THEN + IF( m_CePare(Dau1).NE.iCell ) THEN + iError =5 + nFailures = nFailures+1 + IF(level.EQ.1) + $ WRITE(mout,*) '##### iCell= ',iCell,' First Daugter not pointing to parent Dau1= ',Dau1 ! + ENDIF + ENDIF + IF( Dau2.GE.1 .AND. Dau2.LE. m_LastCe) THEN + IF( m_CePare(Dau2).NE.iCell ) THEN + iError =6 + nFailures = nFailures+1 + IF(level.EQ.1) + $ WRITE(mout,*) '##### iCell= ',iCell,' Second Daugter not pointing to parent Dau2= ',Dau2 ! + ENDIF + ENDIF + ENDDO +* Check for empty cells + NoEmpty = 0d0 + DO iCell = 1,m_LastCe + IF( m_CeStat(iCell).EQ.1 ) THEN + IF( m_CeDriv(iCell) .EQ. 0d0) NoEmpty = NoEmpty +1 + ENDIF + ENDDO + IF( NoEmpty.GT.0) THEN + WRITE(mout,*) '++++++++++ MCellA_Check: !!! WARNING!!!! Empty Cells found NoEmpty= ',NoEmpty ! + WRITE( *,*) '++++++++++ MCellA_Check: !!! WARNING!!!! Empty Cells found NoEmpty= ',NoEmpty ! + ENDIF +* summary + IF(level.EQ.1) WRITE(mout,*) '++++++++++ MCellA_Check has found total ', nFailures, ' failures ' ! + IF(level.EQ.1) WRITE(mout,*) + $'///////////////////////////////////////////////////////////////////////////////////////////////////' ! + IF(level.EQ.0 .AND. nFailures.GT.0 ) THEN + WRITE(mout,*) '++++++++++ STOP in MCellA_Check, found total ', nFailures, ' failures ' ! + WRITE(mout,*) '++++++++++ iErro= ',iError + STOP + ENDIF + END ! MCellA_Check + + + + SUBROUTINE MCellA_BufPrint(mout) !# Miscelaneous and debug +*////////////////////////////////////////////////////////////////////////////////////// +*// all cells // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER iCell,mout,active,j + DOUBLE PRECISION Posi(m_KdiMax),Size(m_KdiMax) +* ---------------------------------------------------------------- + active =0 + WRITE(mout,'(3a)') '==============================================', ' ALL-CELLS ', + $ '==============================================' + WRITE(mout,'(3a)') ' iCell Stat Pare Dau1 Dau2 Best Xave Drive Ver1 Ver2 ...' + DO iCell = 1, m_LastCe + WRITE(mout,'(5i6,f11.5,20i6)') + $ iCell, m_CeStat(iCell), m_CePare(iCell), m_CeDau1(iCell), m_CeDau2(iCell), ! + $ m_CeDriv(iCell) ! Drive + IF(m_Kdim .GT. 0 ) THEN + CALL MCellA_GetHcube(iCell,Posi,Size) + WRITE(mout,'(a,50g12.6)') + $ ' HypCubs Posit&Size: ', + $ (Posi(j), j=1,m_Kdim), ! position + $ (Size(j), j=1,m_Kdim) ! size + ENDIF + IF(m_CeStat(iCell).EQ.1) active = active +1 + ENDDO + WRITE(mout,*) ' All cells: ',m_LastCe, ' Active: ', active + END !! MCellA_BufPrint + + + + SUBROUTINE MCellA_BufActPrint(mout) !# Miscelaneous and debug +*////////////////////////////////////////////////////////////////////////////////////// +*// Active cells only // +*// Side=1 indicates that this cell is "side leaf" sticking out of main branch // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER iCell,mout,active,Side,Pare,j + DOUBLE PRECISION VolRat,DriRat,VoluSum,DrivSum,RatMax,RatMin,Fact ! + DOUBLE PRECISION Posi(m_KdiMax),Size(m_KdiMax) +* ---------------------------------------------------------------- + WRITE(mout,'(3a)') '==================================================', ' ACTIVE CELLS ', + $ '==================================================' + VoluSum =0d0 + DrivSum =0d0 + RatMin = 1d60 + RatMax = -1d60 + active =0 + WRITE(mout,'(2a)') ' iCell Stat Pare Dau1 Dau2 Side', + $ ' <w> Sig/<w> Drive VolTrue ' ! + DO iCell = 1, m_LastCe + IF(m_CeStat(iCell).EQ.1) THEN + side=0 + Pare = m_CePare(iCell) + IF(Pare.GT.0) THEN + IF( m_CeStat(m_CeDau1(Pare))*m_CeStat(m_CeDau2(Pare)) .EQ. 0 ) Side=1 ! + ENDIF + VolRat = m_CeIntg(iCell)* m_LastAc/m_CeDriv(1) + DriRat = m_CeDriv(iCell)* m_LastAc/m_CeDriv(1) + RatMin = Min(RatMin,VolRat) + RatMax = Max(RatMax,VolRat) + WRITE(mout,'(6i5, 3f11.5 ,10i5)') + $ iCell, m_CeStat(iCell), m_CePare(iCell), m_CeDau1(iCell),m_CeDau2(iCell), side, ! + $ m_CeIntg(iCell) /(m_CeDriv(iCell)+1d-100), ! average weight + $ DriRat, ! Drive/DriTot*Ncell + $ VolRat ! TrueVolu/VolTot*Ncell + IF(m_Kdim .GT. 0 ) THEN + CALL MCellA_GetHcube(iCell,Posi,Size) + WRITE(mout,'(a,50g12.6)') + $ ' HypCubs Posit&Size: ', + $ (Posi(j), j=1,m_Kdim), ! position + $ (Size(j), j=1,m_Kdim) ! size + ENDIF + VoluSum = VoluSum +m_CeIntg(iCell) + DrivSum = DrivSum +m_CeDriv(iCell) + active = active +1 + ENDIF + ENDDO + WRITE(mout,'(a,i6,a,2i6)') 'All cells: ',m_LastCe, ' Active: ', active, m_LastAc ! + WRITE(mout,'(a,2f12.5)') 'Minimum and Maximum Volume/Tot*nCell= ', RatMin,RatMax ! + WRITE(mout,'(a,2g20.13)') 'Total True Integral in active cells = ', VoluSum, m_CeIntg(1) ! + WRITE(mout,'(a,2g20.13)') 'Total Driver Integ in active cells = ', DrivSum, m_CeDriv(1) ! + WRITE(mout,'(a,f12.5)') 'True/Drive = ', VoluSum/DrivSum + END !! MCellA_BufActPrint + + + + SUBROUTINE MCellA_PltBegin(ltx) !# Miscelaneous and debug +*////////////////////////////////////////////////////////////////////////////////////// +*// DEBUG // +*// Initialization, write header of TeX file // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER ltx +*--------------------------------------------------- + m_ltx = ABS(ltx) + IF(ltx .GT. 0 ) THEN + WRITE(m_ltx,'(2A)') '\\newpage' + ELSE +*------------------------------! +* Header +*------------------------------! + WRITE(m_ltx,'(A)') '\\documentclass[12pt]{article}' + WRITE(m_ltx,'(A)') '\\usepackage{color}' !<-for colors!!! + WRITE(m_ltx,'(A)') '\\usepackage{epic}' !<-for extended ploting + WRITE(m_ltx,'(A)') '\\textwidth = 16cm' + WRITE(m_ltx,'(A)') '\\textheight = 18cm' + WRITE(m_ltx,'(A)') '\\pagestyle{empty}' + WRITE(m_ltx,'(A)') '\\begin{document}' + WRITE(m_ltx,'(A)') ' ' + WRITE(m_ltx,'(A)') '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%' ! + WRITE(m_ltx,'(A)') '\\begin{figure}[!ht]' + WRITE(m_ltx,'(A)') '\\centering' +*------------------------------! +* Frames and labels +*------------------------------! + WRITE(m_ltx,'(A)') '% =========== big frame, title etc. =======' + WRITE(m_ltx,'(A)') '\\setlength{\\unitlength}{0.1mm}' + WRITE(m_ltx,'(A)') '\\begin{picture}(1600,1600)' + WRITE(m_ltx,'(A)') '\\put(0,0){\\framebox(1600,1600){ }}' + ENDIF + END + + SUBROUTINE MCellA_PltCell !# Miscelaneous and debug +*////////////////////////////////////////////////////////////////////////////////////// +*// DEBUG // +*// Plot all simplectic cells // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' + INTEGER iCell,active,j + INTEGER iV1,iV2,iV3 + INTEGER kx1,ky1,kx2,ky2,kx3,ky3,kx,ky,lx,ly + DOUBLE PRECISION Posi(m_KdiMax),Size(m_KdiMax) +*--------------------------------------------------------------------------------------------- +* Rectangular 2-dim FOAM +*--------------------------------------------------------------------------------------------- + IF(m_kDim.EQ.2) THEN + WRITE(m_ltx,'(A)') '% =========== Vertices Vertices ===========' + WRITE(m_ltx,'(A)') '\\put(0,0){\\begin{picture}( 1600,1600)' ! + DO iCell = 2, m_LastCe + IF(m_CeStat(iCell).EQ.1) THEN ! Only active cells + CALL MCellA_GetHcube(iCell,Posi,Size) + kx = Posi(1)*1600 + ky = Posi(2)*1600 + lx = Size(1)*1600 + ly = Size(2)*1600 + kx1 = kx+lx/2 + ky1 = ky+ly/2 +* cell rectangle + WRITE(m_ltx,'(A,I5,A,I5,A,I5,A,I5,A)') + $ '\\put(',kx,',',ky,'){\\color{black}\\framebox(',lx,',',ly,'){ }}' ! +*** WRITE(m_ltx,'(A,I5,A,I5,A,I5,A,I5,A)') +*** $ '\\put(',kx,',',ky,'){\\color{black}\\dashbox{7}(',lx,',',ly,'){ }}' ! +* cell number + IF(m_LastCe.LE.250) WRITE(m_ltx,'(A,I4,A,I4,A,I4,A)') + $ '\\put(',kx1,',',ky1,'){\\makebox(0,0)[b]{\\hbox{\\small\\color{magenta}\\scriptsize ',iCell,' }}}' ! + ENDIF + ENDDO +* Close frame + WRITE(m_ltx,'(A)') '\\end{picture}}' + WRITE(m_ltx,'(A)') '% ============== End Vertices ===========' + ENDIF + END !! MCellA_BufPrint + + SUBROUTINE MCellA_PltMisc !# Miscelaneous and debug +*////////////////////////////////////////////////////////////////////////////////////// +*// Miscelaneous // +*// Plot of frame for 2-dim void testing function // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' +* + WRITE(m_ltx,'(A)') '\\put(80,80){\\color{blue}\\dashbox{7}( 1440,1440){ }}' ! 5% edge band + END !! MCellA_PltMisc + + SUBROUTINE MCellA_PltEnd !# Miscelaneous and debug +*////////////////////////////////////////////////////////////////////////////////////// +*// DEBUG // +*// Close Tex file with plot // +*////////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'MCellA.h' +* + WRITE(m_ltx,'(A)') '\\end{picture}' + WRITE(m_ltx,'(A)') '\\end{figure}' + WRITE(m_ltx,'(A)') '\\end{document}' + CLOSE(m_ltx) + END + +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// diff --git a/Foam/MCellA.h b/Foam/MCellA.h new file mode 100644 index 0000000..3df3449 --- /dev/null +++ b/Foam/MCellA.h @@ -0,0 +1,80 @@ +*/////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Pseudoclass MCellA // +*// MCell Mega Cell MC saampler // +*// // +*// To get Mega cells (re)define m_nBufMax below // +*// // +*/////////////////////////////////////////////////////////////////////////////////////// +* + INTEGER m_nBinMax + PARAMETER (m_nBinMax=256) +* + INTEGER m_nBufMax + PARAMETER ( m_nBufMax = 100000 ) ! maximum buffer length for all cells (100k=8MB) + INTEGER m_KdiMax + PARAMETER ( m_KdiMax = 20 ) ! maximum dimension for hypercubics + INTEGER m_DimMax + PARAMETER ( m_DimMax = m_KdiMax ) ! maximum total dimension + INTEGER m_cMax + PARAMETER ( m_cMax = m_nBufMax/2+1 ) ! maximum number of (active) Cells +* + INTEGER m_CeStat, m_CePare, m_CeDau1, m_CeDau2, m_CeSamp, m_CeVert ! + DOUBLE PRECISION m_CeIntg, m_CeDriv, m_CePrim, m_CePrCu ! + INTEGER m_CeDivi + INTEGER m_LastCe, m_LastAc, m_nBuf, m_nBin, m_ActC ! + INTEGER m_Kdim, m_Dimen + INTEGER m_Chat, m_Out, m_nSampl, m_Ncalls ! + INTEGER m_OptPeek, m_OptDrive, m_OptEdge, m_EvPerBin, m_OptRanIni, m_OptRanLux! + DOUBLE PRECISION m_VolTot ! + DOUBLE PRECISION m_Drive, m_SumWt, m_SumWt2, m_NevGen, m_WtMax, m_WtMin ! + DOUBLE PRECISION m_MCresult, m_MCerror, m_MCwt, m_MCvector ! + INTEGER m_Ltx, m_MagicInit +* + COMMON /c_MCellA/ + $ m_CeStat(m_nBufMax), ! Cell member: (4B) status=0 inactive, =1 active + $ m_CePare(m_nBufMax), ! Cell member: (4B) parent cell pointer + $ m_CeDau1(m_nBufMax), ! Cell member: (4B) daughter1 cell pointer + $ m_CeDau2(m_nBufMax), ! Cell member: (4B) daughter2 cell pointer + $ m_CeSamp(m_nBufMax), ! Cell member: (4B) No of MC events in exploration + $ m_CeDivi(m_nBufMax), ! Cell member: (4B) Division ratio and edge + $ m_CeIntg(m_nBufMax), ! Cell member: (8B) integral estimator + $ m_CeDriv(m_nBufMax), ! Cell member: (8B) Drive integral estimate, for build-up + $ m_CePrim(m_nBufMax), ! Cell member: (8B) Primary integral estimate, MC generation + $ m_CePrCu(0:m_cMax), ! Active Cell member: (8B) Cumulative Primary + $ m_ActC( m_cMax), ! Active Cell member: (8B) List of all pointers to ACTIVE cells +* Actually 56B/Cell, 100k Cells = 5.6MB, factor 2 compression still possible. + $ m_VolTot, ! Estimate of Volume total, without error + $ m_Drive, ! M.C. generation Drive value of integral + $ m_SumWt, ! M.C. generation sum of Wt + $ m_SumWt2, ! M.C. generation sum of Wt**2 + $ m_NevGen, ! M.C. generation sum of 1d0 + $ m_WtMax, ! M.C. generation maximum wt + $ m_WtMin, ! M.C. generation minimum wt + $ m_MCresult, ! M.C. generation Final value of INTEGRAL + $ m_MCerror, ! M.C. generation Final walue of ERROR + $ m_MCwt, ! M.C. generation current event weight + $ m_MCvector(m_DimMax),! M.C. generated vector, + $ m_Kdim, ! dimension of the hypercubics + $ m_Dimen, ! total dimension of the problem =m_Kdim + $ m_nBuf, ! Actual dynamic lenth of the buffer m_nBuf<m_nBufMax + $ m_nBin, ! Actual dynamic lenth of the buffer m_nBuf<m_nBufMax + $ m_LastAc, ! Last active cell + $ m_LastCe, ! Last cell in buffer + $ m_nSampl, ! No. of sampling when dividing cell + $ m_Ncalls, ! No. of function calls, total + $ m_OptPeek, ! Flag for random ceel choice: Peek =0,1 for maximum, + $ m_OptDrive, ! Flag for type of Drive =0,1,2 for TrueVol,Sigma,WtMax + $ m_OptEdge, ! Flag which decides whether vertices are included in the sampling + $ m_EvPerBin, ! Max eff. MC events/bin, (saving CPU) inactive if =0 + $ m_OptRanIni, ! Flag default, =1 r.n. generator not initialized in MCellA + $ m_OptRanLux, ! Flag =-1,0,1,2,3,4 r.n. generator level + $ m_Chat, ! Flag for chat level in output, Chat=1 normal level + $ m_Ltx, ! Latex Output unit, for debug + $ m_Out, ! Output unit + $ m_MagicInit ! Magic cookie of initialization (global variable) +* + SAVE /c_MCellA/ +*////////////////////////////////////////////////////////////////////////////////////// +*// // +*////////////////////////////////////////////////////////////////////////////////////// diff --git a/Foam/Makefile b/Foam/Makefile new file mode 100644 index 0000000..9e06fa5 --- /dev/null +++ b/Foam/Makefile @@ -0,0 +1,76 @@ +############################################################################## +# make DemoFoam +# make DemoMCell +# make -f Makefile DemoFoam +# make -f Makefile DemoMCell +# make -f Makefile map-eps +############################################################################## +all: DemoFoam +############################################################################## +.SUFFIXES: .eps .dvi .tex .txi .html .bib .blg .bbl .aux .txp +#--------------------------------------------------------------------------- +XPS = gv -geometry +0+10 -bg white -fg black -magstep 0 +XPS4 = gv -bg white -fg black -magstep -4 +#--------------------------------------------------------------------------- +########### Linux flags: +FFLAGS = -fno-automatic -ffixed-line-length-132 -fbackslash -C +########### HP flags: +### +es for 100 or more columns, +B for backslash in strings, +K for global SAVE +#FFLAGS = -K +es +B -O +########### IBM/AIX flags: +# fixed=132 for 132 columns, +# qextname for C-style external names with underscore at the end of external name +#FFLAGS = -qfixed=132 -qextname -O -C -qextchk +#FFLAGS = -qfixed=132 -qextname -g -C -qextchk -qinitauto=FF -qflttrap=overflow:underflow:zerodivide:invalid:enable +########### DEC/ALPHA flags: +#FFLAGS = -extend_source -qfixed=120 -qextname -O -C -qextchk +#--------------------------------------------------------------------------- +#FFLAGS = -qfixed=132 -qextname -g -C -qextchk -qflttrap=overflow:zerodivide:invalid:enable -qsigtrap +#LDFLAGS = -bloadmap:LinkMap +F77 = gfortran +LD = $(F77) +LDFLAGS = +############################################################################## +.f.o: + $(F77) $(FFLAGS) -c $< +############# postscript translation (one page) +.txp.dvi: + (latex $< ) +############# option E is for tight bounding on one +.dvi.eps: + (dvips -E $< -o $@; $(XPS4) $@ ) +### (dvips -E $< -o ) +############################################################################## +SRCLIST= " " +############################################################################## +FoamA.o: FoamA.h +MCellA.o: MCellA.h +PseuMar.o: PseuMar.h +GLK.o: GLK.h +############################################################################## +COMMAND3 = DemoFoam.exe +OBJECTS3 = DemoFoam.o FoamA.o PseuMar.o GLK.o ranlux.o WtLimit.o +$(COMMAND3): $(OBJECTS3) + $(LD) -o $@ $(LDFLAGS) $(OBJECTS3) +######### +DemoFoam: $(COMMAND3) + (time ./$(COMMAND3); diff output-DemoFoam-linux output-DemoFoam | more ) +############################# +DemoFoamMap: DemoFoam + (latex demo-cell-map.txp; dvips -E demo-cell-map.dvi -o demo-cell-map.eps; $(XPS) demo-cell-map.eps&) +############################################################################## +############################################################################## +COMMAND5 = DemoMCell.exe +OBJECTS5 = DemoMCell.o MCellA.o PseuMar.o GLK.o ranlux.o WtLimit.o +$(COMMAND5): $(OBJECTS5) + $(LD) -o $@ $(LDFLAGS) $(OBJECTS5) +######### +DemoMCell: $(COMMAND5) + (time ./$(COMMAND5); diff output-DemoMCell-linux output-DemoMCell | more ) +############################# +DemoMCellMap: DemoMCell + (latex demo-cell-map.txp; dvips -E demo-cell-map.dvi -o demo-cell-map.eps; $(XPS) demo-cell-map.eps&) +############################################################################## +line_count: + (cat *.f *.h | wc -l ) +############################################################################## diff --git a/Foam/PseuMar.f b/Foam/PseuMar.f new file mode 100644 index 0000000..d2b96c1 --- /dev/null +++ b/Foam/PseuMar.f @@ -0,0 +1,173 @@ +*///////////////////////////////////////////////////////////////////////////// +*// // +*// Actual version rewritten by S. Jadach, Nov 1997. // +*// // +*// Universal random number generator proposed by MARSAGLIA and ZAMAN // +*// in report FSU-SCRI-87-50 // +*// modified by F. James, 1988 and 1989, to generate a vector // +*// of pseudorandom numbers rvec of length lenv, and to put in // +*// the COMMON block everything needed to specify currrent state, // +*// and to add input and output entry points rmarin, rmarut. // +*// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // +*// ++ CALLing sequences for ranmar: ++ // +*// ++ CALL ranmar (rvec, len) returns a vector rvec of len ++ // +*// ++ 32-bit random floating point numbers between ++ // +*// ++ zero and one. ++ // +*// ++ CALL rmarin(i1,n1,n2) initializes the generator from one ++ // +*// ++ 32-bit integer i1, and number counts n1,n2 ++ // +*// ++ (for initializing, set n1=n2=0, but to restart ++ // +*// ++ a previously generated sequence, use values ++ // +*// ++ output by rmarut) ++ // +*// ++ CALL rmarut(i1,n1,n2) outputs the value of the original ++ // +*// ++ seed and the two number counts, to be used ++ // +*// ++ for restarting by initializing to i1 and ++ // +*// ++ skipping n2*100000000+n1 numbers. ++ // +*// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // +*// // +*// Initializing routine for ranmar, may be called before // +*// generating pseudorandom numbers with ranmar. the input // +*// values should be in the ranges: 0<=ijklin<=900 000 000 // +*// 0<=ntotin<=999 999 999 // +*// 0<=ntot2n<<999 999 999! // +*// to get the standard values in MARSAGLIA's paper, ijklin=54217137 // +*// ntotin,ntot2n=0 // +*// // +*///////////////////////////////////////////////////////////////////////////// + + + SUBROUTINE PseuMar_Initialize(ijkl_new, ntot_new,ntot2_new) +*///////////////////////////////////////////////////////////////////////////// +*// // +*///////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'PseuMar.h' + INTEGER ijkl_new, ntot_new, ntot2_new +* + REAL t,uni,s + INTEGER m,i24,jj,idum,loop2,now + INTEGER i,j,ij,k,l,ii,kl + + m_iwarm = 9000009 ! special mark on initialization + + m_ijkl = ijkl_new + m_ntot = max(ntot_new,0) + m_ntot2= max(ntot2_new,0) + + ij = m_ijkl/30082 + kl = m_ijkl - 30082*ij + i = MOD(ij/177, 177) + 2 + j = MOD(ij, 177) + 2 + k = MOD(kl/169, 178) + 1 + l = MOD(kl, 169) + WRITE(6,'(a,5i10)') + $ 'ranmar initialized: ij,kl,ijkl,ntot,ntot2=', + $ ij,kl,m_ijkl,m_ntot,m_ntot2 + DO ii= 1, 97 + s = 0. + t = .5 + DO jj= 1, 24 + m = MOD(MOD(i*j,179)*k, 179) + i = j + j = k + k = m + l = MOD(53*l+1, 169) + IF (MOD(l*m,64) .GE. 32) s = s+t + t = 0.5*t + ENDDO + m_U(ii) = s + ENDDO + m_twom24 = 1.0 + DO i24= 1, 24 + m_twom24 = 0.5*m_twom24 + ENDDO + m_C = 362436.*m_twom24 + m_CD = 7654321.*m_twom24 + m_CM = 16777213.*m_twom24 + m_i97 = 97 + m_j97 = 33 +* complete initialization by skipping +* (ntot2*modcns + ntot) random numbers + DO loop2= 1, m_ntot2+1 + now = modcns + IF (loop2 .EQ. m_ntot2+1) now=m_ntot + IF (now .GT. 0) THEN + WRITE(6,'(a,i15)') ' rmarin skipping over ',now + DO idum = 1, m_ntot + uni = m_U(m_i97)-m_U(m_j97) + IF (uni .LT. 0.) uni=uni+1. + m_U(m_i97) = uni + m_i97 = m_i97-1 + IF (m_i97 .EQ. 0) m_i97=97 + m_j97 = m_j97-1 + IF (m_j97 .EQ. 0) m_j97=97 + m_C = m_C - m_CD + IF (m_C .LT. 0.) m_C=m_C+m_CM + ENDDO + ENDIF + ENDDO + END + + + SUBROUTINE PseuMar_MakeVec(rvec,lenv) +*///////////////////////////////////////////////////////////////////////////// +*// // +*///////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'PseuMar.h' +* + REAL rvec(*) + INTEGER lenv + INTEGER ijkl_new, ntot_new,ntot2_new + REAL zuni,uni + INTEGER ivec +*------------------------------------------------------------------------- + IF (m_iwarm .NE. 9000009) THEN +* Default initialization. User has called ranmar without rmarin. + ijkl_new = 54217137 + ntot_new = 0 + ntot2_new = 0 + CALL PseuMar_Initialize(ijkl_new, ntot_new,ntot2_new) + ENDIF + +* Normal entry to generate lenv random numbers + DO ivec= 1, lenv + uni = m_U(m_i97)-m_U(m_j97) + IF (uni .LT. 0.) uni=uni+1. + m_U(m_i97) = uni + m_i97 = m_i97-1 + IF (m_i97 .EQ. 0) m_i97=97 + m_j97 = m_j97-1 + IF (m_j97 .EQ. 0) m_j97=97 + m_C = m_C - m_CD + IF (m_C .LT. 0.) m_C=m_C+m_CM + uni = uni-m_C + IF (uni .LT. 0.) uni=uni+1. + rvec(ivec) = uni +* Replace exact zeros by uniform distr. *2**-24 + IF (uni .EQ. 0.) THEN + zuni = m_twom24*m_U(2) +* an exact zero here is very unlikely, but let's be safe. + IF (zuni .EQ. 0.) zuni= m_twom24*m_twom24 + rvec(ivec) = zuni + ENDIF + ENDDO + m_ntot = m_ntot + lenv + IF (m_ntot .GE. modcns) THEN + m_ntot2 = m_ntot2 + 1 + m_ntot = m_ntot - modcns + ENDIF + END + + + SUBROUTINE PseuMar_Out(ijkl_out, ntot_out, ntot2_out) +*///////////////////////////////////////////////////////////////////////////// +*// // +*///////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INCLUDE 'PseuMar.h' + INTEGER ijkl_out, ntot_out, ntot2_out +* + ijkl_out = m_ijkl + ntot_out = m_ntot + ntot2_out = m_ntot2 + END diff --git a/Foam/PseuMar.h b/Foam/PseuMar.h new file mode 100644 index 0000000..9026be5 --- /dev/null +++ b/Foam/PseuMar.h @@ -0,0 +1,32 @@ +*///////////////////////////////////////////////////////////////////////////// +*// // +*// // +*// Universal random number generator proposed by MARSAGLIA and ZAMAN // +*// in report FSU-SCRI-87-50 // +*// // +*// // +*///////////////////////////////////////////////////////////////////////////// + + INTEGER modcns + PARAMETER (modcns = 1000000000) + + REAL m_U, m_C, m_CD, m_CM, m_twom24 + INTEGER m_i97, m_j97, m_ntot, m_ijkl, m_ntot2, m_iwarm + + COMMON /c_PseuMar/ + $ m_U(97), + $ m_C, + $ m_CD, + $ m_CM, + $ m_i97, + $ m_j97, + $ m_twom24, + $ m_ijkl, + $ m_ntot, + $ m_ntot2, + $ m_iwarm + +*///////////////////////////////////////////////////////////////////////////// +*// // +*// // +*///////////////////////////////////////////////////////////////////////////// diff --git a/Foam/README b/Foam/README new file mode 100644 index 0000000..0c8c0a8 --- /dev/null +++ b/Foam/README @@ -0,0 +1,37 @@ +*/////////////////////////////////////////////////////////////////////////////////////////// +*// // +*// Foam Version 2.02 // +*// May 2001 // +*// // +*// N-dimensional general purpose Monte Carlo sampler // +*// with the self-adapting simplical and hyper-cubical grid // +*// // +*// Author: Stanislaw JADACH // +*// Address: INP Cracow // +*// Email: Stanislaw.Jadach@cern.ch, Stanislaw.Jadach@ifj.edu.pl // +*// HomePage: http://home.cern.ch/jadach/ // +*// // +*// First version 1.00 written by S.J. in May 1999 during visit in DESY-Hamburg // +*// version 2.00 written by S.J. in Aug 2000 during visit in DESY-Zeuthen // +*/////////////////////////////////////////////////////////////////////////////////////////// + +Commands to run test programs are listed in Makefile. +# make DemoFoam +# make DemoMCell + +Fortran flags for various platforms are listed in Makefile. + +The basic programs are: + FoamA.f with header file FoamA.h + MCellA.f with header file MCellA.h + +For the description of the input (configuration) parameters see comments +in FoamA.f and MCellA.f respectively. + +Demonstration main programs DemoFoam.f and DemoMCell.f can serve as templates +for the user application programs + +The testing main program uses histograming package GLK of the KK Monte Carlo, +which user may replace with any other histograming package. + +Note that C++ version of Foam is now available. \ No newline at end of file diff --git a/Foam/WtLimit.f b/Foam/WtLimit.f new file mode 100644 index 0000000..3af6f98 --- /dev/null +++ b/Foam/WtLimit.f @@ -0,0 +1,135 @@ + + SUBROUTINE WtLimitFind(mmout,eeps,Effic) +*////////////////////////////////////////////////////////////////////////////////// +*// Calculates wtmax for which overflow integral is below epsilon +*// The precision of the result is limited by beam size and statistics +*// Initialization +*// CALL WtLimitStart(id1,id2,nchx,xu) +*// id1,id2 = histogram idents +*// nchx,xu = histogram bin number and upper limit +*// For each eevent +*// CALL WtLimitFill(Wt) +*// Wt = weight under scrutinity +*// Fianalization +*// CALL WtLimitFind(mout,eps,Effic) +*// mout = output unit number (disk) +*// eps = epsilon in the definition of WtMax +*// Effic= Efficiency=<wt>/WtMax +*// Extra getters: +*// CALL WtLimitGetAveWt(AveWt) +*// CALL WtLimitGetWtMax(WtMax) +*// Remember to call WtLimitFind before!!! +*////////////////////////////////////////////////////////////////////////////////// + IMPLICIT NONE + INTEGER id1,id2,iid1,iid2,nchx,nnchx + DOUBLE PRECISION Wt1,eeps,eps,Effic + INTEGER mmout,mout + DOUBLE PRECISION xl,xu,xxu + DOUBLE PRECISION Bin, Bin1, LowEdge + DOUBLE PRECISION AAveWt,AveWt,WtMax + INTEGER ib,ibX + DOUBLE PRECISION GLK_hi + DOUBLE PRECISION sum,sumWt,WtLimit,AveWt1 + LOGICAL GLK_Exist + INTEGER init + SAVE + DATA init/0/ +* ------------------------------------------ + mout=mmout + IF(init.EQ.0) THEN + WRITE( *,*) 'WtLimitFind: WARNING!!! lack of initialization' ! + WRITE(mout,*) 'WtLimitFind: WARNING!!! lack of initialization' ! + RETURN + ENDIF +*** CALL GLK_Print(id1 ) +*** CALL GLK_Print(id2 ) + eps=eeps + sum = 0d0 + sumWt = 0d0 + DO ib=0,nchx+1 + Bin = GLK_hi(id1,ib) + Bin1 = GLK_hi(id2,ib) + sum = sum +Bin + sumWt = sumWt +Bin1 + ENDDO + IF(sum.EQ.0d0 .OR. sumWt.EQ.0d0) THEN + WRITE( *,*) 'WtLimitFind: zero content of histogram !!!',sum,sumWt ! + WRITE(mout,*) 'WtLimitFind: zero content of histogram !!!',sum,sumWt ! + RETURN + ENDIF + AveWt = sumWt/sum + DO ibX=nchx+1,1,-1 + LowEdge =xl+(ibX-1d0)*(xu-xl)/nchx + sum = 0d0 + sumWt = 0d0 + DO ib=0,nchx+1 + Bin = GLK_hi(id1,ib) + Bin1 = GLK_hi(id2,ib) + IF(ib.GE.ibX) Bin1=LowEdge*Bin + sum = sum +Bin + sumWt = sumWt +Bin1 + ENDDO + AveWt1 = sumWt/sum + IF( ABS(1d0-AveWt1/AveWt) .GT. eps ) GOTO 100 + ENDDO + 100 CONTINUE + IF(ibX.EQ.nchx+1) THEN + WtLimit=1d200 + Effic=0d0 + WRITE( *,*) '+++++ WtLimit undefined. Higher uper limit in histogram' ! + WRITE(mout,*) '+++++ WtLimit undefined. Higher uper limit in histogram' ! + ELSEIF(ibX.EQ.1) THEN + WtLimit=0d0 + Effic=-1d0 + WRITE( *,*) '+++++ WtLimit undefined. Lower uper limit or more bins' ! + WRITE(mout,*) '+++++ WtLimit undefined. Lower uper limit or more bins' ! + ELSE + WtLimit=xl+(ibX)*(xu-xl)/nchx ! We over-estimate WtLimit, under-estimate Effic + Effic=AveWt/WtLimit + ENDIF + WRITE( *,*) '00000000000000000000000000000000000000000000000000000000000000000000000' ! + WRITE( *,*) '00-->WtLimit: No_evt., <Wt>, WtLimit= ',sum,AveWt,WtLimit ! + WRITE( *,*) '00-->WtLimit: EFFICIENCY <Wt>/WtLimit= ',Effic ! + WRITE( *,*) '00000000000000000000000000000000000000000000000000000000000000000000000' ! + WRITE(mout,*) '-----------------------------------------------------------------------' ! + WRITE(mout,*) '-->FindWtLimit: content, <Wt>, WtLimit= ',sum,AveWt,WtLimit ! + WRITE(mout,*) '-->FindWtLimit: EFFICIENCY <Wt>/WtLimit= ',Effic ! +*---------------------------------------------------- + RETURN +*---------------------------------------------------- + ENTRY WtLimitFill(Wt1) + IF(init.EQ.0) THEN + WRITE(*,*) 'WtLimitFill: STOP, lack of initialization' ! + STOP + ENDIF + CALL GLK_Fil1(id1, Wt1, 1d0) + CALL GLK_Fil1(id2, Wt1, Wt1) + RETURN +*---------------------------------------------------- + ENTRY WtLimitStart(iid1,iid2,nnchx,xxu) + init=init+1 + id1=iid1 + id2=iid2 + nchx=nnchx + xl=0d0 + xu=xxu + IF( GLK_Exist(id1) ) THEN + WRITE(*,*) '------ WtLimitStart: WARNING!!!! deleting id1=', id1! + CALL GLK_Delet(id1) + ENDIF + IF( GLK_Exist(id2) ) THEN + WRITE(*,*) '------ WtLimitStart: WARNING!!!! deleting id2=', id2! + CALL GLK_Delet(id2) + ENDIF + CALL GLK_Book1(iid1,'MC weight $',nchx, xl,xu) + CALL GLK_Book1(iid2,'MC weight $',nchx, xl,xu) + RETURN +*---------------------------------------------------- + ENTRY WtLimitGetAveWt(AAveWt) + AAveWt=AveWt + RETURN +*---------------------------------------------------- + ENTRY WtLimitGetWtMax(WtMax) + WtMax=WtLimit + RETURN + END !!!WtLimitFind diff --git a/Foam/demo-cell-map.txp b/Foam/demo-cell-map.txp new file mode 100644 index 0000000..ecce296 --- /dev/null +++ b/Foam/demo-cell-map.txp @@ -0,0 +1,484 @@ +\documentclass[12pt]{article} +\usepackage{color} +\usepackage{epic} +\textwidth = 16cm +\textheight = 18cm +\pagestyle{empty} +\begin{document} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure}[!ht] +\centering +% =========== big frame, title etc. ======= +\setlength{\unitlength}{0.1mm} +\begin{picture}(1600,1600) +\put(0,0){\framebox(1600,1600){ }} +% =========== Vertices Vertices =========== +\put(0,0){\begin{picture}( 1600,1600) +\put(0,0){\framebox( 1600,1600){ }} +\newcommand{\VD}[2]{\put(#1,#2){\circle*{20} }} +\newcommand{\VS}[2]{\put(#1,#2){\makebox(0,0){\Large $\star$} }} +\newcommand{\VN}[3]{\put(#1,#2){\makebox(0,0)[b]{\hbox{\color{red}\scriptsize #3}}}} +\VS{ 0}{ 0} +\VN{ -8}{ 12}{ 1} +\VS{ 1600}{ 0} +\VN{ 1592}{ 12}{ 2} +\VS{ 0}{ 1600} +\VN{ -8}{ 1612}{ 3} +\VD{ 1600}{ 1600} +\VN{ 1592}{ 1612}{ 4} +\VS{ 1000}{ 1000} +\VN{ 992}{ 1012}{ 5} +\VS{ 1000}{ 1000} +\VN{ 992}{ 1012}{ 6} +\VS{ 250}{ 250} +\VN{ 242}{ 262}{ 7} +\VS{ 875}{ 875} +\VN{ 867}{ 887}{ 8} +\VS{ 0}{ 1000} +\VN{ -8}{ 1012}{ 9} +\VS{ 1093}{ 93} +\VN{ 1085}{ 105}{ 10} +\VS{ 218}{ 218} +\VN{ 210}{ 230}{ 11} +\VS{ 671}{ 171} +\VN{ 663}{ 183}{ 12} +\VS{ 792}{ 792} +\VN{ 784}{ 804}{ 13} +\VS{ 546}{ 1146} +\VN{ 538}{ 1158}{ 14} +\VS{ 99}{ 974} +\VN{ 91}{ 986}{ 15} +\VS{ 812}{ 812} +\VN{ 804}{ 824}{ 16} +\VS{ 925}{ 125} +\VN{ 917}{ 137}{ 17} +\VS{ 935}{ 123} +\VN{ 927}{ 135}{ 18} +\VS{ 0}{ 1300} +\VN{ -8}{ 1312}{ 19} +\VS{ 707}{ 332} +\VN{ 699}{ 344}{ 20} +\VS{ 0}{ 375} +\VN{ -8}{ 387}{ 21} +\VD{ 1225}{ 1225} +\VN{ 1217}{ 1237}{ 22} +\VS{ 410}{ 1260} +\VN{ 402}{ 1272}{ 23} +\VS{ 967}{ 561} +\VN{ 959}{ 573}{ 24} +\VS{ 953}{ 953} +\VN{ 945}{ 965}{ 25} +\VS{ 410}{ 1110} +\VN{ 402}{ 1122}{ 26} +\VS{ 671}{ 171} +\VN{ 663}{ 183}{ 27} +\VS{ 600}{ 0} +\VN{ 592}{ 12}{ 28} +\VS{ 341}{ 1204} +\VN{ 333}{ 1216}{ 29} +\VD{ 765}{ 890} +\VN{ 757}{ 902}{ 30} +\VS{ 1046}{ 546} +\VN{ 1038}{ 558}{ 31} +\VD{ 191}{ 316} +\VN{ 183}{ 328}{ 32} +\VS{ 156}{ 156} +\VN{ 148}{ 168}{ 33} +\VD{ 95}{ 986} +\VN{ 87}{ 998}{ 34} +\VS{ 876}{ 689} +\VN{ 868}{ 701}{ 35} +\VD{ 23}{ 914} +\VN{ 15}{ 926}{ 36} +\VS{ 876}{ 689} +\VN{ 868}{ 701}{ 37} +\VS{ 328}{ 1328} +\VN{ 320}{ 1340}{ 38} +\VD{ 1056}{ 1056} +\VN{ 1048}{ 1068}{ 39} +\VS{ 893}{ 464} +\VN{ 885}{ 476}{ 40} +\VS{ 947}{ 287} +\VN{ 939}{ 299}{ 41} +\VS{ 0}{ 1150} +\VN{ -8}{ 1162}{ 42} +\VD{ 1150}{ 750} +\VN{ 1142}{ 762}{ 43} +\VS{ 765}{ 890} +\VN{ 757}{ 902}{ 44} +\VD{ 958}{ 958} +\VN{ 950}{ 970}{ 45} +\VS{ 164}{ 164} +\VN{ 156}{ 176}{ 46} +\VD{ 566}{ 191} +\VN{ 558}{ 203}{ 47} +\VD{ 99}{ 974} +\VN{ 91}{ 986}{ 48} +\VD{ 54}{ 804} +\VN{ 46}{ 816}{ 49} +\VD{ 503}{ 128} +\VN{ 495}{ 140}{ 50} +\VD{ 256}{ 1153} +\VN{ 248}{ 1165}{ 51} +\VD{ 959}{ 451} +\VN{ 951}{ 463}{ 52} +\VD{ 1150}{ 1150} +\VN{ 1142}{ 1162}{ 53} +\VS{ 706}{ 815} +\VN{ 698}{ 827}{ 54} +\VD{ 689}{ 251} +\VN{ 681}{ 263}{ 55} +\VD{ 299}{ 1216} +\VN{ 291}{ 1228}{ 56} +\VD{ 479}{ 1279} +\VN{ 471}{ 1291}{ 57} +\VD{ 693}{ 93} +\VN{ 685}{ 105}{ 58} +\VS{ 114}{ 879} +\VN{ 106}{ 891}{ 59} +\VD{ 693}{ 93} +\VN{ 685}{ 105}{ 60} +\VD{ 0}{ 140} +\VN{ -8}{ 152}{ 61} +\VD{ 476}{ 1276} +\VN{ 468}{ 1288}{ 62} +\VD{ 697}{ 236} +\VN{ 689}{ 248}{ 63} +\VD{ 640}{ 1140} +\VN{ 632}{ 1152}{ 64} +\VD{ 737}{ 159} +\VN{ 729}{ 171}{ 65} +\VD{ 188}{ 48} +\VN{ 180}{ 60}{ 66} +\VD{ 645}{ 741} +\VN{ 637}{ 753}{ 67} +\VD{ 191}{ 191} +\VN{ 183}{ 203}{ 68} +\VD{ 246}{ 845} +\VN{ 238}{ 857}{ 69} +\VD{ 957}{ 424} +\VN{ 949}{ 436}{ 70} +\VD{ 273}{ 1223} +\VN{ 265}{ 1235}{ 71} +\VD{ 1003}{ 499} +\VN{ 995}{ 511}{ 72} +\VD{ 682}{ 82} +\VN{ 674}{ 94}{ 73} +\VD{ 307}{ 1345} +\VN{ 299}{ 1357}{ 74} +\VD{ 882}{ 882} +\VN{ 874}{ 894}{ 75} +\VD{ 328}{ 1151} +\VN{ 320}{ 1163}{ 76} +\VD{ 224}{ 1237} +\VN{ 216}{ 1249}{ 77} +\end{picture}} +% ============== End Vertices =========== +% =========== Vertices Vertices =========== +\put(0,0){\begin{picture}( 1600,1600) +\drawline( 250, 250)( 707, 332) +\drawline( 707, 332)( 812, 812) +\drawline( 812, 812)( 250, 250) +\put( 589, 464){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 34 }}} +\drawline(1225,1225)( 0,1600) +\drawline( 0,1600)(1600,1600) +\drawline(1600,1600)(1225,1225) +\put( 941,1475){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 38 }}} +\drawline( 410,1110)( 546,1146) +\drawline( 546,1146)( 875, 875) +\drawline( 875, 875)( 410,1110) +\put( 610,1043){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 46 }}} +\drawline( 600, 0)(1600, 0) +\drawline(1600, 0)( 925, 125) +\drawline( 925, 125)( 600, 0) +\put(1041, 41){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 50 }}} +\drawline( 765, 890)( 410,1110) +\drawline( 410,1110)( 875, 875) +\drawline( 875, 875)( 765, 890) +\put( 683, 958){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 54 }}} +\drawline( 935, 123)(1093, 93) +\drawline(1093, 93)(1046, 546) +\drawline(1046, 546)( 935, 123) +\put(1024, 254){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 57 }}} +\drawline( 0, 375)( 191, 316) +\drawline( 191, 316)( 218, 218) +\drawline( 218, 218)( 0, 375) +\put( 136, 303){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 58 }}} +\drawline( 95, 986)( 410,1110) +\drawline( 410,1110)( 765, 890) +\drawline( 765, 890)( 95, 986) +\put( 423, 995){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 62 }}} +\drawline( 0,1000)( 410,1110) +\drawline( 410,1110)( 95, 986) +\drawline( 95, 986)( 0,1000) +\put( 168,1032){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 63 }}} +\drawline( 0, 375)( 23, 914) +\drawline( 23, 914)( 191, 316) +\drawline( 191, 316)( 0, 375) +\put( 71, 535){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 66 }}} +\drawline( 0, 375)( 0,1000) +\drawline( 0,1000)( 23, 914) +\drawline( 23, 914)( 0, 375) +\put( 7, 763){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 67 }}} +\drawline( 876, 689)( 967, 561) +\drawline( 967, 561)(1000,1000) +\drawline(1000,1000)( 876, 689) +\put( 947, 750){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 68 }}} +\drawline(1056,1056)( 0,1600) +\drawline( 0,1600)(1225,1225) +\drawline(1225,1225)(1056,1056) +\put( 760,1293){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 72 }}} +\drawline(1000,1000)( 0,1600) +\drawline( 0,1600)(1056,1056) +\drawline(1056,1056)(1000,1000) +\put( 685,1218){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 73 }}} +\drawline( 893, 464)( 967, 561) +\drawline( 967, 561)( 876, 689) +\drawline( 876, 689)( 893, 464) +\put( 912, 571){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 74 }}} +\drawline( 0,1000)( 0,1150) +\drawline( 0,1150)( 341,1204) +\drawline( 341,1204)( 0,1000) +\put( 113,1118){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 79 }}} +\drawline(1093, 93)(1150, 750) +\drawline(1150, 750)(1000,1000) +\drawline(1000,1000)(1093, 93) +\put(1081, 614){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 80 }}} +\drawline(1093, 93)(1600, 0) +\drawline(1600, 0)(1150, 750) +\drawline(1150, 750)(1093, 93) +\put(1281, 281){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 81 }}} +\drawline( 792, 792)( 765, 890) +\drawline( 765, 890)( 875, 875) +\drawline( 875, 875)( 792, 792) +\put( 810, 852){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 82 }}} +\drawline( 953, 953)( 0,1600) +\drawline( 0,1600)( 958, 958) +\drawline( 958, 958)( 953, 953) +\put( 637,1170){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 85 }}} +\drawline( 164, 164)( 0, 375) +\drawline( 0, 375)( 218, 218) +\drawline( 218, 218)( 164, 164) +\put( 127, 252){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 86 }}} +\drawline( 566, 191)( 671, 171) +\drawline( 671, 171)( 707, 332) +\drawline( 707, 332)( 566, 191) +\put( 648, 231){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 88 }}} +\drawline( 250, 250)( 566, 191) +\drawline( 566, 191)( 707, 332) +\drawline( 707, 332)( 250, 250) +\put( 507, 257){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 89 }}} +\drawline( 99, 974)( 0,1000) +\drawline( 0,1000)( 765, 890) +\drawline( 765, 890)( 99, 974) +\put( 288, 954){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 90 }}} +\drawline( 792, 792)( 99, 974) +\drawline( 99, 974)( 765, 890) +\drawline( 765, 890)( 792, 792) +\put( 552, 885){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 91 }}} +\drawline( 54, 804)( 0,1000) +\drawline( 0,1000)( 99, 974) +\drawline( 99, 974)( 54, 804) +\put( 51, 926){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 92 }}} +\drawline( 218, 218)( 54, 804) +\drawline( 54, 804)( 99, 974) +\drawline( 99, 974)( 218, 218) +\put( 123, 665){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 93 }}} +\drawline( 503, 128)( 671, 171) +\drawline( 671, 171)( 156, 156) +\drawline( 156, 156)( 503, 128) +\put( 443, 151){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 94 }}} +\drawline( 256,1153)( 341,1204) +\drawline( 341,1204)( 546,1146) +\drawline( 546,1146)( 256,1153) +\put( 381,1167){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 96 }}} +\drawline( 935, 123)(1046, 546) +\drawline(1046, 546)( 959, 451) +\drawline( 959, 451)( 935, 123) +\put( 980, 373){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 99 }}} +\drawline(1150,1150)(1600, 0) +\drawline(1600, 0)(1600,1600) +\drawline(1600,1600)(1150,1150) +\put(1450, 916){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 100 }}} +\drawline(1000,1000)(1600, 0) +\drawline(1600, 0)(1150,1150) +\drawline(1150,1150)(1000,1000) +\put(1250, 716){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 101 }}} +\drawline( 218, 218)( 706, 815) +\drawline( 706, 815)( 792, 792) +\drawline( 792, 792)( 218, 218) +\put( 572, 608){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 102 }}} +\drawline( 689, 251)( 671, 171) +\drawline( 671, 171)( 876, 689) +\drawline( 876, 689)( 689, 251) +\put( 745, 370){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 104 }}} +\drawline( 812, 812)( 689, 251) +\drawline( 689, 251)( 876, 689) +\drawline( 876, 689)( 812, 812) +\put( 792, 584){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 105 }}} +\drawline( 0,1150)( 299,1216) +\drawline( 299,1216)( 341,1204) +\drawline( 341,1204)( 0,1150) +\put( 213,1190){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 106 }}} +\drawline( 479,1279)( 0,1600) +\drawline( 0,1600)(1000,1000) +\drawline(1000,1000)( 479,1279) +\put( 493,1293){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 108 }}} +\drawline( 958, 958)( 479,1279) +\drawline( 479,1279)(1000,1000) +\drawline(1000,1000)( 958, 958) +\put( 812,1079){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 109 }}} +\drawline( 693, 93)( 600, 0) +\drawline( 600, 0)( 925, 125) +\drawline( 925, 125)( 693, 93) +\put( 739, 72){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 110 }}} +\drawline( 114, 879)( 99, 974) +\drawline( 99, 974)( 706, 815) +\drawline( 706, 815)( 114, 879) +\put( 306, 889){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 112 }}} +\drawline( 693, 93)( 925, 125) +\drawline( 925, 125)( 671, 171) +\drawline( 671, 171)( 693, 93) +\put( 763, 129){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 114 }}} +\drawline( 0, 0)( 693, 93) +\drawline( 693, 93)( 671, 171) +\drawline( 671, 171)( 0, 0) +\put( 454, 88){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 115 }}} +\drawline( 0, 140)( 0, 375) +\drawline( 0, 375)( 164, 164) +\drawline( 164, 164)( 0, 140) +\put( 54, 226){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 116 }}} +\drawline( 0, 0)( 0, 140) +\drawline( 0, 140)( 164, 164) +\drawline( 164, 164)( 0, 0) +\put( 54, 101){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 117 }}} +\drawline( 328,1328)( 476,1276) +\drawline( 476,1276)( 953, 953) +\drawline( 953, 953)( 328,1328) +\put( 585,1185){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 118 }}} +\drawline( 328,1328)( 0,1600) +\drawline( 0,1600)( 476,1276) +\drawline( 476,1276)( 328,1328) +\put( 268,1401){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 119 }}} +\drawline( 697, 236)( 893, 464) +\drawline( 893, 464)( 876, 689) +\drawline( 876, 689)( 697, 236) +\put( 822, 463){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 120 }}} +\drawline( 671, 171)( 893, 464) +\drawline( 893, 464)( 697, 236) +\drawline( 697, 236)( 671, 171) +\put( 753, 290){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 121 }}} +\drawline( 875, 875)( 640,1140) +\drawline( 640,1140)( 953, 953) +\drawline( 953, 953)( 875, 875) +\put( 822, 989){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 122 }}} +\drawline( 875, 875)( 328,1328) +\drawline( 328,1328)( 640,1140) +\drawline( 640,1140)( 875, 875) +\put( 614,1114){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 123 }}} +\drawline( 737, 159)( 935, 123) +\drawline( 935, 123)( 947, 287) +\drawline( 947, 287)( 737, 159) +\put( 873, 189){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 124 }}} +\drawline( 671, 171)( 737, 159) +\drawline( 737, 159)( 947, 287) +\drawline( 947, 287)( 671, 171) +\put( 785, 205){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 125 }}} +\drawline( 188, 48)( 503, 128) +\drawline( 503, 128)( 156, 156) +\drawline( 156, 156)( 188, 48) +\put( 282, 110){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 126 }}} +\drawline( 0, 0)( 188, 48) +\drawline( 188, 48)( 156, 156) +\drawline( 156, 156)( 0, 0) +\put( 114, 68){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 127 }}} +\drawline( 645, 741)( 114, 879) +\drawline( 114, 879)( 706, 815) +\drawline( 706, 815)( 645, 741) +\put( 488, 811){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 128 }}} +\drawline( 191, 191)( 671, 171) +\drawline( 671, 171)( 250, 250) +\drawline( 250, 250)( 191, 191) +\put( 370, 204){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 130 }}} +\drawline( 156, 156)( 671, 171) +\drawline( 671, 171)( 191, 191) +\drawline( 191, 191)( 156, 156) +\put( 339, 172){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 131 }}} +\drawline( 218, 218)( 246, 845) +\drawline( 246, 845)( 645, 741) +\drawline( 645, 741)( 218, 218) +\put( 369, 601){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 132 }}} +\drawline( 218, 218)( 114, 879) +\drawline( 114, 879)( 246, 845) +\drawline( 246, 845)( 218, 218) +\put( 192, 647){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 133 }}} +\drawline( 671, 171)( 957, 424) +\drawline( 957, 424)( 967, 561) +\drawline( 967, 561)( 671, 171) +\put( 865, 385){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 134 }}} +\drawline( 671, 171)( 947, 287) +\drawline( 947, 287)( 957, 424) +\drawline( 957, 424)( 671, 171) +\put( 858, 294){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 135 }}} +\drawline( 273,1223)( 410,1260) +\drawline( 410,1260)( 546,1146) +\drawline( 546,1146)( 273,1223) +\put( 409,1209){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 136 }}} +\drawline( 0,1300)( 410,1260) +\drawline( 410,1260)( 273,1223) +\drawline( 273,1223)( 0,1300) +\put( 227,1261){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 137 }}} +\drawline(1003, 499)(1046, 546) +\drawline(1046, 546)(1000,1000) +\drawline(1000,1000)(1003, 499) +\put(1016, 681){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 138 }}} +\drawline( 959, 451)(1003, 499) +\drawline(1003, 499)(1000,1000) +\drawline(1000,1000)( 959, 451) +\put( 987, 650){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 139 }}} +\drawline( 0, 0)( 682, 82) +\drawline( 682, 82)( 693, 93) +\drawline( 693, 93)( 0, 0) +\put( 458, 58){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 140 }}} +\drawline( 0, 0)( 600, 0) +\drawline( 600, 0)( 682, 82) +\drawline( 682, 82)( 0, 0) +\put( 427, 27){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 141 }}} +\drawline( 0,1300)( 307,1345) +\drawline( 307,1345)( 410,1260) +\drawline( 410,1260)( 0,1300) +\put( 239,1301){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 142 }}} +\drawline( 0,1300)( 0,1600) +\drawline( 0,1600)( 307,1345) +\drawline( 307,1345)( 0,1300) +\put( 102,1415){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 143 }}} +\drawline( 882, 882)( 876, 689) +\drawline( 876, 689)(1000,1000) +\drawline(1000,1000)( 882, 882) +\put( 919, 857){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 144 }}} +\drawline( 812, 812)( 876, 689) +\drawline( 876, 689)( 882, 882) +\drawline( 882, 882)( 812, 812) +\put( 856, 794){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 145 }}} +\drawline( 0,1000)( 328,1151) +\drawline( 328,1151)( 546,1146) +\drawline( 546,1146)( 0,1000) +\put( 291,1099){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 146 }}} +\drawline( 0,1000)( 256,1153) +\drawline( 256,1153)( 328,1151) +\drawline( 328,1151)( 0,1000) +\put( 194,1101){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 147 }}} +\drawline( 0,1150)( 224,1237) +\drawline( 224,1237)( 299,1216) +\drawline( 299,1216)( 0,1150) +\put( 174,1201){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 148 }}} +\drawline( 0,1150)( 0,1300) +\drawline( 0,1300)( 224,1237) +\drawline( 224,1237)( 0,1150) +\put( 74,1229){\makebox(0,0)[b]{\hbox{\color{magenta}\scriptsize 149 }}} +\end{picture}} +% ============== End Vertices =========== +\end{picture} +\end{figure} +\end{document} diff --git a/Foam/output-DemoFoam b/Foam/output-DemoFoam new file mode 100644 index 0000000..576b405 --- /dev/null +++ b/Foam/output-DemoFoam @@ -0,0 +1,172 @@ + ######################### FoamA_Grow ##################### + ----------------------------------------------------------------------- + -->FindWtLimit: content, <Wt>, WtLimit= 1000000.0000000000 0.42085001370098818 1.0900000000000001 + -->FindWtLimit: EFFICIENCY <Wt>/WtLimit= 0.38610093000090656 +================================================== ACTIVE CELLS ================================================== + iCell Stat Pare Dau1 Dau2 WtMin WtMax <w> sigma/<w> Volume Drive TrueInt Ver1 Ver2 ... + 34 1 27 -1 -1 0.00285 0.03168 0.32102 61.77533 0.04120 0.02398 0.00770 7 20 16 + 38 1 4 -1 -1 0.00130 0.02093 0.50012 82.73549 0.11719 0.01393 0.00696 22 3 4 + 46 1 22 -1 -1 0.00523 0.05282 0.34765 39.91278 0.00961 0.03919 0.01363 26 14 8 + 50 1 29 -1 -1 0.00040 0.01994 0.27516 206.11625 0.02441 0.01537 0.00423 28 2 17 + 54 1 47 -1 -1 0.00153 0.01981 0.16545 227.80115 0.00360 0.01700 0.00281 30 26 8 + 57 1 30 -1 -1 0.00138 0.01603 0.52375 107.37728 0.01373 0.01048 0.00549 18 10 31 + 58 1 36 -1 -1 0.00112 0.00474 0.81498 127.13096 0.00334 0.00261 0.00213 21 32 11 + 62 1 55 -1 -1 0.00340 0.02576 0.46534 53.58365 0.02208 0.01758 0.00818 34 26 30 + 63 1 55 -1 -1 0.00197 0.02224 0.21304 171.23124 0.00315 0.01833 0.00391 9 26 34 + 66 1 59 -1 -1 0.00290 0.02904 0.30222 74.11969 0.02044 0.02230 0.00674 21 36 32 + 67 1 59 -1 -1 0.00101 0.02059 0.11569 376.65590 0.00292 0.01846 0.00214 21 9 36 + 68 1 42 -1 -1 0.00442 0.08874 1.48663 9.50793 0.00858 0.03569 0.05305 37 24 6 + 72 1 39 -1 -1 0.00241 0.04207 0.47027 49.30850 0.05273 0.02644 0.01243 39 3 22 + 73 1 39 -1 -1 0.00080 0.04292 0.45730 46.89129 0.01758 0.02937 0.01343 5 3 39 + 74 1 69 -1 -1 0.00503 0.03697 0.74023 33.95487 0.00358 0.02123 0.01571 40 24 37 + 79 1 53 -1 -1 0.01205 0.10353 2.78642 5.02700 0.01001 0.02734 0.07618 9 42 29 + 80 1 14 -1 -1 0.00221 0.03564 0.62429 41.73507 0.02197 0.02038 0.01272 10 43 6 + 81 1 14 -1 -1 0.00109 0.02121 0.44089 115.81899 0.06592 0.01420 0.00626 10 2 43 + 82 1 20 -1 -1 0.00105 0.01100 0.28654 245.99261 0.00200 0.00855 0.00245 13 44 8 + 85 1 44 -1 -1 0.00008 0.01733 0.81534 96.37587 0.00183 0.00953 0.00777 25 3 45 + 86 1 37 -1 -1 0.00314 0.02289 0.36600 79.18330 0.00401 0.01675 0.00613 46 21 11 + 88 1 35 -1 -1 0.00218 0.02649 0.28745 105.81765 0.00343 0.02058 0.00592 47 12 20 + 89 1 35 -1 -1 0.00260 0.01421 0.58688 75.72770 0.01030 0.00896 0.00526 7 47 20 + 90 1 83 -1 -1 0.00026 0.01235 0.06820 1545.47170 0.00175 0.01157 0.00079 48 9 44 + 91 1 83 -1 -1 0.00132 0.00983 0.39903 190.54237 0.01227 0.00703 0.00280 13 48 44 + 92 1 25 -1 -1 0.00114 0.02471 0.17786 200.96452 0.00350 0.02098 0.00373 49 9 15 + 93 1 25 -1 -1 0.00111 0.00984 0.29072 230.33035 0.01051 0.00763 0.00222 11 49 15 + 94 1 61 -1 -1 0.00502 0.02971 0.48177 39.41019 0.00381 0.02005 0.00966 50 27 33 + 96 1 52 -1 -1 0.00903 0.03106 1.35443 18.76892 0.00300 0.01318 0.01785 51 29 14 + 99 1 56 -1 -1 0.00156 0.02792 0.42746 68.03344 0.00515 0.01956 0.00836 18 31 52 + 100 1 6 -1 -1 0.00156 0.01390 0.55057 91.48280 0.14062 0.00897 0.00494 53 2 4 + 101 1 6 -1 -1 0.00077 0.02416 0.33700 105.20079 0.04688 0.01807 0.00609 6 2 53 + 102 1 24 -1 -1 0.00069 0.01148 0.16437 401.98687 0.01227 0.00986 0.00162 11 54 13 + 104 1 65 -1 -1 0.00072 0.01104 0.17505 505.58357 0.00143 0.00939 0.00164 55 12 35 + 105 1 65 -1 -1 0.00274 0.01563 0.53794 71.21472 0.01001 0.01016 0.00547 16 55 35 + 106 1 78 -1 -1 0.00151 0.01244 2.10046 39.62235 0.00125 0.00397 0.00833 42 56 29 + 108 1 84 -1 -1 0.00029 0.02498 0.50935 100.93021 0.00641 0.01612 0.00821 57 3 5 + 109 1 84 -1 -1 0.00330 0.05320 0.78998 28.59969 0.00641 0.02917 0.02305 45 57 5 + 110 1 51 -1 -1 0.00122 0.00834 0.73846 100.38471 0.00366 0.00480 0.00354 58 28 17 + 112 1 103 -1 -1 0.00091 0.00860 0.29549 299.38941 0.01073 0.00664 0.00196 59 15 54 + 114 1 49 -1 -1 0.00122 0.03786 0.46050 77.91731 0.00366 0.02589 0.01192 60 17 27 + 115 1 49 -1 -1 0.00299 0.11359 1.88252 5.66861 0.01099 0.03940 0.07418 1 60 27 + 116 1 87 -1 -1 0.01038 0.07765 1.19285 12.55067 0.00751 0.03541 0.04224 61 21 46 + 117 1 87 -1 -1 0.00123 0.04659 0.32285 87.97216 0.00451 0.03522 0.01137 1 61 46 + 118 1 70 -1 -1 0.00263 0.04733 1.19293 22.64102 0.00458 0.02158 0.02574 38 62 25 + 119 1 70 -1 -1 0.00021 0.00637 0.33226 490.48365 0.00458 0.00478 0.00159 38 3 62 + 120 1 75 -1 -1 0.00519 0.04309 0.35602 37.90704 0.00939 0.03178 0.01131 63 40 37 + 121 1 75 -1 -1 0.00233 0.01035 0.54296 94.96130 0.00134 0.00671 0.00364 12 40 63 + 122 1 71 -1 -1 0.01198 0.07888 2.14632 6.02273 0.00763 0.02507 0.05381 8 64 25 + 123 1 71 -1 -1 0.00439 0.07888 0.91639 15.51956 0.00763 0.04114 0.03770 8 38 64 + 124 1 77 -1 -1 0.00195 0.03862 0.28459 79.31444 0.00644 0.03006 0.00856 65 18 41 + 125 1 77 -1 -1 0.00243 0.02218 1.95646 27.64647 0.00215 0.00750 0.01468 12 65 41 + 126 1 95 -1 -1 0.01335 0.07395 1.51334 8.61507 0.00715 0.02942 0.04453 66 50 33 + 127 1 95 -1 -1 0.00117 0.04437 0.31642 90.30915 0.00429 0.03369 0.01066 1 66 33 + 128 1 113 -1 -1 0.00062 0.00277 0.52660 318.86933 0.00939 0.00181 0.00095 67 59 54 + 130 1 60 -1 -1 0.00260 0.04416 0.14078 117.32994 0.00572 0.03871 0.00545 68 27 7 + 131 1 60 -1 -1 0.00312 0.02674 0.28999 88.51930 0.00343 0.02073 0.00601 33 27 68 + 132 1 129 -1 -1 0.00166 0.04616 0.09057 214.72943 0.04931 0.04233 0.00383 11 69 67 + 133 1 129 -1 -1 0.00110 0.01539 0.14604 250.61051 0.01644 0.01343 0.00196 11 59 69 + 134 1 76 -1 -1 0.01622 0.07395 1.80991 8.18982 0.00715 0.02632 0.04763 12 70 24 + 135 1 76 -1 -1 0.00809 0.07395 1.55846 9.31956 0.00715 0.02890 0.04504 12 41 70 + 136 1 40 -1 -1 0.00911 0.04141 2.31932 11.00697 0.00401 0.01248 0.02894 71 23 14 + 137 1 40 -1 -1 0.00092 0.01772 0.55166 94.01411 0.00401 0.01142 0.00630 19 23 71 + 138 1 98 -1 -1 0.00221 0.01607 1.28966 37.16388 0.00429 0.00680 0.00877 72 31 6 + 139 1 98 -1 -1 0.00221 0.03885 1.01789 21.21497 0.00429 0.01903 0.01937 52 72 6 + 140 1 111 -1 -1 0.00037 0.00999 1.37786 78.76668 0.00137 0.00419 0.00577 1 73 58 + 141 1 111 -1 -1 0.00261 0.05687 0.55646 26.13806 0.00961 0.03542 0.01971 1 28 73 + 142 1 41 -1 -1 0.00139 0.01367 0.43360 115.14369 0.00601 0.00954 0.00413 19 74 23 + 143 1 41 -1 -1 0.00082 0.00799 0.56559 164.28273 0.01802 0.00511 0.00289 19 3 74 + 144 1 64 -1 -1 0.00221 0.04437 1.07486 25.84272 0.00429 0.02138 0.02298 75 35 6 + 145 1 64 -1 -1 0.00198 0.01938 0.31989 119.12900 0.00257 0.01468 0.00470 16 35 75 + 146 1 97 -1 -1 0.00560 0.04765 0.32980 33.03615 0.00676 0.03584 0.01182 9 76 14 + 147 1 97 -1 -1 0.00448 0.01588 0.87593 34.22696 0.00225 0.00847 0.00742 9 51 76 + 148 1 107 -1 -1 0.00264 0.01427 1.15190 47.20996 0.00219 0.00653 0.00752 42 77 56 + 149 1 107 -1 -1 0.00152 0.01489 0.71570 87.43450 0.00657 0.00854 0.00612 42 19 77 +All cells: 149 Active: 75 75 +Minimum and Maximum Weight/<Wt> = 0.01088 15.23155 +Total True Integral in active cells = 1.010730457437 1.010730457437 +Total Driver Integral in active cells = 1.394681549625 1.394681549625 +True/Drive = 0.72470 +1 + 8100 WT distribution + nent sum bmin bmax + 1000000 0.00000E+00 0.00000E+00 0.48340E+05 + undf ovef sumw avex + 0.00000E+00 0.00000E+00 0.10000E+07 0.42085E+00 + 0.0000 0.281500D+04 0XXX I + 0.0250 0.148970D+05 0XXXXXXXXXXXXXXXXXXXX I + 0.0500 0.369750D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.0750 0.406900D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.1000 0.449440D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.1250 0.471930D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.1500 0.483400D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + 0.1750 0.466470D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.2000 0.441040D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.2250 0.430100D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.2500 0.399270D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.2750 0.367230D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.3000 0.337070D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.3250 0.310140D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.3500 0.291910D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.3750 0.271380D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.4000 0.251350D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.4250 0.235500D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.4500 0.220910D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.4750 0.208880D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.5000 0.194640D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.5250 0.181260D+05 0XXXXXXXXXXXXXXXXXXXXXXXX I + 0.5500 0.173730D+05 0XXXXXXXXXXXXXXXXXXXXXXX I + 0.5750 0.166840D+05 0XXXXXXXXXXXXXXXXXXXXXX I + 0.6000 0.158160D+05 0XXXXXXXXXXXXXXXXXXXXX I + 0.6250 0.152450D+05 0XXXXXXXXXXXXXXXXXXXX I + 0.6500 0.143990D+05 0XXXXXXXXXXXXXXXXXXX I + 0.6750 0.142380D+05 0XXXXXXXXXXXXXXXXXXX I + 0.7000 0.137300D+05 0XXXXXXXXXXXXXXXXXX I + 0.7250 0.136350D+05 0XXXXXXXXXXXXXXXXXX I + 0.7500 0.134810D+05 0XXXXXXXXXXXXXXXXXX I + 0.7750 0.132550D+05 0XXXXXXXXXXXXXXXXXX I + 0.8000 0.130480D+05 0XXXXXXXXXXXXXXXXX I + 0.8250 0.134830D+05 0XXXXXXXXXXXXXXXXXX I + 0.8500 0.136720D+05 0XXXXXXXXXXXXXXXXXX I + 0.8750 0.147010D+05 0XXXXXXXXXXXXXXXXXXXX I + 0.9000 0.156230D+05 0XXXXXXXXXXXXXXXXXXXXX I + 0.9250 0.169900D+05 0XXXXXXXXXXXXXXXXXXXXXXX I + 0.9500 0.212960D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.9750 0.442080D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 1.0000 0.245000D+04 0XXX I + 1.0250 0.620000D+02 0 I + 1.0500 0.360000D+02 0 I + 1.0750 0.600000D+01 0 I + 1.1000 0.000000D+00 0 I + 1.1250 0.000000D+00 0 I + 1.1500 0.000000D+00 0 I + 1.1750 0.000000D+00 0 I + 1.2000 0.000000D+00 0 I + 1.2250 0.000000D+00 0 I + 1.2500 0.000000D+00 0 I + 1.2750 0.000000D+00 0 I + 1.3000 0.000000D+00 0 I + 1.3250 0.000000D+00 0 I + 1.3500 0.000000D+00 0 I + 1.3750 0.000000D+00 0 I + 1.4000 0.000000D+00 0 I + 1.4250 0.000000D+00 0 I + 1.4500 0.000000D+00 0 I + 1.4750 0.000000D+00 0 I + 1.5000 0.000000D+00 0 I + 1.5250 0.000000D+00 0 I + 1.5500 0.000000D+00 0 I + 1.5750 0.000000D+00 0 I + 1.6000 0.000000D+00 0 I + 1.6250 0.000000D+00 0 I + 1.6500 0.000000D+00 0 I + 1.6750 0.000000D+00 0 I + 1.7000 0.000000D+00 0 I + 1.7250 0.000000D+00 0 I + 1.7500 0.000000D+00 0 I + 1.7750 0.000000D+00 0 I + 1.8000 0.000000D+00 0 I + 1.8250 0.000000D+00 0 I + 1.8500 0.000000D+00 0 I + 1.8750 0.000000D+00 0 I + 1.9000 0.000000D+00 0 I + 1.9250 0.000000D+00 0 I + 1.9500 0.000000D+00 0 I + 1.9750 0.000000D+00 0 I diff --git a/Foam/output-DemoFoam-linux b/Foam/output-DemoFoam-linux new file mode 100644 index 0000000..1456534 --- /dev/null +++ b/Foam/output-DemoFoam-linux @@ -0,0 +1,172 @@ + ######################### FoamA_Grow ##################### + ----------------------------------------------------------------------- + -->FindWtLimit: content, <Wt>, WtLimit= 1000000. 0.420850014 1.09 + -->FindWtLimit: EFFICIENCY <Wt>/WtLimit= 0.38610093 +================================================== ACTIVE CELLS ================================================== + iCell Stat Pare Dau1 Dau2 WtMin WtMax <w> sigma/<w> Volume Drive TrueInt Ver1 Ver2 ... + 34 1 27 -1 -1 0.00285 0.03168 0.32102 61.77533 0.04120 0.02398 0.00770 7 20 16 + 38 1 4 -1 -1 0.00130 0.02093 0.50012 82.73549 0.11719 0.01393 0.00696 22 3 4 + 46 1 22 -1 -1 0.00523 0.05282 0.34765 39.91278 0.00961 0.03919 0.01363 26 14 8 + 50 1 29 -1 -1 0.00040 0.01994 0.27516 206.11625 0.02441 0.01537 0.00423 28 2 17 + 54 1 47 -1 -1 0.00153 0.01981 0.16545 227.80115 0.00360 0.01700 0.00281 30 26 8 + 57 1 30 -1 -1 0.00138 0.01603 0.52375 107.37728 0.01373 0.01048 0.00549 18 10 31 + 58 1 36 -1 -1 0.00112 0.00474 0.81498 127.13096 0.00334 0.00261 0.00213 21 32 11 + 62 1 55 -1 -1 0.00340 0.02576 0.46534 53.58365 0.02208 0.01758 0.00818 34 26 30 + 63 1 55 -1 -1 0.00197 0.02224 0.21304 171.23124 0.00315 0.01833 0.00391 9 26 34 + 66 1 59 -1 -1 0.00290 0.02904 0.30222 74.11969 0.02044 0.02230 0.00674 21 36 32 + 67 1 59 -1 -1 0.00101 0.02059 0.11569 376.65590 0.00292 0.01846 0.00214 21 9 36 + 68 1 42 -1 -1 0.00442 0.08874 1.48663 9.50793 0.00858 0.03569 0.05305 37 24 6 + 72 1 39 -1 -1 0.00241 0.04207 0.47027 49.30850 0.05273 0.02644 0.01243 39 3 22 + 73 1 39 -1 -1 0.00080 0.04292 0.45730 46.89129 0.01758 0.02937 0.01343 5 3 39 + 74 1 69 -1 -1 0.00503 0.03697 0.74023 33.95487 0.00358 0.02123 0.01571 40 24 37 + 79 1 53 -1 -1 0.01205 0.10353 2.78642 5.02700 0.01001 0.02734 0.07618 9 42 29 + 80 1 14 -1 -1 0.00221 0.03564 0.62429 41.73507 0.02197 0.02038 0.01272 10 43 6 + 81 1 14 -1 -1 0.00109 0.02121 0.44089 115.81899 0.06592 0.01420 0.00626 10 2 43 + 82 1 20 -1 -1 0.00105 0.01100 0.28654 245.99261 0.00200 0.00855 0.00245 13 44 8 + 85 1 44 -1 -1 0.00008 0.01733 0.81534 96.37587 0.00183 0.00953 0.00777 25 3 45 + 86 1 37 -1 -1 0.00314 0.02289 0.36600 79.18330 0.00401 0.01675 0.00613 46 21 11 + 88 1 35 -1 -1 0.00218 0.02649 0.28745 105.81765 0.00343 0.02058 0.00592 47 12 20 + 89 1 35 -1 -1 0.00260 0.01421 0.58688 75.72770 0.01030 0.00896 0.00526 7 47 20 + 90 1 83 -1 -1 0.00026 0.01235 0.06820 1545.47170 0.00175 0.01157 0.00079 48 9 44 + 91 1 83 -1 -1 0.00132 0.00983 0.39903 190.54237 0.01227 0.00703 0.00280 13 48 44 + 92 1 25 -1 -1 0.00114 0.02471 0.17786 200.96452 0.00350 0.02098 0.00373 49 9 15 + 93 1 25 -1 -1 0.00111 0.00984 0.29072 230.33035 0.01051 0.00763 0.00222 11 49 15 + 94 1 61 -1 -1 0.00502 0.02971 0.48177 39.41019 0.00381 0.02005 0.00966 50 27 33 + 96 1 52 -1 -1 0.00903 0.03106 1.35443 18.76892 0.00300 0.01318 0.01785 51 29 14 + 99 1 56 -1 -1 0.00156 0.02792 0.42746 68.03344 0.00515 0.01956 0.00836 18 31 52 + 100 1 6 -1 -1 0.00156 0.01390 0.55057 91.48280 0.14062 0.00897 0.00494 53 2 4 + 101 1 6 -1 -1 0.00077 0.02416 0.33700 105.20079 0.04688 0.01807 0.00609 6 2 53 + 102 1 24 -1 -1 0.00069 0.01148 0.16437 401.98687 0.01227 0.00986 0.00162 11 54 13 + 104 1 65 -1 -1 0.00072 0.01104 0.17505 505.58357 0.00143 0.00939 0.00164 55 12 35 + 105 1 65 -1 -1 0.00274 0.01563 0.53794 71.21472 0.01001 0.01016 0.00547 16 55 35 + 106 1 78 -1 -1 0.00151 0.01244 2.10046 39.62235 0.00125 0.00397 0.00833 42 56 29 + 108 1 84 -1 -1 0.00029 0.02498 0.50935 100.93021 0.00641 0.01612 0.00821 57 3 5 + 109 1 84 -1 -1 0.00330 0.05320 0.78998 28.59969 0.00641 0.02917 0.02305 45 57 5 + 110 1 51 -1 -1 0.00122 0.00834 0.73846 100.38471 0.00366 0.00480 0.00354 58 28 17 + 112 1 103 -1 -1 0.00091 0.00860 0.29549 299.38941 0.01073 0.00664 0.00196 59 15 54 + 114 1 49 -1 -1 0.00122 0.03786 0.46050 77.91731 0.00366 0.02589 0.01192 60 17 27 + 115 1 49 -1 -1 0.00299 0.11359 1.88252 5.66861 0.01099 0.03940 0.07418 1 60 27 + 116 1 87 -1 -1 0.01038 0.07765 1.19285 12.55067 0.00751 0.03541 0.04224 61 21 46 + 117 1 87 -1 -1 0.00123 0.04659 0.32285 87.97216 0.00451 0.03522 0.01137 1 61 46 + 118 1 70 -1 -1 0.00263 0.04733 1.19293 22.64102 0.00458 0.02158 0.02574 38 62 25 + 119 1 70 -1 -1 0.00021 0.00637 0.33226 490.48366 0.00458 0.00478 0.00159 38 3 62 + 120 1 75 -1 -1 0.00519 0.04309 0.35602 37.90704 0.00939 0.03178 0.01131 63 40 37 + 121 1 75 -1 -1 0.00233 0.01035 0.54296 94.96130 0.00134 0.00671 0.00364 12 40 63 + 122 1 71 -1 -1 0.01198 0.07888 2.14632 6.02273 0.00763 0.02507 0.05381 8 64 25 + 123 1 71 -1 -1 0.00439 0.07888 0.91639 15.51956 0.00763 0.04114 0.03770 8 38 64 + 124 1 77 -1 -1 0.00195 0.03862 0.28459 79.31444 0.00644 0.03006 0.00856 65 18 41 + 125 1 77 -1 -1 0.00243 0.02218 1.95646 27.64647 0.00215 0.00750 0.01468 12 65 41 + 126 1 95 -1 -1 0.01335 0.07395 1.51334 8.61507 0.00715 0.02942 0.04453 66 50 33 + 127 1 95 -1 -1 0.00117 0.04437 0.31642 90.30915 0.00429 0.03369 0.01066 1 66 33 + 128 1 113 -1 -1 0.00062 0.00277 0.52660 318.86933 0.00939 0.00181 0.00095 67 59 54 + 130 1 60 -1 -1 0.00260 0.04416 0.14078 117.32994 0.00572 0.03871 0.00545 68 27 7 + 131 1 60 -1 -1 0.00312 0.02674 0.28999 88.51930 0.00343 0.02073 0.00601 33 27 68 + 132 1 129 -1 -1 0.00166 0.04616 0.09057 214.72943 0.04931 0.04233 0.00383 11 69 67 + 133 1 129 -1 -1 0.00110 0.01539 0.14604 250.61051 0.01644 0.01343 0.00196 11 59 69 + 134 1 76 -1 -1 0.01622 0.07395 1.80991 8.18982 0.00715 0.02632 0.04763 12 70 24 + 135 1 76 -1 -1 0.00809 0.07395 1.55846 9.31956 0.00715 0.02890 0.04504 12 41 70 + 136 1 40 -1 -1 0.00911 0.04141 2.31932 11.00697 0.00401 0.01248 0.02894 71 23 14 + 137 1 40 -1 -1 0.00092 0.01772 0.55166 94.01411 0.00401 0.01142 0.00630 19 23 71 + 138 1 98 -1 -1 0.00221 0.01607 1.28966 37.16388 0.00429 0.00680 0.00877 72 31 6 + 139 1 98 -1 -1 0.00221 0.03885 1.01789 21.21497 0.00429 0.01903 0.01937 52 72 6 + 140 1 111 -1 -1 0.00037 0.00999 1.37786 78.76668 0.00137 0.00419 0.00577 1 73 58 + 141 1 111 -1 -1 0.00261 0.05687 0.55646 26.13806 0.00961 0.03542 0.01971 1 28 73 + 142 1 41 -1 -1 0.00139 0.01367 0.43360 115.14369 0.00601 0.00954 0.00413 19 74 23 + 143 1 41 -1 -1 0.00082 0.00799 0.56559 164.28273 0.01802 0.00511 0.00289 19 3 74 + 144 1 64 -1 -1 0.00221 0.04437 1.07486 25.84272 0.00429 0.02138 0.02298 75 35 6 + 145 1 64 -1 -1 0.00198 0.01938 0.31989 119.12900 0.00257 0.01468 0.00470 16 35 75 + 146 1 97 -1 -1 0.00560 0.04765 0.32980 33.03615 0.00676 0.03584 0.01182 9 76 14 + 147 1 97 -1 -1 0.00448 0.01588 0.87593 34.22696 0.00225 0.00847 0.00742 9 51 76 + 148 1 107 -1 -1 0.00264 0.01427 1.15190 47.20996 0.00219 0.00653 0.00752 42 77 56 + 149 1 107 -1 -1 0.00152 0.01489 0.71570 87.43450 0.00657 0.00854 0.00612 42 19 77 +All cells: 149 Active: 75 75 +Minimum and Maximum Weight/<Wt> = 0.01088 15.23155 +Total True Integral in active cells = 1.010730457423 1.010730457423 +Total Driver Integral in active cells = 1.394681549639 1.394681549639 +True/Drive = 0.72470 +1 + 8100 WT distribution + nent sum bmin bmax + 1000000 0.00000E+00 0.00000E+00 0.48340E+05 + undf ovef sumw avex + 0.00000E+00 0.00000E+00 0.10000E+07 0.42085E+00 + 0.0000 0.281500E+04 0XXX I + 0.0250 0.148970E+05 0XXXXXXXXXXXXXXXXXXXX I + 0.0500 0.369750E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.0750 0.406900E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.1000 0.449440E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.1250 0.471930E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.1500 0.483400E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + 0.1750 0.466470E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.2000 0.441040E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.2250 0.430100E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.2500 0.399270E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.2750 0.367230E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.3000 0.337070E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.3250 0.310140E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.3500 0.291910E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.3750 0.271380E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.4000 0.251350E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.4250 0.235500E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.4500 0.220910E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.4750 0.208880E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.5000 0.194640E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.5250 0.181260E+05 0XXXXXXXXXXXXXXXXXXXXXXXX I + 0.5500 0.173730E+05 0XXXXXXXXXXXXXXXXXXXXXXX I + 0.5750 0.166840E+05 0XXXXXXXXXXXXXXXXXXXXXX I + 0.6000 0.158160E+05 0XXXXXXXXXXXXXXXXXXXXX I + 0.6250 0.152450E+05 0XXXXXXXXXXXXXXXXXXXX I + 0.6500 0.143990E+05 0XXXXXXXXXXXXXXXXXXX I + 0.6750 0.142380E+05 0XXXXXXXXXXXXXXXXXXX I + 0.7000 0.137300E+05 0XXXXXXXXXXXXXXXXXX I + 0.7250 0.136350E+05 0XXXXXXXXXXXXXXXXXX I + 0.7500 0.134810E+05 0XXXXXXXXXXXXXXXXXX I + 0.7750 0.132550E+05 0XXXXXXXXXXXXXXXXXX I + 0.8000 0.130480E+05 0XXXXXXXXXXXXXXXXX I + 0.8250 0.134830E+05 0XXXXXXXXXXXXXXXXXX I + 0.8500 0.136720E+05 0XXXXXXXXXXXXXXXXXX I + 0.8750 0.147010E+05 0XXXXXXXXXXXXXXXXXXXX I + 0.9000 0.156230E+05 0XXXXXXXXXXXXXXXXXXXXX I + 0.9250 0.169900E+05 0XXXXXXXXXXXXXXXXXXXXXXX I + 0.9500 0.212960E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.9750 0.442080E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 1.0000 0.245000E+04 0XXX I + 1.0250 0.620000E+02 0 I + 1.0500 0.360000E+02 0 I + 1.0750 0.600000E+01 0 I + 1.1000 0.000000E+00 0 I + 1.1250 0.000000E+00 0 I + 1.1500 0.000000E+00 0 I + 1.1750 0.000000E+00 0 I + 1.2000 0.000000E+00 0 I + 1.2250 0.000000E+00 0 I + 1.2500 0.000000E+00 0 I + 1.2750 0.000000E+00 0 I + 1.3000 0.000000E+00 0 I + 1.3250 0.000000E+00 0 I + 1.3500 0.000000E+00 0 I + 1.3750 0.000000E+00 0 I + 1.4000 0.000000E+00 0 I + 1.4250 0.000000E+00 0 I + 1.4500 0.000000E+00 0 I + 1.4750 0.000000E+00 0 I + 1.5000 0.000000E+00 0 I + 1.5250 0.000000E+00 0 I + 1.5500 0.000000E+00 0 I + 1.5750 0.000000E+00 0 I + 1.6000 0.000000E+00 0 I + 1.6250 0.000000E+00 0 I + 1.6500 0.000000E+00 0 I + 1.6750 0.000000E+00 0 I + 1.7000 0.000000E+00 0 I + 1.7250 0.000000E+00 0 I + 1.7500 0.000000E+00 0 I + 1.7750 0.000000E+00 0 I + 1.8000 0.000000E+00 0 I + 1.8250 0.000000E+00 0 I + 1.8500 0.000000E+00 0 I + 1.8750 0.000000E+00 0 I + 1.9000 0.000000E+00 0 I + 1.9250 0.000000E+00 0 I + 1.9500 0.000000E+00 0 I + 1.9750 0.000000E+00 0 I diff --git a/Foam/output-DemoMCell b/Foam/output-DemoMCell new file mode 100644 index 0000000..b734769 --- /dev/null +++ b/Foam/output-DemoMCell @@ -0,0 +1,248 @@ + ######################### MCellA_Grow ##################### + ############## generation finished ################################ + ----------------------------------------------------------------------- + -->FindWtLimit: content, <Wt>, WtLimit= 1000000.0000000000 0.38969327878436716 1.1299999999999999 + -->FindWtLimit: EFFICIENCY <Wt>/WtLimit= 0.34486130865873205 +================================================== ACTIVE CELLS ================================================== + iCell Stat Pare Dau1 Dau2 Side <w> Sig/<w> Drive VolTrue + 20 1 9 -1 -1 1 0.43011 1.66903 0.71787 + HypCubs Posit&Size: 0.00000 0.794922 0.625000 0.512695E-01 + 30 1 28 -1 -1 1 1.03915 0.63933 0.66437 + HypCubs Posit&Size: 0.546875 0.125000 0.195312E-010.136719 + 37 1 23 -1 -1 1 0.26646 0.53029 0.14130 + HypCubs Posit&Size: 0.625000 0.00000 0.375000 0.125000 + 40 1 24 -1 -1 1 0.15268 3.62460 0.55341 + HypCubs Posit&Size: 0.117188 0.125000 0.307617 0.683594E-01 + 46 1 18 -1 -1 1 1.59836 0.37631 0.60149 + HypCubs Posit&Size: 0.00000 0.125000 0.292969E-010.683594E-01 + 49 1 42 -1 -1 1 0.18081 2.61251 0.47237 + HypCubs Posit&Size: 0.292969E-010.193359 0.878906E-010.418701 + 50 1 44 -1 -1 0 2.03509 0.53695 1.09274 + HypCubs Posit&Size: 0.468750 0.125000 0.488281E-010.683594E-01 + 51 1 44 -1 -1 0 1.22764 0.43895 0.53887 + HypCubs Posit&Size: 0.517578 0.125000 0.292969E-010.683594E-01 + 56 1 41 -1 -1 0 0.76393 0.41375 0.31608 + HypCubs Posit&Size: 0.424805 0.125000 0.439453E-010.341797E-01 + 57 1 41 -1 -1 0 0.58191 0.18394 0.10704 + HypCubs Posit&Size: 0.424805 0.159180 0.439453E-010.341797E-01 + 60 1 31 -1 -1 1 0.34731 0.49255 0.17107 + HypCubs Posit&Size: 0.566406 0.125000 0.585938E-010.683594E-01 + 62 1 17 -1 -1 1 0.47542 5.96447 2.83565 + HypCubs Posit&Size: 0.00000 0.748779 0.390625 0.461426E-01 + 64 1 59 -1 -1 0 1.56935 1.42689 2.23929 + HypCubs Posit&Size: 0.595703 0.261719 0.292969E-010.256348 + 65 1 59 -1 -1 0 0.23715 1.12137 0.26593 + HypCubs Posit&Size: 0.595703 0.518066 0.292969E-010.153809 + 66 1 35 -1 -1 0 0.29670 1.69204 0.50203 + HypCubs Posit&Size: 0.468750 0.671875 0.585938E-010.769043E-01 + 67 1 35 -1 -1 0 0.28017 0.61181 0.17141 + HypCubs Posit&Size: 0.527344 0.671875 0.976562E-010.769043E-01 + 68 1 61 -1 -1 0 1.22455 0.32958 0.40358 + HypCubs Posit&Size: 0.566406 0.193359 0.219727E-010.683594E-01 + 69 1 61 -1 -1 0 0.40482 0.54243 0.21959 + HypCubs Posit&Size: 0.588379 0.193359 0.366211E-010.683594E-01 + 71 1 38 -1 -1 1 0.52048 1.97989 1.03050 + HypCubs Posit&Size: 0.125000 0.00000 0.375000 0.312500E-01 + 75 1 55 -1 -1 1 0.51488 3.54090 1.82314 + HypCubs Posit&Size: 0.187500 0.898438E-010.312500 0.351562E-01 + 80 1 77 -1 -1 1 2.19198 0.76584 1.67871 + HypCubs Posit&Size: 0.546875 0.466797 0.488281E-010.102539 + 82 1 32 -1 -1 0 0.34437 1.54858 0.53328 + HypCubs Posit&Size: 0.117188 0.193359 0.263672 0.418701 + 83 1 32 -1 -1 0 0.18357 2.47325 0.45401 + HypCubs Posit&Size: 0.380859 0.193359 0.878906E-010.418701 + 84 1 36 -1 -1 1 0.46417 0.19658 0.09125 + HypCubs Posit&Size: 0.500000 0.00000 0.125000 0.625000E-01 + 86 1 48 -1 -1 1 0.56308 0.18106 0.10195 + HypCubs Posit&Size: 0.00000 0.193359 0.292969E-010.523376E-01 + 88 1 78 -1 -1 0 0.31214 0.80193 0.25031 + HypCubs Posit&Size: 0.468750 0.193359 0.488281E-010.598145E-01 + 89 1 78 -1 -1 0 1.58417 0.33102 0.52440 + HypCubs Posit&Size: 0.517578 0.193359 0.292969E-010.598145E-01 + 90 1 33 -1 -1 0 0.43822 0.80860 0.35434 + HypCubs Posit&Size: 0.117188 0.612061 0.263672 0.598145E-01 + 91 1 33 -1 -1 0 0.24151 2.06180 0.49795 + HypCubs Posit&Size: 0.380859 0.612061 0.878906E-010.598145E-01 + 93 1 76 -1 -1 1 7.74698 0.06987 0.54126 + HypCubs Posit&Size: 0.589600 0.261719 0.610352E-020.205078 + 94 1 53 -1 -1 0 0.39839 1.81518 0.72315 + HypCubs Posit&Size: 0.648438 0.125000 0.703125E-010.546875 + 95 1 53 -1 -1 0 0.44940 0.17349 0.07797 + HypCubs Posit&Size: 0.648438 0.671875 0.703125E-010.328125 + 101 1 96 -1 -1 1 0.22010 3.02941 0.66678 + HypCubs Posit&Size: 0.517578 0.253174 0.292969E-010.314026 + 102 1 47 -1 -1 0 0.69568 0.43242 0.30083 + HypCubs Posit&Size: 0.292969E-010.125000 0.878906E-010.170898E-01 + 103 1 47 -1 -1 0 0.24486 1.38272 0.33857 + HypCubs Posit&Size: 0.292969E-010.142090 0.878906E-010.512695E-01 + 104 1 21 -1 -1 0 0.58299 0.75926 0.44264 + HypCubs Posit&Size: 0.00000 0.846191 0.625000 0.961304E-01 + 105 1 21 -1 -1 0 1.71827 0.06872 0.11808 + HypCubs Posit&Size: 0.00000 0.942322 0.625000 0.576782E-01 + 106 1 52 -1 -1 0 0.62020 1.06851 0.66269 + HypCubs Posit&Size: 0.625000 0.125000 0.234375E-010.437500 + 107 1 52 -1 -1 0 0.22646 0.42465 0.09617 + HypCubs Posit&Size: 0.625000 0.562500 0.234375E-010.437500 + 110 1 98 -1 -1 0 0.83252 0.15481 0.12888 + HypCubs Posit&Size: 0.00000 0.612061 0.292969E-010.224304E-01 + 111 1 98 -1 -1 0 4.18076 0.10322 0.43152 + HypCubs Posit&Size: 0.00000 0.634491 0.292969E-010.373840E-01 + 112 1 74 -1 -1 1 0.79169 1.18450 0.93775 + HypCubs Posit&Size: 0.187500 0.312500E-010.312500 0.146484E-01 + 114 1 109 -1 -1 0 0.59832 0.16145 0.09660 + HypCubs Posit&Size: 0.449219 0.748779 0.878906E-010.461426E-01 + 115 1 109 -1 -1 0 1.16330 0.03405 0.03961 + HypCubs Posit&Size: 0.537109 0.748779 0.878906E-010.461426E-01 + 116 1 100 -1 -1 0 0.76182 0.08832 0.06728 + HypCubs Posit&Size: 0.468750 0.253174 0.488281E-010.392532E-01 + 117 1 100 -1 -1 0 0.24656 1.32303 0.32621 + HypCubs Posit&Size: 0.468750 0.292427 0.488281E-010.274773 + 118 1 99 -1 -1 1 0.60336 0.40019 0.24146 + HypCubs Posit&Size: 0.292969E-010.612061 0.219727E-010.598145E-01 + 120 1 70 -1 -1 0 0.85508 0.07079 0.06053 + HypCubs Posit&Size: 0.00000 0.00000 0.781250E-010.312500E-01 + 121 1 70 -1 -1 0 1.00743 0.07311 0.07365 + HypCubs Posit&Size: 0.781250E-01 0.00000 0.468750E-010.312500E-01 + 123 1 73 -1 -1 1 1.42496 2.26815 3.23204 + HypCubs Posit&Size: 0.175781 0.710327 0.292969 0.384521E-01 + 124 1 113 -1 -1 0 1.90578 1.73042 3.29781 + HypCubs Posit&Size: 0.187500 0.458984E-010.234375 0.439453E-01 + 125 1 113 -1 -1 0 0.27504 1.24875 0.34345 + HypCubs Posit&Size: 0.421875 0.458984E-010.781250E-010.439453E-01 + 126 1 119 -1 -1 0 0.61810 0.13517 0.08355 + HypCubs Posit&Size: 0.512695E-010.612061 0.659180E-010.299072E-01 + 127 1 119 -1 -1 0 0.43173 0.46752 0.20184 + HypCubs Posit&Size: 0.512695E-010.641968 0.659180E-010.299072E-01 + 128 1 92 -1 -1 0 1.57655 0.62259 0.98154 + HypCubs Posit&Size: 0.546875 0.261719 0.427246E-010.769043E-01 + 129 1 92 -1 -1 0 0.57685 1.63370 0.94240 + HypCubs Posit&Size: 0.546875 0.338623 0.427246E-010.128174 + 130 1 108 -1 -1 0 1.04487 0.05982 0.06250 + HypCubs Posit&Size: 0.390625 0.748779 0.585938E-010.115356E-01 + 131 1 108 -1 -1 0 0.70970 0.13213 0.09377 + HypCubs Posit&Size: 0.390625 0.760315 0.585938E-010.346069E-01 + 133 1 122 -1 -1 1 2.67344 0.37432 1.00073 + HypCubs Posit&Size: 0.395508 0.671875 0.732422E-010.384521E-01 + 134 1 132 -1 -1 0 0.33220 1.49838 0.49776 + HypCubs Posit&Size: 0.175781 0.671875 0.192261 0.384521E-01 + 135 1 132 -1 -1 0 0.66537 0.27364 0.18207 + HypCubs Posit&Size: 0.368042 0.671875 0.274658E-010.384521E-01 + 136 1 54 -1 -1 0 0.38410 1.54689 0.59416 + HypCubs Posit&Size: 0.00000 0.312500E-010.187500 0.234375E-01 + 137 1 54 -1 -1 0 0.99297 3.22960 3.20688 + HypCubs Posit&Size: 0.00000 0.546875E-010.187500 0.703125E-01 + 138 1 87 -1 -1 0 0.53171 0.28830 0.15329 + HypCubs Posit&Size: 0.00000 0.245697 0.292969E-010.274773 + 139 1 87 -1 -1 0 0.32234 0.44444 0.14326 + HypCubs Posit&Size: 0.00000 0.520470 0.292969E-010.915909E-01 + 140 1 11 -1 -1 0 0.52482 0.78059 0.40967 + HypCubs Posit&Size: 0.718750 0.125000 0.105469 0.875000 + 141 1 11 -1 -1 0 0.72495 0.33735 0.24456 + HypCubs Posit&Size: 0.824219 0.125000 0.175781 0.875000 + 142 1 72 -1 -1 0 0.53260 1.07659 0.57339 + HypCubs Posit&Size: 0.00000 0.671875 0.439453E-010.769043E-01 + 143 1 72 -1 -1 0 1.12110 2.33330 2.61587 + HypCubs Posit&Size: 0.439453E-010.671875 0.131836 0.769043E-01 + 144 1 81 -1 -1 0 1.00553 0.45709 0.45962 + HypCubs Posit&Size: 0.546875 0.569336 0.488281E-010.384521E-01 + 145 1 81 -1 -1 0 0.27689 0.86553 0.23966 + HypCubs Posit&Size: 0.546875 0.607788 0.488281E-010.640869E-01 + 146 1 97 -1 -1 0 1.06074 1.21081 1.28435 + HypCubs Posit&Size: 0.468750 0.567200 0.781250E-010.654221E-01 + 147 1 97 -1 -1 0 1.54170 0.58909 0.90820 + HypCubs Posit&Size: 0.468750 0.632622 0.781250E-010.392532E-01 + 148 1 85 -1 -1 0 0.40472 0.31255 0.12650 + HypCubs Posit&Size: 0.500000 0.625000E-010.312500E-010.625000E-01 + 149 1 85 -1 -1 0 0.35919 0.36935 0.13267 + HypCubs Posit&Size: 0.531250 0.625000E-010.937500E-010.625000E-01 +All cells: 149 Active: 75 75 +Minimum and Maximum Volume/Tot*nCell= 0.03961 3.29781 +Total True Integral in active cells = 1.010859049798 1.010859049798 +Total Driver Integ in active cells = 1.588167046128 1.588167046128 +True/Drive = 0.63649 +1 + 8100 WT distribution + nent sum bmin bmax + 1000000 0.00000E+00 0.00000E+00 0.62950E+05 + undf ovef sumw avex + 0.00000E+00 0.00000E+00 0.10000E+07 0.38969E+00 + 0.0000 0.000000D+00 0 I + 0.0250 0.751100D+04 0XXXXXXX I + 0.0500 0.421170D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.0750 0.603420D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.1000 0.629500D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + 0.1250 0.622740D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXI + 0.1500 0.569200D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.1750 0.516080D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.2000 0.470310D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.2250 0.422690D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.2500 0.383710D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.2750 0.351070D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.3000 0.320110D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.3250 0.292170D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.3500 0.269060D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.3750 0.245430D+05 0XXXXXXXXXXXXXXXXXXXXXXXXX I + 0.4000 0.225580D+05 0XXXXXXXXXXXXXXXXXXXXXXX I + 0.4250 0.208780D+05 0XXXXXXXXXXXXXXXXXXXXX I + 0.4500 0.194230D+05 0XXXXXXXXXXXXXXXXXXXX I + 0.4750 0.181370D+05 0XXXXXXXXXXXXXXXXXXX I + 0.5000 0.167940D+05 0XXXXXXXXXXXXXXXXX I + 0.5250 0.160920D+05 0XXXXXXXXXXXXXXXX I + 0.5500 0.150960D+05 0XXXXXXXXXXXXXXX I + 0.5750 0.145580D+05 0XXXXXXXXXXXXXXX I + 0.6000 0.140340D+05 0XXXXXXXXXXXXXX I + 0.6250 0.132790D+05 0XXXXXXXXXXXXX I + 0.6500 0.127090D+05 0XXXXXXXXXXXXX I + 0.6750 0.120420D+05 0XXXXXXXXXXXX I + 0.7000 0.119740D+05 0XXXXXXXXXXXX I + 0.7250 0.117020D+05 0XXXXXXXXXXXX I + 0.7500 0.115640D+05 0XXXXXXXXXXXX I + 0.7750 0.113910D+05 0XXXXXXXXXXX I + 0.8000 0.115190D+05 0XXXXXXXXXXXX I + 0.8250 0.116460D+05 0XXXXXXXXXXXX I + 0.8500 0.119490D+05 0XXXXXXXXXXXX I + 0.8750 0.126770D+05 0XXXXXXXXXXXXX I + 0.9000 0.134850D+05 0XXXXXXXXXXXXXX I + 0.9250 0.154540D+05 0XXXXXXXXXXXXXXXX I + 0.9500 0.186640D+05 0XXXXXXXXXXXXXXXXXXX I + 0.9750 0.408830D+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 1.0000 0.207100D+04 0XX I + 1.0250 0.112000D+03 0 I + 1.0500 0.740000D+02 0 I + 1.0750 0.440000D+02 0 I + 1.1000 0.140000D+02 0 I + 1.1250 0.000000D+00 0 I + 1.1500 0.000000D+00 0 I + 1.1750 0.000000D+00 0 I + 1.2000 0.000000D+00 0 I + 1.2250 0.000000D+00 0 I + 1.2500 0.000000D+00 0 I + 1.2750 0.000000D+00 0 I + 1.3000 0.000000D+00 0 I + 1.3250 0.000000D+00 0 I + 1.3500 0.000000D+00 0 I + 1.3750 0.000000D+00 0 I + 1.4000 0.000000D+00 0 I + 1.4250 0.000000D+00 0 I + 1.4500 0.000000D+00 0 I + 1.4750 0.000000D+00 0 I + 1.5000 0.000000D+00 0 I + 1.5250 0.000000D+00 0 I + 1.5500 0.000000D+00 0 I + 1.5750 0.000000D+00 0 I + 1.6000 0.000000D+00 0 I + 1.6250 0.000000D+00 0 I + 1.6500 0.000000D+00 0 I + 1.6750 0.000000D+00 0 I + 1.7000 0.000000D+00 0 I + 1.7250 0.000000D+00 0 I + 1.7500 0.000000D+00 0 I + 1.7750 0.000000D+00 0 I + 1.8000 0.000000D+00 0 I + 1.8250 0.000000D+00 0 I + 1.8500 0.000000D+00 0 I + 1.8750 0.000000D+00 0 I + 1.9000 0.000000D+00 0 I + 1.9250 0.000000D+00 0 I + 1.9500 0.000000D+00 0 I + 1.9750 0.000000D+00 0 I diff --git a/Foam/output-DemoMCell-linux b/Foam/output-DemoMCell-linux new file mode 100644 index 0000000..4dddd83 --- /dev/null +++ b/Foam/output-DemoMCell-linux @@ -0,0 +1,247 @@ + ######################### MCellA_Grow ##################### + ----------------------------------------------------------------------- + -->FindWtLimit: content, <Wt>, WtLimit= 1000000. 0.389693279 1.13 + -->FindWtLimit: EFFICIENCY <Wt>/WtLimit= 0.344861309 +================================================== ACTIVE CELLS ================================================== + iCell Stat Pare Dau1 Dau2 Side <w> Sig/<w> Drive VolTrue + 20 1 9 -1 -1 1 0.43011 1.66903 0.71787 + HypCubs Posit&Size: 0.00000 0.794922 0.625000 0.512695E-01 + 30 1 28 -1 -1 1 1.03915 0.63933 0.66437 + HypCubs Posit&Size: 0.546875 0.125000 0.195312E-010.136719 + 37 1 23 -1 -1 1 0.26646 0.53029 0.14130 + HypCubs Posit&Size: 0.625000 0.00000 0.375000 0.125000 + 40 1 24 -1 -1 1 0.15268 3.62460 0.55341 + HypCubs Posit&Size: 0.117188 0.125000 0.307617 0.683594E-01 + 46 1 18 -1 -1 1 1.59836 0.37631 0.60149 + HypCubs Posit&Size: 0.00000 0.125000 0.292969E-010.683594E-01 + 49 1 42 -1 -1 1 0.18081 2.61251 0.47237 + HypCubs Posit&Size: 0.292969E-010.193359 0.878906E-010.418701 + 50 1 44 -1 -1 0 2.03509 0.53695 1.09274 + HypCubs Posit&Size: 0.468750 0.125000 0.488281E-010.683594E-01 + 51 1 44 -1 -1 0 1.22764 0.43895 0.53887 + HypCubs Posit&Size: 0.517578 0.125000 0.292969E-010.683594E-01 + 56 1 41 -1 -1 0 0.76393 0.41375 0.31608 + HypCubs Posit&Size: 0.424805 0.125000 0.439453E-010.341797E-01 + 57 1 41 -1 -1 0 0.58191 0.18394 0.10704 + HypCubs Posit&Size: 0.424805 0.159180 0.439453E-010.341797E-01 + 60 1 31 -1 -1 1 0.34731 0.49255 0.17107 + HypCubs Posit&Size: 0.566406 0.125000 0.585938E-010.683594E-01 + 62 1 17 -1 -1 1 0.47542 5.96447 2.83565 + HypCubs Posit&Size: 0.00000 0.748779 0.390625 0.461426E-01 + 64 1 59 -1 -1 0 1.56935 1.42689 2.23929 + HypCubs Posit&Size: 0.595703 0.261719 0.292969E-010.256348 + 65 1 59 -1 -1 0 0.23715 1.12137 0.26593 + HypCubs Posit&Size: 0.595703 0.518066 0.292969E-010.153809 + 66 1 35 -1 -1 0 0.29670 1.69204 0.50203 + HypCubs Posit&Size: 0.468750 0.671875 0.585938E-010.769043E-01 + 67 1 35 -1 -1 0 0.28017 0.61181 0.17141 + HypCubs Posit&Size: 0.527344 0.671875 0.976562E-010.769043E-01 + 68 1 61 -1 -1 0 1.22455 0.32958 0.40358 + HypCubs Posit&Size: 0.566406 0.193359 0.219727E-010.683594E-01 + 69 1 61 -1 -1 0 0.40482 0.54243 0.21959 + HypCubs Posit&Size: 0.588379 0.193359 0.366211E-010.683594E-01 + 71 1 38 -1 -1 1 0.52048 1.97989 1.03050 + HypCubs Posit&Size: 0.125000 0.00000 0.375000 0.312500E-01 + 75 1 55 -1 -1 1 0.51488 3.54090 1.82314 + HypCubs Posit&Size: 0.187500 0.898438E-010.312500 0.351562E-01 + 80 1 77 -1 -1 1 2.19198 0.76584 1.67871 + HypCubs Posit&Size: 0.546875 0.466797 0.488281E-010.102539 + 82 1 32 -1 -1 0 0.34437 1.54858 0.53328 + HypCubs Posit&Size: 0.117188 0.193359 0.263672 0.418701 + 83 1 32 -1 -1 0 0.18357 2.47325 0.45401 + HypCubs Posit&Size: 0.380859 0.193359 0.878906E-010.418701 + 84 1 36 -1 -1 1 0.46417 0.19658 0.09125 + HypCubs Posit&Size: 0.500000 0.00000 0.125000 0.625000E-01 + 86 1 48 -1 -1 1 0.56308 0.18106 0.10195 + HypCubs Posit&Size: 0.00000 0.193359 0.292969E-010.523376E-01 + 88 1 78 -1 -1 0 0.31214 0.80193 0.25031 + HypCubs Posit&Size: 0.468750 0.193359 0.488281E-010.598145E-01 + 89 1 78 -1 -1 0 1.58417 0.33102 0.52440 + HypCubs Posit&Size: 0.517578 0.193359 0.292969E-010.598145E-01 + 90 1 33 -1 -1 0 0.43822 0.80860 0.35434 + HypCubs Posit&Size: 0.117188 0.612061 0.263672 0.598145E-01 + 91 1 33 -1 -1 0 0.24151 2.06180 0.49795 + HypCubs Posit&Size: 0.380859 0.612061 0.878906E-010.598145E-01 + 93 1 76 -1 -1 1 7.74698 0.06987 0.54126 + HypCubs Posit&Size: 0.589600 0.261719 0.610352E-020.205078 + 94 1 53 -1 -1 0 0.39839 1.81518 0.72315 + HypCubs Posit&Size: 0.648438 0.125000 0.703125E-010.546875 + 95 1 53 -1 -1 0 0.44940 0.17349 0.07797 + HypCubs Posit&Size: 0.648438 0.671875 0.703125E-010.328125 + 101 1 96 -1 -1 1 0.22010 3.02941 0.66678 + HypCubs Posit&Size: 0.517578 0.253174 0.292969E-010.314026 + 102 1 47 -1 -1 0 0.69568 0.43242 0.30083 + HypCubs Posit&Size: 0.292969E-010.125000 0.878906E-010.170898E-01 + 103 1 47 -1 -1 0 0.24486 1.38272 0.33857 + HypCubs Posit&Size: 0.292969E-010.142090 0.878906E-010.512695E-01 + 104 1 21 -1 -1 0 0.58299 0.75926 0.44264 + HypCubs Posit&Size: 0.00000 0.846191 0.625000 0.961304E-01 + 105 1 21 -1 -1 0 1.71827 0.06872 0.11808 + HypCubs Posit&Size: 0.00000 0.942322 0.625000 0.576782E-01 + 106 1 52 -1 -1 0 0.62020 1.06851 0.66269 + HypCubs Posit&Size: 0.625000 0.125000 0.234375E-010.437500 + 107 1 52 -1 -1 0 0.22646 0.42465 0.09617 + HypCubs Posit&Size: 0.625000 0.562500 0.234375E-010.437500 + 110 1 98 -1 -1 0 0.83252 0.15481 0.12888 + HypCubs Posit&Size: 0.00000 0.612061 0.292969E-010.224304E-01 + 111 1 98 -1 -1 0 4.18076 0.10322 0.43152 + HypCubs Posit&Size: 0.00000 0.634491 0.292969E-010.373840E-01 + 112 1 74 -1 -1 1 0.79169 1.18450 0.93775 + HypCubs Posit&Size: 0.187500 0.312500E-010.312500 0.146484E-01 + 114 1 109 -1 -1 0 0.59832 0.16145 0.09660 + HypCubs Posit&Size: 0.449219 0.748779 0.878906E-010.461426E-01 + 115 1 109 -1 -1 0 1.16330 0.03405 0.03961 + HypCubs Posit&Size: 0.537109 0.748779 0.878906E-010.461426E-01 + 116 1 100 -1 -1 0 0.76182 0.08832 0.06728 + HypCubs Posit&Size: 0.468750 0.253174 0.488281E-010.392532E-01 + 117 1 100 -1 -1 0 0.24656 1.32303 0.32621 + HypCubs Posit&Size: 0.468750 0.292427 0.488281E-010.274773 + 118 1 99 -1 -1 1 0.60336 0.40019 0.24146 + HypCubs Posit&Size: 0.292969E-010.612061 0.219727E-010.598145E-01 + 120 1 70 -1 -1 0 0.85508 0.07079 0.06053 + HypCubs Posit&Size: 0.00000 0.00000 0.781250E-010.312500E-01 + 121 1 70 -1 -1 0 1.00743 0.07311 0.07365 + HypCubs Posit&Size: 0.781250E-01 0.00000 0.468750E-010.312500E-01 + 123 1 73 -1 -1 1 1.42496 2.26815 3.23204 + HypCubs Posit&Size: 0.175781 0.710327 0.292969 0.384521E-01 + 124 1 113 -1 -1 0 1.90578 1.73042 3.29781 + HypCubs Posit&Size: 0.187500 0.458984E-010.234375 0.439453E-01 + 125 1 113 -1 -1 0 0.27504 1.24875 0.34345 + HypCubs Posit&Size: 0.421875 0.458984E-010.781250E-010.439453E-01 + 126 1 119 -1 -1 0 0.61810 0.13517 0.08355 + HypCubs Posit&Size: 0.512695E-010.612061 0.659180E-010.299072E-01 + 127 1 119 -1 -1 0 0.43173 0.46752 0.20184 + HypCubs Posit&Size: 0.512695E-010.641968 0.659180E-010.299072E-01 + 128 1 92 -1 -1 0 1.57655 0.62259 0.98154 + HypCubs Posit&Size: 0.546875 0.261719 0.427246E-010.769043E-01 + 129 1 92 -1 -1 0 0.57685 1.63370 0.94240 + HypCubs Posit&Size: 0.546875 0.338623 0.427246E-010.128174 + 130 1 108 -1 -1 0 1.04487 0.05982 0.06250 + HypCubs Posit&Size: 0.390625 0.748779 0.585938E-010.115356E-01 + 131 1 108 -1 -1 0 0.70970 0.13213 0.09377 + HypCubs Posit&Size: 0.390625 0.760315 0.585938E-010.346069E-01 + 133 1 122 -1 -1 1 2.67344 0.37432 1.00073 + HypCubs Posit&Size: 0.395508 0.671875 0.732422E-010.384521E-01 + 134 1 132 -1 -1 0 0.33220 1.49838 0.49776 + HypCubs Posit&Size: 0.175781 0.671875 0.192261 0.384521E-01 + 135 1 132 -1 -1 0 0.66537 0.27364 0.18207 + HypCubs Posit&Size: 0.368042 0.671875 0.274658E-010.384521E-01 + 136 1 54 -1 -1 0 0.38410 1.54689 0.59416 + HypCubs Posit&Size: 0.00000 0.312500E-010.187500 0.234375E-01 + 137 1 54 -1 -1 0 0.99297 3.22960 3.20688 + HypCubs Posit&Size: 0.00000 0.546875E-010.187500 0.703125E-01 + 138 1 87 -1 -1 0 0.53171 0.28830 0.15329 + HypCubs Posit&Size: 0.00000 0.245697 0.292969E-010.274773 + 139 1 87 -1 -1 0 0.32234 0.44444 0.14326 + HypCubs Posit&Size: 0.00000 0.520470 0.292969E-010.915909E-01 + 140 1 11 -1 -1 0 0.52482 0.78059 0.40967 + HypCubs Posit&Size: 0.718750 0.125000 0.105469 0.875000 + 141 1 11 -1 -1 0 0.72495 0.33735 0.24456 + HypCubs Posit&Size: 0.824219 0.125000 0.175781 0.875000 + 142 1 72 -1 -1 0 0.53260 1.07659 0.57339 + HypCubs Posit&Size: 0.00000 0.671875 0.439453E-010.769043E-01 + 143 1 72 -1 -1 0 1.12110 2.33330 2.61587 + HypCubs Posit&Size: 0.439453E-010.671875 0.131836 0.769043E-01 + 144 1 81 -1 -1 0 1.00553 0.45709 0.45962 + HypCubs Posit&Size: 0.546875 0.569336 0.488281E-010.384521E-01 + 145 1 81 -1 -1 0 0.27689 0.86553 0.23966 + HypCubs Posit&Size: 0.546875 0.607788 0.488281E-010.640869E-01 + 146 1 97 -1 -1 0 1.06074 1.21081 1.28435 + HypCubs Posit&Size: 0.468750 0.567200 0.781250E-010.654221E-01 + 147 1 97 -1 -1 0 1.54170 0.58909 0.90820 + HypCubs Posit&Size: 0.468750 0.632622 0.781250E-010.392532E-01 + 148 1 85 -1 -1 0 0.40472 0.31255 0.12650 + HypCubs Posit&Size: 0.500000 0.625000E-010.312500E-010.625000E-01 + 149 1 85 -1 -1 0 0.35919 0.36935 0.13267 + HypCubs Posit&Size: 0.531250 0.625000E-010.937500E-010.625000E-01 +All cells: 149 Active: 75 75 +Minimum and Maximum Volume/Tot*nCell= 0.03961 3.29781 +Total True Integral in active cells = 1.010859049798 1.010859049798 +Total Driver Integ in active cells = 1.588167046128 1.588167046128 +True/Drive = 0.63649 +1 + 8100 WT distribution + nent sum bmin bmax + 1000000 0.00000E+00 0.00000E+00 0.62950E+05 + undf ovef sumw avex + 0.00000E+00 0.00000E+00 0.10000E+07 0.38969E+00 + 0.0000 0.000000E+00 0 I + 0.0250 0.751100E+04 0XXXXXXX I + 0.0500 0.421170E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.0750 0.603420E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.1000 0.629500E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + 0.1250 0.622740E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXI + 0.1500 0.569200E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.1750 0.516080E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.2000 0.470310E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.2250 0.422690E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.2500 0.383710E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.2750 0.351070E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.3000 0.320110E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.3250 0.292170E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.3500 0.269060E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 0.3750 0.245430E+05 0XXXXXXXXXXXXXXXXXXXXXXXXX I + 0.4000 0.225580E+05 0XXXXXXXXXXXXXXXXXXXXXXX I + 0.4250 0.208780E+05 0XXXXXXXXXXXXXXXXXXXXX I + 0.4500 0.194230E+05 0XXXXXXXXXXXXXXXXXXXX I + 0.4750 0.181370E+05 0XXXXXXXXXXXXXXXXXXX I + 0.5000 0.167940E+05 0XXXXXXXXXXXXXXXXX I + 0.5250 0.160920E+05 0XXXXXXXXXXXXXXXX I + 0.5500 0.150960E+05 0XXXXXXXXXXXXXXX I + 0.5750 0.145580E+05 0XXXXXXXXXXXXXXX I + 0.6000 0.140340E+05 0XXXXXXXXXXXXXX I + 0.6250 0.132790E+05 0XXXXXXXXXXXXX I + 0.6500 0.127090E+05 0XXXXXXXXXXXXX I + 0.6750 0.120420E+05 0XXXXXXXXXXXX I + 0.7000 0.119740E+05 0XXXXXXXXXXXX I + 0.7250 0.117020E+05 0XXXXXXXXXXXX I + 0.7500 0.115640E+05 0XXXXXXXXXXXX I + 0.7750 0.113910E+05 0XXXXXXXXXXX I + 0.8000 0.115190E+05 0XXXXXXXXXXXX I + 0.8250 0.116460E+05 0XXXXXXXXXXXX I + 0.8500 0.119490E+05 0XXXXXXXXXXXX I + 0.8750 0.126770E+05 0XXXXXXXXXXXXX I + 0.9000 0.134850E+05 0XXXXXXXXXXXXXX I + 0.9250 0.154540E+05 0XXXXXXXXXXXXXXXX I + 0.9500 0.186640E+05 0XXXXXXXXXXXXXXXXXXX I + 0.9750 0.408830E+05 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX I + 1.0000 0.207100E+04 0XX I + 1.0250 0.112000E+03 0 I + 1.0500 0.740000E+02 0 I + 1.0750 0.440000E+02 0 I + 1.1000 0.140000E+02 0 I + 1.1250 0.000000E+00 0 I + 1.1500 0.000000E+00 0 I + 1.1750 0.000000E+00 0 I + 1.2000 0.000000E+00 0 I + 1.2250 0.000000E+00 0 I + 1.2500 0.000000E+00 0 I + 1.2750 0.000000E+00 0 I + 1.3000 0.000000E+00 0 I + 1.3250 0.000000E+00 0 I + 1.3500 0.000000E+00 0 I + 1.3750 0.000000E+00 0 I + 1.4000 0.000000E+00 0 I + 1.4250 0.000000E+00 0 I + 1.4500 0.000000E+00 0 I + 1.4750 0.000000E+00 0 I + 1.5000 0.000000E+00 0 I + 1.5250 0.000000E+00 0 I + 1.5500 0.000000E+00 0 I + 1.5750 0.000000E+00 0 I + 1.6000 0.000000E+00 0 I + 1.6250 0.000000E+00 0 I + 1.6500 0.000000E+00 0 I + 1.6750 0.000000E+00 0 I + 1.7000 0.000000E+00 0 I + 1.7250 0.000000E+00 0 I + 1.7500 0.000000E+00 0 I + 1.7750 0.000000E+00 0 I + 1.8000 0.000000E+00 0 I + 1.8250 0.000000E+00 0 I + 1.8500 0.000000E+00 0 I + 1.8750 0.000000E+00 0 I + 1.9000 0.000000E+00 0 I + 1.9250 0.000000E+00 0 I + 1.9500 0.000000E+00 0 I + 1.9750 0.000000E+00 0 I diff --git a/Foam/ranlux.f b/Foam/ranlux.f new file mode 100644 index 0000000..af23d9b --- /dev/null +++ b/Foam/ranlux.f @@ -0,0 +1,309 @@ +* +* $Id: ranlux.f,v 1.1.1.1 2000/10/26 19:49:41 jadach Exp $ +* +* $Log: ranlux.f,v $ +* Revision 1.1.1.1 2000/10/26 19:49:41 jadach +* starting version +* +* Revision 1.1.1.1 1996/04/01 15:02:55 mclareni +* Mathlib gen +* +* +Cgs #include "gen/pilot.h" +Cgs #include "pilot.h" + SUBROUTINE RANLUX(RVEC,LENV) +C Subtract-and-borrow random number generator proposed by +C Marsaglia and Zaman, implemented by F. James with the name +C RCARRY in 1991, and later improved by Martin Luescher +C in 1993 to produce "Luxury Pseudorandom Numbers". +C Fortran 77 coded by F. James, 1993 +C +C LUXURY LEVELS. +C ------ ------ The available luxury levels are: +C +C level 0 (p=24): equivalent to the original RCARRY of Marsaglia +C and Zaman, very long period, but fails many tests. +C level 1 (p=48): considerable improvement in quality over level 0, +C now passes the gap test, but still fails spectral test. +C level 2 (p=97): passes all known tests, but theoretically still +C defective. +C level 3 (p=223): DEFAULT VALUE. Any theoretically possible +C correlations have very small chance of being observed. +C level 4 (p=389): highest possible luxury, all 24 bits chaotic. +C +C!!! ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +C!!! Calling sequences for RANLUX: ++ +C!!! CALL RANLUX (RVEC, LEN) returns a vector RVEC of LEN ++ +C!!! 32-bit random floating point numbers between ++ +C!!! zero (not included) and one (also not incl.). ++ +C!!! CALL RLUXGO(LUX,INT,K1,K2) initializes the generator from ++ +C!!! one 32-bit integer INT and sets Luxury Level LUX ++ +C!!! which is integer between zero and MAXLEV, or if ++ +C!!! LUX .GT. 24, it sets p=LUX directly. K1 and K2 ++ +C!!! should be set to zero unless restarting at a break++ +C!!! point given by output of RLUXAT (see RLUXAT). ++ +C!!! CALL RLUXAT(LUX,INT,K1,K2) gets the values of four integers++ +C!!! which can be used to restart the RANLUX generator ++ +C!!! at the current point by calling RLUXGO. K1 and K2++ +C!!! specify how many numbers were generated since the ++ +C!!! initialization with LUX and INT. The restarting ++ +C!!! skips over K1+K2*E9 numbers, so it can be long.++ +C!!! A more efficient but less convenient way of restarting is by: ++ +C!!! CALL RLUXIN(ISVEC) restarts the generator from vector ++ +C!!! ISVEC of 25 32-bit integers (see RLUXUT) ++ +C!!! CALL RLUXUT(ISVEC) outputs the current values of the 25 ++ +C!!! 32-bit integer seeds, to be used for restarting ++ +C!!! ISVEC must be dimensioned 25 in the calling program ++ +C!!! ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + DIMENSION RVEC(LENV) + DIMENSION SEEDS(24), ISEEDS(24), ISDEXT(25) + PARAMETER (MAXLEV=4, LXDFLT=3) + DIMENSION NDSKIP(0:MAXLEV) + DIMENSION NEXT(24) + PARAMETER (TWOP12=4096., IGIGA=1000000000,JSDFLT=314159265) + PARAMETER (ITWO24=2**24, ICONS=2147483563) + SAVE NOTYET, I24, J24, CARRY, SEEDS, TWOM24, TWOM12, LUXLEV + SAVE NSKIP, NDSKIP, IN24, NEXT, KOUNT, MKOUNT, INSEED + INTEGER LUXLEV + LOGICAL NOTYET + DATA NOTYET, LUXLEV, IN24, KOUNT, MKOUNT /.TRUE., LXDFLT, 0,0,0/ + DATA I24,J24,CARRY/24,10,0./ +C default +C Luxury Level 0 1 2 *3* 4 + DATA NDSKIP/0, 24, 73, 199, 365 / +Corresponds to p=24 48 97 223 389 +C time factor 1 2 3 6 10 on slow workstation +C 1 1.5 2 3 5 on fast mainframe +C +C NOTYET is .TRUE. if no initialization has been performed yet. +C Default Initialization by Multiplicative Congruential + IF (NOTYET) THEN + NOTYET = .FALSE. + JSEED = JSDFLT + INSEED = JSEED + WRITE(6,'(A,I12)') ' RANLUX DEFAULT INITIALIZATION: ',JSEED + LUXLEV = LXDFLT + NSKIP = NDSKIP(LUXLEV) + LP = NSKIP + 24 + IN24 = 0 + KOUNT = 0 + MKOUNT = 0 + WRITE(6,'(A,I2,A,I4)') ' RANLUX DEFAULT LUXURY LEVEL = ', + + LUXLEV,' p =',LP + TWOM24 = 1. + DO 25 I= 1, 24 + TWOM24 = TWOM24 * 0.5 + K = JSEED/53668 + JSEED = 40014*(JSEED-K*53668) -K*12211 + IF (JSEED .LT. 0) JSEED = JSEED+ICONS + ISEEDS(I) = MOD(JSEED,ITWO24) + 25 CONTINUE + TWOM12 = TWOM24 * 4096. + DO 50 I= 1,24 + SEEDS(I) = REAL(ISEEDS(I))*TWOM24 + NEXT(I) = I-1 + 50 CONTINUE + NEXT(1) = 24 + I24 = 24 + J24 = 10 + CARRY = 0. + IF (SEEDS(24) .EQ. 0.) CARRY = TWOM24 + ENDIF +C +C The Generator proper: "Subtract-with-borrow", +C as proposed by Marsaglia and Zaman, +C Florida State University, March, 1989 +C + DO 100 IVEC= 1, LENV + UNI = SEEDS(J24) - SEEDS(I24) - CARRY + IF (UNI .LT. 0.) THEN + UNI = UNI + 1.0 + CARRY = TWOM24 + ELSE + CARRY = 0. + ENDIF + SEEDS(I24) = UNI + I24 = NEXT(I24) + J24 = NEXT(J24) + RVEC(IVEC) = UNI +C small numbers (with less than 12 "significant" bits) are "padded". + IF (UNI .LT. TWOM12) THEN + RVEC(IVEC) = RVEC(IVEC) + TWOM24*SEEDS(J24) +C and zero is forbidden in case someone takes a logarithm + IF (RVEC(IVEC) .EQ. 0.) RVEC(IVEC) = TWOM24*TWOM24 + ENDIF +C Skipping to luxury. As proposed by Martin Luscher. + IN24 = IN24 + 1 + IF (IN24 .EQ. 24) THEN + IN24 = 0 + KOUNT = KOUNT + NSKIP + DO 90 ISK= 1, NSKIP + UNI = SEEDS(J24) - SEEDS(I24) - CARRY + IF (UNI .LT. 0.) THEN + UNI = UNI + 1.0 + CARRY = TWOM24 + ELSE + CARRY = 0. + ENDIF + SEEDS(I24) = UNI + I24 = NEXT(I24) + J24 = NEXT(J24) + 90 CONTINUE + ENDIF + 100 CONTINUE + KOUNT = KOUNT + LENV + IF (KOUNT .GE. IGIGA) THEN + MKOUNT = MKOUNT + 1 + KOUNT = KOUNT - IGIGA + ENDIF + RETURN +C +C Entry to input and float integer seeds from previous run + ENTRY RLUXIN(ISDEXT) + NOTYET = .FALSE. + TWOM24 = 1. + DO 195 I= 1, 24 + NEXT(I) = I-1 + 195 TWOM24 = TWOM24 * 0.5 + NEXT(1) = 24 + TWOM12 = TWOM24 * 4096. + WRITE(6,'(A)') ' FULL INITIALIZATION OF RANLUX WITH 25 INTEGERS:' + WRITE(6,'(5X,5I12)') ISDEXT + DO 200 I= 1, 24 + SEEDS(I) = REAL(ISDEXT(I))*TWOM24 + 200 CONTINUE + CARRY = 0. + IF (ISDEXT(25) .LT. 0) CARRY = TWOM24 + ISD = IABS(ISDEXT(25)) + I24 = MOD(ISD,100) + ISD = ISD/100 + J24 = MOD(ISD,100) + ISD = ISD/100 + IN24 = MOD(ISD,100) + ISD = ISD/100 + LUXLEV = ISD + IF (LUXLEV .LE. MAXLEV) THEN + NSKIP = NDSKIP(LUXLEV) + WRITE (6,'(A,I2)') ' RANLUX LUXURY LEVEL SET BY RLUXIN TO: ', + + LUXLEV + ELSE IF (LUXLEV .GE. 24) THEN + NSKIP = LUXLEV - 24 + WRITE (6,'(A,I5)') ' RANLUX P-VALUE SET BY RLUXIN TO:',LUXLEV + ELSE + NSKIP = NDSKIP(MAXLEV) + WRITE (6,'(A,I5)') ' RANLUX ILLEGAL LUXURY RLUXIN: ',LUXLEV + LUXLEV = MAXLEV + ENDIF + INSEED = -1 + RETURN +C +C Entry to ouput seeds as integers + ENTRY RLUXUT(ISDEXT) + DO 300 I= 1, 24 + ISDEXT(I) = INT(SEEDS(I)*TWOP12*TWOP12) + 300 CONTINUE + ISDEXT(25) = I24 + 100*J24 + 10000*IN24 + 1000000*LUXLEV + IF (CARRY .GT. 0.) ISDEXT(25) = -ISDEXT(25) + RETURN +C +C Entry to output the "convenient" restart point + ENTRY RLUXAT(LOUT,INOUT,K1,K2) + LOUT = LUXLEV + INOUT = INSEED + K1 = KOUNT + K2 = MKOUNT + RETURN +C +C Entry to initialize from one or three integers + ENTRY RLUXGO(LUX,INS,K1,K2) + IF (LUX .LT. 0) THEN + LUXLEV = LXDFLT + ELSE IF (LUX .LE. MAXLEV) THEN + LUXLEV = LUX + ELSE IF (LUX .LT. 24 .OR. LUX .GT. 2000) THEN + LUXLEV = MAXLEV + WRITE (6,'(A,I7)') ' RANLUX ILLEGAL LUXURY RLUXGO: ',LUX + ELSE + LUXLEV = LUX + DO 310 ILX= 0, MAXLEV + IF (LUX .EQ. NDSKIP(ILX)+24) LUXLEV = ILX + 310 CONTINUE + ENDIF + IF (LUXLEV .LE. MAXLEV) THEN + NSKIP = NDSKIP(LUXLEV) + WRITE(6,'(A,I2,A,I4)') ' RANLUX LUXURY LEVEL SET BY RLUXGO :', + + LUXLEV,' P=', NSKIP+24 + ELSE + NSKIP = LUXLEV - 24 + WRITE (6,'(A,I5)') ' RANLUX P-VALUE SET BY RLUXGO TO:',LUXLEV + ENDIF + IN24 = 0 + IF (INS .LT. 0) WRITE (6,'(A)') + + ' Illegal initialization by RLUXGO, negative input seed' + IF (INS .GT. 0) THEN + JSEED = INS + WRITE(6,'(A,3I12)') ' RANLUX INITIALIZED BY RLUXGO FROM SEEDS', + + JSEED, K1,K2 + ELSE + JSEED = JSDFLT + WRITE(6,'(A)')' RANLUX INITIALIZED BY RLUXGO FROM DEFAULT SEED' + ENDIF + INSEED = JSEED + NOTYET = .FALSE. + TWOM24 = 1. + DO 325 I= 1, 24 + TWOM24 = TWOM24 * 0.5 + K = JSEED/53668 + JSEED = 40014*(JSEED-K*53668) -K*12211 + IF (JSEED .LT. 0) JSEED = JSEED+ICONS + ISEEDS(I) = MOD(JSEED,ITWO24) + 325 CONTINUE + TWOM12 = TWOM24 * 4096. + DO 350 I= 1,24 + SEEDS(I) = REAL(ISEEDS(I))*TWOM24 + NEXT(I) = I-1 + 350 CONTINUE + NEXT(1) = 24 + I24 = 24 + J24 = 10 + CARRY = 0. + IF (SEEDS(24) .EQ. 0.) CARRY = TWOM24 +C If restarting at a break point, skip K1 + IGIGA*K2 +C Note that this is the number of numbers delivered to +C the user PLUS the number skipped (if luxury .GT. 0). + KOUNT = K1 + MKOUNT = K2 + IF (K1+K2 .NE. 0) THEN + DO 500 IOUTER= 1, K2+1 + INNER = IGIGA + IF (IOUTER .EQ. K2+1) INNER = K1 + DO 450 ISK= 1, INNER + UNI = SEEDS(J24) - SEEDS(I24) - CARRY + IF (UNI .LT. 0.) THEN + UNI = UNI + 1.0 + CARRY = TWOM24 + ELSE + CARRY = 0. + ENDIF + SEEDS(I24) = UNI + I24 = NEXT(I24) + J24 = NEXT(J24) + 450 CONTINUE + 500 CONTINUE +C Get the right value of IN24 by direct calculation + IN24 = MOD(KOUNT, NSKIP+24) + IF (MKOUNT .GT. 0) THEN + IZIP = MOD(IGIGA, NSKIP+24) + IZIP2 = MKOUNT*IZIP + IN24 + IN24 = MOD(IZIP2, NSKIP+24) + ENDIF +C Now IN24 had better be between zero and 23 inclusive + IF (IN24 .GT. 23) THEN + WRITE (6,'(A/A,3I11,A,I5)') + + ' Error in RESTARTING with RLUXGO:',' The values', INS, + + K1, K2, ' cannot occur at luxury level', LUXLEV + IN24 = 0 + ENDIF + ENDIF + RETURN + END diff --git a/Vegas/nvegas.c b/Vegas/nvegas.c index da61b85..1a08f61 100755 --- a/Vegas/nvegas.c +++ b/Vegas/nvegas.c @@ -4,7 +4,7 @@ * Implementation of G.P.Lepage's VEGAS-algorithm. * * SYNOPSIS - * void vegas(double regn[], int ndim, void (*fxn)(double x[], double f[]), + * void nvegas(double regn[], int ndim, void (*fxn)(double x[], double f[]), * int init, unsigned long ncall, int itmx, int nprn, * int fcns, int pdim, int wrks, * double tgral[], double sd[], double chi2a[]); @@ -155,7 +155,7 @@ void gfsr_init(long seed) -void vegas_(double regn[], int *ndim_in, void (*fxn)(double x[], double *wgt, double f[]), +void nvegas_(double regn[], int *ndim_in, void (*fxn)(double x[], double *wgt, double f[]), int *init_in, int *ncall_in, int *itmx_in, int *nprn_in, int *fcns_in, int *pdim_in, int *wrks_in, double tgral[], double sd[], double chi2a[]) diff --git a/main.f90 b/main.f90 index 105b8b8..aa86889 100755 --- a/main.f90 +++ b/main.f90 @@ -14,7 +14,7 @@ use ModKinematics use ifport #endif implicit none -real(8) :: VG_Result,VG_Error,chi2 +real(8) :: MC_Result,MC_Error,chi2 #if UseMPIVegas==1 include 'mpif.h' integer ::ierror @@ -142,11 +142,11 @@ use ModMisc use COLLIER #endif implicit none -real(8) :: VG_Result,VG_Error,VG_Chi2 +real(8) :: MC_Result,MC_Error,MC_Chi2 #if UseMPIVegas==1 include 'mpif.h' #endif -integer i,NDim,Nmax,rmax +integer i,NDim,Nmax,rmax,NEVAL,IFAIL,iinit real(8) :: yrange(1:2*MXDIM) complex(8) :: qlI3,qlI4,Int real(8) :: shat,that,uhat,vhat,what,zhat @@ -158,7 +158,10 @@ double complex :: DD1UV(0:rank/2,0:rank,0:rank,0:rank) double complex :: DE1(0:rank/2,0:rank,0:rank,0:rank,0:rank) double complex :: DE1UV(0:rank/2,0:rank,0:rank,0:rank,0:rank) real(8) :: Eerr(0:rank),MomInv(1:10) - +INTEGER, PARAMETER :: NW=10000000 +REAL(8) :: WORK(1:NW) +integer :: userdata, nvec, flags, mineval, maxeval, key, spin, nbatch, gridno,nnew, nmin,nregions +double precision :: epsrel, epsabs, flatness ndim=4 @@ -235,9 +238,9 @@ endif itmx = VegasIt0 init=.false. #if UseMPIVegas==1 - call vegas_mpi(yrange(1:2*ndim),ndim,VegasIntegrand1,init,ncall,itmx,nprn,NUMFUNCTIONS,PDIM,WORKERS,VG_Result,VG_Error,VG_Chi2) +! call vegas_mpi(yrange(1:2*ndim),ndim,VegasIntegrand1,init,ncall,itmx,nprn,NUMFUNCTIONS,PDIM,WORKERS,MC_Result,MC_Error,MC_Chi2) #else - call vegas(yrange(1:2*ndim),ndim,VegasIntegrand1,init,ncall,itmx,nprn,NUMFUNCTIONS,PDIM,WORKERS,VG_Result,VG_Error,VG_Chi2) +! call nvegas(yrange(1:2*ndim),ndim,VegasIntegrand1,init,ncall,itmx,nprn,NUMFUNCTIONS,PDIM,WORKERS,MC_Result,MC_Error,MC_Chi2) #endif @@ -246,27 +249,70 @@ endif itmx = VegasIt1 init=.true. #if UseMPIVegas==1 - call vegas_mpi(yrange(1:2*ndim),ndim,VegasIntegrand1,init,ncall,itmx,nprn,NUMFUNCTIONS,PDIM,WORKERS,VG_Result,VG_Error,VG_Chi2) +! call vegas_mpi(yrange(1:2*ndim),ndim,VegasIntegrand1,init,ncall,itmx,nprn,NUMFUNCTIONS,PDIM,WORKERS,MC_Result,MC_Error,MC_Chi2) #else - call vegas(yrange(1:2*ndim),ndim,VegasIntegrand1,init,ncall,itmx,nprn,NUMFUNCTIONS,PDIM,WORKERS,VG_Result,VG_Error,VG_Chi2) +! call nvegas(yrange(1:2*ndim),ndim,VegasIntegrand1,init,ncall,itmx,nprn,NUMFUNCTIONS,PDIM,WORKERS,MC_Result,MC_Error,MC_Chi2) #endif - print *, "ratio ",VG_Result/dreal(Int) + print *, "ratio ",MC_Result/dreal(Int) + +! write(13,*) kEFix*100d0,MC_Result,MC_Error +! write(14,*) kEFix*100d0,MC_Result,MC_Error + + + + + + + + + + +! +! ncall = VegasNc0*VegasIt0+VegasNc1*VegasIt1 +! iinit=0 +! call DCUHRE(ndim,NUMFUNCTIONS,yrange(1:4),yrange(5:8),ncall/10,ncall,VegasIntegrand1_DCUHRE,0d0,1d-6,0,NW,iinit,MC_result,MC_error,NEVAL,IFAIL,WORK) +! +! +! print *, "cuhre ",i, MC_result,MC_error,NEVAL,IFAIL +! print *, "ratio ",MC_Result/dreal(Int) + + + + + + + + + + + + + +ncall = VegasNc0*VegasIt0+VegasNc1*VegasIt1 + +ncall = 20000000 + +userdata = 0 +nvec =1 +epsrel = 1d-5 +epsabs = 0d0 +flags = 0 +key = 9 +spin = -1 + +call cuhre(ndim, NUMFUNCTIONS, VegasIntegrand1_CUBA, userdata, nvec, epsrel, epsabs, flags, ncall/2,ncall ,key, "", spin,nregions, NEVAL, IFAIL, MC_result,MC_error, MC_Chi2) + +print *, "cuba cuhre",MC_result,MC_error,NEVAL,IFAIL -! write(13,*) kEFix*100d0,VG_Result,VG_Error -! write(14,*) kEFix*100d0,VG_Result,VG_Error +print *, "cuba cuhre ",i, MC_result,MC_error,NEVAL,IFAIL +print *, "ratio ",MC_Result/dreal(Int) -! print *, "" -! call cuhre(yrange(1:2*ndim),ndim,VegasIntegrand1_DCUHRE,init,ncall,itmx,nprn,NUMFUNCTIONS,PDIM,WORKERS,VG_Result,VG_Error,VG_Chi2) -! print *, "cuhre ",VG_Result,VG_Error -! print *, "ratio ",VG_Result/dreal(Int) -! stop -! enddo return @@ -451,7 +497,7 @@ END SUBROUTINE -SUBROUTINE WriteHisto(TheUnit,curit,VG_CurrResult,VG_CurrError,VG_Result,VG_Error,Chi2,RunTime) +SUBROUTINE WriteHisto(TheUnit,curit,VG_CurrResult,VG_CurrError,MC_Result,MC_Error,Chi2,RunTime) use ModKinematics use ModParameters implicit none @@ -459,7 +505,7 @@ integer :: NBin,Hits,NHisto,SumHits,TheUnit,curit,NBin2,NBin3,NHisto2 real(8) :: BinSize,LowVal,BinVal,Value,Error,Integral real(8) :: BinSize2,BinSize3,LowVal2,LowVal3,BinVal2,BinVal3 real(8),parameter :: ToGeV=1d2, ToPb=1d-3 -real(8) :: VG_Result,VG_Error,RunTime,VG_CurrResult,VG_CurrError,Chi2 +real(8) :: MC_Result,MC_Error,RunTime,VG_CurrResult,VG_CurrError,Chi2 character :: filename*(200),arg*(500) integer, save :: Prev_Process=-1313999 @@ -484,7 +530,7 @@ integer, save :: Prev_Process=-1313999 open(unit=TheUnit+1,file=trim(filename),form='formatted',access= 'sequential',status='old',position='append') ! status file if( curit.eq.1 ) write(TheUnit+1,'(A1,1X,A)') "#","-------------------------------------------------------------------------------------------------" endif - if( curit.gt.0 ) write(TheUnit+1,'(A1,1X,I3,4E20.8,F12.2)') "#",curit,VG_CurrResult,VG_CurrError,VG_Result,VG_Error,Chi2 + if( curit.gt.0 ) write(TheUnit+1,'(A1,1X,I3,4E20.8,F12.2)') "#",curit,VG_CurrResult,VG_CurrError,MC_Result,MC_Error,Chi2 endif call WriteParameters(TheUnit) @@ -492,7 +538,7 @@ integer, save :: Prev_Process=-1313999 write(TheUnit,"(A,2X,1F20.10)") "# EvalCounter =",dble(EvalCounter) write(TheUnit,"(A,2X,1F20.10)") "# SkipCounter =",dble(SkipCounter) if( EvalCounter.gt.0 .and. dble(SkipCounter)/dble(EvalCounter) .gt. 0.02d0 ) write(TheUnit,"(A,2X)") "# **** WARNING ****: SkipCounter is larger than 2%" - write(TheUnit,"(A,2X,1PE20.10,2X,1PE20.5)") "#TotCS[fb]=",VG_Result,VG_Error + write(TheUnit,"(A,2X,1PE20.10,2X,1PE20.5)") "#TotCS[fb]=",MC_Result,MC_Error do NHisto=1,NumHistograms write(TheUnit,"(A,I2,A,A)") "# Histogram",NHisto,": ",Histo(NHisto)%Info Integral = 0d0 diff --git a/makefile b/makefile index fc910a9..a58be6b 100755 --- a/makefile +++ b/makefile @@ -6,6 +6,8 @@ VegasDir = $(Here)/Vegas PSDir = $(Here)/PhaseSpace QCDLoop = $(Here)/QCDLoop-1.9 CollierDir = $(Here)/COLLIER-1.1/ +CuhreDir = $(Here)/DCuhre +CubaDir = $(Here)/Cuba @@ -91,7 +93,19 @@ endif IntegralObj = $(QCDLoop)/ql/libqcdloop.a\ $(QCDLoop)/ff/libff.a +CuhreObj = $(CuhreDir)/dcuhre.o\ + $(CuhreDir)/d07hre.o\ + $(CuhreDir)/d09hre.o\ + $(CuhreDir)/d113re.o\ + $(CuhreDir)/d132re.o\ + $(CuhreDir)/dadhre.o\ + $(CuhreDir)/dchhre.o\ + $(CuhreDir)/dfshre.o\ + $(CuhreDir)/dinhre.o\ + $(CuhreDir)/drlhre.o\ + $(CuhreDir)/dtrhre.o +CubaObj = $(CubaDir)/libcuba.a # ------------------------------------------------------------ @@ -114,7 +128,7 @@ all: $(VegasObj) $(RockyObj) $(allObjects) $(IntegralObj) @echo " linking" @echo " executable file is " $(Exec) @echo " " - $(fcomp) -o $(Exec) $(allObjects) $(RockyObj) $(VegasObj) $(IntegralObj) $(CollierLibflags) + $(fcomp) -o $(Exec) $(allObjects) $(RockyObj) $(VegasObj) $(IntegralObj) $(CollierLibflags) $(CuhreObj) $(CubaObj) clean: rm -f ./modules/*.mod diff --git a/mod_Integrand.f90 b/mod_Integrand.f90 index 86486a9..1da14fd 100755 --- a/mod_Integrand.f90 +++ b/mod_Integrand.f90 @@ -13,11 +13,34 @@ VgsWgt=1d0 Res(1) = VegasIntegrand1(yRnd,VgsWgt,Dummy) Res(1) = Dummy(1) - RETURN END SUBROUTINE + + + + +FUNCTION VegasIntegrand1_CUBA(ndim,yRnd,ncomp,res,userdata,nvec,core) +implicit none +integer :: VegasIntegrand1_CUBA +integer ndim, ncomp, nvec, core,userdata +double precision yRnd(ndim,nvec), res(nvec),VgsWgt,Dummy(1:1),xRnd(ndim) + + xRnd(1:ndim) = yRnd(1:ndim,1) + Res(1) = VegasIntegrand1(xRnd,VgsWgt,Dummy) + Res(1) = Dummy(1) + + +VegasIntegrand1_CUBA=0 +RETURN +END FUNCTION + + + + + + FUNCTION VegasIntegrand1(yRnd,VgsWgt,Res) use ModParameters use ModMisc @@ -76,6 +99,19 @@ END FUNCTION + + + + + + + + + + + + + FUNCTION VegasIntegrand2(yRnd,VgsWgt,Res) use ModParameters use ModMisc @@ -106,6 +142,57 @@ END FUNCTION +SUBROUTINE VegasIntegrand3_DCUHRE(Ndim,yRnd,NumFun,Res) +integer :: Ndim,NumFun +real(8) :: yRnd(1:NDim),Res(1:NumFun),VgsWgt,Dummy(1:1) +VgsWgt=1d0 + + Res(1) = VegasIntegrand3(yRnd,VgsWgt,Dummy) + Res(1) = Dummy(1) + + +RETURN +END SUBROUTINE + + + + + + + + + + + + + +FUNCTION VegasIntegrand3(yRnd,VgsWgt,res) +implicit none +integer :: VegasIntegrand3 +real(8) :: yRnd(*),res(*),VgsWgt,x1,x2 + + + x1 = yRnd(1) + x2 = yRnd(2) + res(1) = 0d0 + + if( dabs(x1+x2).lt.20d0 .and. dabs(x1-x2).lt.20d0 ) then + res(1) = dexp(-(x1+x2)**2)+dexp(-(x1-x2)**2) + endif + res(1) = res(1)/70.89815404d0 + + +VegasIntegrand3=0 +RETURN +END FUNCTION + + + + + + + + END MODULE ModIntegrand diff --git a/mod_LoopSpace.f90 b/mod_LoopSpace.f90 index 01492c0..fa59b8c 100755 --- a/mod_LoopSpace.f90 +++ b/mod_LoopSpace.f90 @@ -14,7 +14,7 @@ public :: Eval1LoopIntegrand,Eval2LoopIntegrand real(8),public :: kappa(1:4),kLoop1(1:4),kLoop2(1:4) complex(8), public :: kLoop1Full(1:4) -integer,public,parameter :: NPoint=5 +integer,public,parameter :: NPoint=4 integer,public,parameter :: NPointMAX=5 real(8),private ::mu1sq,mu2sq,E_soft,gamma1,gamma2 @@ -43,7 +43,7 @@ use modmisc implicit none real(8) :: uRnd(:),Jacobian real(8) :: kE,kE_sq,zeta,theta,phi -real(8),parameter :: mu_Loop1_sq = (100d0*GeV)**2 +real(8),parameter :: mu_Loop1_sq = (1000d0*GeV)**2 real(8) :: sinZ,cosZ,sinT,cosT,sinP,cosP real(8) :: cutout -- GitLab