Watson Ladd on Sun, 17 Nov 2024 18:09:27 +0100


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: PARI/GP timings for operations on biggest known 41,024,320 decimal digit prime




On Sun, Nov 17, 2024, 5:55 AM <hermann@stamm-wilbrandt.de> wrote:
On 2024-11-17 03:08, Kurt Foster wrote:
That is, -23 is a quadratic residue (mod M).
> Using the usual formula, we have that
>
> (-23)^((M+1)/4) is a square root of -23 (mod M). [Since (M+1)/4 is
> even (in fact, a power of 2), we can take 23^((M+1)/4) instead.]
>
> However, this does NOT insure that M = x^2 + 23*y^2.  One possible way
> to test the question is to compute a square root of -23 (mod M) and
> use halfgcd (Cornacchia algorithm) and see whether it produces a
> solution.
>
> In any case, the prime M splits into two prime ideals in Q(sqrt(-23)).
>  If M = x^2 + 23*y^2 the ideals are principal; otherwise not.
>
Does your argument apply to the quadratic residue -3 for Mersenne primes
as well?

What is different for prime p=1 (mod 4) where we know that -1 is
quadratic residue AND that always integers x,y exists with p=x^2+y^2?

Q(i) has class number 1.  There are two things to worry about. The first is the ring of integers will be bigger in Q(sqrt(d)) than just Z[sqrt(d)]. Thankfully we know what it is but we might get 4p out instead of p.

Secondly the class number might be larger as happens for 41 and -5.  One of the ideals has a generator with norm 41, the other does not. 

Thankfully we know the complete theory of representability by binary quadratic forms.


I "easily" can run the test you proposed for M_52, but as the last run
that took 8 days with 1580% CPU, the new run would take the same time.

So I looked for which Mersenne primes -23 is quadratic residue:

pi@raspberrypi5:~ $ gp -q mpe.gp
? c=1;foreach(mpe,e,if(kronecker(-23,2^e-1)==1,print1(c,","));c+=1)
1,3,4,5,7,10,11,14,18,19,20,22,24,27,29,30,31,37,38,39,42,43,44,46,47,49,51,52,
?

Then I chose M_31 because M_30 did not do Fermat PRP test.
I used the patched software that writes out the "M_31-2"th value
making use of LLR software Fbase option:

hermann@7950x:~/llr405src/linux64llr$ taskset -c 0-7,16-23 ./sllr64
-oFbase=23 -t16 -d -q"2^216091-1" 2>err
Starting Fermat PRP test of 1*2^216091-1
Using AVX-512 FFT length 10752, a = 23
1*2^216091-1 is a Fermat Probable prime (23-PRP)! (65050 decimal digits)
  Time : 3.630 sec.
...

I copied the first value ...

hermann@7950x:~/llr405src/linux64llr$ grep 216089: err | cut -b-60 |
head -1
\\ 216089: 0x05690487136e2724b85c71e5df0a60d2e4341edb4b6994d
hermann@7950x:~/llr405src/linux64llr$

... into this GP script:

hermann@7950x:~/llr405src/linux64llr$ cut -b-60 M_31.23.gp
p=2^216091-1;
s=0x05690487136e2724b85c71e5df0a60d2e4341edb4b6994d1604afe2f
Mod(s,p)^2==Mod(-23,p)
hermann@7950x:~/llr405src/linux64llr$


And we have found sqrt(Mod(-23,M_31)):

hermann@7950x:~/llr405src/linux64llr$ gp -q < M_31.23.gp
1
hermann@7950x:~/llr405src/linux64llr$


Script size is not too big, so you can find script below:

hermann@7950x:~/llr405src/linux64llr$ wc --bytes M_31.23.gp
54067 M_31.23.gp
hermann@7950x:~/llr405src/linux64llr$


Regrds,

Hermann.


hermann@7950x:~/llr405src/linux64llr$ cat M_31.23.gp
p=2^216091-1;
s=0x05690487136e2724b85c71e5df0a60d2e4341edb4b6994d1604afe2fae3364165ee2386a8b37c6079e38dc12ececa0d52b06537443dc9ef0f1968232f892d44add1db66e82b3bd70e3211e7be48d0b36c7888604a261c5778e818f156d686c7d5683fa723a2274debc084b2692b392b896e1dea43b0d5116bce7756a4804f26d01962fee88405cf829ea074a437cc6d0e9d8d1d5295977a8a672dd2b23e0ffff449016158e57ded0e9cd45e1b50cb447d6becad42c195035ad67fb31547cf66736203063a8f463ff96ef5885fde02ef8d72ba325a13b293be6471a230f26f0f048c5333342213a6806c2f1210bb0ed67b72bd8d20cbc2585428a2760f873b3f9f8be9569570489c9ef25aec08605ff5666a4ea9ffbb6c7028c121e21e8bb27d314547251e320f508287149cfde6b6ee5c9c90793f2c0498be2d0c9d5dc645fed405d81967b05a2e199f2f3e4e8f799a0436e74032b19afc3a2df4d68476d9838797cca6bcb38ddeee792c7814b79d3a205bff63d0a6f127041062fdd23e288572ff9c629dd272fcc1e4a26eb77a64d2f3641c8999a6699d9741ea9d19371f94c6cd4d0237b325fde25874605b8d4ddc4b6aecc34dbed182c7c503fad156a6b2cabe84cca42a9cd9a1fbfc98c97e4552172741a2b4e76e8262ba6f1cd60f1ba056a7369d4bb1d6509494505632dccf0ed28
c8119766de46cb4ccfde3200331d9da591f2c9d31f929c07a4396e7a779f0951b6ee73e4df84902737a4a3eb5d9e3cd9330aeda8306864023adca546c6af1ce674df918a37892c12b8cb3c01b90e2040a943e64b35bfa81e35985b1ee0ced509ebbb45c46f6945323596eb8165123ddc6df86de79d4d2cf3aba8a58599763220727134e75da90506eb52bdabc80a1b01e86add5a3087c75befd8f4df2461235fb9c90c807e271da9616636578d6d03819eb69c47e279cb662bc51f319f8196afc68aa402d52a7a9fc191ca0a5a6df746c6934ac8166e04a73447836e93a653a651b54c23f0be66ecb7f2f8c2efd574154b37ed83dbb2aa69e1631d20927148bfc1cc67e02dd3d7a6e3065f6261971a090806fba0ea7d9da9275a92f51e6dd0984ffbe94573c468e576233f28b0edee97ec86bc7b49546d7c0c2b1842e95063c627ff5875f0d1348e6ab56037a39f787e380dd78a96c76c63eefbbf884d0324a33314b81d114e8fc0cae83fc5c3686bf95a3197cd0f3290199a352ddb1db72d5329a995b16fd90cf7a5f40ac6cc412a0d70f3e3c431573003957392632a4f6f1db82d02b319071f3751ffef0e5e7b91634c6e553a6759be4daa75e7f4f869a05fc2733e6cf69bffaecd220f77474931eab96497dc34c7763e51b15bb3ea8ce284034e6ae010b2993820f3f9e6e2e058bc6d6f28
cab4779393aa4e53b1feca3449ef10f1bc4a7381d484dc9a07cc8a75df46da6999b62561ba68761fde21713dd1fc7310f7e2a6bbb03ceb3985ae82cdd244b8139848bb0323c6eb9ecf4b0e51d4b01a54f8d8943e840559a2f1d8f05add38592d2104bfe155f8ce15347b68d3057334c6abb421ef8f19a180829ceaa0d49167f32be6e37138882c1deb28e68b7a3ec88de2e480d7a727939b02490104902b16ed78922e21c0ee021809a3f92b14fa1ffa32df42b2da09f90d79a7259a0ae82e718fb6c9edc190f0e14608a94a2ba86c95c148d234fe7809585684d86f6efd86812819f7023bf75ce85f1bcfc33610fd019142f18c513c1a376e21a38482ca41ff7e9959858deb8d6cdb156fbdb06cdc493fcf809a0958af2c5065e6a2d2b860268a2e7b49714a1d6b3864d0dddd9c1f6296dd507c27397d1870ff1c2e21d0061f19bf0b4f0ccf4f8bd171f0075f460b2605cee1310be6232d8f8dbdb38423750898dbf048ccb1a0b28b2282ce5ccdf3ea5c03733b6508c46e02b81283997dc0acbcac4226c7b9116c76e960d4ddc57adbe5206a7607bfd9e369a53e53d1f20b4b5662cfdbc9d51b48b0bb0e462bc6c94cafe15a07746fcc84e818c237692d2d8680865e2be03b09e2e1095affbd624206f0752a6322cc1e793531fdb456b17f24508a7c5251a4616ceb62d2cdd281bfb51195d5
f64e918be14177339acc461f8cb63cf9a0ac411df5f8b903904a7a315a8a6b56edcc7fb6e6ea065fd6549da9e60c61d752f0493f9f1fae691f144721a7705317655609e8fec8600fd06ec965acc3729884ceb80ea51b4dae9f64e99bb1b66164b70983e17c2fdcab373d833b67e18bf21a9008704f7340a5d8041242f2a53d516c85b467a9ac7f4e3d2a1474359f20b8dde7fe0d13459b592b04eb21259525f1e711dfa209747b1840ec66a08f8527b588d764c1af8de613014bf6553b4405eb2ebfc6ae8c630752e89d2a49e4bd1ca3854195bfc37e5922d0c6b1c65ac97ebb3e0c38d98617a5830c24554f38d83b9d174bda8697d7b4bc36ddeece488cb2a43882fccd20f6e3a6de77c2f892b1446e596003716e83d4b3abbdf7bb9a03fd68f0d0bd53241fe0dd3214947ce719b26f70ee70f712749cee6af3be6cab395f797e1af8784ea5afd3ff03892ae45f31c2488613ff82a68b26dcb981d9bf2e54f7fed5ebf041f0d468bc177f003b28a4922be32791becffc8135a1908882c1748ba6db478a044dadc61971d98ef17dd949395aa6025d27c0d949900f73d1381b19128787dff2960beb6423bf9661816a04e63ec47a531f3fa59550d3cebdaf0a9d01d7762d5a67ef20d32eb2cf444f2a9f4c416e98a743fbcf8c58e9a031b4e92f7d7e7ca229105ca33d620cda61c2cf0ed7128e
bd89ae14c037690992a012809c9b9da8efa835f1a18bb9cb119c3491750ac22cdc159a4ad0af2691b0196c5ea8b261f3966e7fd52c1b033286ca1bb454142c95938e5caf05ab97df8d95232499512b32ac4b423c98a7c9b5a8abfeb31425677dd973a8d379de592af29a7a5aafd274e487abe0a392e10e0fe256a13daecc689068503f0be5780489f77921100ec1230d54bd19d46077dd6d94c95dceac3bd0124dccade60e7ce27c970a40b58540dd430722b80e521a664921b012579cd0bb42967c1074db6407a4ab562c516bef908e508966bb7906414167487da2c0573f1615a679e9fa4cc43d545fa1e40a0e81b3df0a3c434eba8eb193689d856e238b461f4a067a039205eaca4b69b724ba0d3bfa3318be7b010a1ba900b9ea7ca975938f2c7a872fe1d9ed3a5e65d21234238d8cc24f3dda915db65b88753152af9c550e11b00f959c3d25641b69c79d3d415b17b099dcb0efe68b38e02e7128f4e74a855669b40fc9b2a8fbd480f2dcb7863f9cf2ab0c794203e7ac831a16cb16e2e6f060858a669bafd0ad5ba90a2ac558941f1855a968fecc510f3a1876ee0847bb4f50505a7eaca52e0e14b97ac6f9c0050c893303bafb6836b83d19562c3927856e4d35247345f30aec7d09c848c73839ed7da53e398227b29e6cacc6c72f530e16668e06db6fe46d10cb227dcd17e674188f03
f0a3ef716bd02edec02f8e0eecaeaf8b67718457d60260a7f6dace4772e11bca707b24eafe90a58895007a79f5f615128d370f02af6da44d9101c69ac6bd87d115d155298e76faf76b8dca7236afd6add4ad199b2f7e5183a162f041d649d489b84f6b77112b3f18b5b97502e80d3e4d15b16260cd231a10c427f0def5b2f88b26f0c2a720a7e7d3b9b371d5cfddf21c69f43c9a3cd93311e3582bab47f85e4ac3fa8ca56e9bace255f11e03dbba358c31789cf29215e68fb3cfde5619ae2e64042cb907055acf23761a0903bf2cc5b3fea9a2d1e0e62f5219ece8633b53040de142aa825ec75b964b94cb69f73ac823169cd90ab8440a3f6710f2a763fa39850155be9a16770af01e869ed8e543f54bb1f3bd72c906938199b56ef32a09cc428c6e34de9515c95b8f18dd357bb5352aaed63570f2fee2a97c90e0f4adb2e1f24657fb37418c6a2760421ede4edcb672c13aafe42edd23dc9b4d8bfd431dc294574f86c92aae32fdda3830989f63149ffb661545d8adc1bce66e7fc840a7818cefbf3390e0fb4616d5da3f6584be8c0241ff7de94e288aef1231a78d5a3dc0f1e345aa14e024da27502fdeb5ca347b9a80f1eff6f28c2d474a9f6e249d2e6c25ba051583d021e6507738ecc6a8c09b6997466ff291743fa8c1525cd83b3d7b4bb66daa3016f255ea883d8fde2251c5c90b260e
87ce20422a052bce6b5e3a68832fc70f7008eccf68501d2b2b7571463ab945597a1d6381ae17ab92720328d6e8db161a8fa7712d061a36c39c272c7b021ef1c6f3f5af9b9eaf49cdcf4e0ec5a7d286c14ccc29981a05e83598d9ab62420ae09ce0ab710220e1d95b95fa31771df758da9c4f31d7ec942a3869d326947b570600705c62624d47338ad787eff64d6195acd860ed5b9dc8b83bae846ada8103f40390b93aa0adfb3428ef5a464a12a65d85a01b7851a9d36cba1a671844d515cbe706ba35429196bb43cbe449e09d6217d4eea01e3fa4933e52b02490f31ec6377b8accbd0b19c5f55133d90fcd6d7bbcabf7831c5ce63f8be2b93b8c6b161e279d01feb79e4230018f3e965b790b469685c6407afa7691cefed2cdfba29f417766d770de751610251c82feeee0df024cf7ab61c7e5bb96b42a892600329081d822e777a3188904c9a3408e4d5c74eb82cdcb6117e5d54f5df40ae25af88e5689d86838200ecb8ff0a772a6d2782c4d2fa06dabf80a7cdaf72a0e6f59847d631f3d5d0bde9b9c4ca74962df39abff055e102626c46b87a44f67a00180ff6692771d75b35de413cb80fd29c317edeb6d68e4abf28d7ea1f3d40f9aa7d31d93172682b69b09fb008253847ce86810eb154b87410d94ebeb3ca68633bce2e33f02b3157b0f1c09006363962c0ad425e1db57d7ca3e56
7cbcd935c68e3cf32c54d9b050822fd2973110018fcf51b6fc7a9213bd73e9764b624b20c806bc70318eece3617318f5d141f625f94e603374da093fe1670aee4ee5611f0c99e16d4fd216a05e88825fc4d84ff83c91a453a2d7ae698a6971c70afcc47556d7bea88d7b7e076e4db2fb6d92d376c8690767671a431855e64aa2cce01b16dfa5a883a2c9b3531d84f4d85fd441abd90d3c3f9d5f10c64c8357f31a76e9d130fe315533388ef2f6632ba97834a24893fa8b1a9bc0d595a9be2ddf7d153285b1af26f561b54d86994321654ea2c03971fb7e656bcf3ed60706855791681237a4651a131e673c7804d0967be6283cfe6959b589e89bf1df4ad8eaa6c04fb9319d932967cb24b048dc6fa4679472dbda1bf5fa1a5f6a951ca6b708c973df7f48ae75b6362059da315776af0d96112ae3e8e5337fa060e5fe27cf3dcfef8c0e2ab9679a591ae77a01c46a4d804edcb0680183798ceafbcfdcc5817350394c89abb0c47481bcb10bc779685086a0245e8b20e1519282d28236831235eab04f12e5126f70f216171319fc5d4eb9f1363f2ba2bc417ee36a94939c7c8fa697f2cf581a93fdaf8b2ef1b8c6c3018a2af0245111383fd57dff87d979712b808b33ca85db99742be76c15f7afdb3798bbbfe9328ac2ea402788ed6a7f5429bb1762290b1c91f41d7c492ea5496a389ddfcd65
4313257d84717ef01f9f3b834c415592711cbd9dd14b4f0b20971187ca0e4ffac59284c49cfe448b7d4747803de7ff1208791932ff0dda88b349cd3553eb600877ddfef4c85dd12deb394afaffb39a926c948bd4985705da71eea518980af842ee006e45b187acd091e2518030ad0bc1629770beb785fd26ac2048ddad3854d0533acf2b71848fb944d83ba1670645778a36d58634c0dcb084188dcec572ac6a160e9e3609ac144d138b1146805700b139ff811ab539ae08d59bf758d81a643ce16cbe26aafee0f13e9bbdf15f470377ebfc43575e43c35a92a6b376e1fae46d536ea59bb563532f3527b8874c5dba0e949d8b8eff4758eecce1c9ad4cc26f3e212a9f2b22947fc89e3ea2635d2728c352c0e0d5a3d7994315f35c4922cf9ab3d9641840ca95b955a7af90d549f2c9368697c65a1a8fc24c436c830887b0dcdf3d8a6593a5b54d3e99621fc0c1135e4df1f624611ec155142bcb6edf0fbaf82c3d5958c551026a8f37ba44e5a9e098b12a9540d2dc319e85b1bff7a37242f94da780732bfeded388495be64a456dce31a72e1511b71998f921599dabfbd56924026a267113b7d050c489cda0b5ca159ddb80326cf04715122322f002e33bff19b44611a9351f4c08c01da48961e7bcb456c88ca3f6621aafbe75a7b67abe9b8cfffd060f6c3f380b36323c57b3e41de6a08f1f
4c33eb4de404e7f1edeff4d68f63c8aa35510b5740dea93bf0f3ee2cc68f36155607733bb7cd9c7b6031a12754f30465943b7a1b5575b23f8c66187d46943943cc0e4634b89a8ff3387b296994cc589dbb6ae22f2afb82b82c57fbf346d10f55adc91b9ef282ae74211124c9d9a689274371539cff85177bf6323de4535f9c5d6186270bbca7a8a0fd4f44a2c491906d454f8c04406effa0f89c7bb9e2f1e94f57d9bc59790d7ff45fde131aa7d43e059f9750cb72f56d31159c0d65c830bc90c9579053bab29691118efe1964d0a0fe661bfa2a877d32faf6e9b426d6866b9b1d4d97066c0c8e905fce482de5d045790848ca21a7067f35831660e678ef81fe39aa8c9ff7a9b8200878a0c87cd6f7e239a728d6cb9c8fb8c7eadc8810f26ba4cd53a4f44b463074801160c57e1b217b6ed0ad83806eafd201948217bddd37d82b83644d2f2accc07af891b202ded5db2c10692e4d580e3d3182a126cac62a0d1978c968b0eefe6e60537b4a3d490ea1f7391a1c79e62823c0b4d485d8c7a11d534acc76e2a19198ee503dcb1c85c48d442ae5bcaa9307ea69628ac8773e6145a4f1823406f51fa6759824dbb7727b4d17deb10465c129e418a9f6650c370df074f3ef0812e38b2a9e289adb39f1256ff60ba67ce03ea04847abc65399321b439d844a1f6631f180fbaae109822e2b26d1bf0a
d77349546ec997e7bc9d34a03ad504f7beabe8487c869af0df4cb7a5e7215ebdb4899cdff4e83e174deb7e0a8d4ba1783876ec84693bf208b1dff54ff7e6907164b4590b83f05d91be49c624d94f5f6bbe228c728a23f8791e85c14a52f83752d67d771405c2fee7955feac1ed490fed1bfff791465e81b23efe4452b338e6bf042c26b494cf674d4b0fabe99e8efb6c833e900362a38f355b2a4d7e6877e0c906d26eac982df023db1e88fc9427d9a98df9e6a2f2b889db9825f9213792235a36607a6826c5a7dc5d663e26fa00688c369b06a453b88eb3487071c9c196ef68c6a2b511578dd7fa6619e80bb030a94ce69c4700615e5be340d5aa979e3ebaadb201c6343f5d1d621297e3471ffeb972a29d9a40eaaf1efb51445013aaaed257b0569c192e8bcecd14d54e50d5a410c872c1a51ff0bb55a90e60dea0ed160e5b7ca197eb36d38448d564c715485fbe84358fb6ed3848f8405f217682180ebf9dce597101315e9be9955c217457ca0a03ee3b927311c0c9d174214ad163e177a3075f6a7fbe13ad9ac837e03d7cf826e8b5088ef82396bc65cf158c8eb0b1137442ac052719682208947cf9ff62e7fcf5dad951a588eb8b1787c917aa2b4e395166b0d28a50d0aa3c0a0859a5d492a9471250793b5b3cc04ec024c11a6330a7a6d4b15803707f07b771f25cd4cd71362a1de246
26d7e696bee8288f241ee9fa4bdbbe2903bd3029cb03f9978b6703ef1661d39ec64a3814e2af291467e5c045e2dfc6f2cd19e86ca0aa3044318c7b11c1f15aa4302bbb77944a8389c7264ba18e08b90d0a4cc3469c9bcfb6b49d71fba3291588a282b2a094726ab9de619fcd2a4fa02d2b9cd6a43cb390746ab5afa52432b7166b1a7669b75863cff94b6c2376f52a27ffd01728d8ad0d35413b4f4991289267624ffe1f9897e8ff7af855ebbdb5721009ecdbe73ae3eca48288a00a128f6526e0ec6cb5b7ca223d0abdb488cccbfadc85677effa82c67f9a4f581c5dace49ee3446809b40d002d31fe86d299245ee3016fdfc100a91f38474698e023391ace184008b9f74c4c35e4394c7ea4daf65045b873db306f5a25e4c226cc8a6ac74fbdd0b563eda330632f8774f16766cd6294b1221433dc22c19d16a69e0edd6f9e690da9254d740e79bb24051b9cb5e3a7c2d7df624f69500290dac4b1233614bc98dac04b1e03439a66bf2e712d912298d121351c417d63fc16a2de65c4ebd9278e92a02f270c3115c0c4cd77ffc1cd8edf6efb5481ac385d03d67b91b65472f19609a1fc38d70755f6cc7d6d8b1799f0b1c45a43a1a84ec32dc1a4e77bc6094d71a362eb5a1cdb8a8ac992c71b3045b346dd58e45bf45935aa9a2c675bfa6112cdeadaabec05213430d7ec7a34d18fc3804b91c
8aaaf0cc5d5b63f01ecbacb886484831369349959c490f9dc7f0d9a768fc40f837712c069ff5e5e3103beed2fae1e75d119672e0ccbc2c13e5a57decc47e12105e077a431356305a9375ae9112a7534bae551ace6f772944c7cf6c031ac140bf6322fe5e33e05ca40dbcea67d157ac81a0d5516f17466891f8bec055481d7001968a4902f4c0a807fdcf789495c6eb20bf1fd385d296125aeb69a51ac7ccfceba543442563233da36fde2afaf18385c26634b33af388c960c61edc4981f30c604aa4e9d14fd2b630e6a3cd90b5d4f3497e18cf6a4d32b3e44cf48e019e45feaa018521c4a05ef783c2d24b352581f2fc01300aebda84424f145c235cea685ebed040b6fd05fe63d129a416ec83fa2fb32ec6996e6d9055cfde147e788f2e06f80207ee4f67b5fd0a445df4fed4344bc34d1f4b0fcebd8d5c9b6c73e4e3354eea1ea3890a29595ca8741ca95b4f54652399aad6c1adb9e9ce0ccf1253dc732c5460dc83ce91222ce7fb0fa7ee447b1fc14a4c39c9ebffc7cb7cc8f7abdb34c50e48b48b47812bbca35afe4d730164f3ced0c468aae06f8b9d2d2c4f5715b0619750f5e4b9e78ebb697916f8bffd59e09a5e609f14bd426fa575181045e7e10ec80296aa05ff9031e16498c8154f7e8810e29166cdaf84b7f40fb42abd16e9d4c3954ec09962a1a9287361eb32cc464e6747a8e5
f72a1e0edca8feb66f1beabaaebb29851bf1de6e9c4e330d662b6756ec51613c1529349b63efa015ada197f0318d482045ef706ce70781cbf18fc8ccbd46c4a0c76454905e48e7f93326b787402c0dae0e41ee97eae5f9fe0b674605ee13bee2c20ca0be8d3e138885387a77feb0a4e18804f5ae907cd644e9262d5ecd644ffa6b74d2897d670a969e37478dfb51d92041281f41f4f7cc551792eac0e4f370183701721fa4934f305f95650a7d55ccc3561f90317d5d2d53d2312a4206f5ac7fc4cc497686a8233c67a5783e5a90ccce5ce9b448dbc0561fe9bf5970a00f06c750d0500057dbad14996ee14230a64584aba753e79a41f441eb7c06e385b77ef90e5ae8a0954347b864e3601f9442165956e82b72792751dde691cdbf46e2c53a4b5f469e5a800b22ef8a0f7ee356e5d57ef489323c2af1787bc40665754edf1229df303e1fa5fb1d444780e9e9c4c52b511efadaa59072dfb0a235c41ffc323982253fffc41dd5d6e71985ef88f4f69a149f27af33482d29f1c7eb9766851cf87bb0667050288965221371918d348bbb60ccc652fa26ee5da63d5c5a255cc10e6507782fcae8c25462b703178ab6b6e0ce996359a4a21e5854277f5a58b9f3353ab6f01964335cc85b01faa3c9291e1cb99fd3aba14b3130805b347255aa29027dd1a58d42a4a2ea5a98f4cb1b789279716515
3e6c972fe1bfc5a11db18ecb2fe4e152e129bf3511ce23687b53911cebc4d6655ad2afb2319733a9e908b1e2b814717a0d193a2f8aa284df5eec31341c1e79c80940dcde04f6290c6fb6cd80b0a03c820de9d86b18f7e2c214b71d97f888c0f33146660b33cb118394e7834bbf88bbe7dca5ecc0a7705727556cbb0efa09a8405d3f74157a32603dc5331a76ca1bacf200ab3db5cd8e7a657d75954ba7ff61ebb0331176b92d4ae59b8cb3e5aa89f4cabaff27f653fc17106dee308e9ca12cfcf5a4549f447d80b95f2bea06b71e6579e2e9f522644eb50687265768f7d150596a7ae57177518b8aa9f4008fc49dc6e61da69d47bd03b2c851494201c54ba98adc66fad1698280612c23f1c5d90bdda4649c918925b0c7e02513dce665e6e7a6df805e1e3c96283a913732864ca2c303fcfaaea08de754e550041ec6cb575d866a602df4b2aaa0331585e9d99149eaf1b2e6af4bb4625388177937b3a76d87f469822bd61453e277cadc5fcf1a1dcfb8fcb52dbf9270fcfb876fa18034cea8f76f4cd8ccc992ed25f3ba823a83a9a7eb6a4f164f3b2bf3e21477bfc82893bdfd730c6c5ef1ea214afeb5dda1f2e1066675fe6748f5448f76beec82d18f80074a16fd52cafad6f4840ffab0ee6b47b182afec57eeca2126b25d8d0d4cbbcd8b6c5849f05de33234d1b3257ec29286e5595726a8
bd811db0e5f46917a34d779a74256c9070f2d71b9f3ad4bdd949455d48e7fb2b75b23f8d2c362629d774083029bac9141cdb4bfa7ce9b7f598d6cc2dfcf6fa500c081b1d353ebc5224bfc17ec6a6634e02080a7e4cbddb37e0e77d572ddad7935fdc6ed69b67b923c9fb98df40760b88a59e86e6e7cc351dc7d504d1569af975fe9ce6fec859432379e484d21167e9557e530c8babf71785b5ba9ab2de4d91523d15ed143503c5960bb6fcb39ce1217ceed9db7a9b7beb3265a48c38863a96115e8c0c9dd685d49c6740e55e138fb35ed81e6108737f4bfd37608ee0db5184645c66e52e684a8e9a5dc7f2e6ee045f1427084936574b055bcd500b58d720bacb83b884ed8ac701f96d410ddd4f8f7cfbb0df9177e602207e833d012273146e9f458ca2ea80ee4c4434183ddd147fbcbcdd17054fc62d91918bc992c867b8002d31f0e1489d969dc29e89550b9fdfcd68c1eed9342b53b512122b4e82fb56a2f07289ef82f3c3b416dc9d6dc125cfe0e1b320df3e31b08ef8563e65e66b721ddef7d192a0c39831ef15b175ab2c4229643ba00d0c85d34e01742165f2c9463cd4591e27d889ad2fdbe43da57fe9b77bbd4c34c8c849c589c53b15b914e3fa79ee769aa418a65fb0b5115a7985904b51da9359a477a0fa3ffc71a0924cf0543991a2b33be43965a47c1ed5d1aac01b1f5ec1cc78
55ab3aa19245c6987f8f2ad188da15cc3cf130b84175d01af940969b4ed13aabb8700f66c8ffca6fa4a3a22bffa74c910e2785ff2db8eefea298d88ba6f0a20648ed715d1c94ab61c2f6fa02a133ce8b4550874f51a143a7e35c161212e598f291956181f5be8ff20c46706783c83b44a3d56d0a8b5896e014d9828366994e665f4db32eea4e9e55a91970b71fd1aa5d14a6b764a31d99a438d4f764b4d1576ce0ead8a21bdef0b49a6414aaebcacfafe0da0ad32ff7ffcea42005516352fe9337b8c54a267b1f8dc01d722e0f1bdc65b3df04594533e7370663dc44416e8923316c29a460cef302933f4c2e5b29c6e725aff893fc585f9a246897a6460fbc3d3ceed0c4fc1152fce55306c8d3a5ced8abb22b449860ea75e03f3e0c8e1a46affe3310c58dc2494465fcc7b5a217fb34a37386e2b5d413a32fcba21e9fa03838ffc1437f28250853737ef57f8360f7a04a5a37d068fdc0cb00b142f7be71861a3c95aeb78adb79066409852880a8391e783dda216f3ab0f8ce6b66f42da710be8d69501740cf3423a04b1ce27fbc96f578309f8411ae9da127323f4dae63f10959650e899018a884e53ffa1f3672fad449802a10362f9918ac5ea026f40fdd0371e43d785fb44eecd368859458cab64f4d5ec8e653f5b48a5c631e414bc81c107399412e2429471b94ca478c5ac372f2e56323
1353459d5441e9a2865818e4db508a8583dd7f614e88410fa5de6de51200a9d0ebb3d87320034cf2612cd0929ddb4fd6747f7d70e011faa47ed7b595474280ee07a435ab7711f6abe8f45c2ec3ed38ca81af0946680f7e6add535348770523cb1da9f13337c8c04c992c08edfda863fbf5a4536862c3e5be75a12b7d1fc400d21973c6bbd1ce7ef60cd94ff44812dc973d6784ff96a20226dc1dee34c04f9016ee7f615b468f0ef8eb1f1d516a61bd139401716a8e0dfee5d849ff9d470eb604558744731d4cdf1b7eb558f639473b4cea444dbeafbaebc34f3a6c1176cbf992d55cccb1501ec12c8ee57584bf621625ab70143adcdd42f951e94663e4483e02cc832ec7e026142da2740478d9de2f34469bb3d133e58f9dc43ff743c102c9a76845f380532e88adbd9077911c8f8dc17ac1b8d0812aaf860f5713ee0acf8ba5f6a9ee327ac8945d9af963dfc6f2190ba540014798941cf0b5ed22d261b3b4e6cd04933c1c0fed9a8ba24eaa80dac2c7addfc78e1cc827e61628dc5a8a28fbc56cae34ab22dd10cd4b1d66c8a1d3c85fb2f73bff7b0bf6fc02bdd42e7c342c577d593cd1c3b2fadefee99389135da465eaf9ac096b2634d60c059b307f0cf2827f7bf195e2a400a0f768ecfc9b98b116c5c46cfe577b503ef3ea4014287de97d87e03dfc2e5aa8ef7de205b7722205e8528be7
e11efe2fb833b2aa73b2c86c51af19b3b14eeb1d32caaf566cee09c8c4d4bba6ac6d52a000f3d7b13abaf4f1ec385d9a96b852f848f034a78e8e14c7595da85e0ccf754c66d073bc9c014dac268b4fe17a5efad065feadede988896fff0c77be2443c5a309b3888e9b8e916a18436092709007813abc7987cf97446ffd53f8dfc515727dbfc84702871eac0e111c787cb75ce5b1599e02d35963a94c66f185b18322cad02012af86309ef260ced92312f556950bdce44eddec76e564837df286505f346647b5d9a72cffc320534b9b8c376d42897fe9ac6e7671a64befe7760ec24106fd41dcd339f942b10e22e9a24ae1de8f7470c80e80f80ecddb02088de74a2c57882dea79ff65ec80f240c423275a0f8f3d023233d97f136746b9f5e4c61400e100693f60aa1bb666fe4f549454a2ee2001539e24b3ccadee0cf2d5ce5365f4a4131c70e4f05e32d0e3a98e4a494c0178915a4658eec81aba56cef2d1f99c30a8cd0273dcbd99c0dcee69c29f6a31b2731dfce8a76ebf69811704698293fa84dff4d79160ff6216d1ef2f426211c0bd34cf10aaae9092f7e3a28465923299a495e256f08584dad662d3f95d6567783c8b86d1fe0ecc4711fd1161dbf0795ebf0ad3e1c734bc81a233262219b16901891e0515ce80c1f63913f09d73b684e24f30de3929fbba4132cfd0bdbfcc447afcb1
79c06274a2a8a8f0ed3cd3a33325d699bb172e0319a00022231966dc9aaff9c10288dfb4d2949993aa79ce00fe4609370aebdbcaef6a475bcb2c056db5f3e1b2396f1e6e58476eb22d065547c91674d04d98c7ca63bddcd5d30b6e0595395a4c67354b64a1b525a10560408506c8157e76896310404910e9082e524990791a1c4737ef7608450c2eb0b8fc79405dd8e5a7efdc3e3d09d2c0f25dc72d3dfc0ca37406959d2ce0614768883bdd2aa55ab6875b019c04a7734b505740e449e0996a4a51df878778c9e8eef81a0eed95c6a50094646615e57ec61dd1d753d1bdd38a8b7f569031f9627f7ebd0a16277cbe433eef6236e0979a0c5c5eef4486f1ac2bb640da8cf9b9ee20139b3a7fed600e4fd6758603cc118bae69afc4ccfd5ebe701e2a333b20a2ee78f3fca1c73ddc864dc8a52ff392886237f881055bd589b69aef782291860d91eb22d4fc9cba37af8623124e51d55d3e85c601900c8c112d530ac878bddcc9632d83de5265ca825fc1ebdd4d2921995092e8f11950e95bcf0f47a7e3ed5574e4edfb8b55b746f47a914e18742f36f6e6f5cb332570e3caaad72ed70f24e25e0bc4c4e3939fce1d17633e420061ee5762d54d5d5a340d9f98a880306395ad9dd40c4b6d5a39768aa00411c37e0d06e7abbfa0c903466ba2a107b08532b0305dbff22656899d4e5d686c393794
b352a2a21690792ebe91c8c613d15d75f6b7f7035f31bcf0feed95f5aaee70a3d263973fd4474e1c9c7c92fffaaf0f069d2dfc4e45b3ff3ea60510c110d090b93b22666b8c5fbc88444c7c81ebc961148096ec9dda52d68ff0f3b55f296a2d8084dec1b203e89dbead125d9f1fc31d62c601f96786a4bf923b6497cc6a011c36738c5b289d78040af10660b5541e1bcfc53f46bd6c5dbbc4f1c9c9b34388aab8b366f5a53786de940a95d7dfc9ec387b1f7bb53330f219f71c177cf5505c2ac701610f3e4d38ccae3c37e6c5c515565737506b2d4a1da00d8f8b5f6a9c33bd7d9f43e58b8fc0741ddb61d535c857f030f781f881bc857d9f4a0d92c50b4a7205d1f26bbddd314c1c65f043414a4ad3a28ba4cf5d37efef1a75f3f579ee2e4b537f2e05932cd115acd695480f1348041f36ad404c42aec58763b7e8d1e88579f201a7454ea33ef3d53b0393008fb7bc5358ca741fcd43b5b411f92bdeb2b668909c3d86a2b20d76e15b7030f9f03f06b9982470f508968efcf886e506618d2357a90d79c13951b99170026e7dc54123e58eae24834a5f9adbd98eac7eaa3e028a990aab1c1054a918cf005fdfb41002523a572e6e8f9f3d824d2b349a22e41fe99ba83c2b67429496e0db5eba651446e99d3a25dec04a50c4366d53b8f607c24f1517bb5a1db6756ba812b006c0c5a88ad7ef97
97db34665e5f88fc234cbaf4f6bea185518c3cd73d58e390a47575d89831cc53efe6f212b4cbb5850cc9dcf987c67d61591362760920a05514b690e8fa606c6e8642e3d67432d9e5ff5f88b099d0102cbb209e70260d141e396bd267d9f5308b1a0d9f1ad41050c50a640ffd4a0bb8b5e4d62390334f9cd1ab07a0d984656a5ab6cd92e66983f4e4aae27f9dcd42fe5940da647d92dacf99492a0524bbfbce40dafdfb3d48397a65c1be7dfddcce7b26a076ce8a0bd3af81fa7701611968507f391313b55ada042dc2d41b71f0a5c23b310c733496c6cf20edef9d193d287e0572585a113bd70719f30ee326bfda244a1fcadeeb919a96159e92b521586a64582ea64a80dd8a4530a12835c317e71227c63a4f0cf4b1c951a5ed9269b56b44af27a1bb35aa6867bb3293d5a36c27d514470f9f87e7e733115b5a0e62b7882c65f2c6b7ff664f658650e53d9d54fbcdadf966600a0c642a23d7464ef49b944b4e549f6f6170baf0dfa5caf81917cf2048a7becd36a17971b49dcadc3033e5a65bb66ede53b2dbb1b2fdf0f688d8f1d2d001a7435c9497f3301f771404ec2565a4afaf61c930052872c8ebe614d2e0fa50aa9dd9b2f60bc62f27e2c9b7cf667b33ffb94327fb1494021f103d4869c0f97fbd732c14ab1f043f7c45a90f784796c75afd28444a5b0cb5c4ae6f82a4647be5ba56a0
72923ee589ade040360ec9e281e4a16a67cd6a12f73b49c9a424ac7fe83379e6c1fcb40db96ce67a721a90f4161a71b8ba37ca28a957a5de54d6450633580242782b1233edc2e5665175e8863d5e2637048fbf4f2262721b113dace34ecec057d8777e46a1ac73b0f9cb4c057da739a7d94314108821c4dcda0699498803de1a927cc041a6ab44e63ed48ca1dbff770b9f797ff9242e8be7c2639d3de6954bb569850d9e14f3aa7efe71df5979da389b6b198dc8258d6d8b9369720290aff307f3f15892ee693a5fc6f1a21ec607b65b6f520f1ec0675299cc8f45ff5368177ac7b684f0abd31029e2cf90efd8fca77d0068e0d3b33945c6ff82762efa0ecd597db8c527b112bfd076b92fa9d215d784e400dab95cb522b76f4947ccd56fd13fe3fd1d10357a714daefe58c50e635ace902161301662594e955f759f99487d43c4118271f6359ec507b2bca238f43e7dd46a5532cfa2532b83bc45551fd19afd86b076b2f64e17b7686bdb46b4a601f173d52371a59295d307bc2ea75b7d05bf02c8f3ebb7bce4e49e072c0b4fb08fa0f251f4d74f171670bd65c2ed7c2d13a9f0af75cc6cc4fb93b4f33356284be584232bbc7159bc8a0ef1c6da241b0fb098e0074b0118a636d2b4b764ed3533bacfee81ce3738fb18a48ca44708f4eab0f7420a90db5473a9f36845e67ee8d6d64cc91754
fab16df428e5394dcc1194af4cfefb54836f338c03b69b176ed853bff399824745a448f6740b567bda8a15d305873ff9967a86e85e550f1e5c038416d08cfd7f178d6e3935250f3779dd301d2587d9abeccb01f70e92715987e0f5a3c49a74794ce8cb4a7e94add8eec41340e3c8833541d866921f4a818c78c7b63fbc89718c73ed02313692008bf86189a0e00bff980cab5292d52cf6341475fa71e85d7641196e7f2a832e92232040239dd09b62356e1de9aa76da1b511e8119df326bac306bf24f97dfc7800d05c176a4e0ad294673c9c029e9420bd1442135f3939d29e1f394d77a36090c04f2eee059431113e513c7e6bd224b52d75943f92e8d6c80fab3a425bdf1feccde6f223fd84a7f042c2275bad8112dd2b6b792eeb595ac86731bfb5252df961c93b906d0479df5edd837ebd003f7e25884b198898cb44f6422f4df3f713f2f44165e63942c7c06d9289bf25e92b75c090043bcaed62808d8bf44b193434279ec54ad2aef51cf23b71aa7f90ca0dad233a41646a43d5b096e5bc72b9f192e84b11226e67c093a14461510026dccf4dfdd0b0626bae5e683b8a9d78275e3be661319e49d93e18de9cea22196629c6142ab2b94543ad3cf4e48a87fb02d8b3edb2fd8a9b9441bf4e7c50c15904263baee2ce5cf4ef1b761451f9c99c2a8f6cd78acf15841832fbcfb975f61f931
a34fd5a1ccd92b7daf3551f4f46151443f4bc278faa83efa0af4c590ddba51221347df0ac5062df1bedc726b2b4737417dfb9d3898a449728f21d30677b1954f61ffbbcb8753683100e7e60589de9b10bc1dcf35135a1583ab8bf09ef4c691e697a1cf2c25afc0c4c3d5702ebede178b46b3984d9526bfa5b3491430db34962ff0f586374305e836520aeaa02fb76c6fbdfae5da12b45a081a9fc68f632650651a232ed78aa48fc596545d8ae3daf1b19a6ec5de98e6389e11d429d44ff082f86203ed2e1657eb5a4a519832abca7d9b0426205ac247de1acda6237cfaf2664b621410625c1894b4ae19bb973c5f69d2fb0fd1ee4078a0de0604db111216a104cac6368ff3c10546d14e9eee1a3f208449f7be8b28c7cdcaebbaf08d2944706c34b0e8b57649151793216721ccba694cd4921040cf4b041936552e4c69cc30619f58c05c68c1070d5de5fa71e3e6b06d0092c589341f0c4c2b6d08a41dd74ae3e103e5ec6c1d6e0b578fc3e927dcf72bf48cef7b45226e1711d7b3c4dbd023bbff6c4f8e14e443047780824d5db100c59606e85d803ac123fa36f3be216855b798c0f2a63e8b5c11d729cd7496c0904c9ec1e64f6e356155604d7890c546d4d1999d77be292f69b2cb59d6d9264b2bfdd974870d331463e8a1c9f92a37c07d872fa78ae4a49ceb8c97e4c5367673aa806a65dd
6525c99366c1c914d35c0e42a92eb10fbe19f7b8281d713a5cb16604b203e3db2680a139a0d834f40d77fd94c855f05d428a917ae0850bc881f85c20cd8b6a0df8c763f336c0717b872ceab0216d9e1b8b159298dda5fff84eebb40f883c4a3a7a9e92bf69648571311c7dcf41361ec46d47677adac5b2b9e58fb909454002ab05b14bd79280d912c018da8f94d8d5ca97462707906bf2d3f429b1090947868dcc37f14d7af07cbb8c993c69dcace42be495564f444a13e1eb3c5280289237cc2df2fbd752b613ab037461da295d47eaec5d070f37a150392a8e8cca28b3a81c38aabfb62431427d664359dbb46edd423ca905f52fc193f7583f82a8b79d9cd518dd21a4c966fc0d749081402f0dea44c6979e86d6b49e34ebb78d69087857ed4db5d9c6cc458abe853778fb70f2eec36042119d3629557441f6c5520577aad330330a3fe87fcae82d4ce5dead3c5873e92ab9d1c159176fff6d33a910f4d884e503d0730e519d7e5e2ccc07cee48904b8ebd7c5f4e747cb5a2eab250c241395f226de8b83b1ccab176b710735f9f782fceb08550cf675266884d67b37e384d437c8e6996126977bcd8c1c0300e73742709911eefe9fc62a6c8750a900a71be475c65c2665b699f425231e90f18361b2698f8bdf14df637a1dba822ed59b1bf560b7fc8e71792d0f6d5352e270df4bd4af916f
283d82f8b31f96a2e40133423cd61daddc827e9e473c4fc920b11292041767de4f4ab36c1343e8450101138642d8b717f0ebcea089038f78836767fedeeda0a390d8ec8bbad9943f1d4417359722004a2bcc6d554b27b2da8363d3a58fbd4299658213c0bc73d48fe19974ac5dc32a301e99c59d59cb29f3d35f4236ec35e30c9393cb188fea2424f6529364c911420e67729043cde9380aca26e2adf8120c2bc8683a25be146a21ae7ec607ae8a8ed4aa18c921a07930314370e7187dd68d2a7868a116ae6cf329cf662dc56210f300c887b80cf119c70e087cb1edb851634ee92983ec06b9fde4f91b5aef6baa69316734f7d641cfd29ea29ece66763b8f234f620cb0074877054f94d012ac43b407e3056dfb7c0fcd6432b4d76d673e43b1e48652a45f9b64f47ace68497a1d1f29c0135090dca88591bcd8288aeeb5fddb56732a4967553b8a5ee6c36f851e375c63bbe48688d4f56773f323a68eadf6c5fec0371aba231238fca7de9f23c3a99425f198693828b0d00763fa77d6b98f59b5fc0100f879d31948cd85c9da2a931a0ed0d176d45788b54f3a21c7fc8fd67879bc3785cced378af945a0df283e68f153bd4efbec099d6dde0510396fa3d0a5dce92af2cc5eeaada1d966e06398090848ef3465d713b3a5a429ee62d7b543c51f30303560146da12b75fc7100728d9e981088
9bdb1e1dadf82bf20c38bb2461c0913b89b0e5795897999565f553000197378ba093871111a8d04eb907b778cde7cd381fadc376384be0d5916631bc3d840b9f3ea7ac60a040d4f0f4492ba197d16a0a45fecbfc985bdb45df68257b181da22a8706bd3fc5484088343392021b33220164dbdd1eee848d8322ea2710f25cfb592ba257fe208787d399638f0290479b3790fe247f8b0ac413a585356fe58d2e3b5402a568c74cb08654db759030672b222d5ca4d8c0591c102037d38406ce8ff4e9f9732d93ada6e4d15f50558d193925a86596b4402a800063f4112280f526a14d54d43f03cf201aa0a5095648765326f307156608868adae4c175738c0c0e6090792b7f759b0a34d83994c2cdd85377c9c87078541a6fbc15a50e03df38687b092a748f6b633fad2406ba6d624923b01df7837c9ca1832879e8397c3ece78d1b3bd37ba34f1d5580303f7654699ed979faf9f9004dcd6eff2720ddd191eab423ad14385f48ab31f4632745b67efb225cc22542aa72ef103bfdbe8fbe2407dec3c0cc7c240df48f671e76ca0a91faf31e76971db40b0f2b0f6b189413515762e1ebe2a01f5a8193df7482bbaa7c979e2ebf0aa736d4e4ed61be9ad4834fa578db209882bc85401b72acfc41abd89878a4ae9c1d2454a16d14fc9445ea43e7911fabded352e21392eab7975e7d68ef632c030a5
48ebb79b49eee5f694b30cfe970b05843ed47925644d8e22c91578545dcf6282832b910735e24e6915073be5acb087f5cf0568fdcbda8d4418ce397b2441b10ecc8895d11b2c365e1d00db8a8246a275da9e7844cf397a817aee6a1ab4da277cca8f61968c71f39d3e6dbe226ee8d241a6cf532af8c99f808ad61f017214a95d560faa584aa0103f60ca06ef94400fc5c5e98406407206fd4cbd6135a851750af761668273e4b62f6d25fcfccd640a7f1e8d91d59e3d63d26361815fddf60b0d8927d14cf51935754e200c3a8c2a562ecc63a627ab66c1943377f4b1f0cd94749bc6e4fbc4d1835883d9ef77af15b5b0cc38280dd69b094088dccab87b4aa54b05ea2dca177ac0b80582f2286f7b2e63277599ffe7e60a6e6f4548f1f04e20f26415264e3d654342625eb296e964d63e391044ab1abb584b4296cebdb00f0df40193cc075f262a10f21ad8d3194c6feafce30fc9051064401aee24c87b1a43b12c8fef4e33780be0786ac4185bef5f5c517ae17aade2ce4c2070bb61c403937ccb21d776fb2394c98316454521e292ce6a8eeedfaaf70845d9439ef8a8e16ad76eba58c1c7b2da6a7271ac09935de4901bb767f1c3583da21666ab4096d12d19ea78f0530d0e0123fff16843738df1ffab4ec2e76fb9e091632f05a8f75fdaa9b439fb6a9bfb75aded46cf87bed4f42c343b6d
fd0b37f7e4221d6a9e0ff4613391093280b1808710df74cd3ccddb64705ef7a3eeb6d9f13cecc2edd326054ff55198068079e13868a5b30c89d35af883679b75547161ad22a1621294583927e2e43f2222608ceed7e63a55ed59f7e87c18cad57e681b38ada5f1b78b2928b8ceff8ff2436ad9c301dbfc3f3dae4ba65ab84fc8ee90825dc60717d2b2ed2379a36c93a7391766860720f9dc4fe371208c1dfb09f63e346f7d8206a9054f73cdde718ee85ec5d329473f8c86cfd698a30eb856dc88f78996ea9cacec10ed7b5aa5bf3960b33277baa8f684d5e7df651f7541ba5697a5980d3fd587d2d25da82b821af25bed442a0d19e5e36b89a7ee38811588b8f62b61d8497c3a2596f0a78c420f565a52c80aaf9beed617a6ead9a3b78e3e8c717877392467574e81d0c0aab3e1b97adfb9808048d8d395c0714c1e5450e9583262a640fe088823ea0be801b515d36e1ee3b96d0b735ca66d9ec9b947cf3bbf9982f52072cf7ca5e898e2f9c52e6fdcee40a23bbe6b1f5f3d5ac298950d0dbb54cf7670690f8d0909b5d199ed97c99a98260b19cc84d080ba6ef6cfdad6615cc501dac19e9a057e030fdf56956244b602f7fbdca34c08e96ba1c7b6ef16a488f038c7730b19d1ae933e1c18396c235610a4e6b3d8f78e3cbd4852a8bd61a26eca3a185572fa2a012ea2173e55e4884725585d
ef5b0cd132356440feed9bfe974303326dc664a656abf031a04b6ba334c34b3b314fd7a81d2a61a17a4b664206bab3ac016b5d2a78949eeb22f638eb3895ac06916c166a50414109c1dd1333e21ef1e095f34f9b271da03e24a9ea65d190c20ad6c160853ac1b586ad12f9e33d928224e96fa7365c06f14ee97d2ef8ec6b9a0c5cc9bf9adefbfa881c7fcfd132cd8e43f2ed96b2cdf2e97ba383c0c22f63ca15d0d3bdf209752659740c42c0e74807791f6a87f3639ca51380f4ccdd2f268087fbe2a1d2739942a6ed02bd503ea406b8e6392d97e81b90eb51c640d4a52e79898012b38a469fff5bcee04b505525862290a70c34fe921f6add6cae22689eb3a4a0f7d758e62a6b97a9b7707ca6f62c35bf392fd18d8857c3c7e7570f3d344fb6bc7b5c8b37b57f1eee63fc7a68b31a84d26829b1937c57072afcdb5aff9accc24112669f66f23a66a278eb917910eba770fd9d135f821d89f104b04c502f7257f034c0384be01b36e220b271e5e32457d3f536ec041b67bc288b39a76ceeafe734682ba6a9a2f1354db8c41aa226c571db28d217721df2ca981a24864d5aa07adf284161a4c68d6f33b4281f6b9f0417a15f20e43e8bf6d65039e8c889924a7c1c37ee0ff1c813c8accd103f8b4915178d6494d68b3d4ae79c1909c672fa0484456fb8edd59f02dd282bb930a9e51329292bce
ae41a398c60b5ceb4ba8a7064378575b84a5c89b99ba2fb7c56b0398f67ea1c85a257dbac9e9cf79350e9094c80d6742f825bec6770ac57805a45bf6ae31735586a2447fb48d4eb8cff2c760af3af203290d5242ca4e3bb5741db0a0fdc71bf09935b8e9fd2db92061e0ff9f028ce3ed1b902fb955c2633db863b0862460a3cb52e64fa65b28a09baac161486892c23d37b713215559c4e131944de22186fc466f6900d6ab4081de2097102750320222f6f5c0ef78c3ac2db73cebea6a84a7afb1cb75da7e80a64af764018a13ab81858e43f2ca22da5b80aedf3076f12ffe04d06d24170e7773535dbe84539f065a69b8e4b5131e730bc53de4c1c51692c899268f164a99f3735601a063fc49bbd23fbdb93ba67d6f060a84a7f1260f8ede90f7605bfde1f26de660f0bee8eba4a0755676888cd09c6aa12e04f5e837a9a68d5dd1f534c203b2dfc1244b8394eaf53b462fa7a2562d4c4b3420dc8f6318986a1bfba1500ea671d74795ff2215f021ca4ff0cd0b81d4eca27bb01c530aa2b8066f90564ed8ec55847ef9497ddf40c83d6cd24596c723468fabce5bee3530c886edc472a95a524bbd5257e2170899ed6e17eba15c3e1208df542b177d0a80b8835c209ca815874cd1beb00138676778d960195ffe33d42d37d69206253a35b5600a0d165df1c32c73dd5bf3eb8c3fc48f93c0e6
f1310c78642943c91f4b5b56e19f7ff29ab93afd5e2ad15fa34fd39002c6c4e7fdc1b106ce1c574645d2830d838352cbf24d0fa65ebfc36e97b4539412858897ad277fa6c9cc9f0a526fcab425ae1091f76728ad03374e21dfd1bbb24bb9662705c4022ca5c95763d7890ce9a9d79622dae126d329139412608358e4a8bc9642d8f1855d7da79e0567a4fe7d80a5d93114b0c25b9e76ec8dbb3cf31bce9053f3fa8703b2ed5aebcfc6eb6928ec46aa0c7a8a864eac28546cda725a095881747c4144d07432e52e882112b209fdeb74b0a8b22e7202570643f1bd4dd214ba0865335bc97f87cfa9c51f541ef47dff9ea58cf365fc777474a29795dd60386fdd60c97a7a36c87c88626a30ca4b2d89f8ab718aeb6cc3781a831b9b61d29bbb8eeaa4cb5ddff4b69ac8b4bea018a29673901b7576058b79e14d6f697cace303f511888bcab08085f46aef468c0058f196dfaba2e7b29de82dce9f2abec9de86502375981cbb422f7379c612c1a7a54207b6e6911a0cfd509dc5fba16e33d6ffd5c513fbaaa84e14260f2cf3287e23881affe62ab0f173c9ae7a7d68faee50d2404a3b72d0d6c8d4547f2e7bd79811cfa8889e574b4794402122e80a0cd0921f16182474acfecd8e1d99c0cde36a4c8bbceca11b4f822d2b67ecd13a905dcf7611abeaa689373096341ef8c40c06dd243fe141e6d0
a741317015755fa11752ffa25468c96e1f6d099b54bd75b7a5c7f5c2018d98b50f3b5a4cbc80bdae239ffb23afe3793686f951aac71e808aec04afded751771461cfdd4ebc9c6bff91ee2608f60977678a0f46629628b08a6878c2f22ae97edc3375ed3eaf26608f140712cf2028b89f4c15424a18614c7b5172d2d674562a6c616e76041d09de047f9730b3c58d8e4be0ea1dfefb4007ce7c1f7f9070dcef84ff3d5a3484d50431b865fe78c353d27007a4914b30494fb26adbfafeb1d2f6dec39dcd2d13b565830b9bf9d1eb4b04411d630005c5cd6ff2d2a478330a07a5686c627881d0f9184ec73ef1efefa71e758c5882047cf734b5385f7c38d7ad6a0dc8d6e608cee945696eb38d8d78cccbe59501dfce9d4e311b8aedf7f7d887d4d76097b80a1c7c269b75b44527c121b9bc849a32cbc4eadad6ac702969da42e4063abbfe37493b9f886c37722a2f7ca452ef4d25e61354724e9575eb4af85e8fdf22365540cd5dea41e7ea1aed582f2e015d84000f63116fa4abdf9fe5dc6ed4b539ab4c3e9c79c39d241a3e057bbb983f9c07a63a64707c6daad31061d8887e75be83d65956df9bdb65a3f9fab0f8c06f21181d9cd0d16684f560ea434e32dd44efcf7c3c66bcfa2076be5fa9cd5b502f74d060ecb42e35107d6253e60088ccbd7322e25faba021777aee2d5bd5803db65c0581
50af6b51617ba7626894f3f046fa785dc4866600c7257bbd98381fc644702ca0c2edfcddbc5d9fa1cee8e6f853e2728dd5924e7f1188295336937902781a30566ead6bd61c64281887ae7d1409862b15e5c8e76b8af6c99800d0950a5ab85bd7bf6bc492d79cffbb7318e1d39c228cf012db84612084b2780a5d2779314514c35130704fada4754352056b773ed3b97f7f49a94452fab811bdc1113535da56fad3589b9c878713b215ba74b594e204d674e1d3a956cb54e9c9ad02b951a5336dc888f588bf7b78a7753a081a0b03128b7c1963e4f028f467a83dfffdcc4e4484f2d105f5875c72e66e309a284545998b0ab4c7dd16e43b242a011f557ab0a390f871c4f8ef87e8052a22e943acdf08989767f6b36872b1f163e60a4060bfb24dfb3200824b095263c5ce46a7a0a300bb8674d91747d7c25abbd45ba9a7929ff5b62730afd74a4273da156a77fcc11c58b6b5b85baeb471ad07a892598de33bf90d752e7e28a13a80f68d92587b3d17235003ae7244d25de3139e9aa14f8bd63da92643d7022cfe21c54c293067b15d019180f155d898d027e1b3de3090d4b26cd4df2e098fcf88cac8122b81abb1588493d13d43d849680f89023e5aff6966d02a37016d2f7141d5cc9d3a43fe7998f5963f9a784cf661b6f69d891e1ecf6eda2e404cf69668582b8eb7c288c692b845e9d0cd
93fd225cd8842988d37eef7b1fae09e47d1d4b8a9ce3893e6a03d0020f8321891422a64f03f9859c4e7efdfc30f1cae795ce1ffa31a3344c6366a0e3fbfec8bda2b1ccd2bf0aef26f22947b029710adaef3755af9efa2b4b0ea1e3c5fc3161fd58b1e3bd5821c1e232d9762bf23418665234d33cd190f8537bc42ab97a9d081d23a95f429aef743e5782b32e493dd2a447f3a1203869b05e35f7015b24db9d5bb7c28a6c56b5acc1f7d636ac3145cba9e0a618ecac6475b13c0753383b94a76bb879a9ad7154678397386fbe55cdd3d53ef4dec8a6d83fd041aa7037bbe93fe44356e7883d391269e1714c4581978ef6c275b7319b40fa8b8099768b2325e74afcc16a359256ffae76a36ab10371cbb990e6eba847b1d99047a79cac7e570e50f8647de581068b3fd5cdad8749e347f14629bd75151f6f89b6ae024cf09508ab31ff6c97fa3a7be64b24f1fc03f242793a62fc9a5c4a56716ca51bdb7cf28597db200540064b6ee26090c27dc6b3f581f25be9e50ed85c30977074b3138ca427848105e521881223fc9bc0193b7029316da620b2c5991dff583e0df258a0fb29ff76d6145aeefce48c0b0ee13183473e75422dd3d38513fd9b876688e6f753922c8d79e16870b98ec336674dcc59fca9937f1a6558dbbdb2170f8f0f1fd14477cedd6b39ed45aa988c661367182ead81218db3
489b8370f95ff7854494668e1b92fec45ec5ed9c7d2422d5e6e1d3b8368fd62435d4ae90d9557eccae0ac65e507e86fcbe4c57fa35b824a494c945013a43d1f569c556e9c7fb1c8022cf5bdc762f644b25bf7abcb0994246ad013368b18bff719b392c043ac32cd292be849c80c106a63411b8550777e9de73442f495efe984e125509fd07fad955dc4bd7293c18a4fcd968078b628e49344f64f51b6e99b9ce8bbfd5d00076779adaa47cfe8cecd999a9e4065400ebd000a8c6eaf5b06fe7c41148cf4bf0f7cd336d4d8f53980daf2ca51c72ec231d55f8ea36d2fce0ec2a38206e08af79ed50fc177780aae94f7b3285d4a937fddfd4056d333877395f0eae6a04c0b90b2c4d70dcadf61f2e6dec2143938cc6501302e414b192a9830cc6b9aafec587b5a4b049fbfaf47e1e871f9a539c28890198712df7afc6aedb0ae014da677abc42bbee166c2ece21fcabe5a909a09a2e31fafb68afde79132f9d977bf8322c3bb34d479b72e9b267f05ffd75fc802e95211b871557ce63801faf6acd44a8afd0e40704ee3a6cb6c4d300d0d2e6c14084d965feb5d11e4ccb3b2b639e258569ca89d3156f8a26b7ea5452baab406b313eedae230ec20cf1f321fc833f9e2f44198309fd3ea99a9b17895e94c005d6d2488c2293db5997ac29b53a77fdb8570b3d0dc33e7c276948ab8aa87f0eeb261a
a249aee721704124ea95ef58cb709ad2b699415881a4362d06c44a875e4f7c9b45f4540f4c27ed4a66feae6e5f3e593cd5bed3077fb6840dc45982a65d80008bd49b52fa5cdbda208134bc8e27d02c763cbb6ca5c9d927158cc28eb7f694f7118e5aae7f7efc1519e77ec11e0e3bdc17d26c163e748b282d9209389cc7c3aeeb69fca7409f4238b50a32fe3f1c9953cf94fad3652da9fb4dd4bbfd68ec7aa37168d9eab568a61d82277f94d27e9acec082a05038bfe986dcfb0a57db5553b1933ac171f96f89bd1d39819e5e4a95815e03d300276975d1df9e8a21cede2ab96dd84ce0548ef60db0aecb5f65be10b9b1ccbd63c8a3ef17e2a68a19fafe481f4248d84147e0138ea1a680f511fe351191879a37416fef62e57844a26ff1afe055e7b190f8430d549b4c5b47bae947c8653f4d433efc96daedf598a8c17e18c42ecfc4a1b83d215a17de1f016e3051b52b40d6e3a5d3c30995087b95e23edb727f15c5608eb657dea9f4ea0aad1040001024dd3276f2e645e9fa17bd26d7bb1e016170bf65143f5e396d7bbba2f9c38b4e9b123d48bd1b39a80228c0dbc88c3327a684c96dfabea763885df67153346e58162b78317e1fd44f6da9df86f4fc4509c24589823b0183e35f537f839cb729b70b2b385cabf507d68d48ebd73cb64f1c5f40cf716e5737e40c97dd753c65e9dbaf4c40
becfd67622f68c5e68813c429a55791eecc74398d1996aaa9b49d343f0c07219fe892866cc286f87803759b710878857eea5e0a62bbc2ecc49afa86180ab2b1a5cea331956889c7f129e585c5dc5d3a2c6c03304d58641061db70a3489c9d28eecaadb572573cfb2e82fd4238fbe57d1a491b8e9cff34fdf9fc6b14558b07103d54faf58cab155a3411b7cee4dca5456d53f486ac0944fca9519b476eb6425b4ae14ef262a0e3b0fa37cae8c427e1ddaf1f12efe427631e9b3c7be6de6c8fec1502edf88e3ccb41a7b6a7d6bb85159be7eecf2256f1c03626eec98f67633925a2fa48a53e18d389b6366abaab6d4798c8d2f48640a811e6ead51d806378ab5385d90162a06877110ae74476b706e70f7aa3a51332763b48f2f38a618c01a6c632bb77a68bb9a84b2e1fe8f55fdbeae73b3531d550f30c83fe6bbfe8ea4324a3d44d535f6464f386e045c4459a987754f8a9bd5a3a2b4a5ce3b22085e45660893e09b8090cbcef725d325a42bc3038a42b5f6d4d9ba127b37e674c9ee05524e47567a252ecbabfb60f88cd66d3e21299dc7468d572f1e2ab97d69d1112aa2bd15fc6d7f6c41bdebd344537a375f756a2a66e39080c025554f0d66c174c79bac9dc1d9e396d1663a306e233714718f802d21d67a73fef562f5c9d8188d101a50f8ca8b39b7fdba745af7b4e6cc499c4b4f9ad1a1
e28ee9bacbcf19c86328f10c94ead36b32dac0c1a8792b328e1f720a4d5bab729a34b5bb94f2a53111eb6a6f7fead609ad8adfc1add6415923aff54d87618e3747a1792b0842af41352f7798443fe753c8890d29d4615a666e43536011218ed193814cd9a140464f67b70b64437b5481708c7c06c40f830d5366bb2e00d20322f3a2a4da465f2a282309f2147a564f0eb6dc63ef141796c90c8012d0c916edd33e72f740cd635f86cf1433879e6aac8c6b7b89be108533d03b2b26b3f043d30bd5d37de876f43d2e9b306075117d6a40a79bd663618a0f97aa4f0d65c19437f042f1a80adfc4c3b4e04737a80e590912b4951c53ad3bd4c175f6276c067be6a54efd54e50375057a78af2d8c9d63f96418e702de2d437d554da9320e1d0289bc75066eb8bda3ca7078691cd2a425c229494906a96f7ae44abc33ea6338d15b6186f7f5075eda7014265c25e550a2cc932102f68c7f9f2d8872bb0dc29262487c03af91f05880418a8e05ee60e808452df356754930979940132610e96e2ba368d7dd24088f09080972081b688e2b25e4335e51c53df40f8675ffcaf7b97ea05ed41657719459c35386a2e2e7e17c3806443da1f20acd09efa8a4eede335acab60cea9014ded2705b218ac1d1e4aa9959da16b6936680f756d9d7e5decba54673defceefea98ff8abd4eb9e0e220642559cc4b8
d02df4c552ec8f389ebccb89e7858d00956a018b2a29d538adbcb02ece92ab85a170d66e98cbafde1ffe880b374442bccf1e845e8160bf1f3bdd57abd604a4ce42da64451bdce60315db22bdd53432fee13a64d4bbd8bbedb455c52cedbba1f834ff6ed4d75d176144648ddb9444f799d1c2a762e0c11db2d628bfcfcde8784ea59fbbdde61de74c40f171c8ce76cac99a7a4cbb887aa40be83fd7110659499c7e663866a838e5746dcc19a814d6b545bc8fc1189c1460a11bb424ad67aac8db0664bab5e8969c0d30a3130325b284c2d78553d766fa1c8e3982162785e8cd0857085339979060aee9f04146868b9a0e784cee64090a84713589fdc976a04439f610f55f99fb8b71917094ad2d3dec0c192315865c50cc2de97a4b298d51f19878f5dea18a03897e82575b8802129cc984cde718e8364b7ca6e68204989379bf32e1a7a039bbb9176e6a3d2b8602db452087ee64235aad6a4f0819a9a857f2848579b9497ffe4142dbe81131a677e71561eae67b50fc05b31e2f752d4dec0bd86d18fe8b19744475449b72e4cc2b66f9927a82abdad457fc764f0db9ee3bd04db64ae5a0f04f7b0fc64e777b02538ae720b4b0d2169914937ec3d3c4e41b3d66f6fa256ece4c7f66e013a5d2026d1e0da980775776aa0d69f663b75941ed3a24ab854114e5e3ca1f9b36966e3736459fd92f75
84c976c9f5260235c7efa078bb87528b7b10106519d6011f4f0eec4dfbf0aa5587372ee9062bff1a00767bd2786a0200e8e0a64f89718fbfde8053d45fa9d8040cf631afe63dafb0cd57e09ccfe699b0bc428b322cd716a23004e8ac9ba3cbe2608fd452de5044af832c2e044c645810ecfed947a8d2ddb3e50b2e220f4f8905f1f4ae2bf94be640c30f55c2ef3567fa16f9be5fd0d2478192e676bf6e188b2821f4a6e3d999afaba7cc2316347a47997a70d70317f83aead21182c12949afe89a236df174bd6ace34fecb13cffc3fe75a1b18988f97c639bde59f28130f508873ed6755f630e78171314ab3c76b39052eb5c4ffe3ac1fcac24b3e0019fb32d7464e580e35370ae88976c3ac5d229c2712b04140b221f445834d0fddc18fd2c85cd5111337b6df4ffc97fd63e85adeb2f91572aa88dccdcdb63e8d73615cf2897fb140b4e1ee806337b45ba072ce2fcb1d49e3132e23189b189f54b5855b70b35e2fda8bebfb2c3d240a6ec1f869bd2ecac2f2b3d6853e04afcd30d37eb74fe7175fba7d5212cac1cb06c453edabdeb4bc2ef26c42978674e91928004af2769385a1bd654e5c66183c8288ba925f5d2073bb61ae617a51f6cf11d9958322287b1bfea5009f597fd3e4d3b3c871ade76e19dcb134d797f21627994b3762a03662d23d731b36619b09383d9a8b78b49a7140f3b0
a15959f9936a9c69bf92fa0d1ee3bdc2ddd90ce6879008d0e3fe8aea2a551482fc8fba9c32b7a1fd50258927cdb8cefac7c1897d253d3b0169bb7c55e7dde61dae210f2bd89de4caa364e8c42e13618eb36d03af631a048d76bdbfa2844cdcdf8ada2e887c4abdd47dcc1ca4f75cfb8c508862a823824414f9a41e1b1c128643edcd3a09a21bf52e865aa9f969dbed0626720f54641ff74518b59957029bd6af1e839e95f119ebbc2a823fa046b87a174373ca12302b52191082f0ef4b2ff2b828cdbab2d065cc2ddaef856b6c9680eb9014b49b1268b4f260b368ae1e39dadd060ed18c122e0c8035fc0e6b84f02fc79d0d1c2afe977dfb381c593de70ba874881c271ea12d3bb86b5e7befef635f8b8a274a5de245f6e5e489b67834169ef36838bf943427e4e5f32a60266bad15e52a4d53fcd3202337c9023c117fee53e48cc9d0a52638d83cc7c4cb52814a91df53f3b7ba546c00b2a0d9316d587c3ff230e8107846ccfe7c0c97e9b51166bef667c97a99d25ba277c85f530ae14436292a650ce26970962943799314588d9ec8818fa3415b97a0bce14414ae651f3436390cf2f1f0960e394c5e1f94c524edc63888adcae5c59416f8b3ac30a975150ad7c79d6e9cfe3aefd1ccce975390ee19f5e4382f277434f18d2d84e4c9e74ea815c1977b7642b3e071db1f61c4f51ebe04d531
50ad5d172aca75b667f9f48789a43660d8ff7fda8902330c240348c9b5f681765dfd932203632656964c37de1009e13d06af60bd861b4cf938d6b3161b225899d4a7b7c6bbbf4c61c3af0c3058d712515ac560f29a75dbddf4aeacc395e3e6950df01bb49339d349bc4785131cf20a619ec3544ccbf08acee2a83c766741788b187a344979173899638f8db7afc7f93e2a523b2d056ab8d72f769c85730abf83a802c14b360c7da55ff205bb79ba3ab543cc8bba07251eeb115a228cb972c12970c9dfde773196edb67847d142a12e95bce98f99d0a3d538059b3ecf4b49955ca3dcbe6be95aa4f1f011d696ec13301e21cbe1730cf21697646c51c8ffd48a6b8e3b860f6585464bc31dfb45245237302f153c2dcf91f24194dbeaed1e0c41f9fbcee66dd39a570308242fd917f4bf345c9512b5fc9596dcbeb5e29807264811da4430027ddb9de09aa9853a381b545b5c2e2e498e683ad6fdf31143bfb7c5b98c3f1a6113182e98950f0c3ca6886ceee00f803701153cf7bf63a1616e9977d4d70fbc596e2adaa5287337282856e382d15b104792b0877a741907c2f9994affd36aa7122988e49e1dc0b7f0747ea38c188b90da133e0eb4a216814f6614360ac8000d607f54410c9e8b8f0381afcfcbe677c15c497c0f2cd74c17b83f8df4c8a1824f6bf5f2a11b803ddccba84d47223ee0c7
ab265761d8ce8eb3161865e341f6dc0ad6e2187ae46f1433b9330e380bf3eb5d651e1ee30c61aaddec13c761b1f803b2116d355a9b5d774de149c955c7099bf6018fb2f7075a829c3b9a7595a5b10da8f86ad7e4179a9a04b093ca037c2516615157d46d982a91f2079ce7867d395bba9f7711646a7a8b3d5c51c1ace93b2fd3a18e811ac33bc088190c873a5481daee521bc07757078fa54ac554294d78eb85d4d5509e538faf0bbf5a20672b353c851e3a3881ab1b6626c5d82b25d2b8a22eeae9aa4c575e7516086752ddaa552f89cb99926ac925c265928e57f7e07ff1ad8623d98f858e27f6182e5d9681328b956582db0980b7a806758f59160291ae58f8fefe8df767cf08344eae0db1b06345a19ada8b06772d6814ed810f3e6bff0ae094ce6bdf969d1b4c1ccd49b7cbda2e6958e02491b7c0f3ee63c2f041c9cea57130f845f481c1d48bc0a8b34558369657d852362954b7a604a0e9bfbf56f6d84a3b6674d2fb5ba31f59e172eb92fac0766d98cbd65f769fae1d721416a961abcf0740bca4f781087095079b3b2ef270ac40207455446f1e48ad5b8c3223068d310888d3ccf1c4ae27cdd193d1e25f405d65a71eaf44248cca346870dfccf11171bf215b92954aaf5148eaf9a265dc3b8b831df4931f8879922dbfacd326197fd83bbce1db0875a9d07751f802d9e05273d9a9
c3de168f5f942efbbdd2b96beae4c06ff7963da34f4d835fd3202b0bdedc66e7a0bffa33868287a38a7900e544167469983c6b5e8db51916cc48df7a58a24031ad19ea4718a5241673b94d6d342b8762c90050ef814030b50ca0ae2b0bcb8cce866e6ddcd661379129ee87ca4c97ce54b2ee96871882d049af1e91077677c349d19480e46c505834d29851f8087a79276342130c9fbeb58af8804509e3b6a12234c4c6f4711221420387607ba150e957e2b903275d545c36a0948c27798953e0fb64ab5c93c95735cd7c6f549c0390f914b67e8c6f2a90150d9883e241d2a4c16eea01a5a32e25ce80e5bb25273e68d359b299d277e9f6df10bc779aee42e570928c7735b8bb07c236da68e196f1a73ecc8fd8e419aa1e9dc8570cfd9ca45ab5b3f8acdc9be2f394b8efe3e3e94e3fc1d99b45ec254dcaddaab6da5758482379f00cabb8a2145ee1d4aa95921d58045401b38dc87d96a607b99d5f1b23b84f274f24803beeeb15b610c3fbf6170684a0780b36b3b67f264d4e5649345fe0e2a74b99aa1ade6b2aa6b99958137907f6c5dfe6edc06a51fc8dd7c804b8b9438b17b239948aaf9a43c86a64ca9dd511afac6191eadb8be0a2399909df5632df3594f9fcd2c950578eba4962bc5760ec0b162b369e85f3a0b496cb9c74680ead684ccfaf422a7ed96babf4ff4b1952a9d971251821
5e5b6fcc49d4261cf87040a42a3e691c2dbabd1cf140dac4f24a831acccec370bf0e3870b4441bf7da04bd8d4a1498720b65ab26fb60de3e6c1b274f95a4cdfe17966b7f720a8cf9e2d925d87016766404c03a29a047661acae3fd3b1d6337989d91279228d020a965fc3bfd3ff9e851871b54edc6c4269f5e0410b9651e44c2f9c1ceff948e3bceba143b6d3b66a8ed3331b7cd6f1b8110d48527439053f5d85747c92022c895fd21ab77dbed447a459046149a416b9f2d073432c234c0e2ffa962f684c6affdbebfeb5d9ac7edee658bc1b62d9f2c36a5d0b87f05c9954a8d32a5273a224fb896376409d9452992c6d9645251f6e6ff48c66644afc2668c89df67655499eab28598f0564735bb3e0bb2a788bfceeda97a93b62605f94efea8b3561b0b6ed419f950a93ba4ce76e88ad20e3e5d27008bceae64a510b5ed5966e701ae2dbc6e5780aab48ff23e7090a24fcf13506da39a117dcc648c5c0af53a2c998e96d83bdede90e0495e231f6295997d4b92ff72bbf4ec3525187fd52f1a53391e39e655c9986e281310931170dce2c802a756bcb3290c83a5d7d5d2e7eca452f2e5a2171e7395ef1e9bf093fc87c2f3e866e2431efbd3b3bbc79101740a2264bc864e64e7b5143f47a379f916570d6d7e706c3fe17e7e5139b0397fd9f3c3af89f4a05a6f2857dd9cb6fcdd0cc1e86816
707092931a4c2f16e9061d49b3731aaedc9e44167dab9ec8a4b18f06ca3f9de3718d751854e58fb3906496816f923c0b8d6e12fd9b03db54715f90395975d3fc730694b52ebe1adf3204b75d82af03c264adb7fafb15455c042ceb1ac983109d7ed411f3a82daad46a34f8900478751ec9876bc5433d1410220fdbb901329abc97c6cc63b9e02b03c09872e1c399cb7ad20a71b256fbd586e37cccd032900b1fdf386fa70f41856df2e90d11f11bc0e2c72e8f32838c621b77dbed4dbb04903ea9d47a7b99eb2406ed01536d07887dda14a323c86f32c2d5280a2bdb6d5d177cd55384003dfd7b94db850d32ba7651dfb385bb2add4b795ce6be2a1f1361470dda6adf46b822ab36dcbff801094436d5193bd3b9170dcb4f76c0907984fef45a879fdc666a377c25f48ec660ded356e4013a4323d6a9ff43c81114f26da4c4661593d6ade71681fee436a4e56505c220fdd38effab320f319eb3bf3f017128159418137cbe7a9c4b7db0d22d6850130bb94d808b1afaf632dc9ac484fc6c2b8aeb537ee728a91e9ba5aec78f0aaf314c109419d42050d7d2562b3d352807ee12383e78d08f4174e20c781bd91999546a81ab5fbab6593b9a7e829d28ff3b7789ac489071717fd52e8ca8a0eaac14e3236771b793fdb51b05a6c982d80a7d30f52b75aa7df2d62e7b869cdd92f8a7e6c5a7782c
6170be3f38fc2a9f181f98ea9668439e2b617562f0fdfd361e89e561c5bec78ebefbd412d7c2dcb427015b05f016268116631a8aa99aa22f7e09b740fb4a8147f2252d5f939a01935c14f7959d04a038906a000accb2ae11b24bb8d31379c691b3ddfe8bcf6e7302cfa3b4cb51ff6e65ea86a63d623510b930a711c83088010586fbedf5d9464bca1b9008927db569cd709cd0b763e33ceaa7e0c129afee02e813f7aae14c77872c3544984f0b55ad527bcef530134efe0a321ba9bad9b956cedd0a3e3dfa4dbd50d18b97cd350c8dada080324cc4b6336de3fb6d63f6b751558c0bfe32d5289167d25d3ea31ba18500d22b4f530fb9e3442e0565c7363662cacb345e62c5f693f221a45dfeaf687693ddb110668c614c5e3ad51f232cd4796a37eb0bf2f7d3ff0d51c14df942ec37b74ec2d69913108aa52f6e986562e31a14caa776bbff3df27fe5a27883e772030671bd2bb5d212be135d2ae03eaa0a5d9371429f56d174936d6a042cc0ea7b16f4b19c0f255584bd9f90ba730c75f65c784386c8d7d40e62aa43a6262734de9b5045725d69758cea8655ec1bd74cb297d1323fa3dc5d75c78fbf3817770dabb31dba6a125fd140c314dfb0ba695de2e9c877c8565162f197f0164a17c9265ebe9adc6b0e10994519b31170595c879886cda2af110ee8ba56a6c4b8c352a19b831264ae75
05c4c82b91de14840b5525257dd48bd57940ab02b4f63950eb7fb476ee4270ce8dac59634b471aa3493276b192e1a524d98d83b3be26c93c44dbd4633fe4ca17a7d606fcb5a6dea8b166ed62f59f0fac79f384820c76785d84f4bdfbbd509216bbf3a2bcc18801e6da31bcbc39e8d1fbbea18ceec76dbd39470a2786fc2fe697a4d3bab0d5c798934ea318b43045c2d72fc51685e35f9871705d670a30c6fd47f6a4e32af22251e52e19664d16d7c179426281b5036ed38b1854aa52a308b9434a7efade770513732df6f107990810c80cfb90f034d1db64e54d2f9f32ce63e8e89415f0013f7f0239735bceba339ac03643c65649bcf4ab2ef23efa39a8f637459b271ecb865d53082c44758dca19265c455173dd95bbb0af1ae13035e795d8db8a21c938141984c2a9459f59a46364eabce758a280e042ac3bba4876c58244c44c8d9e63c9222d9ae0592cab9a7eae675b71edb860d5e888d5458120ea48452549539db0cfbd240b759b60e9bf5b76ed6fdd641869ec6146d031072a86179cbc49d5fde72c38bb47cff8662378b0e09f4cbdad7308a193fdeb72c7ff1499a63874c37fc20b67ce2a4726fe8fec20e604e6bec291a1a9f1331d6ee28f01697d90dd93f1244ce5384ecc59f3310a14e1390313c0999e777297e0655056c77ed54d126d462da5b8b5cec90d0c17955e814e815d
7435b18d6b91238784b96c63bba1d1a305924a2b318e1e9cedeeacddf4a9361c3b0aebe99506311318a30179b2a8c02c3afdb27c25078d408fa714beaf65398dec94269f7888b6dff86b74bc7ae6ced800c84a0dcfe1eb85f594839462f4dccf28865f5bc64e3d1d50b0dd0c234a48f066632810967439c6771e86222ccf8350b65c7e6030a27b4724956b8833746506123c979c64efafccb6f425959fdcb09b235bf19e848712bb284938452788370e31a75664f744bbde15adaee80e86c4dda486809ef04e9ec1737f5ede40eeb35b806b5c8f13218a57bc86be2d27116f9404a4160838121defe4d9e6828a123805c07b112b792b9a34721253de240671c515b380b5ef05fc1987ad2b1c1e18e717e57dc4b788d3d485fb709879cf1f3ddad5229d5a62b3b2f6d48824b407da0beb81b5c7d6e79d4a75e1f70e06ba7ef1e08d98be8b49c6f3837641ea435f5d8abd910b8e9f25a519eecb17c0bfc41207d9f74c5126a819243f95dce6a70bed493e9f2fc458168d6ce8cc47a560a1c716b210aebcacb5a192313e6c44513508ad0e2aa6aa9ef6cffdaea2846e36d71f196247d185886d38fa96699888bd49e1bdb670f7ad46ff19feb98c40710c6106f01f7882697fb1ac90375cc0ecc52a6e3116ac27fce48c29ad0db4264bd7a27eb9b9e381210faaf216a68a996aec2ab88634b02857
e40f7080261461a76a33aed835e5671a3fda3f47cc8bb53e1aba2eebdb70025be7088621bc5b5235fe94a5d1e5175a489b51259660fdf6b2ab5ab096c07912bc33429d2a22e2af0ab640f98fde5f2601558ff08e3b6dd2c202654d596a4943fceb63f8f3e5cc005bc2f9dc0ba0489ee5d99986da8d9ce589a82b475985bb4698ad3203d5f870b186af002b557c9f00818184c10bce86c22b9aff183fc953806f4a76dbbc7986e33fad14e32b30b9ad3ce602fe1ce2f97e31eeb8fd6b3ef8aef797cfffca8cf08aa05f571db0c61c99ddc914c59661c99bb39b224313a4b4abcdaa21ca05e46b4337c8499fb0d3b9382b2e80e0c2575dc6eddb8837d290c382e75af5803e502453061fa1aa720f344ca9fb738ad6ce3fd92f328fa49dcd605a4f9041ad45df5a7db6ad761f8c18adf8db51f308aacaf6f2501ed640105f0c591663dd3e6c6c752b200959be63c40150d4a46d1856b15c602765e2bf1a1ac1ae45aff703d82c22d39485efd2e6830301877a0549a05b77106fea61d15b8b4f42f03bf197f63dc8f8dce5b3121d3b6908a9e23392a8a8a6a0d0d43209155ce9c0473373a2442f9a797f6dbe4174ec5c37fc6542ffee0bb38792dc4377c7cf0491c4bac822cec0e8c73fa55fd2450aab98728c55aaceb7916aa479b1c193cd917d7167e686d39403ac7d9064930402c018f647f66d
1cc44d044593d3e5612e0fe206552e05001569bba84ed63d1cb9f52039ad9d7a1089a5e12154eaba5a86c7f24df1ea730b720914e5d3fa57c005d458bf05541b0f58a9e9af620eb22583d3328a4fb784cfe9f774c072be92aee410a1de154095886c57edf086882f18b9b2ba56980a2d7f12096c70e35903b8fdd7ffcaf77c5cee574f2938c110758a5c6734353b8747c606caa0fd6418ccc1cd760064d9d9cbd4a7f3baa4a0d30450208845eb74bf5d16a21d6adb44528d6fe363ec4743fa5b044d80d78f009bb98d64abaeee36e0895aa5148a60e9d0b8e7170cd24cf3468c8edd3a6eaaa8bcb38b86f6afc7cfdc5a247271b93f2d1dc2321021140d7a427bf2bfb0df204e3158966a3303565a3056a06e0c26c4ea5cabd2901159310dbdbf716ecb9b62f954fcea571ac490b512cd3ad51ce382ced7ac3a46d99e098e9c397cb5abd492f49e409bb741237837c65972c7d20b5cf49e2907692ea52ed10fedc347a14f205378a6d272f378b89e3d561581be5ced67af58b4b27e0143c4a1e35c81f6d6f810948f47ab4a7aa1d874fa56284b5756b668a76df22b508b9425f77b490ed318fe1955fca245084e2382c6846ba1a5ef83e2c236bfbdb227e64aa4aa829950d8c29b0fc279a04873063c39532df72b7e770d469e928ad7d9e342dca3749eea898623f4f9c071792d74ab1643da10
db4016ec613d230b139402a3a8b87f9903a60d80621ba544805d3bcf810f71df07fb20a7930390ed023df73f1afff9bb990f10931130438adcf7323e31c453fbb3006d35569a4556ba7ec1ac5e6d0f9f974ffd178d9a3de5823c8d80e3bc6eb9f87fb44b9a8ccf62847a236cfed492589b15f25280060d2762aa18db22e5ec0e4833427674866a6e8b96a17b34fb2243152db18d483c64a81d4dd5bad43b232ef62c176df74249e0b4a023d13127214d8598890e4d1e04cc1c99a86526739b3be96baa03582d1d774bc22c9d4871b52c746e4df8b221214fdcf34e89531ad250017d730b81375cefd6f95aaaee141c5af3912995489f6309d65acbea2c5007f99cda47bfbe9691e7d2e8e13121f79f56fa4e177d5a89bb41e36fdb2d0ca25d9a55bf2c6c0534f981faaf512be65e06d4a10d86a8a254acff1e8b5aa1b79355cb92886f25176ede1555ddf599a823e469d2bd9ebfdb62d9fd6b93d49bdfcdae4ef8ed3d09ebc4dfb4224c34ead89a5a51c19025e23a586f148582493a70e78dd09dbcf6d06b30ffef643c28496e02778848ff398bbcbd062e9c34a04865d395dcc8e701da4d3dd9c66e116f164dee997d5485f8f26035462259fd22e81016adb6651116ae7c4d4d2f1696e236a794344038d520d520a66241250dae93981ab971930be018f739ece6d3eb651a9966707c06a9c3
e0504a228a8aa664e52684a3a5cee76b353d08d0a318014f95a717f26e1a08c14a2669dbadceae6bf9a9011c4e689969fbe872a21e645721743f7f5a7164462f59f42c13;
Mod(s,p)^2==Mod(-23,p)
hermann@7950x:~/llr405src/linux64llr$