#!/bin/bash
export STANDALONE=yes
export ENVIRON_DEFAULT=yes
export HOST=$(uname -m | sed -e 's/i.86/i386/;s/arm.*/arm/;s/ppc64.*/ppc64/')
export PRETTY_PRINT_STACKS=no
export ARCH=arm64
export ARCH_NAME=aarch64
export PROCESSOR=cortex-a57
echo BUILD_HEAD=
trap 'rm -f $cleanup' EXIT
bin=`mktemp`
cleanup="$bin $cleanup"
base64 -d << 'BIN_EOF' | zcat > $bin || exit 2
H4sICNwBuWAAA3BzY2kuZmxhdADsvQ18VMW5Pz7nnE2ySXgJ2SQERLObgMJqFUsCQcWcbBIMLyok
UfGtbBJQaKwSgopAZQm0pcb+LkeiKNoQUHvdrbeX1nB/pqV1RWu9xd6LARStrZsEBYlaBJSsQPb3
fWbm7J6s6O29/3v/Xj+fPR/j7j7zzMwzzzzzvM3MwcbYhnWMGT/A59P4/CE+XwnlGC+w5L4exmr+
kenhZ+x62K7YWtYvuqD/aS8zwpHIyLHM12Xz5O5/t0Tbf1BhR7cESwxbcntXeUbu/mGMtR4bxlqn
4lNnbEf9UNbazth2dkdZeCs+XaFhxjZ8enznGBc7WeuEYRwvq5zT4jRsQdFuUJv/BvA35DNfVb7v
oqmKTw+7Mpih+FiYyvKc2v7j1b/zPwecpuaLjJDGjE9XKn62c8lDtfnMyGJ6Z0jLcrtGsFbvTL3T
x1hRCerQ92AkUriGsaMMdZkz2SiaUxF+OoO1dmssENKyA12oU+dRjF6NuWs9LoPaKTtQ+PynK0v9
x6t3PTNkBMtCXdZO9R+sCDOmP0Q0MfBABw/+FIlsAp82oc8dwNnD7J5wKuN82MMmesJ54HVvJmtl
rOQNLZNlrQZdEfA170f2/VumaPtLvWyemlK8v9Tufa7UmbtfwW9lW+5+5hS8UTKK97vY/b9ysWX4
03+lZMR4xlDG+lc/xCSM9+ksJd7vcY0tDYP3ezwTS8NlNvY6YwUPOO9P38+Y2pLHlL4nI5GaLahj
thVK+YW/Z7jiPzhS9b+fp/kPX2DzH7kkyf/hlGT/xyUp/qNX2f3Hrk31n7ghzf/Z/HR//+1D/J/f
NdR/+t5h/oGVLNy91mZ0r2Zhl168X8Vfd3qGn0F2wGdDrSreH0gHz9Pn+FU9d78LfwMr9fDpe69B
G1ejrdlocxbanok+ZqCvSvR5FfqeDhoqQEs5aCoDbR7QWOoPpXQ9E9K2/I/Q7LTQ/P1vCM26heY5
3xCavRaaC74hNPssNH+W9s2gud1C879+Q2gOWmh+4htCc8hC813/C2lWSkFnvH5WYjR74mjuXq2j
zv9e2p0W2h3fMNp1C+0HU79ZtHsttO/4htHus9D+w28Y7e0W2m/4htEetNA+/htGe8hCe9j+P0d7
zt05n1KcwWxDyiP4oHiHYpQT+BtIZ2EH06euVlnjgtEzV8DPr9l4nl5s/t5KvrzKpvrI/2cjjR9r
rHUjfiOWQV09THGMGUdRfJYcHGb8CDHRS07EWAdKw0mIu14ev7azZ2JFeMEQWwvhOdFfno812nJn
rEA8UeMcoxebv9vRX1Blhc3rWD/hoc2iUYjr9KN5xYTnVFgh4fZqaoDwPTZmuFBnHPpZzdjUDxD/
eO2Ii1BOsB6MkeC9gFcwVtgzMSkcBG0Yz252umxjcLzWSfSb+NQe4b8JfBkXbm/aNYzHhA9jXMS3
evfaTuJd+7crwnWIEfXlBf2d4AvxZAs+twKuoh2vu6zThZho67eTwszGRnjdWqcZ+5lx6fGVL/iP
oy3n+orwQcR66K+D+Og4oISPr3zxmZ8THfgk/OPVv/V/erPizw66Wj6juXOwsAoeNWNcxNcXMW/d
kUhRHsvuy09hNR1opxW0t+4aYryg5vQ54EcwjdV4klmhb8Wk/hdU1qeBzmcwB03EY4XVEOzHQ1mN
gnapTg+PZbWA0z5zRT1wuwciRfPBn6ZkZhDuB9SeTeCWnonU1GmssHT56Mz5q5RGl02Z6xrDMp25
N66YADwNbfL5wPx1a5p7gZz/UsxrCWBj5fyXjGeNIdBf8iBrZHZWUwO+UN21GCf4aNCYe05Hij69
udQ/4CAZfInzRwEdNJ6DoJfkruQEa+xJ2TK6hLHG8lx9hYLxnYtxrqH+4sraVVaTD7qpbw/o9uG3
B7TPXwC8TcDDeDwZW0bnD0QKXUHGx0W41NbTE5tHx7e3FbzwsCQ3tbELdBdgDMTT2s8jfAz/jnml
34QfzNQ/94cjNTQn2wDX5Rj/gO+QxcYFuTNXOPsjNRr6Mn/TunzyZKToBeCUQt7FPCmBx/DbnLNH
8J3x9f5bP9U7AZ6T/JC8fQpckp8hmJdtqj41H2vOm6Z3HtSyA+vQP8M686p6mPhZr5KcsalUDtrn
etNYZ90wvRNrZUTdMNbZDFrrIBetGvvCnFyP8RNdb6mstVVls6BLGn9yOlLD25J9KOijFn3kxPVR
jz5ak1kj5G5EPfpZMxDhtPZ8Hil6H2OjHMtLot0LK2Sbqs1XFd9uPO21ot1LXWi3VrYbTzetp4Hh
5/b3aaq7DmNwJbGO9zGO7jJmPIB19TRgh/B7pjLKqP++vpHwX7W/tPldpvWlPqY9/r5mD1QuXlx8
OIsVezBXEab0OcHrFzAP3lFzVgTx/QhTds9PYp/MPDOzZeaZ0o3fg3xSH7029jq1txh8fY9pu1+l
tcjS+v4VbS06kVc8i7cHnabZ3D+GXA2klPUTzUTbBRizluyr6i0T5YTns+DMD2JNoZ9eLSWQPNxX
lQTc28ay4vdsbOohyMyfwVfNrnfWYx1jzYUXor0kxsJ1aCdpSOmEp8FDmo+kIcqEcYrASUI7twEv
GXgLLXhJdswhcLUhrHMLxv0TyPAWO2ssw9pc17529Do7m0vyqw3ROd6nlLuSfCc+YG18QuunIYnV
pKOOD580xvXg/weH1F+9Bxw7+O9/7LFjVO/lVf/6+BEtKbDudNneH9ltLX+wpex+X7MFbItvL34K
vEuORHa0YC0+leSregp0VqRCh2FeQljrCFh2l2AuJpyZ0TIBc3G1nIuDaG/90fnFf8AcvIo2fnQ6
r/gfmW13hKX20TxgPqeOt/AXdXZfCFrfwFiI1nHgiw08Poj5INxzLbjHqzv9kMG5tCZP1qv+gQIW
Dk1i4Rr01b166IR7c/XOe7y6fx/m4jjsUzZkO9yg+UNlitEM30FBP/dB/j8tU6ZueYQ13gedrEOu
Qg1ibYUmiTXQjTaz0DeHo79QA+sM3aV3LkvWpx7XRgXINoXuYp01Z2A7wMdwQ5mf6uZRHeDR2jhZ
7wF9tD7+wNeHS9OnTkohveMIZJGu3aA0XobPYCqrqUyH7u5gjc5kVrPeJvS414HPVtaoqIPpIzvZ
A/qUs9BXmKJPNWlb1h8pehs8dZ2KFP6X6n8WKfoj6pccZI3rQWMJ1sGrsHOkp7vBv0np8COAHwKf
ifat+awmjO+1KsFGBSh/HMZYo7p/LNoZQutoVKAWdodsYzXT0qm8SR01y8SZABlxBCe1VGOeqH7o
BtZp5R3xbc1nkZqOEazw/47snxK8EvOl5QRyjn7/oZ6y0qmhtYrRe4MOP0IPXwbZoTFlHY0UbaKx
7FEa4SvVjFdpPEqjLw2fr8HuYp1MGfrVba0cEG11fBQpWkdthZTGdsxXyWGl8UWNxu4IFGLM+6ns
QaWx9kSkZlM62rw41ibxO3gswucBbXbGz4Xkf3Q+zLn4CbW5Hf18EqmBHh5Bff2GYPtAO2D70ljh
DXH094J+j+KrcsB+03yooM06F/96PFKDNeJ+Gu1Qe5/XK1N/hu81qazwZPoX21JVX9V79YInByVP
1kmeZL0XKSpBXSf6CKGdN5X+KS+ifgj1J8v65CtSPWoHdjxM7Swz6/dGii6h9Z/PRpB9/9MwVrNL
1j+pKe7r0cbfyH6hHGus8XtDRXk3L2e8vNVSPhRytuviweWw/yOnpIKui2N0QR90Eh001zTPv5D0
tP41UpQO/P+bHI8PGw6epoCnb9q+WEZj65VyQ7yi8V4u2zzx50jRZwMxGv+U9MUxbLSM4VtnKW+z
lP/E9sVy3cLD7yUJHlh5+KaVx7Yvlr9qKR+qfbG8g3ywl6a0UH+LLN+XW77nWb6XW75fRL4V/664
V1m+b7F8/2fLdyGXKpfbKmnnIprt9Q9svswjZZoBR9w4PNyX2XeJ5j8CO/BBQeqEI5eU+Qc0Fqa4
7sglCuI71R8a6ZvWfY5vWk+eb1pvgW/awQt809670Dft/Ut80w5NAmzjUD9sv/He48P8hxBv3o75
GtD0MPoyTL8mojlfPwjbRn4i4SqfQ85fYsbxlcz/A8jye4gJf2DD53B82vEJP3HdED18cCQLV6M9
+I9uws9MoZjH4T6+UvejzVj7awteP0w+6NoCo29tvnEk2Zf5AcYGn5Tbrj6M78gFqRN6braFe+An
Hb6gDGNTePxKYzyMtoiW7htsYaKtd74tTHSyVN80ZahvmjrCN03L9k2zjfJNSzrXNy3Z5ZuWMs43
7bBWYNiymT/5XMU/waQT/R1OttAJmkw6iQfq6dV7PUFmvJQCfQD72gwbr459abOH6Q8RHLHV1CcV
EV/1aNqs+Tb92IvwDeC7GND5c3+AuDQe/yX4wlvgT60rVl7fAv+CYhzqk/xqqnMC849YZvsa/NW3
jzRczlxjYHhev+cC+Di0x+nNNSA7m6AvW+9TWOvA8NH95EvsA4w+OU4o1/gZ9yWmc1+C/HyaTwbf
IUhxEsV66K90kbf4RcSEAsfXRZ8UWxwErhk3NiOu6AEOZLOLfhcsqiteuyi/mGLhJ2VdgvNyjI/K
tbOUb1NYh0Z7utAn8+EHLwDfyNdMWlRfPBZ/ZCNfYLYGJ2xiO7PNkjRV0SfFawQ7Bd6oZhs29ssC
8uXRhg19Ur/U5xam8TZ8TONt2Mg3xPczPN4R7RE9ZBs0tEN82Iax0rjnM6VhDeUYLPwYT342+AFf
pZD6fh/rlPpxoj/Eo0Uh+IDbNNbxJPDK4IulSD4dAk77otuLgxGKiVP6FsEOb2Pq7lcAv4qltFC9
g5rdDd+hC75x1rtM7aOxPIl2x1rGonN/PqnPCzl5EnNxTIyjyxxHL2ijsdiY2oI566iFjK5mtr4X
5Th6mOA78di2qIDzmfhvjpPGVifnRpNzAxmpeQr4TjkvkClOh3VOoDf7aH+3TKHY3ddF/RA9X9YP
ZIiX56NcFeWvr8Yc0lzFw7oRcx2XepDGpmJsiDOyFmTpxVgzDUQfxbA09jzwrRRtmDwx5dzMGb0I
XGpHj8sj5ZEPCr2f9yxr1DE3paiTjLEpmlgfJGOUe/DZklq6IR/kTyBmaSkAPWNX6RtXw69IRTvv
wn4wm+9t6rsUvh7NG+FTWx9T/A3Y+TJ3VAof2qST1jfx/oLCinCIfARV8I9ySDQPLorzEXfnk1ye
YI3Ex/PB8yD4ba6Besg/yY1Tyo1Nys1quY5CD+r9vjORHdSfE3AZgwTOrPydn+KjMxozXgZPP0Cf
C9IpXsM8gq80d1sxJ/AjikrLIYfPsEbXh6seormP1Lt2U16S9NZTGBvlxt7TkgPkDxFdkIupiKmz
nuJyLPTAU2jnSchHHeaX4NSeFzZ7rKJPpTrt4PlTUt8Q/tjFdcUvo85qjK0SeB7EuUTbBEVtoXGT
jPQk83xPzdjF9cX5Uk63MJWP+wWNZM/WEBq5ZfSZlSKfdhDrl3RGiNepK3ZKXuVJXnUjHobec1Nd
kjFr3RKMw6cwrPXUwGnYjhKF9VE54Zo49J34Y/4m3E+AS3DoxU9CKbH2ttYjDicdDPzneK7HV9Uj
fco+fJLO+neZnyHdH4L9WZ5EZzkoX/Mb/+oxbOkJxK4UG34qc32l4BOtFYqJ6+DXrhnKCh9hbMMb
nlEGP7+Sb4N/4wi8otEZlJwA1vSGumT43e2jDJ6rSWado0CvN58ZBeirWdXDPeewcPdL5BdlB5qT
8TuPhZvT8Akb3TwMnxew8Ikz/AzKBuZzGdmo580s5TEhz2lmKp3Up8id/P6Z32osy0rLk6AF62CD
yzfKIFp4OxZ6Pj0j6InY/n569ljo+QT1vGkWetIG0/MY6HnRzgqtNN1v0hQ6O017JE1v/ydo+rmF
ptds3N8IxHJKv3/m3ji+3GrSEDw7Df8saej8T9DwgIWGnxNfhln4MmwwX6pBD5edulFGo9TDlIu2
0lioiXHUgj6eKwNdlIsuR11xbupZP+XBSUZ3oN4OXi878C+gm+czQHMIPmo3fNQe+Ki98FEPwkd9
bwr81cvhr5agrCXD37txhP+9xzP9h7aw8EjeZ07gT2e4/xbIO601kn7ohf/aoyUZ3fAlQ/Ale9KT
/blOyu9nBXovZ+FeTUHsMHyCojlmvZ833R/0TGo5OPIq//t5Nv/BkUn+p09FNmUxR/qWAa3xGcS5
e3dNatkEmk96zuFj7dZGBgaI5za2Q9GyZgU9hS09gI08Q/WyeL31lLvA+GygMZoTOYf4uY+vefh0
G2hOScfUs9GGyzvaSHL6unbZuF+H+R1tTEV7D8Cn0+C7xfCzBuFvS/ZVkY94EHSZOPXec3h5T5Js
yznGOB9t3Yu2jg58RVvA75bz2y18vg06fEeD72+I/YR/ITngc5fD9cy/qKw1mK9Phc0s3I+5hFLa
0Mr5lA0+ZQU60K8D/i+zw9eEfSIY8fAXgKuAdeM7lXug38lWULvW/GqHyrK60VbYEgcdSULsgzjo
AxkHfXCB5v+A8q3gJcULpGuP/Bdjop7hQ/0Ud2kUs48c5j8IH/r9vOH+n8XFRpwO29noUClW+v9M
B8Vm1DfRYcZnPzhbfFaGuDBZxoVl/z1xYXfLUL8i7HdV70bBgwJOx3D/oR+xcL1JR1mMjuPVv4jq
gxN8T8HB9wtD6Kcb/fSgn170cxD9vId+3kc/h6ZQX8OwpodjTWf4D/0DC+dDnoTMnmv8AGuH9Npa
slF01iXF5g+t1YxejLeHYsQL6QwMM3rT0yfQflrP8HJ/z3AVfxX40/xzT8d03FKpn5xoX+xFdol9
sjg9ppr96+capMvmoY1a2LA1KiuqhY7spk/YkFKNFZltX0s4wCXbAhlugP9SQ3WoPconHIetp3ZF
XCn258QaP9fQqS7arT0TKRTjPs+4nGBoSzFhvvOMyZaxTIrrb+tp+Hboay90x2FlcD//XfOyU5F8
CZ5n5Ml5Ofe/OC99p2JjGSLn5ddo/6fQc69CL5j7UMc1xV0D/8X0a3id0HkG6Z1jaKNVZVW090x+
U/ebtJ+W9V346zWANQyF/l2WzOYq8M1pL2kSfDuyYa2qo+WN/DyDfFLal9y6orafdM5f0R7potVq
Fo8fSAdRf6SHiE7SRftPRUZuhX3ldLA843XUIR/tIHQTxR4Dw7P7ea6RcoFlNH4W/jced8/qN9fJ
Gcgb4ssNhE/+tj7G04k4r2gs6pSPUTvhRxdGgHc//OMQfFB8hs9gLuejLCo3ep7xq1PEJ/IvxTxT
32tU0e8hiv2hgygPTfIXgn/ZCxl0Ie4NWOgx+UxyQfaA+OwM5hkP83Gz8I5dTmOj5usivq0ZNsf/
RrPLaF6hhzei7zX3Sz74nMY/4HfzPYhZoKe3ar6qFvxenYxYDnFI84qmfvDVTWU/AHySwiaD769T
Oe3Fx+v7Vadory4nQDj3Af8z09+An1sPWQCt7nVRmVAC5DvQPsfnmuo+tdLmv3nV6Oocb/H+1W+y
xmdSWQ0/R5sc7FKSQ8eY88+bR4IneUw5QnmZjbQu6i427rtpWf9B2KYtVzJu73u0UWS73P3aOW6x
Jl3G9aDFTvnkH/mqdMbS8vSMxpPg6d/E3BcRbpOqGlSP6gtZzTcqUW/BiuX93C5uyzN6gdejjXaT
HRRzWWCUACcCOSZ762Euntf0sNbNYr0VGFPM9aKPNQrxnXj5EObxDPSAF31S3+ry5f3NiNu7TZpZ
vjEBuLRHN2gs7S6jAPD9HG7C8o3zANsDGPHn19yfUAIUa1SAn93grbZqxd7mVXq4niW11FfCXu9c
8lCFTe/0LK/vH4c5hUx3DKSUYi3ZAkdhA5maR7E3xyOc/EhkRw/WM9mRbtpnw2cLxlCANqkf26p7
99YD9zZma1mIdl+q1MMVaPfJaLsK2tV4u+C3QbjrmNayFnjwj3bYpM2+B22K/BtzM9CuQRYKsIby
9rHGVzHnWJtdvZAHlzO4WSOZ4GtEO1Iq8240vx7M73zML8Vo1hwHtVtyms6TIBZ/9NoVr6IOA1+I
FkV3tbjAl7rlLrHWr2CNNH46L0E8YBgfnXlXKsVdAsR3RxWa7/YrDZeO9myqX7XZ/LH95Lz+9/ie
InO/D/4Tn6if28GbFPCF2l+Ptutnj22pt6NMYTvoPoIGnB4tGfKVFCD9sQV4hy14ayU/TV6S3qG9
3/GSbybd6yXd+mxni2IffP9BzVzXdQJzST43+QlkT+ogP+2seP93Yee8VWxCL8anki+K8Xkwvvo0
zV+fluSPPwdE+qcG/dCeJbVL6/ozeeaAbAdvH7popmwfTgndmTDyUcensk7StU0fr3pIt+nhNYg5
fMmM6yFHae7+yXru/l4tL6Dhk842nW3fnnhG9zcY+Ap1mGnqRcrHRM/b7JnZqUNHE37twPz1dG6G
+q29n6334fsLl1M8JPTwdNizPMTjLw5ESPdUeUGjtdxsk2A8N4u26Z7I6oEtlSZOkWyjFvoRtqzT
hBNdtSrroDmgNrKY0mKeNdrRbDf4uSrYJ7JjTR7duBrtnIfYriKVtZJdI31rPVNknhOCbjraivrE
+0dg1yfpbMSn3FcQPv5vIRtrED/Ctj3kce7dTPBJevbuauZ4YGMaC++OkE5yBM7GXzNuoHZg53bU
o69a/NUHiw2Xr9hQ08AjuhfjzTXOhCObroFv+QfMtWpjr89n7Aidt+iJbOkqxNrh6wc8bR2YszdS
pvex03P2dvM4KytAdpbkZh90YJae1UL8Ib7cb2etuzVxzwZz0dGeWRrukfyBzuV8ofxivB3iue+M
4Nsa5SBBR3cK2XV1lsu2ZjTZ++g4vGIcPRjHv8nczc/lJ9meZ6L267d+cxzmuqFxnFwJfxz0t4H+
kzSnoLH2d0seEmdvFD6GQownhym7aY5pfnfBhzHn+N/kGEyfJYQ49ORKj98cg3Xdwt4dbaJ5hszc
jXk+Ie8eVYh7Q9tFjmGCwZZXhOlujsirZgeWYY5NuZljHbs+lY+9eVhsDh/EHP4FPhzZS3Pc3Pbt
mmCei9vevoLaz+rD2qvpfpIZIfiKj6bQHHn8lEcO2ljN9hSxBhjs8b+DPqLdxP0J7SWN1MMXkB+a
qYS706me2kc2ncbXlM+4Lz8c9cy+nEmM+8gdK5LCeYCL8QgekZ4LYW6cjLWQLgilq/45JDNotxR8
34j+jmDcLZIm16lITUyOBQ/yM2I8mAUePAEeZJOtTvHweXeRjiEZpvZTVH+xpf2VaPcPZ+HrrkyR
/xN5v/P6O9PQv41dmp4CvqnifAvvU7/cOIA1rtjYiBIb4zkQyHphtNx3ubHHWg7+Yi0WUl8uvUTg
eK8wzgXdhz+PbOqhfT7I5wzUaVdEnKM6t3Z1Q3cr5Ulh4jVgNbxe+zRjOOoVpiOuSvFw2xdbG9MM
F7vcUO0x3tiAex1482/oJ8bDyzmeJ9lX9dmgtXUZhzcn+aqORteR0H1cZ/XYDR7LYP20Uq5S1adC
TxdSfqPe6eb6cMuV0Nk5enEd08Ow8VPpjEYt36eJnUl9fECc3zTbFGUsvHpA+F2O8opwE+o1nccy
t0wjm5EV+D8oq0ZfvmRxVgF2p5Ns5xCFy5nbaucIx8F8mf3WsbESMWbL2vltf2TTMPDmR+CNtBPu
5zHnKSJH6HYcA7z6n/h6UtkzXWtmVoSJTjojZWdPdaXag112e/BYiZ35UzKCXcnOYFczcAoyYEPA
s62K2Lud0a74y8azzqtyNX+ZzjrrMc/87EA6fF+U0zmMStjsH3vchn2us8WW6utK4vtSvofS8JmO
v1S+R6X1kW1/ZcPazXQ26mnnms3rvJRrt/fR2VGXooM2PeyET1ewaGx/6Rjd72IpLZBDyJCjr85X
/fnhM5GalAy909rWIca+nQKaqc0j0IHUbh/8FbNtOjt6xMY6noZufpolB164Ys4xF/qD/3y0jKUa
pYpjN631WU4l/F30dV0ya2V2X1c97e1Cf5AeWUXfsf66sTYZ7Cj30eTah5zsfgTlP0oxcwV7ozk7
IZfMcAVLDDUzNnfXYO62wB/P/Vzk18QcC7yeEXFy7SvhcNKbplwT7R7Q3ovx6uAHrdVS8CCvP4XL
FI8NdLfhcTKD7pG6QplG2QFn/w9VlhWjS+Htku94sMRXtS3FzCUqxvmg717QdzQs9DK1MW6Op5PO
GFKsrD2hw59mG9ahj/p3vA+tc3IdwPcAMQ8NH2G9Ny+nWFlxu+ReXmlsDzDTtDPchlRWhPPhj6mw
xQWYf9jPPnWD5/OX0EZ+hh52eXm+bwdMAfernRiv1V84rrDt3EapdMYjO6DCNyu7Zc7e6isq95av
yq2uvyW3utmrupt0B8VciKcc7qqhmOORtCeTHfgL5DmUzYr4elZTjTVVsAeY859IHficZ1IL6cFX
R0CHDWeFpPuhL7luJj+Y7ujS2Jn3ImNLJuv8M3yI9kxWxPkeHGFMgM3NZ5fv98zOqKZ4xmNnI0w/
kvRmnXPX6OZ81lmEtfwQ9MT3IEefCpufyecxqBqHxd1fN9fnw1nNcchle5qYZxpDL+TX064Zz9Jd
5XTEdQV6J51D6waOkqt3FoAf+eDHWMmPNV7FXaerbtgTN42tFm3a1pdN+NE2zONYvfMB4M/A3w9Q
Zzr+xuP7hFtzqwvwfSY+H0Q7s/B3fmmyu6I0yb2u1uauq1XddpRNAPwpZnPvYogDSzW3q1Zx99hY
Zy36WudmndTf1iF0Drxiwji0q+FvLNpV8fc0aBsvaUymdnSbW6kVtAa9zL0GbSCednczZQKt2R7w
mvQp+NK4nmw2/LHSE9DDw/QwdHuHL0fv/BRrk/RZM76vAXwWZHtNjs7zbZ4Tg227D/T5vs066ax/
s8Tphu+wcRgLV6MetdeEuV8tzlmIdRTSxPocGVvf15+MbPpHyveE4+wW4Z0bt74lPN8p1ndMH4h2
Pdm+qiOD7Nw0gZ8qcknxcBXt//Us8F1jfFUHrO37bELfgO6uQf0miX5zfVWvWc55k39Jfubkp27d
+yniL/LRleX39MOP6nCtWvJQ3dI5e51D1Jai5fn9Wy7T9jcNzN7btNa+f8vl4r52vL9M/uQ22pe0
6b/yrZjcv2bFPf0fR8/p5vVTTOWCfonGXEzv/JkibA/tn1JcGtUDsH88PwMbRL7u2yL/WOj1yLPZ
nlhcdDb8doFfJPFHxOP38v0CNVB3xNdVx9TAzkH+BfgC/VMEvijL7+4vlfzwgh9NV+oPkXw5l3v7
2SoagyNg2nkaf110/EUY/939x2L7KTxmpTiEYtX3Lf1xnQm+UJ8k1xR/O3W98zrge/k+syMAOdok
/PWsgONoZNNziHMRC0TviND5NPp9ArhzMXbvQKSQcO1nwfXL+ypmv+RDoF+jDnEH9VuDedFlv12U
F4CtfpH7NVlufo5I+jbqUcrVZbmL0F+76M/dZin//G9WmwcZZMlcxoXPmmys+SyyqQv2ktbv8eqd
/kkYL+UC6lWtheTybpa1m/YFV6vZfa2qY3cPaPhMs/GcH8VKy0O+rmYZC3lYDo+HPCw3QDFQJeh4
QXX02WGjaO+Nyyrff3tZnEleX//QdPwVMK1lIUveXcKS+jywg6/AHx+PdlPgT/HzTZCBXeQfMBv6
sAfU5QV8LeSfnr23zrIWyK8hf2X9gLCJ5r0pJwt20bxms+e7Slh2X9GGhzdDTvcs47loZmyGTd7P
96XVMPFpAmxnQZIeXquI8x+uEXrnOvguW5l9cr5Csb0aeB1j86Z5whNqaW9eD/cORHZgLvf0Yr5t
o31d+c5SjvdzidcLe0J7n5RztKX5up6W8Fr5ac0JmDIRzX3o4j0WJAu0fq7hdyli6/dfGGt1Rmju
Rbk13hR7gWhL3h3zYS06pVxdgb5Xq6xvjSriMqu/TO0TrWYfP0UfoYFIEa/P5WxwOWLKVu+ZSOHH
Vh3ZnsLlrW4Ul7c9pMPf+zSyaTLk7Z9Pkrz9zm/6VEQbrS1a9zrG265Cb/zs1r1rVnj7X9TYZPgy
D823sU+4T2vqxeV1/U4bm8z673vI+SX68YtjUqM0L6IxnY4UWnFcaGvNCmf/R4N0vV2sm3Ni43gO
47BhHN8/abFF7QKveYywRaT7Sa+qp9kI0vWe7b7RC/bM7OzVWEN9Fstk+POsSnaw8rU3kd4vhL8z
6bX8ltb84OaxmCPv/fNfhesX8N6vvLpV5risut7Mv1+/St/4Y/g4FBfTmTRaZ5+QLoLup/rtsAME
i69/NvrqQR/moaE1R9DHyltvIhrj6SuI0lf4wN9DX+2X0JeF+h1fQp9JG9F1Np7B7+vyoG2vM7jZ
BVmgPQUzX2z6sdSGA200/co3On5cTfcnO2hMRCeN6Z779Y2TXpvUQmOVucENlBuk+LsWY3WyrAdc
4GftgPpqsxxvHsvifcbbYRr3WDlmF/QRjRXrLLAVY/2qev9zdBc+8PfS/dmZwXQjxH7gP6Kb/BmV
sX3ibiYLePm5NSXAfM8f60bcSGer+i32ltYL7SO5vGLthyKRDUxPMibNW9YfBN96ZBtkV6gNqn84
Is4ItwtdOCi+F3s+Dje3ayG7sfsEz4cOwiH/h2IKncdUvi4658Z82491ib06w8Xz9sxNPhC1Q3ck
mDfVeP6EoJveM6DJOlSX2noJYzLbZcrgdnd+Vbsszdh2wvQDf+c332OkUE4dOqYIOHdjnJTjVrwZ
Ux3eDDrP4aa8GvHkA/BoC2jquP/+jYTfuquohYUcRlZGFrfFhDsR/QchAy9MRUyo6n4nK3ljiwoZ
uYx8IYHzpmzH/E33Hn3Q7/MB+zgS2/eDHdlD+ZNWT6phruvPoEulH+Cmu1A2ftfD4c4km0Y5K/g7
FDvCd2loSmYjLpL50djdpN/zeXkUbef2OgzaQxyd5qsapYrzulSf9pG/C/sUUR0NdO+r9rbLHodv
gbnOCSia0vIWjVHl944LR8r+j2FMsFFFa2X/q8/SP92ZstLQjTa57ATTjCtOiD3loMqmEt5evk8n
ZIufzwqlGfFtXHKC7v3yvJib8uk2jAH6dU895oTi9drM/Md7VjMjsppNRczWQn5BaLU+FW0WHV9p
yrCUX2e6cc4Jq11JR+yQbtQNi9kfB8oXwGf7y6dkR39Lfg6fF5I10gOTIT/vquIcBNGUDZoYaCIf
xQWaaD7vVoseb60jucpxI5g2dqhKC/GraoDvw7sJTvsKtE8/n8sIPzfk3kw5OfgbhEs4Vl3QMBAZ
Ga8bZL7QTfJNcuNi7V20l+jUWCvs/x5lYEuXB/KtgC81XoXyxu7SfTb/h6fFGj5BeUXMb2ocHcsl
HVbfCTzbE4vP0o1t9hjPXjke2TQSPNvwqcyLw7+iXAGtPQflnbAGJoTlPu+DFbRXMtkLGSIaib5S
0FY9Xg+nyTVj9beIr4TrssOng6//S9D+iWXfgfhNvOb7O3WqwfnB99fE/k4F+l1TJ8buIfnF+hH8
dbi3872dwXsj14b5eTN3LJc5hI93l+nbe4cYD2C8f4Z/UmOOF+uYdC7tndJao71MWrefgw666+KF
zEC/N/iSyUaLO46PCj+5iNXPmQp4YW59hsHqVWMU6FXqFf6OtBzQq9tY4SboIgfKTu4qbCHewCfc
Mw54O3ocxmcfr9qrifUZoPid6lXJPatk/G7/7j398GF3nAQewbaqI1t+/d0p/VNtLJxFfRUw3tfe
M4L3X7aOCUfh/vP5Rl1E7L3z+5EUWwPvKMZKuLTvGsv1D+W882RJ3gWHGpeDdw+Cd0mfxvLAYh7E
uZ4CHr/tjOrFHrn+KIdJfHsE8Dcw3xQ7UZzUj37faFaN68Bj0qGmrvwDxtOebOrKnEG60mwjpOXy
utRPSC15w6z7PJ1/tLOiZll3vqUuzfcm1D+J+iextun3fPgUOZB3urfs4HLvcNM5yp+hHapH7ZDf
8UbyI6NXq2pDOtrxIM6fz3IaPoLupbVHOGQXmrluVnl/f/yczmrncFndiLYoFjHLj4QjNYgBG9pp
DxHjoP4I71bwknDo7AbGuZ3GaY7RHJ8PbQVtZ+fN4POcIp7EeLefhKzlQtflSVqJhj+epD3c7AZ6
X0Ltd4ofJztH+/25Z0w9lw0nRNBD9cxxpX0WG9etdFb3TITzmvwYa18+zjdHw/dORQa1Px51zLFc
TWOh+OnvHIuZHzL3bXU766D8JaO75iz7yIsprGYf5Va3ZfK9ks8gX4XQbT9s1v3vMtaXamc1NuAe
17J3r2PZLS+pbPdG5njgZcZ21zNHC91HqYRtYIi9fWmIC0djDKe1xp+AR76l/B4oz10U9YtzRCEZ
I1p10KLTkZHqqlUbXySfxumgPYsRBUxt8Y1mnZMW5fffg7X7N/5+AzqHmsPvJHBdzEYY9ce4Dgic
28/PUHXF2wyO58s0bjwmbLFvKZv6jojJSL/vqW8fbrigk9URfM3yO1jXAHfLZ5FNucJ2CrxgBsfb
liZiMut++H7as+f8yw4MjGThg1jv90j7wfsPOiCTWYZrWUV4CtpuHy3Wx5/Ai73AIdymfIFzEnN0
L19vWQbdr+bnFNJ0fy+X95wA3Ztt8jAjH/zBmnq9INpeVsNrWBsnHXR2Kyew7Ye6v577DVl0tvz1
UcfEWSPOn5GCP3tOxvxooqMJYzgh82UkIx1qFte/2zGeZW8wP31fjTmJ2klLfe57K6zjeFS2HEdq
lcGy1YZ2iCfmft2kZUncp/7FSct8sGzO53x7bD6OfBLZdDnmo+N4zN6a9Nbxswws7E2mvSkWhm7q
06WMNVN/4M1LwF3wAPgB2RoHOaOy21hSC51tXwCZrVs0rr+Zqbt3Qc5qR4vc4o9Pxt6/EiI7voC/
d/OTwXHhTn/eFXRfQ5yFJx3dTTaP3mEAuEL3Nmysg/Q48SUHfgliy59T7JrHcvpUrL2TaLsfc89g
lygv3XObJ3ziNjW8xqMb76pKn85zdUqA+vPC52Y6wVkf5cfo3lBHs/56IctqaaayArIdg3XADRhH
iJ8HLPXnLVDDVt1A58KifPfSfcQcg96jIWR2JD/L3wLevwPbdR14T3cHo/i+bI6/TZP4vhyOvxr4
e4A/A/jyzFOsTnsur+Mx+wiNMpqA/zLwpwH/WfNemM5G0N25UueLm/9R5jdPYAwbwZuB4SzsUKHD
IG8Pg2878sXdiBTwjsrpe62qh9eAh7knhV+QDz+R/LOLsAY+Taf14QgMDI/Fc8erf+2nODjvNGuk
ONj0Wci3CdNdUvR9qsnmH7iQhc+BHFSmsppNv1uyl8sFZOpkMnudOZkBm9g1Gn+5+BuDv2yKOyG3
l8v7XyHtnECTpodHn4psukJjOyIqO0J3rXIwp5+D7n6UX0E6DJ9btKw+uuN/CrTePBDZYfZF/eTK
dsmeW/2XU03loJHG9QofF8kJ3YMbY2lzzZlIzeegp1rDerW0+Se0d4CxjnzuU+fyMy0e51ub3/3k
P+7nDcjiEynMoH0KatMBOfvAqmNDo8W8D4mt6U+PRjZNx7y/QHopsqUrn7EWz+k5eyk/T2f06M5h
aUbw7TJ+Zkc9QvekGFNmMZtvdGvcPUnzHAHXW+i/A3LRyuUiK0B56XbIBa2d5yATBDP114bPhLxJ
PY14/0LDuTwpHD2fRfZoudj/pDORmm21n5+HZNpu8vvM/gtAe6lNnOXKG8M+MXOk9I4kUxeu0eQZ
C7TnBa7KdLSLsdr1cFYx3SNz9CH22t2qai2tqvIAc27cTPGJjljbCby6Kxl8fcduD/qis1p1sMMk
x3VVJYPO4Zl8ia1Tuj8yxlDTY7x/BLw/BNvmPWaxb+1jOF6+Be9B4P0FeNdb8fRzOV6PBa8ZeHuB
N/uY0M+UK6ccxq8teRp11YuPE092KWyHY5XyuHhPpCPwS7kXglipg85ycbn7RNh067hiekr0vysp
1n8d7Yugf1rfNG90TtrZEdPTXM7v8IStvynXQrA1ti/uWZFeJz/9BOaan2Ek/QldFrzTQ+/D2UO+
Xu9xZnhC5/Lz65P5fXjWYRtCPpnDbeL9UO7R/mhVbjXhv3JLbvVBr839ez3J7XGeZzzHbO4LUJdh
PSpDKJfjq3pOZV+5H7wG5TEfR+jxUIn+BZh1XWAcbjXJ1yXjZjfx+APw7O4qNsEa8x4UZ9nd4hw5
nQlVAz7wiN7ZRePpfQ5j9p7H82zhZNbansQ66s/XJ6RMZEbPJb5OL0tNX3M/Owd2OD3P7ukbD/un
qaxwUT69S8jX5WRJ6aHl3ueTMT4b7SljfMQT3cvcL+s2Or/sZveNe/5pfs81qYH2X2qZkr6gjhnn
K0q6n979Mq/2ebLbJSy5gfamaV86SfKpHe0Qn2gP2lfOnt86wO8OVwk5Ev5g6BK90/qbybM8fB+R
3stW3cljWy/GLfNTbspPUV6Q7HuFne9Xu4Osf0qPg+6eKcYymU8MMvJ1He7Y/pR4Zw7xnucHChRu
I/vnV074MfjfU0D1s90Ua/bPT53QTmfctP4poVnw52yMv+Mlzw5ZVsm/9j2E3+HQtYPLusk/SJk9
weljgSA/Lyv6j/kAgoZQykyOw98/Uq13fiR06EN0F5toJ/zXqaxexGXED9rboPez0LpTVV+XK+Qy
6o8KeyzlKqBqUbnia7ea5KqL+a1yZd5L6JF71Nb1ROcoaA1tknwNsf7J9K6XUoyPyg2T30r/FLr/
KOKsrIAH+pN0I61dglFs8N2zvM8rOh+D8kg7/US3GIMSoPMk5tnnAtBPsu4JuXh+lMp6Vmt+OrfY
a867PMscupB1Nkl4CGtEyJV1/XX6yYenMZOP/0bzeTxf8rkYvzssz+WSTHCff9t5hulntPwtsqmf
3tOBcv0uTzg3hY04qOW66W4i8ew30BuniR7IywtqVsOkvYUt56CvOyAPI8A/ihOcKOuepIfpXWjd
U3SeTyJcih/o/Qx0Z6BnLeVexrhXon2d9odt7FLK11Of3YBTn0QD9dsm+/SdjkzeksIu9TlaR5/d
L/iD5PPz/n081ynOgfswnyLPqwRq+bv8oUvyWHhFMj9T49bt4G011kSZYmyhnBx+9187c0J0/dQr
xm+IL9emT6C2aO2k2oR8EN303qnl9O7DOsTTT4LXWK/34fdULc+gd934xHlqt91SB7a4huC9kxRD
5BUc7l1JfA+8oxtrrSSDNZYOUPw+KsCg5274m5jvnnqRYyO6yhDP/xL08jHY+qf0VvOzKe5urCXi
22qsU9pvDKolb5g0HNJiNCinRZ4ljPWazfMp2bE1nEf8fFXuqTD3l5X13q531vqwptDHIcpVoa2P
LXEqzcNxOQf8PCRkgs+BM88YnSzOL+lYYz5hu7ZzXa/nGavpDAT5ZBPFGiE/ivLQVh3aLXUqweP3
n/aJ3Nh2apf6or4HksTY22V/3J6ivzr+7zrkGXTugu+30xkhqoe+P5F1Ynsx8kxQfP1gnlFl1off
fBy0HY/yYSfZNS575j00GICjpH+INtI3L2B8W2Bj95s0Yj4JTvab+uF9OJ3GVJQf5Oc/WEdQ0kBl
G2HHuW/gcxoT+fkR+HqALfjOnL3e+3Ora6+s3OvwOtzrYK/oHJwO+1UB+7VGV9xkw7Z5VbdXZ+4C
5nAzpron4fM5iu2YNotybXRPYrBOE/rmuPQBOH/i4KuT2aW1A/yc83Yae33ICR/KZdSdz32oDeRD
jfgYeg/+05//Fs1TBi5TWasTc0R1QvwdaC7jH5LoLE7/lBf5v3/hq5p0hxq2vqeUx+XNDjqP7jbv
J7YjtqP4HGugoxe2TvAw31gGPaTQOVbo0998JHy+qz/m64vfu/UOo7WSFei9hHU2MNZ6QsLonEIH
aODlmPd/o38bIxLpoP4eP26eWbHI4crf+uvk2D16Psaeb5h0einWSFH8vXTugOwnfLEk+Pt0T7Zn
rXiXQylwnoaf3g57045+6by6dxjDuEUf0bZ9aDtUYAi/tMDY+RHPeX01XjDf+BXwyB6PW7UKPt/q
vRUsqWVdBjPo3YpPMVvLOpbc0qtpu9cy7QGFsU61lfm1IbF7PJWoMxN1P4AN0kbQPaW0lguTQLui
tXygpe6uZ+kt0H/hepb6gLbK5u/V+Ps9wzY7o3/Ho1GxaxPU8awzyan589rZfckXsbCP3r3jU/i5
Udq3ScrVw09nKC2IWUZsG8Pu27Lc1e/ifprSMJ7e0TK7oCVvoqCJ1hnPh0C3l/J8o+puTqZ3GSIu
GAPdmMQKyQ7QWqTzX6SnveeRXGcF7p0JPTZaD392/6qN/ffrG10spyV3EjNKctl99wE+CzG9s2Fy
vxffGcqy7ayTvufge/A8/T7vTNa5bEVxf+15mCO33onY7T7qA2spzTnW2TLSDtqv1PbXnUf1fVWl
KCd/EvHbfbXXyPcdXMM6uU2DDuXrLM+aT/VlnhKxrVhLwbGGyzfWyEd8ynMGNBa5pq7AvP4EsUzy
33j8JPB1ga9a8E9I/UT/dopykdhbEHfuFHcZdF/e8oJ+4v+2DLWlLFe/r15hk7Ux4t2Z/L0qY/T7
tDHinZueK1bt3cbUlnLglUdSpmiVemcZ5kupZJ3KGDE+Bbjm/jqdgbe1g0fj9c46px4WvLKl6Rc5
W5J9+gT48p11s89veRHypU/Uw/MxxwtBy1YGWUAfHtBSN0a8E9YFOurQNv8OOghnrKSjDnTkg47b
QEdtO+FJXkPe+LsvJE00ngNM/Ps4FDvAv3bTu7M8TNk9zmYzypntdbq36GI2Q8Wa9PDzXPpUGkfz
IlcxyWQJ0/j9KLO9L2vnaabxdkgeqK21i2qLqb0yxqaKdpIGtaMAh3Bd+FRz9U6nrtDd406nvFO4
dSgrjJSpr59qSvKfIvuD/sZAFp54qcA4Xq34HTw/Df+nXvP3a1rgJPzncIPNj8UYGJgE3XOVlJ32
PCNUBptEOf8SxvushU5TM3xVrhDlflmnCStg7VWuo3SnX8DWfoYY+PScvVTmYopB8/deCdaTJu5W
HOI59NHu97UxgYPaOQGqT+3+Df5L6Co9fOKHrJ9yEXSfmu7rfA57QnmseYjPs1c29X9WpodvxPfJ
+K4MoZjO12U/LWJ44sO3TkU2wX5+YsvVP6f3Spp05geZcRNoce1hBp1boPkqOa00zoD/ZdJqwmv7
I4X1gNHdWlozpCddwQsM5jvfuP1Dfr+W1m7m8epS6BkP+FkG/7Mc/meFf2ASvctANcy7nn8Pjswv
iPXZPs5w6eOMnpSYbZyJPh9HXJD1sWUdM4FXZ8HTgWcAL+1jM0/9O/9BGW/bMHa6i+OA7ATo/r/K
iugODvnk5rh3XfyTKs//+cXSEqY2UI7Y3M/nttNJ7yCS/FHh06CM3hdAeQtJ/wZOF+1Xg65tGTG6
RoOuBtB18COTrt/w/MbvTonzOfR+XbpX/sPT9L5ttqHed5HRg7inG7BQLzN6h8OGIdZppn10/OZ+
o36B8cBpES/0UW4Lf4om5GEd3XGG39MN/Un3TV3O2JzTOiMb5oFe85jjkfMr7s4yui/BZZ7WWz7J
d7uQ+eMrfx/NcZnfY/Oh8XHLvVc+7nf6Ipu+hXH/7CPLvPku4HhqttjHIT1D77x86i9bqp5Sfr3U
zL2MkzmFrdaz+PQ+KXo/eL6vyjPwNJ+nWsgvnckPQh6/8hw/5ZgcPj5XStZ/cOb/Ctb4gSLuBjiV
/6DdSrQ7SbTLFHF3wyk/NfSzEHUXoO5tqEvn91/yam46tw9fwr1aZ41+9JPP1At30b2RsV+NP59p
DevpHWV2vbMceGXSd10n/da1OuWJQFfQ1UL3cKz5SJK7I9B39D6yPoofhuf19/I7FIifFPjbEb5H
26Hx88q+TB2w20ewEV70swj91KIfhn4KQI9dt7vtiubOG8oaKX5bT+96S0KMRTmRVNYozqGmBnpY
+qxuLd39O9pvRyxxaAjd7bC7Dy07L/MqtG/m++idcnRWqVtLcVM9etcC5SUPwS7RWYLx3Ee1u6Nn
2kegrzOI2caxxiBiNyrv52d7RH0a01bU1xFD0pq9/VLYXLpLIXNeLpnzKgC/IJfu21lK+j5+/uu8
/u482EeFcgyKm945Se+u72lixi9FbN64hu5x5iHekvfz4L9mnomey//y+kRP3pD/uP5HmKOPMUdD
6H1waEtJ6p9M9bu1IRjbsMA/UDuIZ8k/zBsr4lqiC/yt+RDtEi7hEf46iUv3p78F/7xdEef928F7
xNeTCZ/e/fcT+rcPRNkIKguhrkkf4bym9E9+QWGf+FIrL3twxJabrOXP0dyCzg8pF/J5ZLK1DGPI
/Ejyleii8fyB5Aw+fDfapbsujG25ycRnkheE/zdpz6hteodjD/Dp3MNQjHM+jZcJvoa04YFfyXd0
hDAmasNsT9zLYIHCVfrGkJlLlnczHNBN2RjvjvvpnSbZu5epWT9/Em0Ok+8y2aI6+upp7uSeN8U2
D/bxMxFFZ7uffba978PwIw/B936fzkMjpnvFfDeqwopessHfk2vdC5n0QCY1rK1yudYjWOsa719z
d2vJ6N8eWNEXO7dC7VdjrKfl+6TkmWs3xXs9z4lYmfwNTcqdLuVlDeUrEZOXYo1T7o5tXzN6UH42
Lr6n+D0vA+v8DM/lZtK74ime/ir94+H6R22x5iEoV3kcPpeYA8VtvltvDZ2RSmFFT2bqnVu7JreY
PFkoefKkhSdjK+v716N8Lcp/+IR3749OL9/7A+A1v7Nkr/3WeXsPhWyBV55YtFd7UQus27lo7+99
SYF6lhLwvLN8L3zWANoJLGC2wDr4L9syv3oMtL+P2CR8gWmP0N/56I9sQAH6O3TLvL2vhJRAT1AN
PI0+XejPw5IDT/lsgXr0R3ccanUlABsRoPzf2c4HH+bv0/RVKSO+2h7ZFaVFFe9THaEk6WF7KTP+
O+haI99fSefJSHbMffR7sF5EnhBrBfFR7oA4vxO5lnUeSGYjqm39U8Q+k8PdM4mfHQu8TmcNrxXn
KkjGXc/oK3ZDN9Eaf1GcGXLXZpL+zwpcJnJ1AQb9TOc/6SzRjiPiXM6T372nuIevt5EBxe6r6mWs
8A2UtZ+O7GhHWR5TGktlvu6LuXbhk5Ctd7STnnK4+yNmvlwNiDs/asDch8k8InOJ/D10fB8gujf5
G7muzDy7uRdBMpsD+0vn1+jfxKGYAgujQ+aFvqAXRLuOwGKMGTp3yovfmbM3eGXl3l33Czt0vTfH
7dSZG/Gze/+uopYmNbulKZMZHWdEPuWDD7iveta2zTwRnfOkvEi3zPmQfjg1YPn3ayTevLPgfWLF
i+4rKPKMpxqYhTpM659Sn6Z31kLmvJC5OmlDy7A2iXYNa7M+WNjiVbWW62DnFdtXy/NWlQ3693iI
HtKf18HWfy7P45myeDdkMXZPCfHaSs2/K8Jz83yv4mJG77TL5XP3ioQ7k8j+klwJ+B/p33OVucL8
dL1z7TC9sxr0lZLulfpmOuhs+k5u9ULp5+yiO7EexU36R4H+obuxBRhnU3BSy0bVwc/lNH9A97my
+xT5zjBhK0YGVMiV9xTZiVGxffuVZX4zh/EodO8ojDcHNvkAn9uz4wn5s8gt151awJTDug+E/B7k
+wMWGbbIyT/Jc+0/53fP2CcK/H5nhm/zoPuBdL6D62fK+2k8Z/h9fh6bdbTij/5dEvp3Z24Dr2pJ
X+KzHJ+0d3g7+PWirrh7wSfyV4mPLvCJ+Pck+Gb6o02qAr4hbkT/Z3tvzVeNc7wcJ43PHCuN8564
MX1xn4nnHTeYMi32T8fzHHgv7fXxPW/0KW0c+a+E7/GNN3q5Dc3i6+RARN5jAC8o187fcwR8em+D
1VaWMpGHzwd/nOBPgbRhtZB9XScZj+Xn4/dFY/Og8Hmo5e8PGW/IdegewVirTxFrtxd86JHvfrRB
jgrlWIi31nXFfZK4fUDznupn8t8tonem7Dks3pdCe2E/PS32UXwaK6L3O9yrjmwp2ckat2r8PRn8
PcL8N8Zee55eTN+DkUiNQjmeJH4WNcA+EPOSlbFpczen1cHbXqs6Zi2U+zSUw16j0r+DkkV2qCi6
r2J534rZ3oeHRXskH7Qn2Jq5ib83pxntPSd8v0CIv+MtJ0D+JbVLfVDbdOb/Yfgth6N2QJFypnA5
Nw7zuXV3S5kyZfOnHP/XfqvuJ57x/WPaa7yAhatOc7652+2sKC9F/HsRkZtZ53Xp/VPo/Vm0X8Dv
QtAnxnKqgIXP4f9e2uiG79G79bTshvYkuQ/I97NyApHTfKyNp9Du1m36ipZkVtN7M3xfTWu4ekDY
vdpkNtcFvXhcvD/g9ebv1hbP3yneY31TCptLuPQeHurnQ+imniba5z6H7gFwfe5LgtzPhw/IHOkl
LLfhj6dof40F6A6Wb9eklj+CJyGUo60RRCPkPt0B3+OxPzqLt34OXXcz2fnRDTMR+61Ohi/+5pbR
TfRvTP1xUjHfhyygvaiRMdt8QeysEuUr0ihOzGCX3gA9ODJj02grrlnfWuckaDHhR+Q5cPp+L+b1
fcvvG+j8trQfxBsxb6qYt5VkP7TAe6dkrKCyorvhx0RKWCe976wVtDgQ54yBPWmTc0B4tZiDC0Hv
wRK98wXV1tBznBmtmWtGEy9Xq0oDnXG4AbJ3kN5NhfI1XeR3KBZZfjk67gAT41YwT+R/f8b39n2Z
J8Q7jjKPWeJA/r5QxDf0b5FT7EP0rEEdBf66M6N5tBnjmPqT8K16jmT7d/L+Duk3irlUxH6mTqN9
lX+JxO3VyD7iYwJ530CuAzUAe+wW60BxE0/JR6T3ForzA7EzGPF+mWmP6V5VxWl5Bww+0QHEYCnc
jjui5dPM8jORKWJvODtgli8TvpTYH2Y5DaWWM+kFkN0g9Mm7cr2bvh79e08lQ9ilz2Dd0VjqT0Xv
oAl6LXrSpIHmJI3TxXi/dwyYdkjQsZplN/A7Yuh/RGw8k+Pbew7tHIr6k8LPHhSPjmThuw7xu+EN
r4E+OoM80ibeG3YSvKH7MtmH+dn+uVksazf8wY4mNWtWFv27DqqjYYhKceLIgLhPA/uItupQj2gV
92IQBw5Eipz8LATmBTbSPIPM15dD7MVYzyYLv/F3/jK+b60G6tgEg+Qxm/xBejci5RogR7uFDebn
t8x8KeU3zO+W9wCI+EL6ldopwUvBf8092B+MycEQyf8efocmi/6dtMFzgHVFeH2IT+nfKfxnOa9e
zEMvxxnctjiPv9Nv3u9TxB2/LvOMCO2ZBT+JbCrFd2rHGRxhbIA9C1Z5+Lmfj86Fj3Aly6y9P6Na
5/eRMvmZIscR+ncG6R0xvir4p/AhVOPVPsrnxvpx/qOvy/+JyNnW8/cOiXMVVKfJd8fUppwto3/T
R+9eYpnUvyuYaWz6gNNydIrXbfjkfUfX7IqwuJv4/LGHP4nxn9dxOowHUKc7md4par3H+PyxB0Tf
jRzP5zCozmrg8nGEHMavIDdsOJ3/1Ke6kn1VKv17kguURltG6YrSYazmbnrXePNFxtZ8+Ftk07Du
O49GNm31uPh9j2VoZzndj/KkGrm9mRznl0djdycG8N2bZd4DyR10d4Lk5Ll88Z5/ssVPAncc6Ka7
f/RvKP4T+WZYw7VMmetZMJr+TRs3vUOO6sFnm/WUM7h5HWwh3Smue7uun/49gnbSt6dZ40V2VjOf
2fq6U+gclzKX8va18p2C7TPFOwVPgl9BurvqTDYyj0qfAmuq5BPhHzyHMZq0batinSuPinfcng8a
ffK+zU9UfldjroY+1oHGHv4+ctssG+j8vXPXZnrH0jrQN/bAgv4tkr75oO9Z+ABbWFJfLf/3GJS5
lOcl+u6Vd5JO9mTSv/GXZd65efYov6dVZN6rJB5eCB7mcPpy3FMZf6/qHsayje9hfieibgn4RLEA
h7fnGFMw1+QznW2ug0cjNRzPl21cjvrRdz7IfdgffhAZSe1BzkfSuiAa3PAz5qHODo9i5BZkGYhv
qnLk/QnyEei807a3m55vht19A/SaMnHfUR5nSJkYOUgm3kW9NWHMk8aquMx6s429hwU9tDdMd8Lm
w546+fkgWuu5ARr7RND8IcpM/qSDto/MsYdGGMkop3e3vIX5nqpphomX9mGE+zP/xBg/b0T0acco
/o7x+cgR6iuXl808Ku5IHZX7GIkn8fz/+az/q/AXv66/h7/m/rd9zf3/89fc/86vuf9//Zr7f+Nr
7r/3a+7/6Nfcf+Rr7n/Yu19v/+d+zf1f9DX3f/nX3P/Mr7n/G99N+H2JJ/EknsSTeBJP4kk8iSfx
JJ7Ek3gST+JJPIkn8SSexJN4Ek/iSTyJJ/EknsSTeBJP4kk8iSfxJJ7Ek3gST+JJPIkn8SSexJN4
Ek/iSTyJJ/EknsSTeBJP4kk8iSfxJJ7Ek3gST+JJPIkn8SSexJN4Ek/iSTyJJ/EknsSTeBJP4kk8
iSfxJJ7Ek3gST+JJPIkn8SSexJN4Ek/iSTyJJ/EknsSTeBJP4kk8iSfxJJ7Ek3gSz//259ELFf6p
2eRvt/jdHgd/RsKfiYM/L+Hb4+CvSvjzcfADEh6Mgx+W8Ffj4P0SvicObpe/D8TBc+XvUBx8vPx9
OA5eLH8fjYNXyt/9cfB58je7aDB8kYTb4+DLJTwjDr5ewnPj4BMniN/OOHixhE+Mg+sSXhwHr5Rw
PQ4+R8Ir4+DzJHxOHNwr4fPi4EskfHn8eCV8fRzcJ+Ht8XyQ8GAcfIOEH4iDPyrhud8aDG83+RYH
3y7h4+PgQZNvcfA9Jt/i4CGTb3HwoyZ/4uBMyu3yOHiGhG+Igzsl/NE4+HhzPcbBi831GAevNNdj
HHyeuR7j4IvM9RgHXy7hB+Lg6yW8Pw6+wRxvcdx83SQ+fXHw0K2ST5fFydsi8WmPgz8j4Rlx8IzF
sl4c3Hmr+L0oDh66XvxeEgc/OkmOOw6uS/iGOPjyOsmfmXF0zpXtxcFNvP44eOU8yYdZcev0ejm+
eLik46sejZ0dR2OpUT7FPwovPzvc/PuvPBlmOyuqmG35eco5Q/I4LBd/Yz8fiIyR5U78XYS/iYCt
IkDpMOdGW6tW/rDapty4b+/+vw5jxKo5+Fu3IhKpsXEcfaO9NaXi4eRHkjxtytWPapts9z+mqne8
dc2BN8v27f3r/jeGmUiEs8n2qPYY2vOmHXiz9K3S9FlvHnirXACp/2fx156Mti39l7Wpc9DQMHMs
e/C3Dzh7LHQfxN+GlEjEa61HdFcLuscCbAcDXwPORMLxDMvYiOKr0v66F/Sll9IHnvE0fuDtA16h
ytuauDG5Nan0YdsjRIjqSTPHlE7t3ALcUCpwlRhuOeF62tQbYqjfk984rRuAezAtElkm67Qlfzft
r4RVKT4IpwNlxUMikcPMxPmeKJwp+FCJvwPAOQ2c00kcZ8nGYa1Dr3p4yCPpm9IeTW1Lnr455TH7
jW+/dRX6fvOAmAaOY6I8Zt+c0pYs5QBj3Z4JmkR/PnVGm7MKXREtOsqGOCKRW2RZxvSNPrUtolwr
54RwFgCnEjhPCZzQiLkbn1DbHlevlzhZ+FsPnNeA8wwBFgzLaFNF3+34vCUrEhkr6nrbhlzFK9Fc
70TZIpSNt8jyHsBWAVZogR0ErB2wMRZYP2DPAlZpgQ3BAgsBVm6BOQHLyh7cRyFg4wF7wgKrBKwD
MKcFdgtgwTjYEsBeA6zYAlsH2FHAFlhgjwJWniPlUcKeBcybI3kkYUHATgC2XMKI9n2AzRsZiTyr
cFl2/tTWpnmGnntf2l//gtVdmn6N+aXS/FJmfplufqE5GYM1HMyNRIYI3vM5IX4VAv484MvEGpiz
Ma01texh+yMpnrbkxTG5ro99rT0rlObDh7YOjo5ELpJ90LqbIdcbjb0d5SdGy7GUDguqG8e3XuB5
+PxHxk3fNPbRgrb8FWkxEU4XPNmHOkvGRCKmbqO5OwzYHYCtE/3E1m15mzovRhKXuSysmVeBu17K
tDq7zVkDqaOyiSgrPDfaDi+rlmWzUdYeK9uAdZJ/vVwni1A25LxI5HlR1q5uHNtaUNGWf7tUXiTf
D1J94IQsvLhF6qAbJU+IZx3Am5cXiXTEtWWOdR/Kj6J8u2WsZXKst8aNlWGNL3PK9eUZtl1py5lO
BFE7Y1DmQ9k8Sc9PQU/Z0HNnChnxpFfwT7FOK4H7rFOuu1LeziyznQUoe9UZXf+D9KCVHsLdANxy
VySyRInJVjnJVtmm5EeTHrNt1jyPgwzOh53AXZ8fiSwStEM+Z5MeLEuXfHoH5Xvypb3g5ZXRcpKN
0yi3F8hyCctIwTwWDF7vYwHzFgxex8WA3VEQ0yn0ORuw5QVRPZlBWh79ecz+7kD5Hksdas8H2DuA
zRZ1uG2qwEBMm0bz8hRw7GMjpt2N8Q+INZJ9tF5fIzqBl8ViD9U/KOHzJB9IrmZJubpKyhXhDbGD
/8C7wiJ/pg2skHhEcyHwngHeHNFezJ5eHbOn84Czb2zULsRkEDRfLWkmHvuAN2RcJHLUguchvDa1
wSIaQv8Bdw9w7ZZ5COLHy+OkjjLlH7DgOKkTZZtXbQJ9FY9oD9uufmM/XI83QSfXD6no//xIxAwL
iPYswNj50XmMje+aNDFAEER4VwBvDvDKlUFjbNMWxPBorhcAb8kF6EPgOdtsi4W9lvxch/J546Pr
TPhVFr+GcJ4BzoPA2TAYZ24aRxL6+jXg9AMn1zJ/fP4lfJ/of7u68fzWceVtY9UbzdrCBg9JozxC
JHIH1a8R+p7LP+DswsHrpBiw8gulrEi+zQZsCWALtEFz2aapG6IMoflZBrztF8t+rHMOH+qaOP3U
DtwTF8fsQ5s6gzOFr3+U2S85u+3g6x/luV9Sztc/ysdfElsvNIYM8OKiSwb7mJ6H+YKJzikfP/Bu
sdSlPmYD5r0kKndnk5uZ4ovAXwX8Zy4ZPKdgwdXmrFwVmx6O/yy+2CdCNwp87jaXk98MQSgj33p2
zKsmGt8BfuVE6fdKOToKWOvEqB2K0bg4tnazsJjGXyr9oDLBt4o4fUFtXQG8SuC1D5bJGSbZZL+9
wHn50qhNM8d4g4lTaRkjPWQ/WlFnybdlu+VCPmaR8paopbSMp6e9sb80vZwvZkCp3muod+A/WY/4
ZBtKcWRMlonuXMDumBS1saItKaPXxmTUVGW8/9lDKU79++uYcrgO9ZYUDtZrjwK2oDBmK2jdPCvx
rPJVLpvmvJQKg9bNAeDuLIzp8jZ1ZtRvPoGyUKHUExLfjsKDZ8Gn/sfii71I+rvWNYGf8zirYYdR
Pv6sNtsjJdr00co2a4/Zbk57+y2PBXgVfsP7tAJF3+34UjPZOuY27RopizRPQZQ/OzkqgzHb2KZ+
J8bysijLSb5P4EvulEikNX48NwzW22OGY1xTpF8u9cdc2TfNxxUo3zNlsE9p2rjZFj1GPFoE3IuK
4fdbeFRB7kybOv2RlIftpY8mbUq+nWRTrOG33uZWd/8bbx6oMH+KWsRY0xdqU4nOl9G2fepgvV8u
1ynN50GUM5Tfosb0xnQz3qa49Ubr/Cy1zICQ67EQGufl0IkWOydt9MLYMK+zmmuur25BPf2KSORl
C3+kz63M2aTOeXNmbCWQPnkQ+AeuiMpgLL8wQ0wL4WwHzokroraD45RKs0Fd0/zuo36nRfUk58e8
uFie63/8b/20mA4nnZ8xAnQANkeJ8arskaSHk9HJdNKxN/Mp8ojuYqmLNgT/pk4pTZ+RRqhl6TPo
g/e1CO2uuzLmZxBsFWDLr4zFKUT7BsCWXRmXq2hTIJ7XyNahZ/D3PPCeBZ5P0OndOKQ1ffrDaY+k
brI/mvJY8uak8sdtT2CCvkuM+fM7b71tTu+N8QBBiz0T9qIkpgOJ12MAs+uD50PYQjEfVE8Hzlg9
xkOC1QA2XpcxhdRdiwC7ArAhRG9Z1A7cwockf5v+RitwnaUxn45oeQawMaWD591jsZVU7zXgLLLU
I1gIsAUWGK2RE4B5S6U/z+OCCs5X0icZDoEvZVbMP01wZZttfkzCy605m3LU6S+VsbpVbqcLPtFa
WAQcmycSOc34+PlaQJPfM+kvs9hBHX+PAn+fR/LLI3IzZZScKW+zW3RL+aOpm9JuShMCKUAzKHnG
+fEO2mgvG2xXjgLWWhaTOaLfhsnbUPbl9BN8PHCeKIv6KoN03XVfwpdbUKe/LKo/hd5pS55r+rWU
A/EB54rySIQJOebj9NA4yygDVUGpqPLHk59IarMtGSS3tFZ3ktBVQP+Kuj5lY0brcM/Dwx4ZWrZp
yKPgVOoNj6Xd8dZ0q3abbkl4iQqET+iPpbWlVrxFspqVDVmYHvX/hU1ps1WZU1QuB0Bj1IG7CrgP
WnArLLikPxcA5/D0qH2MyVRZm+2uGO8qrAqU9PoTqHfgKpkrknpstsX/2onyo1dF7ZjZ93dM/tJY
QsBZUClzRhynLel6qQtnyE9TNobkAL9ycO7MCZhthpx3JnRPIWC+GdG8Jh9PqdCRylVc8T2mLuQZ
XKhEj+mcUEHpY2rFmwfemi6/yz7Wob1FM2Myyf0fwBbMjPmuPP4DbPtMOV4JCwJWOGuwXt0H2PhZ
g/N4hwG7JQ52GrANs2JxPeURMkaC74ANUfm626CUPm5/IqWCBKXMlJSyx9I2p3raktXqtKhE7t3H
BznodxmqD5awzanUGuVVSTeuQl/61VY/pE2bI+dkOv8s4/bsKeBtv1rqAu4FtKXeKfE88pPrP+A9
ek0kcsAyxhBgt1wr5VPKzQnADgDmpPbKSf/Vinh0lvgg2cuFotw3J6b722yzojErlRej/MSXlJPc
zUN51lxJCy+vT5NBzV/l+KJ+1jrgBufG9E+brTLaFunrp/C/PXNlrpaXz4nq6yDKTqPMZ12rMrdU
fRa9RP2dQJ3KKpk3KhfrqlrykXR11ijIRVXUfxC6rs12zdl0NfG4HPh7qmScycTczgPsQ8CyBucG
eCzwfUuM5gPeO9Uy1yjH1ArYnJpozGTJrwp/2tYwOOdJc/oq6pyuieqKmA6vjOnwD4GTcd1gX7lM
8mpmjFfXm7yicThHQ06vk/kwqYOmx/lShFf5d+ItkXjrLXTy+PPGmO9NMvUo8N4Bnt2iYzxcZ5LT
6qFdIlKdb0XZMCP2g/o5gPpPXR+VmZhcgP8z5AC5v3wO/OfrZZxVGvMFiKdjUPbq9ZHB+11t6o3W
3JwOnLE3RHM3g/oxAz3i/SLg1QDvWQve9DZbjSlKM6PCJVonWXoCdfbcMNgXrOB5tiivyqz5hNfO
IcGL2lJLXoWSX+Sqv/lXq8ycpvbnxdl9uLnm+GjcTjDmHeA8b/EzPeRnlpGj6WnTZm5Oeiy57HHb
fQjg/lxhsa4c1eqRPg71NoPivD9bIz8Ph0BIeIHA49/FmNrRf9ZNkchO9kU5aNO+M2hMNJ97gP/U
TdGcD3SFyBeRXH6IsudvivLTtJezTNZXyIHz+P9c4N8UzZPwNeiJxrRlpKIGrUGqMxt1ltw8OJ9T
Ojh3VB2Tcun/oM5rNw/O1Uv9pZRvUuelWTy70jejaozL3k7U1W+RNk3aj9mmXZBrjvhwEHjeW6I+
SmzNXRWl5npTjpY01fMd+9JlzjsW1jYtc37bWb/k7ibn0oWNdy9eutDcomJzqstmOO9ZuLRp8V13
OsctuHicLFl85z21dyxe8K3b7r6zfhnKTPza225bfOfiZfd9a/Gdt931rS+F33abhFdUVZXWlM6f
fm1VWQX9vvvOhcuXLKxftnAB0TMfnS5duOzupXc60d3dCy9z1tfeccfCpdPK5lw3bsFFVDZNUHT7
XctAnhPw+dde42y6u75+YVMT4GiEU1HdsHjJksV33u68+86m2tsWOgXcuWxh07KLndULlzklIZPr
p9QWLahf+O1v102adp9z2V3OhXfW1t2x8OLB9FrROHyG4Aew71m89K47v7fwzmUgeeliqnuZc1xT
mqxf77zQeanzW87z77p72c0Tb3VOm+b0zLimuqZqfjU/oXHH4rpLlixdfOey2y6up9/jmi4bt+Ay
Z21T08Kly5y31S6+Y+ECa3vjmsTnxEu/PamwaPKU4qm1dfULFt42b05pdTXg00tn8C2H6lkz5sj2
SCWwebJAorE7Ft7pvMLZtHjFwrtuG79k6cLbFi9f2DRB0LN04ZK7li77anouI+5fOc05bsXdnDTR
C2OupmVL8d/48802b25aVrt02a0XOedUVUyfMW/+/2vn+nrTOIL4vdZP/QhLIlJwgYCdWJEVWyU2
JMiAKQdx0yhanbnFnML9yf2xoaqqPuYxj/04/Uj9Bu3M7M0BVxM/9K1ileSYnZ2Z3dnd2d+SOc5b
3U6vM2oNy8bX9Q9IgXhUjB6Jie/FluNFwlZzx3ViFYpHx+IRWO7025do2xz3es3hO+oWTnLqJqOC
FWuLDC0koWK25t/DpfoIF5HeG81Xl8MRGPrGHDXPLo4N8UNxjt9dCf0whq2z8dDsvG0JaiCumt2L
QqHA02YEE3Es3r8s1htH88XpBzEPN+kA3BTjyqm/mC9AKgoEEsglHYti9cDmGhivB+sf68fezPJs
cBps2knsh9jtUjEqs+HX0O7aYi5snpSxklOLiQpwSws1OSk+XmyIZ/Kat2e8JT3HeTNGyxzKVrcB
jBcRjGFRyWlrN5mvRwDVtIFYQyvrxTS0XAU7/caJYJ6jY91g3L/oX171jat2h+izQeO5PDzQz6Nn
+Hwme0P97JpGeyCbZq/D1wKsr0sgiQ/tO92u7MBWMN+egRYDn0d4PzLfmfTsNF+NoMP83/RMN5ge
nMlmt/O6z/R5rv15rr052GwP/Wv9pE2v0UfPsvYQeC6HcFUZtpoXg5XqFa1Vm5ftkTkaZPwVrflX
zdHZmzX5Fa35r0AZ9uLV8IKMq3kjltHSm6T9INoJPxnr9NTZpFUY+mFGz3Lys5z8LCc/25Svk7hM
XYE0iDNJNIhv0CSe1mTyqWtZnj3N8uu0ltc1nIfLebecZ8t5tZxHy3mznCfLebGcB8t5r5znynmt
nMfKeaucp8p5qZyHynmnXDjflPNLOZ+U80c5XzTIyeXLIsf/fUv7zw/o+bKF/8cDcg8Vzifl/NE/
c/o4T5TzQv/K29v/uv1vt/A5D5TzPjnPk/M6OY+T8zYXW/R8fsD+lwf4gaWfeA7fugB+/AkdxE4k
A/9OhdKfyoMSRM4bwhxllqOW0g8iUTgRT1JJpFP+tRUpZMV+IH79VQTWjZK6DcI0BxT+ouxS2QCE
hcd6HRvhZ8Ar1fY5xIvhUPYvR+3Lcf+c+2eF7lPH1zgBPleCeb3BAc+LGkfPn9ct7l+q60G9ePKf
+W5gxQ4gKZEAdhB41k39xLOFAwhupgAF3DoTJeJQqYqwrgGsANKr1Wp7Kzts96o57Hf6r4+FssL5
UhDUArgYIMIRrrUk5Xd++LEm2mSCLFoALoOKuE7iVI7c50RQW9Pn0QQax4CgGkfaDorVyZfp+EMJ
R1gkTtOusL8iQLcBuAw64lrhsqbAZGGtv4WSq9waYSbxRPw2ePPOlL2meVEWT56IQom4KFMVjfJm
Ay0POBd61R9KQMam8TV81U/ca8BRdAtADKDsCByycNzEZQcpPOTtMg4Z5xf+3r6oxo6rQsAftsoW
ChH3zyi4G8JrEjAgC0JYgDAUxJ8gUXom9sUh/E2RaHJ4UKaRTO348EDGvoT+lWwrtt4ffiijRLrA
/s0/2uBLCbg8xgbBbBmVooCYUcB+5vlw3YQW8HY/NeNYuQGuMLwd2E6EEF/0emNx58QzGLtXdWzY
inDZAf8hXhQwfZOPep0UwIDUVwrYXuisXM8s2w6pb/gB/HNjSwJGpX34WDaCWGV0rMqG7hn25NqH
lUv3IpqkFEfpioQMYisKGgLuX6JEx5wAyI6N8+1sX0RLAFzuPW0zvfAUL09OBRMbNOxKy4aA8hE+
xIASNdKs5/wduQH5u6Bve3PHUyX4mMWx7fOgjVjzEMws9eh9b6L2Vuu+kC5H+FyXeHGMpAMQ9wG9
V5ZDkwvQE0zUK+Ju5kxmuNkT6N5HNadbISqqic4U4g9w8A8sbM/GyYaIk7N40shwcRap9f5dI8Ua
gbu5vPITxWVcHTWGUTp+v8TwLfE+ayBXB/BjusPDlUfZALgRWpNe+lyuCE+l9TqcTSFmEllDXSmD
tRK5txk31w31fZIXc/8GLr5x6KioAjd0DzYB1Hk3sNKQRa0tBPORDsq47zM1woUoiUEmGz7MQ2Z3
bLb0OUDXhGp6W3hfjD5ofnvYamV+XfNp5s/UlyW49wMF84MdKwuIm6IoBs3XLWl2fm5lZ8Sav+FI
XPl7+3pBTXhoYHs9BuIEun8Yx+4ztF0fSdyj8PEvdA9ELh+cpQRWXRCHMi5jLzDiEv/frO+12tNc
/UPjSsX8WxVO5/4dDgvq0q5Q8UMbZjn75iDn5X3B+c+rtQ2HRNr41ndssU8n2VY4k81HOhUrXANS
GVE9hd6SFM8XB/aCm8xjyQMogVb3ukId0PvrMYZZFUXViYLdCjSymDAQP9zQE+T8cGkYGmrIeBno
OPIUz0sdb1J65kfKMzAeWeFN9r1CFNt+ElcBx8zSfe0li0q+lusRN4R2lY79e+oh0LBePDcLW7AT
r2fdZ0RHq/X8NH3ye0H8HlDR1lcxxwsSNA3dow+TWVjF71FAF+8HWiWw27+DdeMABLEEHmSOX53A
RvfnOhJvtsP+UysIUBCi9kivTPWuoSWIb8kUx9Ufd7vZOLR6PYZ03BlOuv2EC4LU5tpXXZeFaD7h
UCrduhIMVk8pin4v3naGo86l7PXgnx/HrXFL9sc9QFE/lXG1eoneJ6uOi7WDhwBcgQDhCW967A/Z
rqBtTZPF1ZCAJkl5q/3N71tl71el71MF+muZdP6ZgvmD1Q4ms/U1yTCypvFsxe94a9O5hU7l97D4
vSt+z4rfq1p7swizYrP3qv7elV3ZlV3ZlV3ZlV3ZlV3ZlV3ZlV3Zlf9t+W//a7v6NoF/h4WLSJ/8
Oyz8uyv8Oyssmf99lX8AjcA6WyBLAQA=
BIN_EOF
chmod +x $bin
RUNTIME_arch_run=`mktemp`
cleanup="$RUNTIME_arch_run $cleanup"
base64 -d << 'BIN_EOF' | zcat > $RUNTIME_arch_run || exit 2
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
AaJdQPN3KwAA
BIN_EOF
chmod +x $RUNTIME_arch_run
exec {stdout}>&1
RUNTIME_log_stdout () { cat >&$stdout; }
RUNTIME_log_stderr () { cat >&2; }
: "${RUNTIME_arch_run?}"
: ${MAX_SMP:=$(getconf _NPROCESSORS_ONLN)}
: ${TIMEOUT:=90s}

PASS() { echo -ne "\e[32mPASS\e[0m"; }
SKIP() { echo -ne "\e[33mSKIP\e[0m"; }
FAIL() { echo -ne "\e[31mFAIL\e[0m"; }

extract_summary()
{
    local cr=$'\r'
    tail -3 | grep '^SUMMARY: ' | sed 's/^SUMMARY: /(/;s/'"$cr"'\{0,1\}$/)/'
}

# We assume that QEMU is going to work if it tried to load the kernel
premature_failure()
{
    local log="$(eval $(get_cmdline _NO_FILE_4Uhere_) 2>&1)"

    echo "$log" | grep "_NO_FILE_4Uhere_" |
        grep -q -e "could not \(load\|open\) kernel" -e "error loading" &&
        return 1

    RUNTIME_log_stderr <<< "$log"

    echo "$log"
    return 0
}

get_cmdline()
{
    local kernel=$1
    echo "TESTNAME=$testname TIMEOUT=$timeout ACCEL=$accel $RUNTIME_arch_run $kernel -smp $smp $opts"
}

skip_nodefault()
{
    [ "$run_all_tests" = "yes" ] && return 1
    [ "$STANDALONE" != "yes" ] && return 0

    while true; do
        read -r -p "Test marked not to be run by default, are you sure (y/N)? " yn
        case $yn in
            "Y" | "y" | "Yes" | "yes")
                return 1
                ;;
            "" | "N" | "n" | "No" | "no" | "q" | "quit" | "exit")
                return 0
                ;;
        esac
    done
}

function print_result()
{
    local status="$1"
    local testname="$2"
    local summary="$3"
    local reason="$4"

    if [ -z "$reason" ]; then
        echo "`$status` $testname $summary"
    else
        echo "`$status` $testname ($reason)"
    fi
}

function find_word()
{
    grep -Fq " $1 " <<< " $2 "
}

function run()
{
    local testname="$1"
    local groups="$2"
    local smp="$3"
    local kernel="$4"
    local opts="$5"
    local arch="$6"
    local check="${CHECK:-$7}"
    local accel="$8"
    local timeout="${9:-$TIMEOUT}" # unittests.cfg overrides the default

    if [ -z "$testname" ]; then
        return
    fi

    if [ -n "$only_tests" ] && ! find_word "$testname" "$only_tests"; then
        return
    fi

    if [ -n "$only_group" ] && ! find_word "$only_group" "$groups"; then
        return
    fi

    if [ -z "$only_group" ] && find_word nodefault "$groups" &&
            skip_nodefault; then
        print_result "SKIP" $testname "" "test marked as manual run only"
        return;
    fi

    if [ -n "$arch" ] && [ "$arch" != "$ARCH" ]; then
        print_result "SKIP" $testname "" "$arch only"
        return 2
    fi

    if [ -n "$accel" ] && [ -n "$ACCEL" ] && [ "$accel" != "$ACCEL" ]; then
        print_result "SKIP" $testname "" "$accel only, but ACCEL=$ACCEL"
        return 2
    elif [ -n "$ACCEL" ]; then
        accel="$ACCEL"
    fi

    # check a file for a particular value before running a test
    # the check line can contain multiple files to check separated by a space
    # but each check parameter needs to be of the form <path>=<value>
    for check_param in "${check[@]}"; do
        path=${check_param%%=*}
        value=${check_param#*=}
        if [ -f "$path" ] && [ "$(cat $path)" != "$value" ]; then
            print_result "SKIP" $testname "" "$path not equal to $value"
            return 2
        fi
    done

    last_line=$(premature_failure > >(tail -1)) && {
        print_result "SKIP" $testname "" "$last_line"
        return 77
    }

    cmdline=$(get_cmdline $kernel)
    if grep -qw "migration" <<<$groups ; then
        cmdline="MIGRATION=yes $cmdline"
    fi
    if [ "$verbose" = "yes" ]; then
        echo $cmdline
    fi

    # extra_params in the config file may contain backticks that need to be
    # expanded, so use eval to start qemu.  Use "> >(foo)" instead of a pipe to
    # preserve the exit status.
    summary=$(eval $cmdline 2> >(RUNTIME_log_stderr $testname) \
                             > >(tee >(RUNTIME_log_stdout $testname $kernel) | extract_summary))
    ret=$?
    [ "$STANDALONE" != "yes" ] && echo > >(RUNTIME_log_stdout $testname $kernel)

    if [ $ret -eq 0 ]; then
        print_result "PASS" $testname "$summary"
    elif [ $ret -eq 77 ]; then
        print_result "SKIP" $testname "$summary"
    elif [ $ret -eq 124 ]; then
        print_result "FAIL" $testname "" "timeout; duration=$timeout"
    elif [ $ret -gt 127 ]; then
        print_result "FAIL" $testname "" "terminated on SIG$(kill -l $(($ret - 128)))"
    else
        print_result "FAIL" $testname "$summary"
    fi

    return $ret
}

#
# Probe for MAX_SMP, in case it's less than the number of host cpus.
#
# This probing currently only works for ARM, as x86 bails on another
# error first. Also, this probing isn't necessary for any ARM hosts
# running kernels later than v4.3, i.e. those including ef748917b52
# "arm/arm64: KVM: Remove 'config KVM_ARM_MAX_VCPUS'". So, at some
# point when maintaining the while loop gets too tiresome, we can
# just remove it...
while $RUNTIME_arch_run _NO_FILE_4Uhere_ -smp $MAX_SMP \
		|& grep -qi 'exceeds max CPUs'; do
	MAX_SMP=$((MAX_SMP >> 1))
done
run psci psci \$MAX_SMP $bin '' '' '' '' ''
