(* Content-type: application/mathematica *)
(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)
(* CreatedBy='Mathematica 6.0' *)
(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[ 145, 7]
NotebookDataLength[ 121817, 2722]
NotebookOptionsPosition[ 116703, 2571]
NotebookOutlinePosition[ 117098, 2588]
CellTagsIndexPosition[ 117055, 2585]
WindowFrame->Normal
ContainsDynamic->False*)
(* Beginning of Notebook Content *)
Notebook[{
Cell[CellGroupData[{
Cell["Introduction to Discrete Fourier Transforms", "Title"],
Cell["\<\
APAM 1601y
Columbia University\
\>", "Subsubtitle"],
Cell[CellGroupData[{
Cell["Introduction", "Section"],
Cell[TextData[{
"Last week, we introduced the Joseph Fourier's transform as a technique to \
solve partial differential equations (PDEs). The Fourier transform changes \
the way functions are represented. For example, instead of representing a \
function, ",
StyleBox["f",
FontSlant->"Italic"],
"[",
StyleBox["x",
FontSlant->"Italic"],
"], as a curve along ",
StyleBox["x",
FontSlant->"Italic"],
"; we can represent ",
StyleBox["f",
FontSlant->"Italic"],
" with a number of coefficients, ",
Cell[BoxData[
FormBox[
SubscriptBox["a", "i"], TraditionalForm]]],
"and ",
Cell[BoxData[
FormBox[
SubscriptBox["b", "i"], TraditionalForm]]],
", that multiply a known set of orthogonal \"modes\". "
}], "Text"],
Cell["\<\
The Fourier transform expands functions in terms of sine and cosine functions \
of different wavelengths or frequencies. The Fourier transform is like \
\"spectrum analyzer.\" It takes a function and returns a spectrum: a number \
proportional to the fraction of the function that is represented by each \
wavelength or frequency. \
\>", "Text"],
Cell["\<\
The \"discrete Fourier transform\" became in use in the 1960's as the world \
entered the \"computer age,\" Today, information is primarily represented \
(and transmitted) in digital form, and the field of \"digital signal \
processing\" is at the core of all forms of digitally-recorded music, video, \
and information.\
\>", "Text"],
Cell[TextData[{
"This notebook introduces the discrete Fourier transform (DFT) and \
illustrates its use. We also describe the recursive \"fast Fourier \
transform\" (FFT) that is built into ",
StyleBox["Mathematica. ",
FontSlant->"Italic"]
}], "Text"],
Cell[CellGroupData[{
Cell["John W. Tukey (1915-2000)", "Subsection"],
Cell[GraphicsData["CompressedBitmap", "\<\
eJyUnQe4ZklVtU+f893YuXt6pmd6hp4ZBBEVUFQk+KOgmDGLGTGLijrmDCgG
zFlRMWJExZwTZsUs5owgChhAouD317ur3jr7nHt7wH6e218+oWrVqrVD7XrH
R33iR3zoxzzqEz/ygx9161vf8aiP+4iP/OBPuPVhH3tHeWs6MQzDz5W//7p1
4Pm2PPW/89vbb799e9ttt21vvfXWeLzrXe+6fa3Xeq14zJ/d5S532d50003b
S5cubc+dO7c9efLkdn9/f3t4eDiM27Nnzw778V55vT116lT8pe9sT58+Xb+2
sz1//vz2uuuu215//fXxd/ny5XKIcvDhLM/js/LNOAQ/55H3br755u0tt9wS
l8FzL5fLLJdYjnH16tVyGVwu7/EZ3+HS+V35lOcjPy533l7G13nOV3jNT3h9
4403xml4j8vkNZdO63z2Z3/29hnPeEY55e///u8Pl7b/8A//sP37v//77d/8
zd9sn/zkJ2/vd7/7bV/3dV83vsvx+O3rv/7rbz/rsz5r+6mf+qnb933f992+
53u+5/YRj3jE9uEPf3hc6j3ucY/4LtdRzjfU69yN395www3R8hcvXozWL00y
bg8ODoaT23GMZ9tpmrbv+I7vuH2v93qv7du//dvHz7hsWqvd1jDRLsNhbxlu
k0c7nO/xHs9Ls9QGPdsbtDV0byUb2ff5qThqhyx3UV6N8fSGDia/7Pl8TXNz
3aCA59wq98DtX7hwIe4FJOTm4HX5XjlRgVu5Q5DD+zThCY42NGBs+rW1vzFQ
s7u9cuVKNDp/dnI51gj4Clw5ESfh7TNnzoDkcprSA+WIwHN3dzcey2cjXyoI
5PxeYx44vFeuddru7e2VX3N73GZr27jMKS5qr3ePFyZS6cZ64QcLYHMM2vzu
d7979ElrznKW8o1ySZyaY9KMNiHf/e7v/u7t05/+9HH7B3/wB8Mt2+c///nb
P//zP9/+9V//9faXf/mXt2/7tm8bh3rjN37j7d3udreOnAc96EHb93//9w+0
veu7vuv2Az7gA7Zv/uZvHt/xsjiFPSSI6U1eC2T6bIzm2A0U7+zsBG089KEP
3X7Ih3zI9v73v3+lhqmPxfJXfsJdbTqAWiuMrfHW2OJG21AcptV36Bt+ntik
HLh+0zup7FLurcCB48lAjZHqN8fW0nzI7dLhYIYW59YBdbn9kQ/GgOcUTdDY
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
DwW0I2RcmhIs8xbrdZjcHc0KCMlBoKWSDK1SzqXFZ7kEHZfHscm1gIrxD1No
5Pq2YjSziLkiioLqFJ5yYKOBc7+DM03EXXcl99wKwxqTyYPVslmmfuaan1HX
RqyslM40N7TFkzkv/0YqSNTw6zoNw3XE10cN1mrP7fdChy6rzgkkIdKX4ch+
CzTDyUVdBxsua9ic9larKZ9ZuIW9JitqrmvqHNHg+4vWOMaem47g1qbJBVUA
FK9hMMiSYAWYBXxwL7yLLwsMg1+ixryP34AgQtENI6AuQxFRigyhyjuXTWqX
VZrSpBa+g+aZmCdigHBd15k5xYmf4a2Ac4Er4RUe8bThIpVtcgijNcNYO65K
iVzjsvyNLb8vu2SbZBjWcG2HrjPDJs/EM7j3O2JXRqPQc22oloxsWMXkTbEq
/hoep0VyRrOGBtPNN71+RWNxSSxlP9UpofEszX9qkRvldMJ9Ojev0g12Wrnf
9WqSS60AiglnzQJ0OUC2dFdc20b1lG/yiF64aw9S6jNxrHMyLoSEXIBIXiNC
F2bDhMMMw2fGFA3RAlzcCpAyigG0IogRFUTYCO0iqGFZkAsNeEMmlwqA1dQb
8aO2kDXXtKVPuHE09cd8zMfEKfAXoxhIJbvPfe4zuNFEypPupkXC2GCBo4zi
2f9WJe61oTzl3zQ/4NTDVdf1+jQHR9RInrNnFxlddbjwreVlqivfaZ03lipY
WowonTjOCWLlvU01Uc2SMB8kBY7rZ/TMTp+I81KEnZb+ZTTjLr2k5l4HLx1l
nzcyHFop+joRpbsfdLHnScis0oTa2+PD1nUdtRIarlQoFUcYi3We85znBDqB
BaYYZhwalvcwz5iv8RTzGYjlM8w14ETeJM1GTIe7MGTerJxpTsBL9VdAa8+Y
7oNfiUDrIxM+6IM+KMJ5cC0r1EAs1txchnzqaXpVO3ZX1k4f98J0jkPtLLy4
C5gaqPJHMvoxurFjPmtLe2kzx9WWVuLsvZOLhG5LKR+MfqgsEtFmbTzLn5nC
Gs212zx1ZBpImD0SuzC8Y+1/vV4p9XGwHKhJFk6tCbieo3tcMnbNdU5zybDW
CFcX7mmegwp+gVPXNPAXv/jFW/6RRk4ojv2L9JIBWgQsQgBqBszoXTQD1Muy
MYebaXW87nH4YbfTa67TFBn5QO9CduL0/FGeA1rolZgyIQzGDOAlPOf66lT2
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
2EmUBYRES3G5YyLyW+L+iJw6cQ+xWZbJNxA3OSakvzDmAC5mIpHZAt6RwVUA
hsciU2fL8L2G435zTKph2JiRQctnezlEu0gL6Dn1w1x3dY3bHNs29zi9dhYX
RzXQc5d5Nzg9AHxwItygQ1qoe43U13X1hbnw0GYR93douG4whzbTgsCK3jOL
jFrvMSf8GGfJ6O1iYY7G1Wa70IrYtbIS59leFcp96CLgZ9ifbA3EI/BEIABX
uBahgOsVDMixYANsuskdVQt4DYatJQfnslSA/D6SnnXl4SlzVTv8Dj4pm4lY
ZmJn2TaiFhziQaV4OEKXuhrkvhioxwrDSmNMsDzMfaq5Bp4zD3CtvIZ08YGZ
3mvTMQbWHtWag8n/JxewNN8qa4VE0D39NYnkBt1THbLHQTen1DfYBqNOrUB1
3lI2p3XcbInxpoCDfyt6r5VudTmWoOdIfcppMr4vp7axMuYl24abVsHQqa1O
ELmO1GZvtC1EMMk3iyUfgUjtsAgcD5cWGiCvZuPAtC34IUsEbkITIGLB7H/8
x38ERhGzFOQGoxSIK1qgnJyKm/cJfkXcuvEzLjN4Fm5lAazZ02AR7sRTz3M4
k+dkVeuaBru8hlPf+q3fOnL28HmBdTwHBOZ5DyHLEgO8GCw74JwIWip9ci08
B6u85powHrkO7hdetzZSuffNyrFVoQr4+p6Ei3V3JntPTRjk/Ni01iAXXTsu
lW8Vhe+PadupwSqpqe7vsN4rtgUs1QanFySalzivIZb8tMM4K4jsA2uB/nop
bVl/SoM9dyTum7Fq8pjU4tKkxLCu5UkJvTWzbJh3NXRKzFVsMFOYbTHHn/vc
54Zy1fzCjcDsqulFscKK1LORoGpFTlDB5/ifYFrrZRDJJ74E4mBOZvmHPOQh
5RhF45YmIjsbFwBqIFRsoc+CFwgXYOLzxdV1xx13lJ887nGPK62EgxZrD9Im
gZC1XViBDCROD7FSL9yJALBCuijd4JAawk2JwQ18m+5bbEDdHIPb3O7dGdz8
CtqdjT+OBL3mZMCdI7ZY920Nm06nDbh5F1/XPu9UlN5ILaN4BvkNw6WFOs4R
i1woJctZ/QltbUzHqzK34rNeQFvF1dx4dfF1xuzsL2ZiOeh2w7WKd3VX4UH1
PRqWGXqiRRwCEMBImCeI0xe+8IUhWsElOU0wFJ8zm6NEYUvqFIPLZzzjGeVy
CjSKgoRByS4l3E6uJ2oCNmQTWmZ0rK6iQEeAWiZEoMmkDzQhUSZzHnkPMmXS
RwSwJccTn/jEkahBsRUoRsB6A3iUKwKaOAis8O2Ge4worp7XrIrBlnMyKne+
0yb+VW5rheRmne46zp6bOVVQ15y7u0mpeVF5Xzy0WbDaFfeO3mRNOsdS5yk4
L6wfewJAm+orKDdrw7+6XM92rOlKzT4u+Q5sZv/EHKGtvmHV6PzeuSOYzJnU
GZM61rOHoNuos5e7DvC0gDIV8Ghj/NaF5cCiaqZ/yJTpHjcAEsAudzMvlqQQ
ZoJIASzsJYshUQEzoSjW3jFFgzaODWgBKwyJ5Cx4HVksMtwWHzPbk3gFYFGj
qADKE7OUmp9h1sPHpIqSMsgpWPXC2i0LFXB5uLHkdcYYagVVomJF0WKNQR2u
H65m1DUwulxvsPp4asu6NCPoGPO+TRdKa20Wq1jXhSVbgEq5qLXVnLJuwy2y
c+rcLfNGm7mcYOT0hSQI4l1tlpOz7lv4qjqkqtViRCEXSMr0n8K69YpPHtHG
GcF5/V/1TpIgcgTFs6d8mldTzpXV3BrW7CbORLNChLilwCkkC3YhWvfzYnIH
JASbIN262WL5pFw1IAHH/J4ZGpJlubMyk3Q+nhf8lt8U/iydwPusc0K+4g5A
iBSwViFwe7yEcFW5DAEsLRSwuatgGK8ZmQMIAoYNw4h5gEu2FDhM6x6RDD3U
s42muzjzoyVQ+tYpU0++mWtz7RxxY80rtpYrEugz63y43jhR8WAKV046rVVV
dxbqsyXhDe6cqW9gVhC765qe4nhm5JycpacsOSDmY827Aue1KmvEr5ccpOd1
eVdKhHGJaTbuaZu0oK5jet0lS/9tkPJwsNAV2esA15PsXIRA+RWO2IshaAEC
G3HodgXH4BagYOIAkCYeQjXC5aSmEsNCLDTuLccEyTeGEmDc+BmeNYgYFQsZ
I3ABMXWyeNTlBaCJWSCK+T3EDCkTSAbYxPgQLFTrqnXCz8c1cW0GnjXLcL9x
Tm2ntAf8Ije7ti6xvilr2boEobFILmjSFyQM5zr6/fxO0Hxc3CGXCF7L0nnZ
HQR4kEO+XWoI5mbXDSfC5d3MuhmT0q3OiGwSNqwO1sA6ru5VXg1+dB3uMkOi
LR0ZTDwyemSYf/YqTLknhpZ9FB7vMJqhkgs9uMR8Z34DhyPYhJ8KsyYHxAAt
bEeFQgi5zdhjsPJekB+iFwyT2oIlBQfP2D3stbYxzsAteKQMBliCk8FowerI
qphyE7xEGJe/cgj+v0u8B8SBOp9xGCQKWTW4YRmCrBlH5eKNg5vVFfAyEEZX
YKjB2Qwn4KOGXYfxGgTdSSx5EpqD6/IinUJHtHJY36Tc/H9FcuSDzvk0TtNX
5t15Zep1DsMiC/ZEFRW33377CbJG2v7kaTuRs11bZATrNxClaz/EkqkP1wlD
i9SzlNllPohhUBBYGmSd49eympu5oSSugu9CX8SPEES2acDxHhiDa4EwrlqM
OToeyIJR+AseLpgdQcZwU6Cbn+D1Ik8bzYrc1fAiXZpHaJfIAbAFsmAQeuWR
tVy8B5z5DlQLxNHC7fsV2pdCYqBA+ClfB8aoFRy8JIKRFkuJAxQ7VwqEUTyw
sbunA2FgTTJZ5YyanyaEcyHWgHBPE9pf51H2rPGm86oEOb1Y3aC0eDXwHVyB
mJdgpZyblDM7ZAw3H1S5/pta1eAj0bOxZWarb2fhsJe9xYtq8TMB714Lvuua
DH3VbCtSZtQjwmDV5jA4T1sU+k0J+ZtFQr5+ncBwzee/uUc5LUXhD2BN+tYg
E8+hKNAKDqAzd1QEC8zOLLFieRWKAYhmRyuzfFhrBYvlhhC+ILQwaGkR/p8C
raCzwG+oroj9+B4uByC5RnB5PoLX4bq+f4JGHvkVpNfiMcMlwRVrX+K448q5
akMR3C2d0BiyesqWJVb5KOexpXy2mou5t3A7mEW0nAtfI85dgPZIdGv/yDqE
1fQ9pXyylrNTc3nmPJyWuHDcDvTq6GzdLQK5APJc9zzfmYRYTR2ZgMeWnpbj
6LSGK/YJ+099DUBgdeqorRL5pt4z/NiaVfyYy6XcFVoB0qWDgat7JpF/QOfj
jICE8VGRf8BsDcsCJD1j5bE6bPcCfooANW4LPwwVh1P8FLLFJRG/C+/ECISr
n2LqcoNxUEfDdfEabidiBoGS18hAwtHL1bofOo8MOIiXO2PtLR2nnO3Lv2si
k+u3yIiYWpum5Y1DW98IMHc6YBuLhFCuBH3w6gy4tpSu8tp6eVZ7blVxPVT+
1fSxJWK7blg406a803Tpj7vEjsbZteA6hnU9gOPstLQut1Ws2Cyy0M5Z8aXe
sf6Y0grxxn4HYm2/S91mpp3UbrQXUMFtgEtM04rXaEImU72j0BPoRLISDS0a
chB6kKjsB7ygOZiRcsVVi+7EefgO7zfWHGRb8NVMtMasO92NBu7QrMXEK58V
/Bfew9zjnEhm/vgcXCII0LX4HQrZj9zAcEPcAszKreHpQ7LAH8LSulHZUs08
6aOecif5arEBwXMLeMqrOb341cBz09JB1sGH42bhNYyuuN3Fcm+s5gcbuh7g
YeqZMtWFUPVACmks/F4V6Hzn4Jo+sqOG2KmFIcbnOca1Qiuvd5JyDSZ1sUqx
A3NZIn5+sRXZxs0ELPHiMmPW8NfTnva0IsRMfEG94kmgZhuwgNqAqJtsADHg
U94rvy0Ks9AD7MlEz/eAaQvMjmjc8jE/4yc6FRYcfDpecnTEL+oCQwvbDh8x
S2rwuTH/8znBk6JCypkf8YhHFJuCWgHk4Ork5Q5ALAMPMmUVLJ3k4E1oHKxD
pDKt3kco8oa8SnLh8dIaXqM25xm/ZqR66kgG2HHTv1NyD1XsHymQkpYrZGad
0xjcyCAHj00x8zxNfigzUqbBkDc+8Jw3LQvtz9nqxihCyc5Ma7OUx3hj2Ft4
clQKTY6VwzKvnemlBuwNnee0Jp/hgYJa6WnUH4LgKU95Si0W/8DwITCzErsC
CEhYmLFN5gE8dKgsi3YFyjwHr+AW7yyyl6AF4hMwEmlDjLLui2gwwwpgAl5A
C6vyPfJpOCffY0UiDmRML54TZkOg8h1+x3lQClwP10VxAYYgUWcUA3oGXYNk
h6lZmeF+LDRZnfxPdQrmL1OqLgNptTVloDh4JZ4N13eaMZKUsx4tRpZKtfTK
Enlezosh+vrsef2g8jMnGxiAsLBsLYMRyTWbVAA+FyhaqNe9RVRuJRSaGNhd
LD1P4uG4hWzXRnAyc68uXAk5Umn7q7zyHqU0r+YzryE7jBm8+VAvJhf5gJAY
ZOZuHgQhIEGwWe0pSLgWFTbzACwjYHmEa8EVhArOwCoqlEgD1F4wWO7uMY95
TGkfVADO2oLrctyC2OHGwCff4zc4cZEArKgFm7gPLNAC5sEuJN2izl3xMu7A
KxjmvhiP6HiieLWgXF/3Ni1WX4yzwrUBB/03q2DaGsTX9Q9dDJgTHV3snKsB
COIM3ISTqVcCGue8rd0jLtqG2wbbWqh102HbDC7TGT29Xq8rfR+ZTf56tRH7
ADpc/C7PIHml5bWxG7qswDbDMc91zoV5flPN+b6rLGk41gugKLC5YWJMLnew
B7KkYBFvQHg2WDbYnu5QxebiDxijIFAPQBbaFHbEDx7/+MeX3z7hCU8orYdZ
B5ViLAFHPpuQ2OWW+QzY8VfeGePDw7gM8ndAH4/kTXBoEI7MgNULiqtcPtWT
IBkEHJE7ZX4hvEwYL2cudYthf+EusBGdtsIDORf1UEccg+DNIlZs1Zrm0LRo
Uee+/WPLaqTn8+YKWmWJKIe8+Kcxufq3gFzV4N9Vt/K9JYoNrs20niPZNjrP
a896jZVWTyunec9r6aYM4xaW3FvjOANziGj61Fo2T3Rzy6InzneFxsFoXNIK
sHGIBpO1AEmBYMxzUIyXCeShTtl0bkZvNQFb6ADkhjtguKnnHyJMgQ0oI1oA
d1NNi8guz0EhiCRPEX4k/5BVjzyKUAJmItb3+X2B4ojvdrgYSQ58DZ8Yp1SS
AGZkhW4203tZko6hSloPcbtksfUoZa7x0Zq8r71I09lgRZHkGRvWQD5cUHG2
Ga1P3ZC8mY32VI+nIGdn5dWdl6btLMJoM3JD/25q5f6C3rHV2Ug70fUUn0bi
a6D2tZbzYgr9XnNa75SlQsPp/p3hdLlwe5gyCdSmHe7eNZu/penQlsTHIFmy
VIAmngb0LXMqGKGDCcaiayFS4ImehVgJBWCemTOrVwoNi1cCAIEvwGS9Qh6p
FdtebwJve8GCwBeoAkXYkPee9KQnlSYoByi2E685BD+3iDLfJW0cjIJP5LS5
FMhdgyCQsdsycOkme7VR26OPaZ4apoTN1nwVlcNmYastkFkpYf9INpmB9tbX
666uZf/mUkP6Yo9H6ZW+Q9kqQCxKA5tVKOz0ahtuittdD+UyBW4rHtMdC9dA
ay5oa+1LBcOM1oNrojXtWd5Fl0kN7XthRgx3W/wEsNKAFL8idoQCgFPd+JPn
CEd62oRvQ1rr0BbiFRcV34XNMJg4LogDlFj9KA73RUAwky5TXg91M4Sd+IxA
M6nAcHlFaeG+0qKE4QQ6hpbP+V6UFSkHL63GJXOqIibKT1HHu6GVIVPtQSJ5
5fUI4ZeG4q6s7hgTE+23u3COqQoE4qbaFccogYsLBsk7OKQCZ3caDlUwdizM
FVHn/aLXVbVaoMvFkJvI53T722DWvoJyuRWBIDbxUXtv7bJ1zXiZIXLd3Bzf
dU3ZQtGeOoJZh33CbDYkdvhC5djb4/sunWUXW1gUy4tcK8AEgMg+sForOYfk
GgJKBABTKQyLlQNAscTofTwA0BpSlFkdMCF9YWtWlzHlGhYux48NaOq2dbvB
4gwQPndjj3ItI0gsAMQBACYLjocKykuBay7dDXeZBHju3gsYXpA7bIpKhnUZ
Q14mn5FKqX8QoNVJaVnaIVkB0xKhw4JWhzWvXljUE3eqP27549oKM52ql2W5
YVHCMLkNKrPm+FfUThhqfgl4dWfxmgyGZDjVHQeuh8pbOrsGUgtQyy/xf6+p
uS7i/GpAquNWd8yqwssmprB7LEwuO8CSaQTz8QhAUhAhexCAF6ZXQqVMlzxy
95hRqAYItKUomioTRg1eKUwr1CnTOSQJDsG+q3gx4fA4IYwRxIXAq2PtoCeC
o535mJ8Bc3m4YrVcYFEDOrAYDiyj4HsMCyAPjpnpUQZYa9haYJVhhJMCRxmm
GQ44LELSc3WeDEFLKNAlXlUA4wqwm25OHdECw94Re1d/8bwv0pnOTcfBFris
q8LemMu17i6M+iRapyMAPh3UBCjX+5lbt6hVS1gU/tikyg4pq6aVqOvh2TML
W9FbMSHXPFEDPAsnS7Rn2LBYC0d9BF3/D6e6jNXxwpSATAVUABb9yKyMAV70
34h2LRcPx4JhOryQ1YQpNVwJBxkTLWVtsMcwhBgG4AccmfWIkxQ8EpIjFcsM
XmJZvI/9nsNzONd4DZah3zIVDHVzsCmGAccu3FpelYFWjDtwC98y9NAMaBFC
unoj4F0wCwdTHQSeRWhzS+fapjYS47qFUlHwmWuDQKKG3nDdoq2l1ixbrXBl
IWjXEqRK62b41bpq1RJPlvvK57/cNL4yKIvt4VZFqvM9MBSiFvsQnppWcwLZ
awDTVLVk4XNew9RS1NeA6WxF1SJvgPS6rL/ic5qJzoArTTEEnnAilhHzPYtl
mC2YOOFiOBVzuxDWhBt0uCWsGvgLowps6PRk2kf/gj8wZxo3eTg4fUkXBK9g
0vwbnoNjY7DE58jVAePgvVF1uUHwejIo20Xr0jhYdftnjDyuq+C0NEMh/6KB
wS1TCYEJrp2pgdtsM1MdzLt90tIC6L6sqb1KMD3obZpXOeRk/rkG/EHv4Cz1
VtQ6pAL+yyDUnYG1rd2p5WmmQCh9V5BbPir0OhwsSg3nEnQpzNDXU0rCPZhx
YxRPzpe6Zn/rIbWCMusiQw2VwxH5vxzra6AazaU3SYHRumLmZYbErc4NMIOQ
wIpYLcw5Qk1FOEJOkBR/uE6ZdKFlBCYTM7kKkiR5KYCSdGwWHJqli7MM447P
nvnMZ5Y7KK+Gy/E9QApYATBARq9A+WhsJn+3wAWcABUgc07AqzcDIYto0GXA
NRZBMBJ6KDMLeEUfIF/gV+6QXm8iapFDIBWkMEKdpLRfa+nHUwvMSsxr3Oqs
6gXo9jps7fu0hHdYFMo2tvB/gW34BmodlPPdeaWHah38NS6Wg8Mr0A7ryENC
bXMSnFrchbC1HpV+mITHTeLYBtUqAapP5rbu9eMLGFGAAFEJZgEdQpSSL0wp
eGPxCuALckEMMymgRSfQ64SfUADMujIsLAeYAC4ABJisliUqXNi1XNBznvOc
YvzxGpBargAQ82imI4CFdQEvwEUVcJ0AkvHFI9cPUAEsLMvnqlo+d99nFAri
GgAbaADIRRWM0G1hVQQNAWya1/yiSI6b6zRrGMwkm/2w86S2BLEUfRz5CuJg
p5til3a7WjgoMFcgnrc16tldqTb2MqIwm2Ipu0t3QPWS7bTtY7MizgsjO9PO
mFUBzJid/Qd5X6+MWe6/YTZHVpJ9pTmbXDOtRV+7d4trekArCHP7N2xpYkFK
A2QBsQJsbfQgXAVaQS3PcfazNBGbR5cDqHHNN7oU9LEkkYURZpb7nGpGJAAU
hJdrhHxvDvTyG1APsk1Hg8LRA6alQb0glddudpsRjH0m0rk3/GNcJ9eLS6Oj
twzJ0iFSMDkSLCnuiYjDnG/Q4Dsr2Sm5CXqPnFz0CKDNGzBkYTsvit1b5KKK
2mMUw0yvFezhMbh5WW2xXLHpMQ2m5gPIou1jU2uXiTTzuuK0oFff7zEOuca1
R3Hrakhx25sv8hMTVFN63GABLD7lR9ZmBH6QnftqwjRcIyY0Xi1iAS1GX45R
KGp4UEAViNLdxqSEqfEGIGVqILBDhABPa9ZYacFFltbdgGiFJ3KX1xAukwHS
GCgCTaAIPDkXKoFHXrsmSELW/YW7gYkEo5JrJhDGcNMUQ+Ugb5lIGL6ks7X0
obH5EPTHNJ7Y1PYO+pqNWfF53OpzA7KtmKxRfO2vXhZ53qGjpVwNrxFIdcEi
WJkn0XblsUqD6sekV/njedO6Y4jdvW6cXXPV+TrEMUe4Ti50ed5+zrzYlE2U
3H/Z4ZKE7NicXC2kHU3IUMIBRRejaaETRhsNBEyJBGD9Y/kTu8RvwHxqWolx
KENXzL9aXDitYGuTq4GjZWuAJ3BF1MKwQrVAdIJSi1yAUPkpCEWnqk/VsTyC
QpwQoJBHkakcgEzxKVuVCUMMacAog0FxeHFrhm55xGmLlMfODI9iRakRr57I
0eXr2hXL/+fWgcfuiLUURd6DTSe9SSyB1oqKVAf2eDXQq4qmOMKUjziI4CnQ
i4VSlF55Vfq33Bfuddw+lAEun434L4t1Bpr5qojWOrtW0YT5vZRsltc8/h/h
WwXs3RZjPzcnZgeoYFpnyudaAS7zEPmDABm+gYcBNqIQwAJiAqRwFnElgqRY
OyAFhGEtMXUjQOVKgEoVGyo2FwusXGqRt8PpAK3FDeHSLGJ5LnLhURBZpvgW
GrspOJ3zw+8kA/Bo+MuwGnMH18Zr0KvLi/uAY0EsYTl41jxHzTJEfLBQlQRH
PFx3it5TC/Sud4Y38KUvNkBZc7LzovLs3+zrG4e5/PJrDtwa/cKvTi9HXZ/y
pHwZ4QNuC1iHCtydDtwE3uG4go59geXZbtRlL9zKnOzCNi18Ds01S4Rq217u
ibI501OzDeTSOwg8RCqmF6OKC0XEglyimnASpguogFrhK14XRVDjUud6cipU
aEEYSygx4cOqMC1iAJbF18U6AkBbJv9aZOFqxy3eBhexY8wxz8uuhm/BJ7IU
DMKi5NWYt8CV8hmXBVb5DY9gmEfGHFIWt2zb27M026Mf/egyg4pjmJdWIaWn
0OOmMe/KOTCusWsa0lR9ZnORJQFrfGhODFgaT7UOLESVdEDVoRFlLc82TU/e
yVqFcpgE0fgDi+W9MQC6r3DoIqJ9HKZLyNvl4sebLf/catukpcFxgTn+kSHq
ooWjEA0VW5SvkZhmwfbsQs7CtAjUSieMsZL4dEwP5LToFHC/TXiL/tesAgf0
dQ0/lTm58ByztOW0wBfcCDyBoSW1MKFwrcK98CViBM5Ec+qZAo+6VJnR5U7O
WfA4omIKb5m6xeVAk0LU1C4sKi4bIVDgOoLLMpiQMHydO2lO2rhT9ACPZuDy
muwyUgxo+q6sglMF59zgw7xesa9uqDvh7nd3gHsV5fzX8rwuCj/Xnfp+nKvA
6djPydyrpQljX13b6huUM0ubOHzatN+xWB6n6Pb9rHV7KDf5EzZpUWNSBbMF
htzeX6wNWy+pieUIC/6sautyJ069AmCZ9GqmeyI6YJ87BJqQJgErTA2md/qc
PkbX4qeiU+l3JADwLFO9i27Qk1byBIX4WUGkQQH0JzJWF29NbgHfp0NzwnKw
IuzGKWE/UGl2IVIZKDYYlt8WLTJc17MKuSw+A3t8F+vJbDDezxmIfNfjMvtj
VTV/svEEYMrbGJZ0rDlBTa5OK3V1KU/9i0z5nJK8ih30LTuyQZNiqoMbeOcw
Qa9UWIscHJOOnUojmcdSiBUTCjuQm7H+FI/ldWnLguPSD8ybZse0GEOHrcZX
Xn4Dye407KpRchw2/Mt1uYJ7EOYqkqV51nP+A3vbOc+7IJk2xNJnZiM7EOBz
jQQkyQ9AtWEZA1OYDIjS97otgXBOtDJwD0PClszaVve0Ejh2E8rTpAAcS2BX
GwjRwEwNvjgHwwN6NI2VoBQcyHM9EWCYzwsGh0q157tzit+Lc77LvWQPBvfF
fYBjhi+uWEBahutQfbH7gWPOCYBpL/CV4t8r4NYo4sVFbnd2tubqHnSdxQil
yuywX6ykauUA0hqZcQ1d2W4FXYuDtj00E3QlW2DbCLecrIC23DbvA1X/GgEr
Cmrm7NLfVUs47y3qhq/QO7gjXoavfqm26niYVhieF9AbyDFKVgvMUOTlbt0S
ZBxigWEnMz/Sp+LVqrLgwjABvIgSBIPgkZlchyueLNfqGngFv3zHpEKdo+CX
44PX5hQt1waSdgM7zM9oZxQlj2XcjbxZPmZ24DKBIJfVaHVkHAxn4oiMCCcM
jg7ieR9m56yoBFDOIUBrGSk1KrYf/hAGDG+TnkishS5q5crXzHv9scxrenau
UGPuluo082ROSu3++povJdRvcZ8kMZxZuy+l2Vks/2rGVsEwVtbQbCrrVvIH
8VYbbD9ei1nxy3eb/VW9ZJsuINrY2zSL7FjRMBeP7EU5aglFK6L2rOO1cLjQ
GdhZjLEPoxAm4PwIBpiYTCxsDdiXjqPPXSdQ+rxO1FOQF6YPRnud+O8RblIs
LmteAFqXB+I6QLICXC00niNbIXJQB0Y007kEUlmR1szaPBKYIuuK54hNtI1L
GTGTIE9IGohKsA668l5donMyPkYv8LFp4LwW4dw1HmcW7Yy8UwYJ72GhcXpC
gdfXDSlX8J1SZmx2EOSyNNdSC8dwb/NtXQO4rZSGaVY77f9cR7TVpS6AxbEF
YAGlNSt55NMK2DPdMBO0Gmw6DNQQKduWs9Ql5SdfrSWWYDu4IwiN0SJhR4j3
XJ/G8rovmpCjAVVNRHQuSbHggWV/MFrptpGZtmg55mO4Fpain2Et9CkaF94F
imgIdAGaVu4FtoRurbPsd0l1rUmEu3FcWK/lAgRGio00xfS9F+YSbzGYuCrk
DuhmgePIq+EgpgmQC+RU6FJ5M72GWpP5QrxGUuOc0+HA7UHIwFoCRiYJZ4MO
LIKkKxew3WnsIGJzQYS8NtHVB9ngkhpTImAKcO0vFt8KCuWA7oNV4durffeQ
AsIToO9E6AJ8CBAUbiH+eN7kbpUMmzXVysK6aRW+grdJh+paOPlqPV3mAmXw
un1wdbEswXtxsZ5W5UCLMhy4CP0c+CPJ2CbNSa87JAZpMacWYmxLA26O9+h+
y3GjHLCy9NOiDFS/ZrhoofEbfU45iwXUwm68Vo1AzIWUR94o4gae5yPIco04
UNtAH0jjkpkquEwHHN/jljgVnyPmFd1wf3adgVouCyRrAIJojo0YZjVG9x8c
8Xitas2wjvdU93apdjN+j7HT6pLsCx0KGb7ZZMqZLqtK4nHIphYUC1OAFn1Y
Obdge4qnp7o6EMIZq2nNjUffVP2tgzh5l42JmL9YyzvNe1o059ewn6LfNF4t
nsIvGYRcI3RKpICpFtkGMlUEdIsr/3KYC3hATNhWog4yo2vhV3Qt3iz4VSlQ
IFAupGCzzD8g2TAa5wAWfMdlu3i7QDHcDYKBTvnNCJ4KP/B1gwWctqGpxpAP
A1RcPeDlLAgOwQY4AXS5ypHLLnMPwwCcaqQpg12gy82DTbAP+SMM6KPBTc1p
18POqbpstMpyun3aXdoNSVqm7PGLYrWwau9f7FjOMYZ1LThRIYzEO98BYg12
3TybgmbRhtQHHltgTEnLNzfNd5sBy19OrJntRP3KU/MrpwIMGa2ZWptPYTho
iQTr9E2+w21yQSwkJIDuVtvMscyrdGxhnGGcXaG3dqziOwBf5v6BUQBk+hYY
dREB39Hm0r9lIgqw4Fj4HsAq3wWfnCevsG3jZmTADK8VCBJNGlScWpcDczcs
qJtLd4PJBHyHy+TyODXDjsvwFjJiAblus7b6PIY0eUGNFESsoVyFl7HylQes
IvZI7lYuNrR2KQwmduVihZl85xW0y83Db2m7zhitAl5JjDb/bWyuMRG2rSHc
EDugeeJZhete14wuBUsCxqHVYbqspZxgmrcT1h1TowetdhQNxWf8jsvAQ2u5
VqwZVCoWC7MmfaM50lF6JroRFLkSjPgTyQMoUSZkUGVcwYj/U5/61BpeuBRA
5SM4zDkbwMKOPAcB2uagQhNfkw+UiUJGUXl/qAbUJnzJzMccI3Q2GmUKcDbr
v331VBwC6cB8YJ4Cl8Z7zBVcHnfKJXXJfhCH0SWGqqfXDB/OtXiG0IUKLf25
DaS1dMf5I3u868cCfM0p1dNQXP3iOqx579q+r81yvcA0V4dbLDQEYS14UCgV
nwEJ6AgAKNU/XzPh4vHq3oOxRhtmPwJmWF48lkjW9WN59Y7Myj0J2Vz4sDTf
yWi9muDpXp0cEbuKRVqsfQattD6MigXRisCXa8Td+eZdAIAvOpKORYK6ooBH
Oh3CtJOBLLDGcSWRgtMc9gfaBpuQxYgQgr9YUIoDhgCzvDEtyxKAX1DjtM5v
GGnIau4B3ILp5hPon2OBGeHjuDqVTfxWrxruLfp2isY4FcPBhEokKk3nopqs
/lvSZsXtrUecBKv9Mxc7e5rrpxmu/swF5G5JGyeKQzOzBTXfAfDd/KpRKhd3
89fgNstW3B3Mr/e73/2Guhyq1rdqdlh5Dwtt6q4CfldDEJfjYKC7uRq6KyGr
26yb8yD03sz9yVHcFiOr0mA/Jx0HmBnnXA7Oxoc//OEjy2cKb1F3Al8R/Vyw
MkXk6dxCv9K9WlLY/W3xVc/uM6MPiMBfBRJTOAROxkegFySCQkYN7lZRC2ra
ktvSPoWuhzeJkQDaQXSeq0GpLgUegZiuKV7jJTPM5aJvEM77Lp1AwYJgL58R
Z1iOy2e0aXU5cjgPMHbNI/2To42ZY3MSncKgJR/WWsG7RzwGjXOr6/O6gJ5e
InNmRLGOAhGiwPUwLo01qhvygPDsdKyePRW5UNjZOotYlUq0mqkZOGcyLnAd
q28B3bvbvWV6yBqEazx4pzvD0lqHrnUU2+4YqmqYle19e8vqIuB+GXEsjGXl
E6oWfyccCIcZmKL3QA+og3+ZVOFRuMrsbaUDYIaLQQFIxT7nGDrHjAHrUgBB
FiECVZzTlFvtdgYC38NXyzxRrrc0P7UT79H3ZmDM8UeuJEi1vBy+XAJ9pLSg
3JlrzKcE2YwANAjn5JrgYVDMCIKbvQZGEAORe+Ba4HRGkPqGOQAGs7JOT67H
5Xi4WJpglEF/gUXlbnL7771FYTj+mkBogbK6v7xcXLcIr7UyUhr3kGseZ87j
sXwnkhGDfZsTDBgDYIuZYZZbIJBwKS0IkNHyrKwCzF0J7wSmERfKiJoSFgEI
hsamexjaqJv38S3E6sgzi8Yl3y3WUBc7v9Fi8Q3cy9QAeOlQ5C70RKdjLNM5
dKw1g9ZlM+hsOlgvAlYY/iw8B5g6dLwigeNYVIvn0BrHhMKgXkBGJI7zAigE
BSAEbIgcmo5mozmJ2rWqtyNPhuujdcEOLUo2KBRAc9LaFr/nOZ/xc/cVMaLG
pRn4Zby1IF91Mez0/FzvvBYBIep2MggZMrbEGDQAWLTEkqaoC8qH852Es7+W
3lCY5vIs5iEaop0TZutyRn21qUTn4L7klu7sftwrfWtHxYS5XRF4CBduOHMD
x3QKoIAxKFHhLlt0CK1tsUtatqiN8ESU4UInmJej1AiVjLo+t1bF3SPnAktX
rZtxoxXX5HBF8r1zKmi0FRBg4IEaaI6FNaDIxTL0k0FTY7wWbgGp+hdALjRM
phdIBtlQrtqDyR+Ech7gA30xuUOdUCmDXdQyeyHTaQ2gR4NBulMUiDtnfeUo
UMMjMx8Ib3tC9vL1vOa41gzhPgvV17J0+3EJxi7QBqZitBlghHpr3Y+owRTa
oq0wqy6O3RjrLpDjzphHXZ/bFtpgyd1tsemYQV2Ew3qj7+zeWmvGVMUofqO+
9HtiUzRcbVuSiVv1dYvT1lyEE1kLn++FdYw+0j1gmGam2d04gJkPYkFUCFpz
HKYQFdf1BDPtOodV9kxkLb/2PVtzAcVgvthwv4UWzhm2NC1oAQ0imqwAJlv4
k4kzZ10ZKTMmIFshINxMz1W1eGf5XCTr1jIbiyZjkrcWKGOZ5rFUnaWV3POZ
prTgcqpBW7qEOuU3960e+B7fZ65xC1PO5b2BO8US98b1IGZ439IIjmTmIfN1
rTXW8ihrMuSpGKwMeNdP6htB0+D/BVkafX0Zz14vppD32myGXVspcOtirbm+
2szZufanwiOvDdOboVvMQeOA4LvmigNw48ANfO4WfS6gwTyG0uAPlPOaR17T
7BIK5GGJ16Y86n5y0yKpZ4r/N+tQhqG3XJyp2aYxljNDtxScYTdlQToFwhUA
iI7H70vHWxCWKRQwQ82GgAG1HdxqasXMjODA3Hv6058+4r4YTgfO+QqdTofz
qN8NSgQ/dD5aA0dFmSFKj5bJbcTOLAdgukD8AORcgJkv80O4VaWKv5q07yl+
e7GHXMzL0XtioUbrJmgfgkQGG+hkAKZKeOWiCpQLFGkD7t+0TLwgHLuco8WY
r8QxUf0ocRTOqm5lr0JjIkNOIlNKyNUZ0k3fLiol5QCHixumJjMyJnoS+MFi
UpeuoVLsNvWtonk3yBlm4I/nQLiwxBj1W04t+FtkMxWqRZhmEbPNQzfWNRZz
wFl/TPkL3V7grHtGn6JLfPTBmQdSS9UMy8WmtAEJOLQ90z9kRb/qYoKkS78O
taLhxV7RULkBjnFfYPlh8WWnMeRNnyMntbDACccox+3eXbPDIcYC8ioHruvL
hZEEXJZlkNw9xOxcSVI3gqU8dBjz3fKdFpHhNsKPFt+vnmPAuBdDmON72ynj
t3yHRritJ7FzTsMmOv44nxmbNCdDie5umTuLRGr6BDjLzLIvfZm2o1mUFm+s
WhMYNi35Zs1lPU2xmJqp1EenYgALtsBY84/pLr656zeAKX65AzCcgQto1XxZ
TLtHF0JaEGsFKjx0xoU9yNA5tfAx5inG6UX9gU4rPFDD72d6gg7UwNDgCnVT
wZP0g5ncPLYFB3VuvRJTLQoSGWFiLj4M7H7QjIg2+AtigYVJjUDSpEpzB2TB
VpY2hHlbBFl6pBxtgvALn5hZrOPYOuRWIalZYOWT4UJfh5wzezmJARHXe/Da
evoteNIziiMRDcfxmXgLaPMTE4YdZnnUc58857IitWUIQyovQ8NnAXp1oTnf
p2pGLvPlK82DNrQyn7jjLh0xn3LaTBag5o/z6KIyN+42i7B50QoTQ5ZknmU0
N+tkqJtl7HRmBuVt57nBjRPddc4dabBesHjQj8kwr7643Z4tnMEdERUk/V5c
J7/wl1w7I7oWGO5svB9vMnDQdboP6AMwVmhnjLDyw4J1gBYGEH+gCQMJ+Loi
x5WKkLMqGkXN94EAKHGFIqfQrlRmwo5M/JC8uQ88chzX9TJkDFHwXeCDsSJf
IDwQI4gKwyE8ujCCWwRqMijPTeUxXOhIltFBtY+iu72uaZNX46UOGmN6tKCO
IG6XzrQioVrDba6zbpA789Y1LkI0lSHZUHVVb1tnLodlGYxEqJ7oU339L9/j
uXELo3TQpzvLltcnwrcGquFb90psG9GUE7O7zEGIPvdOXAsMpDPbIY6xodd+
r4gM5JoDL+dfVm4+3a/rOGeI7gC+w30yWdXKxMOi9k2t2WvKmR2fYmhjyIEb
+pIwC9LqbrVgor6rFgexPmgvkwyVuX4cNuU0LW+ozeCXuvcPlW2amfVOwTa0
b/iNcwMejkm7whaYJu4ggeuN/SFqNdxzgXXz3XVicLs8Mm6ZcsC7hUkV243d
1UMuV2o+kDryL3SyBt48uiqkRcAD2vQ2dvfQVri6zJ2ugZWjjlJNUQClcwEm
nHB73XjL0eWG8MEiC5m00yKfuuh3vyedAxROYZWNBuqporlAqnnqKlvv9j2/
wKlWeUTSoOb9aHpg7c5HQNtExtiCDmzv9g3sCGaA7LZJ8xjD51xf5cGFcZFQ
OlTPaOMi+cxJx+/RRnCzgdRUnOz6oBB+jKfO+VshkMUBj7wH+kA3KIZRZW6z
fVr55RGIpsWQdC1AwkoinojVCYlzOk6jI1DCbrGKkZFSDuM48oyMH7DIz8Er
hiKeDHANphmmnAI8l9PFliiFs6B3PuYq3AsCWHN2wAmcpesC2cjSGOszUvhv
635Lg49KEFpHxa3K4Xa5bU4KLI20WgUHEgaCrjHT3ZoDuTrulilBS59y+xvb
zjp5FlcvR3AOL8NuvAQoq2SKkTdPVPddUtQ7Cw3R9vQcqrP/TN/tDrQD5Vyd
FljzvqOC4zQdEvHxQgdGublaM4W4GWDPzxgGzCAMQDFtvic3TyNGGf5Z2+WF
yLQzhwEjBoLpO3g2uIr8nPv2lQ/ACfRBo4BZgCtHQKdLz+ji5gPohhNSBErV
bwGF8j6n09erSs+L4FHaOfeMYwMb49R6kYA3WR1AnPeBlburNQfeUH0ohwF/
Rhm3bsYJx1WM9/VKzCibxfr7crk1OenikUWlbdFeXC3vceXcPS2BGUBf6pE2
xw2zr5ZWqoHmBPAjgZNUXrTG/5Qa2QTMKysAggEmsVwexwh/7MVLoO5KI10e
SWRPsendqWBb92XOARWcZPC5eyw2hFdOP+wePQPkIJczgFIQ2pBa19DVhfdc
CA5Afqarm/e4eYcrA2FVtXdIVXfOBo0gU1XX9AxMC4ZdIkyPuU0O2AVzc93x
B/c6+eY+8hvzKNoOPTEx07MaZuAbvDFZMP1zfDPXTQVBdlhcROc2KNEA1E+G
laCjGkkClsW33lPGkcX5eeQ3PIfyoVfXfoBUJXVaBNAdHWYjt7yNFjKceko2
6YPVsVLllRu08EebcDzgYNFPBQkdqllndoU1btMa+4b0g3idWUyeVpEwRuZs
tiIaQIeef/7Mvmi0qRLiOAwMqvDUWjxlVMP3rxPyNktyXvPI0UC5kS0eQbtW
nqlHDhy9IJoDJmmYSc133ZeXqxTbZpZwy5ge7nOXiqEOuQg1QoXubU6IwdL5
0DHdWJUwHq39eI0ScP0F0NPdW74xBY9djdGhi8GkM5DNo242DDXQhVAGSSBA
zy/INvOH0SZDK4BdbAwLm23QnE/lUjHab+pGpZu2uqkrrzHlQTyjitHmMlHQ
7ahxUb8Lob2uvLVLeRzn7P5L/TMLCeSF0xyb66D73M/SmvzZiWFQxG38qvg4
3T3Suvx8FDKm/WiQFQgOVcOejjkdws1SF8jxfT2Buqr5bU9PbtX9Wr3fvD7f
BNIkeHpRKoOGPQMJK/aGRV5oXprFnZpNBJi5SoYcM4nuGx4Z/6u6Uz3mUncG
q5tpgDLdGXjm0AByLz1Iz8ifzZQbY43HJjqPj5osqG7es4FPF/VrUjHT6y7m
uXhmKLmGqA4dwsynA2P8lu+52NmAPeoBpld5wMxVXdQtU9xKkO8zGzRrZgxL
/u7x0p02EUWQKNBztTNDR7Jul9UX6Onz0W1pcU7Fkja1qa80Gq3DcTkOlwTb
5UTQ5rirCmSv+zVEbCpO1lTKpnvEmq850uSLIMrL6ZpdFo/uyeQmeHCr3ogM
Zg7ZvGkCOqpgD3dbVFrJRa/yUldt2ew8ZNzopM4RcfMEjYZb1Vj5YaSG14aE
+C0N5zakdVne6e405Y8WoaEtKUakBFRbZL3l+5aWLN3TXMVGzlyGB8qtp1L3
ASSIsRPYdcVFixMPdU389aFAtB214FAVgsvkH/iYz8G+WZ4ah+AYruU5xynm
7sjgKB3OkGEY4d8r0J9QIsO94ptqFI7Cx8DWxftWMW4xpq6FXGDoxERrZWjT
SnyHse/sAvx5NMuaR0YnwFJrmMOR4ww585OeLHQXhfhK44NB5nNwaliO1wmv
pYHLO6XxJWW3bipquHxGAvMUAJvTlGu5NN1qda0T/9dlc1NbjuT+MNSGj1fl
esyuWu9mBNibM6bm2Q3X9XTnXHnFcWRciSbg3rhu7tXZgHFGU3ENDby1EvPl
I0YiP6UnsPjoHfBMIjNWGg47eiuTD72rTUQP0Xtguy2Pq56unb48hK82q6q0
AqLz5r60E9qFaoEpPGkJTKjdKnzQrzu8GQCHqoG5aabgVtPM3CqO1eqtj7FL
wKb7Ntr66jGqpt1oYncwMsESZDXwBorWDxTGNIrVMww8WRWG1211YZ+3mmjq
eo0Bjt1D30lqKTY9texKWZmJuwA52LdqhyqIDZjQ9RhtuCFaFlH92plAOioU
mjNzGaY29VCJ4mM71SSQi8ive1vPFbfzeoO0E3gtJ7HcHFxBxX1KwnV6wei8
EMTNFaqnwSv4RQxxcwowGoJx4iatZiu23cemVpoVNwtd1Rbnj5Euf6rX5tfn
TI9YIVIIW8qsPE6hDHZC5cpL8BnLqGvE8aauVbSLYFz3o0IVGLAEaygInUE4
gGBe+AywmROn/cVxjcWH/mHyuNQLUSi6WyAp3ufrzPqMIkaCi1IYTZyG23BS
MgeL6GUEMod7dOwSKFWWcUxXWHHrPpoozaREqoHhwBzdM0PItDX6EaTxmv51
TxXTO+BCsO8OJLgQzKktHFwlx2EHsqaaAWqrrDb1UpE1dT81o6COhaFtOYsg
PTiyVbCvU2n5WhplONUX7Fn+z1xv3gfZXH2KX8aeAMPJnk/NI6OSm9MXSWNx
yHbaem3Dub55Zk4ph/IgHpKZ895ovAbWsDNzbGygSh7wTjfzE4SHZBFNndRY
o9+SMREr9+6p+YCTP8ww/MdICVjREivEBOFjTL0mIWJAiCamD33UXLwXbQo+
SHSJtItIzKbjGrhRHkE5x1a+cC4GG2PXOCnHZZOjiRSsIpFsGKtsm/qvQ8a6
LVoULgXjOYPzuDh2X1O325UiEysAhgdjYh1ioZ4776ATACxdTywHcoJ9WQRV
tcZBQAIg63fgOUDXUqur/WseHOPjCKJZprjpVNj+XBDuOvFWhyMqphRwWCfQ
VG/eHQPwB90ljxDR5SJ+5w3aCdDsRfcj9LUbaK62UqLWUBhuXeR+gW1TDYAT
XUJlH7cIJM2ZlX/u+YPiyJa9CfpWD8pKW7vSZFPgU45fKxLe2hNBrHYFl5oc
AaKgaPgStxvWGqh20QqHJBWKnFW3PLLGu1tzud0WaHNrAni0bdVZB9frB2C5
S7Kr+Ao07imlau7MTWQ4PAnflOOg8AHPORWtZFlPWssFZkoPAY7A0ivIsdH9
xgyyf2G1iqNX1qnbytSgQl7GTY8CcY4FXIEv6CDIgNAoiKmL/fYWlC3CW3Lz
MDa/hOGPFo2ZWoB8yjtiVSlSYbrj8v6M7iE2KcyU7c4DFrUHd5rBjGEurQ2+
MYB9tQsoc0aYYLhJDuXs4CGNzXIqFyvBHnQqeAMfdA4wh6LpLPKdqSQIAPTT
tWIRzSFx0Dd/yVUDTMnjGAWD5bvl2Rh09/D4AFRxUugNBCES6G3mDuKs6A8E
LZMC1AhoqbDF7jFcFIgD1JTopJAsRbrzrjEgEeBLrW189VIdXCjXwAABpWgi
0IAWAoncJKi1pjLnyufgkZKLvOeed26x1Pari3NoKzJVMN5dwcvg1QOAmHQb
LAwr+MwiWqK31/O/IZeSjUd+AjzUIugcuBsUm2GB6IbL9XWAbL5r9lLLkG72
4CY0LZ9xieXvRGiaSrpToLvGiiyalIsoNTkdg2E43Rf4WoFQEc5NopAZwswe
zizEJ+su7vs9OAPKWw5JTGQcJ6YNOLvWD+E0AJ4LN5GSR/oSENJ/5bGtRT2I
fmehFQWIeaTf3FewrbirOqMoOfDilgP8gRtxAdZaAaKJEVQUCR9ZRYuxgELA
mYdLAp2Ik5n3OA3Q49IYY5Tmpoa8u3+5SRIQc7Mka8xzSoYEEPfSUA/uiEBl
L64D6KOzmfpQRsAaeAJZxjtrGoBy22GsUBi7iF0fQ4zjW8yO5rKigbBGy6OC
mMoM0TA3Mb2a4U+vp41U3Dcp7W7btqs5eQTSgAIb35mc0Ql068rsKkfWkAYo
2JbWGJghPXWXSiVy/h+qBbjpu+K2v1qXZWdhFLYlkuUnlBl6QF8faKGFXCfD
xFq3KeQuXPRhmgnQ5n1momY4hNbWYDSBhuPziF7BNlMY6JMCg4CCydxtjuks
SroBKEoZ08lyLp85AxvXBvuNqPsOXg2UI6gYY6eju3RAuhcix4RX6Xw3IWJS
QSYDHLiZcrT8Dt4GZALJ3UA4Hp9TupZrZfcPgM4j34lpgw0WL/U5hlvlEsEf
IUUECfqI2+J9Ts344DKhaDYY4zIY6lwS1XEZtmXsDbX+/dkYL9w6l8ZwZ0pC
wnFcpigrOyEDcfYmel7EwHROta3vqqYdutkUj26qwlxN17vABAADXn19Bdw1
YW430ANSULaapuUQQtscTwZFHRq4p9e7ktfKilHXOHZOrgmyyaM3tIJ2+LXv
10vJ5oqGDG0kvZscm0Li2hgQzfuMWXQVUqTlegSqOZZ7KzHT05X0Pt0F4mh+
C8FCbZZ75znv043sXkCXQp10G49uX+QMb1FZJTAzM8cHVaX7y42WI5Wb51hs
plhGSnmvAGR47b5zF3Bi5sZFAcSYtTkPSGYHMK4bRDO6XGvOffB7rg9EAzWu
GWTzfZ7zG66b+1Li81vOB7wxFqFRHI2McO6B6yn3U66xjJfhlhghHJNroXy+
hcrd1dRddxkOjGygTdtA/zCHBR3MIsBAhmksmyxU0x7Z1QUx1FkWdwigg3uJ
tDHy4Wj41/ICPLZEjJb4eRA4RpLAxQpoVVADcXVdn2AkxHoyk14ttpn3R5ra
RnaGYGr6iTs2DA9cLCbLVUE4H2MJ1gW34FUcu8rcOUWfDWzOGIDluQgFDYrR
LWIsws2U6X6GMi/9y3M/A3vgCAYEQ/Qbj2CV/gLPYNjdZ6U2fkt/0+8wPPh9
7nOfW9rtBS94wXAdz+M98CHVMSZwHuCYwIuMZOc6xCVjg+Mzu4ARPuO85fMx
Nm+8LqAGg/ITL4lLdLewZjkGzBC5TAgEWFAHDEFujVvl8sswGGMc3hyHpCU4
PIcG2RyaK3KusaIDh2GEuO+zCxitqsgp6V19vnoZLGNfHjfd3RBTbLkvII+B
BVw1CzFAUExM0hbgRA1DaXwHaCg7gJFwjoBjDREqoAvaS8/w/1A0Tt47zNh7
ztROIcdyjFj9wNP7LnYVWxcM4YdardqDZrECaNedGh8yeI/iZtAZlzHVHPKx
x+gtSI2pGKDYHW5vrHTgcwDJHkl0peCHnPm++ymVbh2qnNiJ79DdkCLb1FQQ
lyMM9wLKsYcdG4U973nPi61rOD4DBvQBagDrekUcB4AazetAgmQNcAIfIOUE
wrGe85znxAZkDCLJHLK1fAwEac0Giy3zHvfD8bkOBhiDkWOUa6tbQm06mttu
0mOQ99RVe2m5cqfYxad7ITtLlBjBAdhMBSiCbDtV1wL+g003vZr5FQtvh3P9
bWZaQAJEmakRGhj8QBugCG0+ByRtyXwl602c2UIQPZReSyXyEel3Y/wPTYN1
A+t5HXjNHsG1chifoxwAYAbh6nd19cqZnuvqyMyr903E4TWfcdiG75HjllYw
EZAj5zA+Xcl8DSSEM49oAyBJB5XPquo8G1KCt6FUNlICNRATX9OdBepApLt+
0e1VZhQglMbhNyCY0cEfmzG98IUvBOHlO89//vOHuweC+I7QgRihe/jVZBNw
omdF7x2cC2JBpOhmlDANcC7OzWve5zatK2otZ5dgYdHpKeT+mMbKNYz8sML6
sG/PB/KtuqulyehmlJf2GHkynOpcbUU+3NUoDmCOmqIjDSQXsVpjzZtuRgHf
8hdvhK9sqK5e+A6hiXYmCYsQv5C2VBd86MQeNU5QIfvd3WE+qel1/Kz8ZGpw
3vRM0u4cBMdXAktgSksOinUxjG4XTmmeBsh2NU1O20uLDBb5ZLzHbdSxxTXX
dQJtvAXMXQoGnrkHQifQLB0LYNQYUCu0hoZw+zkAw3fcGQx6hQIBLb8DSADM
PZzd8Z7PoTlABOXxCGCl0ALhEUSXHsq7jsLiYJCvcjpw5Q5PxkrAdZSJgQ4v
9mUwfI0zcRiGBD+XrNULXJ0V91C0rlvBaMPTWNXyjd0A5A74W2/vw91pLQBl
WksjE3gzLPRk0zpMDmgPC+vWZEfSBzYhHZSpxdqZIoui2mKwuJ6GWquYz6r7
ivcsLApJWSgKYS2+C6iadXcm8A9QACFgzDmgJk4bf5Gwy28E+Mngep3GJj81
91uQqtW4HvnIRxbOf9SjHlXQr3/WhYt8D1LmIngOehkFzDFWUrDmDe9zPkaA
8ikvAzPE33wibaHCDYEH+sPqikYVoFjoRzTzHujmc/oNZAI9aBtahbKM2bRi
HuUcRbYUnuIzfRD8iS9ok98iQMAexyy0Ooa5eDpeMiO87GUv277kJS+J1xzG
3aKspmesurofyzAbLgcTO5A4NMdh/15OqX7SCNZQQ2HD3NwCt8ml8v1mwPZ9
KAvctW9ppeatKadGfF3oqlq72UcQ7zZrRvhJRjELGzGCrYMnKmrU1o3pLIFb
17fU3XNMg2upcNWjUJfGAHC0gUFGM2gBOvjIWACTlu1xiTf4UF8IcNOskS2h
tU+Ek3Aw1z8zM4+cF2znKm133HHHiMO4DA1ekrGDb4moMV91Ha/Q5qcUVRgj
3WzTVz5y6DIcpuDuW6+JcO6MK+EwtD9dbaEk+gHE6zkDzcpd4MTnMJFMRh8D
I/ie7zAxt/12KwHuxWEk06wR2MV0ArfDm3UUSekMHjQKO56+6lWvCoTD53ym
oQaU9LRxC5yWS+A55wPJjhLmBbUIhAzCGSWuE8biYAqC1LnGbMZK4PzWPa54
P2+6znuoevcLthmcwtzbgiZs+meoa8NOhhhBA5EvAFvmdEyTi9saryGKeEzz
xk83dl+3uyFBd3cGa0ABrJs2yRHGLkrM/Wt5feWsBUYneBmxTRjYYggu1wLl
jbEjqwe/FS7/xz72sbWqxU6vCsd94vIBuyPYLW0AuZt6yZ9RZlxfkn4rFtKk
yS3XhDfPuSRGks5cGAsmtLSh1pylc8GCDmjgrrXJ77TOqscWMtt0B3Lz8FY3
xQMCFowMoINm4DQ8h1yBobtNA2MgxnsvfelLA+avfOUrt694xSsC6nC+3+Uy
OQ7Dx3gfMllYch6MVYYL5xG2DANGMvDmlt1qhd8x1JyfaB5uj/eFO82m397C
gDQRTF2uYaxmZXlWNBPH1ByhCWlmJo1WZjpyu9yuBWFhvBGrKOdT93qNtQDk
qcVGuS5CB6VM9ioTUR4pfNDuua501RioYUAOLEyuMk9DyCi2y/WdiAxWYM7x
9cW4GhFhkrdCwunTlnTX1W8X+k4dxEuAulnFJEnk5dOWByA4x4iBjTld0yoV
5Tf1xC1NVR5ddcbUxGla/CyQa14aXQZ0gBpshOo1LE036aRmBJTuG+nzAmze
AmEN4JXDLwRIAKCzPNyqKFGaA+YXv/jFHeiqCQAKdxeAjtsXvehFwxvHJtZg
lT9xyNehbb2QzEhcBafmNOC7/DoOxXjgMrhatxbCwqABGJJ6u/meVgPTBfhl
iLs8IKc38prG43M3iWUccB7pgDFAw9J4fNfgY63YTkr4FHiHfqrvIRZbsfZk
vy8cyekjR3ZBq4mf4BM9C+0R0wLmiAAw7eIBAKDfRBEOjvVlQOSxABzRvemu
j1ZMc2Zz6+txLrBnkDjXzrfoZxQTIrFzt2+ZhDBjeLf9lEfwPALucsfuXMuy
PfSMEG8VEkeuudxxhrjVVc3PZdDBIipkJ27TQ+hhgMhnDTk10eMwOsjkKFAO
ACA4JWibG0beHM4HjMGgsAWTam8DeGAP7AJxrFe+w+/aPtel98H3A+I7SA73
veZ4fE+VxCB097b1PtkOKXDPd0x84Vb0FHEbeuDBNi3BbZomqOPQxEYwbmVf
JAjjBHwrZ+B8jqFbh/GHW53x4YofOZxpnI4MZxcZSQe9LEbas2RR+nHekOJ0
D4S4/90a4nR6c10HKIBINcemDvGaE8gA23Sd0jhxBOQnKpFXhF8OJHN4oAeB
Az9OJcKBqRW6aDUZwdWtzmJQLVkdrkRtRS+qct+NgQKRc6qkVyrKDxaLfDLK
HcO11ljp3eH6wAmkDV9pqIEL+py5n74G3szN8JUuOV2BxrUZLUwO9HPBVA17
3LUH7nzMvmgVM1QLxKVbLgO46xsH4i9/+cuD8XmObAG+evs4JRRuGhPPuS1n
gyZthnpNp2JQo4yJsyMnuGzOy/cZhlwXt457JhYs4vfYDVTzM7fcakVgR5pm
uEsciYZ0hnRfT6MIJi4Y0HFxDqEqupsuhswNK+rdyDtW50W8rThqNUXPv1ou
F+hGAi2aIFZqRJKYzqZ78RpuIq30REd71ORgWLqQVGGOeoHeFeVpUV9fag1d
WJ7A6kOgGZVebNG6fm+/l6AT6BzWU3Wg7/SLtxIJw7C6xW+LEYw/GWBCfobe
M1B1sjG5m7CNqNQxhjyhX7NIcMJufuNAq2FwyBSkN7dhuRZsznNxHkPiek0g
WQjQAcU5tAn1kTMyygipjpgb49D8XLBzeRySAcVAYTDxM01gBgN8zvjlFrWg
OTyXyum4bdPB69p7Nv2+OQYHzaEviUvksnkUzjSNcwzvwRVmx5opwHHhdetP
AHW4HVzq8Y3FM6Qw7XVe1zJ1sWHd55dMjupxwXo1IC/UmzrXyd0z6qyQbEyQ
z91Z23WSSZ6PGemXj4gW9LlIR2SjOixrz426jwQTovnz6HaQzhi39gtivLwe
wXmi9Iz0EC44CW9fIF1dnmvsIg+Zsm1+8+wMcNPtTOXuHWguNG5HXtONwMpu
NbZoEB4+jgAJCuaGnk+CZQldQp2GLAG11RWwUHJBMSuRQAnwqAawViphpDHI
+sHdiW7ghUsB3VixTAdMAypvPgfFINbLN8OKW2YUYCmCSJpIt6Vp4hrlDErQ
br6KG5AzStwzBoLQP2WTmdNCdF5ag/6gOahyXd7OMgdC3VIFJHwA8pp9V3eo
uhNDNHsEO9RN5gYuFoh0uU9eDhxQL09ONF/55TgyZ7AAs6IJ14i78arPW00K
97fqsS7tUcY6k4Artcvv3Zoa5GOmWmygkXr1JV6O60ataEZ4b0wxhL5hQKuf
GooH5gYGec+8JpdNWbwsAjA4E947DmP8kVmf0SJ3a3v6OTysYAZSwIGbt56S
S91pAIvuWO4R2NNIXC7nNLeEEcqxIGtg5MgF5gwllA6OGh4N4ABTF1UAQWHs
GjrXozOy+YxmMLgjKVubyr3JGYaStG5wJClQ1hiwZCe/B/7Mq0pVN6dFpiJ5
6TJYqa7ORTnfHqodpW7xAjcQNucJ6MPA8Kr130AIMloYA1ueW9FpJV46ox8D
cxlTh8vUdymgtP4IAIerMaZaHYFAuvIF3Bgb4JHXdLLjHK3CzTNC+C1ob+Qe
ZJ9d61YhNueKx+72LDO8eOfiGYE0PHxE0JqOBQSAFSABHh3YgMasITqUCQhg
YlUhMAAAAqjyKwkor3/EEW7kEU8JspnPAJDWmQUDBQ+ggeddsZb3jnHbDq4F
0Oj4dEmO41cLkXGLgoHXMQUYFNwT4OZ8bWVRUydnAuxu8Mz9mQrLOWgzi3da
o6RVHKrVpA6CmKBluoWu5mN+wuU2Q6flrUzxmlOxMroW5JoC+xBcrXbKDH3Y
ccqfGUzWardUQoST8D7eEOwGz7puHykB3IGrcDfRKcOd946DexIww5jBfmvo
I0YVo9N6Z5zazYdoDWhdsJudk8t9wWZYKhiwABuQ81u35QTwDADAzvnczuZh
D3tYFetv0K/ePVbEOtKMn0FUzLv0N6TTEuhCuTr3gw3Ik+8yLiAjyM5ClSpW
cICugGz1bjNuIHGwzXM95ZqQYMgtF81j5PhglzmegOYImouxBygYA1Zbd586
Nxl1aRGPkDM4hUAhesgcrKNjuA7zIrluiDdv0eC4avV0xpDot8UwpLfchYHe
cNcHHo3oMXEDMGiHEAo0xeGhEqOr3LZCnmHpjg9uccOt0fugxY0wKsgwGaec
rTdUf/otfVMOK6LRzYAbXueaELrQL5DIy4cFu8H6NdiPUevWRBvCQA1yd2lV
rTfMHipXgnzdHwPChrxzOf28GTCzuuaKlU5dhwjGrbIL7pmljIkyvljPUxnh
oIu+NeB5nzFSWYZdkg8DYPQKLCToAC+ABTAtz68upD3VtSrcx0cany29sGOb
8VIOUVNmp75QgrUAI71e5BZ0jPbQ0FMSK2mhU6+Macgdmmg9YcpUAFRd6sgd
gK3Iq8Jb+UYxyjCbYWlOZQ0RF6/zHBKCjICx+xXQmY1IovEgMCCPd4COAdbm
WEBsaFaoHbMMhzHngRlgBG7VVZu8ZqRzWy7IhvyQM3SqGdJ0nD5uSzQVaNdS
ltctSg+DUNBrZWbLwoF0SE67NOevppqToLsudNjrX9XU050OxE/E8MOffi29
zskBKu3I/XBfpZ2jOP9woeOc0Y1CFeetEmlgHdmuT533uRetYE4VYSNCpO/f
Tes1zLklhoVLqVz47d4qzM8ABSEMZuVgoI8u4Dd8H/uN9+FJtD3fhTfFOdEa
bEG0A5zKazheYY2GcHWkusF9wC1ObIVLDXcXvbszI1oQy8YdO9yfD6JkHoA8
uX6uiTHY8mF7Ng6CAa+Hm+lCgqIVtNHEtJW1xiA/ZnUegZPdQ/PXld5lHAyX
oucZDRZc4RrdmN1lQibjZl3E/VuPiPMDR85b3d24Ym7uFQBzmZtUvCyuzw2m
IHQrfgJ3UxR1w5gGYPTI5fSuh4jiDP+/sjf/tW277jrX3Wvv093u3Xvfe35+
jvOcOG5iOx2QDoEMCSFASANOoIJVQZUGDAEMJDISIQgkJJAQKASwQAIUIisR
nYIgEgQRQEhQFE5VikKohBRUXfIf5Mcop+ZnjvEZe6x1znXMlc7d3dprrzXn
d4452u+I6NEO7qL94aZTnvmE/JadV+wXcO6kcbVhLe1wR7JMfzpkpNdTkvOW
0p5T2o0oM28zMvC1pYh1uLuiuQxEsqU8VFiRmsDUABngByxQvYEIUp9j9cQA
db0u5q6wCxiUtzbBlBiWBPJatUk1RM56blnYcm+sbPUC7tlODjzK44BA4d6B
hZqhXGgIaX6HexzXuES+7JdsfKzcCxC3vSRLR90BoWpKB2NnnzMkii4KxlE3
h9lICHTJNu3VZvNzli5LmvFjW0S4A3eug2tlP2KM9Tgzt8Av9YplZmEH497b
iyLF7h1gnAmWUCM9GRPvrFc9662ot3CuXOw4p9hnaue7MGkD+loM82OkMrXr
lTkizIhA5270Nhp+UxF1K9UwHTN94MoT6MheJpbnnQ8yQ6XjJ8fVL6eNgZ3X
mgwTXzEvAfmCA4HBBXC8x8RwaeisgAGFA+c4O69V6jy3zFcnPGA2Aq/sRIGw
Rojf4fY4P+MvE6v9nxkW7oX3Mq+4SsGZB+QsAGchAiIWNccw9oCMsRjnjsD6
iykmGFVUeFOMrQcyhRBc2S1Kmk6p3fgJcB7DCcreXTLCbH8uzRapHKs/mVkG
ZsweWig4Z/3aTB4ble1RugmTEthKuS4JnxkOpk6K4cYltQQXz1UxEwthh4sh
Gddy4GaWpxPteTsbtINylvQe7RK6BjUbZuhaSO+q+msvlekd6vu+uEmdOpVQ
BYxqCtd7mEyQ10VGlrJ+Dq5Gf9K+JNb/xH1YnxPGnfE7KMampKIv2LcFk5hr
YyIQ1ghmS9llaADPJgRY3sNzdBh0FVR8dAaEOzoLQSqAx72CS4AhKYC1qBIG
uB/rBWCimSHWAdcFiJhMc/OZRdvXGHwEwGwa2K2WzHMNrD/WMOsPPQkQ6u+S
E5/zML7Mlz5pxxIEGHE2Z491CzBBlCzJ0rshzE3xYF6Zb/VGNjnzQhHs6IW8
tkOaYAd5PXAaNfA4Ia8qg9bUJuaZa2NMJthp0/Z0wsRb+Uxg13Z9Gdj3dumf
Lip0VXZAyCaiAoOmYBN7/S8814HVU720SRlIBCKTYGsxU8EAATs5i0pbo29O
HewAi+P0LDPAWIXsoOyaZlPyu+y4OuzQRqxvs2xerzaARrijpKOgkz9uSguK
MscANrQkzslCYwxQJBECKJcCqWeqMupcN5s1iin3BZhMEmUjY9FwvQaeJJ+V
DpPxBNQsaK4BsGMSotmw0LkWwZ50hBXIAvgq9HzmnKBhZYr1fI/fGo8HTjT0
abHKaSSatTkJdgdDbzqdsSnjUkwFl2RvLGSldCdg3fIH8T00jHApP6+IIRhG
FLjsEC2q66BC/zrIsOyH/YnlPJMAzlVxHAq0I3FwLfrCDve3JtytjGBqLDi1
o6OyXf/6Hu628uSeOV6uVGDvMMsLvIP7uCaspP9hY14r04EUa54NHHlnI1/k
Or+L/sKSYnCQwUCdAJAeDAvHzIo1oo7vXB+jASPekxECpRS5jpxl/2LeuQeW
sCSaXG8n9zcR1L2J51anAHHumX2PZWORG8/NGdILguPGmigUdat/WHqMt+z5
4NHOkyx7+6HK28xzPstgUTSEuiiiRTvmZL+dSDuPPEV2Gnhyg9f++dQQbaNs
CoSp8ZxOcwz0pGVaSG+JqZHt8WLCT6Q7wQDms0G6pT2J9NowGtSrCrpBXaS/
uyvsm7zGjnTuiVkX5VKhqqxLDgmSQYQNb5lFxsFssO5kT963qvnAHzNT15Zv
rYtlBaI9I1GQLjxaFsl1aA6CdJBKfjgoNg8VLcbc76wLKg867xnKRNOxTB51
FPPTDLee3ea9cj+g094NIgyhy+c8Gj9mXCxMtoyT12p9TLLd9OwIKAeMueIg
nfF3nNkouRYeeW3GkT069fpkjnX0CnxYoW33WqZW1HO4bXsQ+UGGfipaPC4h
eerGZ0PML4/m6b1dph0sgrfODqunYQr1AfAos39t4hVM65NmGNw7wfWvgPNN
34VM8w1hnkUYkQHzlaWk24VSq0UvAtMnYT+wZpil/2LK7fmpzoKyaPGGnbzc
2Lh+lhM6kvC2s1rvct57BgJxBCvGosFGXbtAXD8smywQ/+Vf/uWpeFNIEaVx
3zmFOIEi4I2Sjm4DzK3EsRwCIYpzzaCky9hNjEfuW8HJ/PbeNcYXdC5y384/
WAJ29h92E3KpgD2UAH5bvlgwhYJsQIrzc7zp1HyHcWUMmC+D0cwn88D7vCf5
uI4826HzvktQPzDHGTfkWuVjZENl3BXj5hkh8lz2nAvsIJ7MYTJ7b6aQ44F8
owL4vM3UI1110gkTYe4y2cNcnh59L9pIA9trZDQaJRXqwfdoGSowl7aIIeLS
uQWWuwEQ/cT221BqKcUZcoZRe1a488gQ6nD7bKHO9QF1dkseHWaGnj0eCLHc
0DGANFU+QB3Yy+QHpIG6OVem3prhrTRHcvIbnJvpNcMHOAt1nWqq1/w+YtCu
PPYfQVQyBty7Zou9HBjbtAsPDN7y6jwdq4uVJlmd/QmlQecS+DkFNj/PTzLM
ojRLxw6zz8nFBJ5V7LbdHRrpAb14yGL7lfLncyaQieJCuSoGAVk+1l8QJ9zM
i8P5wviDAcsq0QZaOU3ES1/fqOpAV0YHlAaGQkvOzR54AI19jHQH83AzXZU7
Rze6mm/qS0L93fO8ZgVI1sbgyOXrmCqteLQXqNFRp5OptcW8yWLCnWWr64VR
fbnS8iWltDB3SDWLylBakO5SDBkWR9JjXSLRCf0AZ8nV5IbodZ4WuSHNZU7h
3CwhJCo7hu0a7DyNlAbC2XehlrXu4FzGYycZo7A8myaO5CMog7bPAWx8jzEB
p3pxuRekJPebWB/nGqra0ByAFmah5gLa9mEy9Z82bq9UCLPGca0oXfgfiV5c
Fm2gPgweOYZ+vNEC6EX1M+Ua2cGM7zIHkona/5adBnHH2HBfggzwhduFFmfP
qmpC9zi/y0K0QZdWNnhhxfG5hXWJ9SV4Mm/mPfAZLh4ptUyBtC/aeNzlv9jK
ktnoSLcs2lx1s/jsJ4m62XUXOfiMRth912aRlt9p9FZ5Hbbor3qpLQowtEEJ
pOvbMvHcWD+yGzcK/wA8rhQAjgvG8jsrPk1st5ITeS4vsblXTCwqCbfM7XOL
vQjW4bJVIpM2pWVEJBCiepVkhrdqHFnA6dgGzIMGS8jwvJ3ZAiBE6PN5y6wB
cIV2kxK2iGTtxG1TNi4TGcFlSpfpvC9PSxtgorlEDtEDwZ1YkcPpEG1I7nP+
+4/92I8t75wSHcgT2TAtEmXN2nzLNBrpREFc1hOVcx1IaA8MC0PEyPbM3TPM
LwvmMsfZG5gA6Rqm53j6YJvSaJ/4MW3jROP0ywcnykEjyEV+6cUS4bZlYg1z
c+6dljG11kqVFfASlP+K3kUmg0E2fxQ5InMEXODBGPFsqh9AW5jjNbTap7tZ
hD6yvpXkTURFf4mLKbfAnW4L7nGs3mhC/qTEnRwg6gXa85blSlrJnI33VsZz
QATJBbJBq/1mQbGOO/nATHyQPJyFzgLUHOc539fxZZDLnQYBkSke486Y38tK
9+CSzaNOcp1xDEdezlmybzHmuC0KBqzHMUOtG/eA4LE8lZFihkBD8uFXtEqY
W0bmsuIa+H3dHAgSKx1ACEvhfpg/mkOKVgPMpbnQ7rXTpURAG4HeapdLS2Zu
eJ+b5mK4CHtEGu3QZ9B9LAp0BlmPmi16dRzZQYzfnAmNhI7eVilJJrzopGMu
0ByYX4QrLhBwIF0+2EAom7wuSxZOQx6DH+4XfuEXli+cAh0NxkojHqUIZOWA
HcQU84dfGhFjEyku18w/hgY4q4nYqpUhaAr4vHXjEbpIkBRIYa7f7vRI6iym
GNcKycxpblqSerB5jU1nfPbpT396+fJKuQL7ZpFz3WaWMU7ghyliz9VPL375
jH1Ydw/Th0Syu5AZvFwT68jgEePDb2AQMR+Mm53ZeI/vIBllQASD4twtRHHO
OAIDxorORAeuauxeinXWgYSwcnJJGcQ5gKosijItmsk4d6+ZBTCV9JYP8J6u
zb0U7lyDDSO1hIQ746RUV7SJA21+tXUkPbu3GqxRAO6B+0mML8Gd98q8V3DG
/CFHWG4YhlI3MwdI5h7wFOczMXEAPLC+lvIyFJeo1TwgSocgA1Rm+zJx+ocH
iEvldZuiHHyakVEr+7wiM+ia9rvGlmG19CasPY9EIgokdxIpBavQRdGtkFmG
fzQDXofJJ35TmTAS2ciB0Cs/Z2k77WDeUfn0tqXiImxEaOAfKHNMT3Kx2bg5
9MCeobYQ3epspgJoxNaBQv5W5UW4o7mNaKgAYxU4w1tmW6qgZ7l0QRwxA0TM
I3sJxJc7GAdFBIv0Lers6BhHHiGOuYgex+tlRohpfVbimxsy65jPzVMHJrrQ
owAEeX4smq/MPA6IP5/3yvID4vhBjIswvogW5oBYEAoKfhTCmzximEruM0vn
8Df+xuKDsaGDHIuEZuTu4ZRMOVjVhtbPocfZVqvgl0tBknF5pjUCAXlolNhI
PC6Z18Cml2VYIyR5i80fTGeQl8O8NJz/1kzJc0RozPBSbzSgpzLtyDHi453l
i4tL15omnnPvNpZgp2Dxp9ZS61ICeJ38NkNnWphtJLmNRJg+pbH2uDa6nlC+
447HcpE3SEXd5ZK7QVQMXU39g9N/tgKdaOmyfMW8jL2Xj5+RC8N0fr15rEIv
SyesTnmBbnN7QI1At8zUUgAd+Ho1d2CvjF2unfMALzZS7RZUaKDDlBjYT2RL
yxKFmx+YaADZPUCqpg6aQBgoMeZusi8mFosL1NvSGgGGzLSHMiiQJk/yRhNt
5eHNYo2iK+ispTIpTVahkOgAvdPnJ+nMYbKGPS2CPdl5uRsO825YK6xdi6Nt
kkKUZ502zWXxPSGe+bPuOyoAsFi+YB4DvlkT+jpZpxwv4YIkkKx5tDeZeky+
0q+GQWPupJYBIh5wIP0Akj5GQALO+R5gzlLLwPj1xIkNdz4bqT4d63jzlrEb
mj/AtVn5wDVafQSQZw30QNhQdrkkA0FcFri1uEKMq4ixdBH4FiEp/HvCi8pb
U1wqss71MzxsKICO5c66Qdlk6AGn3IgWT7PFB2/Gu2aSi30dRI4cXDLVCzYz
wWxGZUWQabrs/IgvSyekkQFW8qcAN5s6jN8MdrCLYoXrRPxjrU3G/zF7Mq6w
HLkD7sRcsyTrzXrAJ5v6KPYuGWlkNeI83K2bQt7VYbKVnapJjPm342aX+Oyy
0jile0eGp+yvkj4GxTI+Bom1wJ7G/qfPUl+P7MgDDAfAvjyeL5FrzDXzimJs
K1Lj6shAe5BEFj160U1RbgHPz6C93IE5jlVgLsR1QZr1Jk1Asr9E/fMblZxh
Z1U940Bcgl3tNnV04M0tmVRj0EhKJkeoeKHfrBxY7s5cShDOaRCrCCy586U/
UTFhrjsXP6LVNC9xlCsj6LzWKu4JwlEqjF4tqw9ZZ1cd5Z9l+LKFWcKtOLYJ
lQRbY2EFUtd5pawzBHQYD08qq9J1ImEoKAfRRrlAta8ntcYv/uIvLm+f8V5Z
pF3C/KodALKPynxkMNSOFAGsQfYX6em4YwsHs7Niaj1PptZiAw3plBADwFQ7
i0fgiLhL+zGcem8v3mUQB1SAhFkiHelAgmN4NCsFaZgwqRbgv5JEH8c+mFEa
oG7+iwmUeulN8ATLQyQHLdfjchiau6VvmZUhP5K+5bQ7lqAava6AUod6r4at
StflUTHucTlsjGgumgq2fLNfydzb4WV5XtF9ZkNLTR4fZoYZNZvRZSG3D0hI
7SOWwDvmqWSiFTCcToVEDpUu23s2mfsNUlfyIynuxDyPYSCPXxuj1MtDOI7v
QJSEgZ0VgGPFQFm9FoHSkPLj+2MlLK9NC4XfVKWxowqP8n8ZFdbVykhyXzYS
MlSXanmGr55UwwSTQxli9jzUDivhrbMTmZOXH/3h7ZuEbMSzSQAA3SA78lE1
nEcBJV+07vrPGuiEzJYhujoRorFUrpOTo4+Yrp/ERVUgql/Rin+QOxZHqFPr
fCsjJOO3IZ0+A92ULvlqBHz4W3D+P5IuZ94DP6PvD98CsHOnzX4Tk9V+eVik
E8yGxZ3229FdkX1QljBUr2rWOYY/yfJTE4ruFsfSPDJh7DA3/ufzrF3hbtxg
xRhj9gGVe+SdgU21Dj4bNkZczGWZGywRGXuJ+CK9D4A+BPmTiX+iZPy5fnhE
s+GcUmlwPe3aYgm/e74tbTo3bNK5lbA8lxjGLrb6c1UD9fViNiHY3KPBs6qC
+Yr6uc2B4ThwQC566AunCS/gxHmAZFSjUdd8U/t+Mm58NqpLg/nz+l2blcu3
jjxHjTIHwuI+6UVVtVOYR1jiuOHoHR9Nt9zQUkW4jvu86oiMvjJ/0A4W8qZi
wnNjeMDAUtLiVi6f9CmTVhFet8siDLJbhZpGaKJh7PE1ICDDC6eY0w/56Otz
6pWGdnVjHQhwG/uAbL1/HAMsfZR2Th6NgfAA57GyyrAjpz4DH8eT4m7nI3AK
duVoBOisC3l3AT0hsfF44MCxuBX3HG5fGisENVNSaV9mn7vly4t610KrTopu
/zkZjHmfcWUQWLoMABhH5qDLmrTcm0FIctTJjngEv8w+KjGaPXLcAi45pC10
UQ/qSosYt6Cl8dQuh61q/mCiC16jTC4reg5e8wPGhY35WX5leNkQp3LczUV7
IVF+nNL8tKmPzkjoEhD/wjk2e4hbVMupUVZw/GJ6piAuc6+DD+BpYSF3sKKQ
/8wXy0RqZb7Hds33mGc1F4vu7L6iZkNLuIDjdVWYCn5BrW48xPPYyWAUuJ6Y
U+XgTy5H6zzCwBzfPMyvnUr2Y0Ek12RaoDcTvDYISPlf7lLZaWZfAja1L6tN
rd+jGxSPqjOMmSwHEnv4CO7R9rhP8z75DsdjjoNN+4PLXQ7+ZKSwqZtULEAL
aHR841UU38YMk3B20c0i7ruu0ouVGr6HqJ/y+8E8AUKchQCu+aL5XyxEMwpV
OgwAoaSrcMiuPk3p8IObI5Np7McZZzlt6B4z4J/1c59b8OaXHR6GzDpxTsev
klRlx07Zb220o0tQMntgznLAMSy8ZZFlumbUBZl2oxQvRVpSW1dRlmis02K8
2ugfSmkZMwZwVwTsGAfUEhIok2wuGKW/qlgWZZLWvWkfAwlAe1cXjuNX9ZZy
ccJVxl/FtvcnfDUvbURgywzJKNXEjQUhshHjiAe+J5Uq1813sTxwtONVxg4z
FTxrnw88Wd6qEroso5solHwDc1NkowAnLUElwNhYJQPm1aH5JcguLSg1pEVo
3xSsAZT5AbaTBVRZVDSjgIeZA3cskZ3tMA4Rsweoa3FGDviPV/x/2lT6p86d
1f4fKAoQe0QbHwbY3AXLjOVDvB+A6nrQacaA274FcDNhyiKzGi3K0VRSNdXH
wCOLxigM4MoGn/LqTmqXcet6N1AHhjgODeEdRZlIPg09LlC2pVDUUOxdWSTn
14uvVNWQ64ah8E2n53IIu4MN5bK0bb6kmE63RzoH195ZOt47zKfXRfIkOwJe
cQQBY8e4xJ7Fkr4spjtizsS9QSTzRp3zgTLZ5Z3VkFACC4tlmUPmviNbnYTz
GCbRvjSVjPfVd0ww3xWYLoeqFJpe8QcThsvyopQAUxk16twcJOkCzKjNXAiP
ymsdRQFWTIK1vkcS0GzVMuxYi011xe+5f81l65WzDJC98pAQxIJw0U2/M9v4
xRSfFjuD3eyffZhhj4sitDVUkzXF4bV+VDy8IFuxDwTcxeVdTOLxQ8ptoIru
C4RNDxPKUx/G2fF86iSakb2NlkD0l+1gZ4NZBXYK9DAr1t5RK23j64289rRi
O/lWxrFjFMb3pVaNvrZg/mH1QeXGGR8jAkActZvxY5Dw8cRvvm8OMWOKqxAX
CGgAZsKaWnAeYSnqaVuWxCH65Jqx4gkXimrJZwNxW7b0GurmRpmqSSD8phDl
JoLoNPfAguqpdRCDv6z2cHrArVQ6t9Vdy1FE+t7k+RowR3pbYjq+cwgPEsvi
1XJz7mlQuTS5JPktoo1MBWgBPRpf5himFD8wl8vjjSIpC6ytgdiNe7P7/OoS
331WwZpeIG2KOj8nMxy4BuvduEutI33ez0s/5jxSl/b2tWojPT7VfeMJetsS
qIzs3YB9B3D9IG8BpIX5ubct0QH09fKTZ0NnOyZuQA7w+bzbJ5aBSn4AyNlv
YVKctFsoJ58zJ9KURDtU6J1DjMu/yTohlZLtXRPyMykotiVqvT8b1f/0nEzL
kgRGMM51IDFZc/xlJ9DyGmZQNrw1FxO7XKJuEn56XPYkDMg66mysFMAe79kW
JojlxsEh7D9Q2JYrnkuRoEzqKG6T7D2ACag6/aEGlg1LADCiC/DKAWf31x7E
TFG2SYTSkd117pTdx4nVp8W4KNOoOrhdNWRotAjP92gaatzHvgTRchTZ+LQi
k66lTt1r+yyZoK3ezhDTEi7MN0rJ4jPbfSqhbfdlSIBHbp8hshzF0ggeAbn+
qlwoB1Tz5e1TR8SPxpYMQOA2xweA4Gbm1C17/x2klKA2fwn9hPPoW7xrT95s
7EkL4DqoM1R5uOMteVgtNrgs+UXMQHetZUJN2H8RmFo7MUmkqQ8QG4DiWgeg
V25+qNwWHrnvROsNgP201qLAdk3x6JBwW+xlJDUxc6AlJCOEVBfVycr9OYEc
3q/nm6geUswmGMYqEfBINXm49BgqZLPZzxpqAqr3W+U1MUcdsLLe8IbY4VlD
U6+JvWvtOqE5rBXA79uUw9QU3Yz8XkrNJbzXr5Xl0O9N9TrbI25yu3oUE/Db
s9SSkwjmEKWPGg2+yzWYxUPeFqYkNQWS1zM19KdQHcGstA39LF6GA+sdcyYB
Nr42FG1T3CTyyAjfZ3QEfgZgV54H6oPu7ofVSEN9qWN7lyyWJuBlFTV4Raal
h96DY+bZ/A53A65NKtOs1F8iaYxauGZltsNboh30wxID/BleJQeUybLZVYJg
OYR6jD/sYqLF8LfdJmZEhpD8WyXg1SNN05biXx+GwltjUJVYt5qA1HtiYpQS
3ui60ZeQ4DgC36yCvF6fpL9Dg9KOSOYi6KI0asP1mpRo/EqpnN1rI3F4nbea
Hd3T832qlqBqMEHrSx7706ptA+tG6DmG9UAGGhUShJSRvkwvU8O+C3lcFGC+
oxxwQEpVAuxzLE43ayNN5EMMAgcbs9huWdgAZqCpt7G3JV+bx3vq3hGmf1yL
T9tAm6Dxw1SWSuJx6a2PUsZm2PFF1WKrVGAzoJmofHcL0yLOz4zzx/OauB63
CI4n1Y95tjNhbx0UeMcWuqgmmWoTKQzDH/hqbfRmYSPX7a9oZofWXk9k7N2K
dNnNBPVxLdG//LiB+cxgh9/2OEW6q2Gs0uME/Fo7QXSDIT/ycYHbLnfd62KI
3SbtKZ2XCKuupXZAQx1VTl85jceexcujPiPvnsVOHgrotkZJ/wq+FcLyZMFb
QY1YBokgTkLEjkB7eCZ555zo/x5062v7DOi+E9PZIFxWUvs7gvhuFfSio2Ta
Lz+JuVrQaATjwHsroMSFSnBhI1y1FXMVzJd9CcLLdco1gXAtDlYGkhyoYd8B
IR2F2dC4XGwZGwnUXVaahlqGiXhU1xyQUeO2QDynQuGOhXIq9dpEdNSjwOGj
+Z7WLtBFiLPBqKZLtJvO4zVzSXQaRhYJl/eiFJi+mLxUfdnuG8LdZkk7v3mW
DL1V6cG6AIEuIRlcgJbUsY/pH7crkgnhmJr4xG20hNmJwgLUSaC16JHMDWZc
BwGN5g7M3xDmvoeeoB4KAlB0LIgU6tiSyk7d00YLzaBFjlrR2Zn7kbJZtXx2
pATUP69gbkdHBDoQc6fpbb0UvjaXMH/G8Cff0VcpwZSeF5lZNYpbymwunfcU
1PWocB0MEIOjL9VNBUcVoMDyBFe6JYR6zxHvxM7m4anEa326yZuskqkkiedT
9W+TmuiM9Qg7iuW0fhd9mb33m6TpMzUQhK/F5XXOlT3N5aF+ksp5lCyNz3TR
G2aNbC2c1adyMxrLQW2PTetU+ozhgRDxZFK9URQvuEeMBWmFgnfcKawRHm1k
Bv5ZLxSDmMlvKJLpFdMV83mzzD6pnvkYNJk3bjNZTC9QIkKsjVBJl2EIRPQG
5hmxX6N3+fSMt+zCNzdIl1ldFb33CZBCuhcumNStM9uly3PUHXQpluMQ5Id0
ICaRee4NwPxF1WR0oHMKhkKmTRNmOI4Fw4ZqjoY9NSM4wdw/K7PRlnHGHnVQ
uzAQ4D0ji+eZsFKBDn13KhbNPE3r96s3ZdK6elQ6zLkC1Vxvl9wGrlSD+nXq
q9H8tXuMEp1jlPiaymaQ7Qki2bi0RprWXgmzSGwlO98zd57Pkfq4U2JlvH+i
3r6lIB0lRn4wkI4w0jMHpG0WCswglLRVBccAZay3PdTByX1QN2fcrl5CvTU2
X8F7zxlXf1E7F+5cF9cgJS8CW+K5FOIRTBoWor8HLhW+6hx8T5s5GG7JzFpr
FwqsT9cPTpfn9wKdizPmyw+xSEgeYHJwSjPZ1q+lxRkS7rp2dDvEiZ1WJjau
hh3+ODGg0TqzciOI2Q3RGUuk4uLhRJMeb1uJ9sxu1Re0lAObzlBx+Mwahm7X
qqd0z/tU9NktLqrmx50oF5MJMp7BPrs6yVvCyRKhrmdzTetiAcc6w5HcvGeG
JWsB7QXsS3OURdKLTULQXHCMy3qMz4R5du7B0sDzIfoM0eP5bRPfTCfTjMWG
f6VjG5EoxhpuKuiJrAMaBkzFNlrzCtqShqKB+1HtI11Bx+1iGKhX+Q+Mzf1g
nE3CgQjajpOMdcLXOJ2U2c3ZWS50DQw7ZAS031eKj6a4mpzuKC6B7+OlQTNE
Ptun3gw/526fw2pOknEU5t/onwUCZsxqTlpYEP7rsXjCb3dVB3HCTrSYSSkz
wXV5xfyU6nQBukG91wFcewWq3pZUrGILeb3Q7Vd93Ss73Vp68ZCeP0W3OQmp
uAeV3sNqmqpz0Xwe3rd4M1MMxyjgYnw438O5gsoIwgnI4Q1khkE3YALJYPpw
bnv7+vQ0IkbZ4dFfLX3s8G6uwCpYVr+1cKDDe6Bz9sBNlpWpkAey1wmfbNo4
LmTgevmceXFcpDas5ieP5tUKQVeGDkgdNCZKCXFzhntpUaahB7rffy+6feQ9
i/m4FNILkSpMM3JUB3GPbFh4w3T3KKGVNUoqg/eC1qoEVfbKzSK4cpoIQqL3
7MEDF7K8Vm5Dk7alzgXcJnBrofLcwgjMT17rcGEhECjlrKGiv7ZBuMqQCFem
81p13X4aUp+jlDA0lrtxN6GqX1XGgz51s3uA/TBXD5PE60klINsaHoQjZ9BT
sECxPkE4gCLACZgntl9//fWhDdMdkYagxomYSNTNXwnjsjebkSXnhBjXz5Ji
fBLTPQiVfGI9ytrWUi1w161THB+riwBrZvxNqtzjbBu9lngNb+iQ+0NdBd+q
X8a0uM6wKYkUfaA4Ttl+tFt7WooqFdfOuUzf1a3CNojhg2bC7FqFbvmB27Pq
NbMKgAUvCDCyqcq9y0ABReFSeVLOw54aC9CsLkhtxuilOso0JCMR/FQUGPrI
w7OClH9mz6471Woea2qLGr0A1+9ytkUvqki572ZV7XA17xbs21TajJikCzvg
fxn7DpanrRH5CN2F1+jdPGJpkiOEvo1ZSLvD58+fTwBPPNPSNjoh0u2TP7QC
5lEeWYm9SU9lSRi7VBa6zZtkCv7AVMezstatPdXns/BuyboB1wHo7o0Zf5Pg
fHlaeb49icVmvaxFner6PXSqR1AIdF8XruUGMmxlkiyrJrimI+1Kp7yUAPhT
qYC1/5uNPJ1IcNxbmplDaAyIR2e241qnRRfwPfnUz1WQebSewMBPFgsfsrIM
PKOZgO41/+e9TAsft8n/a1md+MzDv/K4hLtBUssYuvYiNUy6QNO9+UrFgdTS
zL3Vv2IqvWlqcqBmYOAAypcPFlsAirnptGYbSq0CwJG4KIugAKONvrVIZ3rZ
AniQbU9bjkHacfx9CAcd8hx2hHeE7LSSbM8VnSYad+iizD6VzmHdBUyMx4np
i2oYYHAxKewCgo8q+8++Xzx2cb/L+zpWXVGEoSz7GBfIj76ntHlzc6xZJbrL
YAJPoIm/CkvHBoT4viT7tBdJh666iEQlzC3nMhG1b/LdZR5+OAy86018023A
YHxq2Uvke080W1EW3u9j5oejpVhSOWX7LENjQbxRYDaTrEeNem6iLpV9Zq2p
KyYVsn/pQhpr+jDt6FNlq5i0A5yjseMXTm8J46kGYqMgyI/I/0P0Ir4QY/Qf
RwMByE+fPr198eJFARpR14Es9RZFXagZuphVr7EcDe2ACWColG2ekQnjQ6gd
G8f3klH1df4qMA/rMGDvt8tjPpQMC45EqXEYfPiH8G/y9HRflm5EmMZJ1LDN
R2+s1Etw9x5Lk8rcwSju+ZxpeGCTgzI7PSA6qFywLaY0swhwpBDag34Eiw2Z
SRFtGqzpHgClysYiubqDWOdIuuxSw15LOwa8hxTMgDnLyMarYUxGmvixasuy
8OFAkGqugtNE9RdVdY9/vVhHI7QvQZ2K7kYuY50nOvh4n53KrHf0aTPke+F0
QnzC2haGZEMhT5G3wBglGpkMfJ88eTLuejwbKxJNmmPUOvBnSSBCaQpQTs20
2s13khwtuk4n3jSO9GlbYbmEFhDy8bJT+G/Su8KrxzFX8zPeV51QjGfC6jqD
59eVhmug0yrPVkkaSyfaBLxSWwIHcD5DRXoxyVWhytL9Uu7vJI4K1oLnUzwz
F7Zj1smHRLIe/mXgBQO95lExbLKeTSW6CgC2QgCH4G3AHK8GMtczgGeZznhr
jOUv/dIvtUp3TnCfjhKy/ap0cH2I6h0J3vCYrOUYr/qG5fVy3JsdKz2KziPG
SXcHONbMlh2Uz+R2JhWbLXL67YYCMWQKcH3llVemNEYqI5FRLVA7mFHi0UQh
ga5d/JC+HcJ7nich3MtwEm3HJogn7+BxehkeFj9Ub0Thb/TQS8FumaeaCE7k
TekZ7HPHWjIJ20PmCVpfl19bzzLffMD06j0rEmki80hdBhvPKZEBJKx5Tex/
kogxAQiR7IeahvzDKkDYA1dfcfNgp+5wU5EPxa4ODMsfs2JXodpwC0SPE6HH
KsUZr/hoVpvl0Xo/xgnVpdu5k83hVM4Rfj+Fbl7j55ZaYbRGf455VF2P0vxF
15LRAQFsCookcQhdaWoBLFOGsAWdz5494/HAkyFrURt4mz9kMrIKeWoRi6RO
5jdp/UvYZPaq8TyJlhM8U7Idwjs3wysdtlHnJYdChfaOmZbasBxbf0eg4nme
no3/S8uYbNUOlV8o3bk6icfZkYLjdeJZd4MWBd+U9PN2oGLks4im6HIYed7r
Kdambe5Ru68nSI+cMW7fMqaONK7C9IuJrwTohCCPA5lHIDpl6oF6mzF8wDYh
O17x/2vzYL5sreQOwxshazm7moQpMOou5xwVdJx3VOjUpEdtUGvrdEqysFn4
duvkWD6XWRHwQnqEYxk3BYgCvM1iG785hOwYjDfeeGO+J3rZ8WeaM0xTQa6f
qddp6j+6V2EAHaZdNEkLOtbA7lljCKrXy2rq4J8E65h3R86a/Xk4fu14XHxP
3EUzH+Tmw02ZZWeeF78urZCyyPD31vESqXCHXAl3Dkca/kwG24xSOW4YaGme
GHwLzk1NNjXvPvzKTqY6adsGM0zH6yh9iQQM6RGyAfi49IHWVAgQrfFqIHb8
r6hF+AaWLzYimEdej3/z4KGcJMwr2qJDWsUXb12sn5uSxYZSUIp57K6TMQqZ
rotv7u0FaUaEP0bBfYsRMuHbUQPmKA3Yb6TpYYtho+tW4xHFF80B6A4YL6FN
rDPSjTPhTB3yaNrh9pxjJ1cnxIMnUz6fpaQLG2jtHrblfhyvs1jluEmcHieP
Jh9rucLCBQx2TxvNwpSjl0rsMd5dCkt9Yhyk0Z8EmN/asDlzNdwaJjAOeXP+
k7NxOjRhtsAlIYsXupxcZEpPwCrjFwuB6RHIpkmzGYcOeSqCD2ERVhoguilW
ZKQlUAN2wE9pm+g8As+pOkyor6lKKHNT05hm24C3Bb6c1Pj4eJzqcJRKPt2k
/plRoksQncL3jQF5Y8GESGLq4zmASADTuXrJGDsXcSeyMojnIR/DKn/rrbeW
N6cIxomGyAW3hjzAM++Z5sYEMnG9h7xzLxMHWRo83/seBhZCEJ5qM9fOj4aV
CVps+VMVsZgHFArES5AbusPaoZiK81rKcQjnSNzwODP0ujf7buZr0Ph17zHR
H1hRHXJsYbAJDmWaw1dpK187DshQJDUNAtYknHSvRZbFdbEBGj7rZlmGo0Mf
HdaTTV07XPmXkD0EUse/0w6zj6bOoMzlcMGqC4LVIDDLz3xTLDiqEJ1QR0Li
cfWhBp9pr7rrUH+D9lhuQEskdwSLEGPHGMKvbLvV6GlDbOtYiUOI2yF2VyIe
QxFCAuMt68mQPRFTB79S1m5fSfJVTtltVijQPdYeXn2cZvPJQ5S8Im/XDt0l
SwXP/VmB3VniXtyRoOmhPWQ/pmbapdB9vDH7PtzaoHSh6wo7F8jwoxfzeLR+
qiiYFYTFQK4cAPonI+dx6BDL26bgtRARsJoiioyyaFGn0V4D7vxLnXIe3JAZ
FMbZRcFN3beQG5K1aQUvh7H/OBhZCyb5PWGsy3cmcoRHw0sKrYULenO+596g
70wPn/Vf+1KYHtrjkVE1TILoZf3bpx5/19QdiXtdzMmyEopgXHqAZ+7QEIM4
g01JY34DikDnUVlKFm50KPcYXaXA8eXTxopSyGVPj5meNg6RnFoxHwUpA54z
VLymWtBdEPOzhluVhXCs8RMf2qi9JmH3+oWuoLs7WKjFesLFAjE/9gTSllEl
aEESCzxv9p2wmw3agDxjJkcATBMrkEACFyNbtTdzlHXdGvdF8h0iwBBBtK3/
Nv5v4A3nQkNv/jXgXk55q2YB+BvFWAbrHpWiq2bSF1ESjMzryErGyD59b2WD
ulZ7hYN0TMmRUEkUfMYQ8Ojw4jnH0kBsMH3GDnhuOYrxql4NgofMlByzdS11
XZ4XQW9Hbo+9GTnbG/Rdd5jt/JDLY+Spfb2oVlOtoArIHsP1EEpu3/mzseNi
0dVdJXcrog2wzXhdpFsI24i5scY+dxMuJ5OVOJucQEBU/5gN78wPV2FgXmQS
RX7aekYHvrV38uSlyZ5tPFBpL4tJSa0BuCRUAq4h8Y4ds01dmCDdwDUwfrXx
LYhHe8rP5YE4fVvpBTx2+FpwqwsEAWuOBo/quCxTM/n0hYPVUBJQLKJiHIxS
zUMmD/lVxMTw7qh/av/3yiBTZKxDNW1MnGa6QGzcjzYtOrqEFae7XbeHhtPX
u4QfazmciVWP5dNNq+sqnbdNO02V96LU4N64bjrN+Mr1RrQKUctMUqldNBxl
VA2I8yPvnYoVdQlmkSBOiVGi2EpzxzjjKIfmzuJMPkOmmNjFHJo2rA2iaDVE
5lzrTbD1kjhVrA6YTXk6VqzmP0hNtI537yI0oHdZtpteBV6f93n2/odlknWP
mAn5esuygmWJjOg3yinicrRQzFpvoIqqxHOT/Ll19FuWNSmV6LJQfpGHgB0h
w/SMFDGbp6prMBU8KqHQF15sKpbkw9U0ASScTn7+3mRacdpguuxxGpHgidN1
5xAwCsshR052zMxjvxtlsLbGzpBBLruE3vUmM8hgsZk9qQVEJk56loHo8+qs
gAVgVxUWOyNJpxVAaZGZ6doWnKEnsJmN2QgHwEWRZSlHU0Uw59zUA7BgGGrA
NVwEF5WFIByB1wyCVTys9v81tQBNsrv7/1qCEcmqw0C0uu9nKnHqHhh+76/9
3wAbrzmuJeeUPxeByhh0NnddfyDTBWpvMxY1oXK8LwQZJDkyHV2a2B6KMmaU
sI1clid3DOqehoV8ll4f+cPpsz4vikGvK5vLP40vcwRA2gMVgC1gm7oQCQfH
SJHEfLyolDJVz9RjVMobHnsx6ayYXqfj5NWiUUqDrurLCQLiZkErtVad1+j+
xMnZ7jGp9AmkCI3K/GebZG8ZrVRSQW3PxNIKtzwioZvurFWRN0NahwnQU23e
zdIKFfUzAjUCF4BR3AO8Ccq5NtA4XlSSQ08X9ho6KWnXaMxe1tOFOD3XbTyu
5DrAq8Fqsw3eh2gONkvodUhApcN0UFlN92elZunh3IO1nKnL01IrVU3tZJ7t
eadc7QXTirLqB5rn1yhKLC4zMMbejzZx2UuJeqSr5YgdN3mPlQ75qN6WaEhK
RvOHrNLISpQo8b8sPiJVc+sKWaShxr6r9GweCa0QoYFIB4mLJGDLhxYAVZZ9
DJUVqYtaizRhb1RaWYyhmmoFPc+RMBIttzyDILJdCzfhHeD/i41DyjDu3O03
GsDZzTXuuDMsalcZuA0NYBu4TTaYMfIsoFdqae2dBzZsd/fv3MBqApNgj8Yb
r8zFzU3rTOAw3kMIMJiEwohCksuFcikTMjv33AEB7XEv1GLffrFJslUD7IYN
1geSFTUD7FoSakhXQ/uc/bJuPP/hMViGyq8pZcHnDr6xgO7b89du1S8h1x/2
rMg7EDblkeegNwqQThsnSWJ4CUbJz68SWjOEec1w0sEKAYGvlhQFPATglvfA
NKosWEajQB5jdjDb3RrvDN1msptazu7aqvMP6ZVtqVhLePgva8PWV7tVFHAU
XG0oQeWca6psYPtU2G6x3cUAso5Y3cZcykx6B/ifW7k3fE27TGhLfGRsQV4A
G24gdS2uQCqLa76HVCYSyUCikpmbgNowMG2jNgSnQO3aQ2qXgetXu1yt5ibK
YzuP2EIOfLNadHgp19ua2EcHAu7RxPZiEx1r8D6UeaUboIvqRtV/KC+EqZFm
DUd6O9rC42KF68RHXRr7npXSofKD7s+ZQgEHDLotGgT9DJDCGGgm7ZKFx3Ok
MUYb2yOTCoyksXfLBc0qvnJuIpxSBgZiHxU2jD2Zl6tfQddThbtQFG7K5uq8
tsh4q/qzcO7QdA57TgxEBlCvN4lgrjLViU1CWeg67yxlWdIBs4I6qzPPuXmr
4DDVWNLcPN/lLkE5phpIxquA2EA66xKVEvNcq/7mHSjvXVWqrV0+69TcY7k7
b/VaJJaPOxxHxnmkLFxsCPGTkJYfOp79GMceC+Pv4uxCOCtGuknCuUWu47EK
W5NiMYD5q0vT4E8xL1ENIpjLwHjAmGAs8TBg+pJqh6cLQNuSD+CSs0ACCeIV
lGnYMPlG6O3T07uo9QiUgk+kmg3QeAzLK6b7v/IXx0LtklECll4ap2zmOdeH
1hLsK4+qb4RKhbSlSEnO5W/mucPB/Kgu04ig9pvQNWKWPW3t7GKxmwYraAfR
mL5scChwiAryE9Qt9ApYA1CpsWsHbwa7XmwSVroQ7t3OUCzQF1VbDKLtBHHE
UQ+ZD6OG3CB8SLpNzqefbbKGR1DNjPbg3+T/qx6e2Cc5RNgN59ZFT40swV31
Fqc7diAmoInqljVZyxnBRxbFF1VNBTeP3xFdDvFMRbgNjglXSO2kWwKkExRS
ibC9mVXnZvSYnW6w2HKF3oGq+/dFqr40RSUyOjXoce3hws2WPVXLZoZPFnCG
4v2sFmAj1CptWU3YcrdOA6AgDlYY3C6PynDtZBvSzUl2wfPkeouSoOtK0+1d
DzGfQTga9A/8wA+MnxhGd3ZGSLJ53bTh0k+hqT0WLqrXN7JZRCqbwZI1+HZk
7uT0HKu4bIHWs0Q9p4VFdgP/o0pLIm5PUNN/kgb3NHshXpc458+sCsX7uesD
oYuLl2nmh0wD7v1fKm7xnvIGIux1xsl4oaOOBc+dI7E1AME1jUuR5Eh1GwCT
+GAvK0SVDSTBM/hH4mMw4jcG6/ZEMH4RvD50Q3tYpLhKeECjBN1536JeIrMg
dIfxJ6ZT6Qjf8KkcEa3FZv2s6QuWLema7oX8md4wfpZE31NJalnjouyTrMlX
p1ps6MISIPOU2PQYJp7TcZfUf8QGjgYqDgm32cEmJz4E2jvv5IF3nWOP5x5A
lXoH6NlzRO6dDyeN8T14zrjx9GGMRwHbQLtEB8+1o3aZSn9nXO6cc6mlHCeO
L0qKK70z0ca0TuHYSzFasmSlp1dMkC3tneVxZEiRzqAPlxwoxh3H7kgLb1x0
yBOks8qzFfQ4SSXMxmTkOJ6jIyLFVaAzijXuGo3gSXUm6fwrIrhpzdO2a/6x
Y8tEU+GWSqL7gzNYFp63p6Xx8GjuWNfX1UbcO1xbUUgx7iGqKdbqOBE9qgi1
PSs6dftSgWKUD95ngfuITx43HDXxKhsZ1U1RdVWTbO5KJ3ItkfV8k6PQvXEv
Q7EknTupHOrGsRZILo70a5yTdo7VmqQ1KbnYdLpsuWiHc37ZXUXquFmV88fw
jVxXQKcVzlVzhzRcKylIY4H9AaDi4Byje8BhcUDJGLIKw4QRB7yIZuSIYQ0T
gRHNP/qjP7rML45rQAQzg4Bao8gQbMJikalN076F58LiGudRke3NXIVg6gcD
S2i3pzIfW5uexco5F4dQtXw/uCkijN1JsXo+TshZEPqw3BWSkMuKYjwO2Yt1
PBC8RDuIp3MpgFy2IhY0qhvCQO40odRzBDPTJsOmxx6JvQ+9L7P57AVlb8o9
CWe6YlWWG3ojAY3yinEZm4Y6roxYbPx/3ORPzjLJSF/fqQproLQUl8vaS9QO
tlFkdOC1M9imM+Vd5Tvk5Kg4bGvY0WRKo0HgSkZjIBxC8I7hhv0RjYLPSPNl
+pRQekoNm3IOzkdOuySbTZpF4suTSpxQ43QHVzgaPvGrib5oRnuzsRKt6bFA
8v/Kft0zXhj7fydpO7MdspLeWQELuVdMwbGy31QcucYNbFhKpXFslhMGM9IX
TFs2xIbFpobZ8d3f/d2Ls+wMd4b51IO3Zt6Tmm/zHjt+9xLY3jbV8vvRXC18
JEtZ7wfYqiGVeBEpCZDOZMk1c288fai28V4z5/LOriqVc++I7hWg6ZVD9J4q
jq6Vdw57rD11I/3d76x7RvUCmzjawCCiGHFLdgTWNZjkffvGGyZhysAu08M0
GgpMMT6/w/GIbMyd4KFCoF1sOtoo6ibpCTL1olov+Jd1OQG4x1Wm4z6v8JWG
HKBJRZtkO0vUQTyvWjuTHHvNmhHJLmj3FLhZfBmBu+dVWNXxy0CyoFG0GBi0
CvuR93Y68ktOj8HZPbULg0TcLpzGj0pYZSrWvsCxJjWdBdEs4arkro3FehJi
nX3trrhcNksKWBCaf+tOwGY+73z7mIk8e+BWSGec/Ri/SIzkWOZYhvrW6RI+
loM4cbtmRobLlZ/+ru/6rgM4XT5/DihGBYEPfBGgGRUN9zHSFFQiTfEj6Ra2
ap7PQCoS295/Ch8rhiRsMilW6gSJpjIdYU26cGWgNPbFWDbpBZGcN7WHW0nP
KSTs1E9QiH93+XlFZe+1Y6WEqbrSRFkmLHMrMJWlAZWJEBF3z10DV/Yl9H3g
iyXLOsZEsxHwuT5h2iwx0U7yrmC3u9vOlecVZjhtahNS5a0NvTuGZ5ZMw0vP
q7G0bYn8sbVVrMWvt/Tx5fxp/nr3lYVWWiSD/kKmDl1s+IzlqRqPh4bWRjob
AvnzNjmcNoBFEUC44lYgR5rXyATSJZkIYEhYCeXBrB+iHva+QIfjEWHMMcT8
sKl5D/nCPmkfnaD7heT6YtPRb9N1DMh+9YYtW2knS1v2PS6uVd1ZnY1Nhszm
OugFllWhowpgyNyVpGtBIvnk7pziE8zKKmLnMnBrkhS37qrlc4aBfQvj+8PR
EWnjR9Ln1cIH53TFUxlgSr3Yk8erY2iXnOppMfuhFXRiSBWPvdXXHBVZs7Oc
s8ynvnLM1Iq+Mj68KVy73mBWWb0T5ctGJ9CNYCZFBNwi3LEjwQ+sf/6dxHm5
obDEEJQwYEDGAoIRsAhdnWOdKB0Uds3OhEvUZdQDkMsUgmyRKw3x7CNCfswr
xREoz5KKplxj1mGALpswGD2ZNZAhkw2SaQcW5QJG2PWmTYMuLkPimdqxRAXa
mxu5Ky1tZ3qyC2HHJPoSupBJfHrKbZZACgoDalL3gFZssxdl8uj2T1eXaqJR
AVuzy1eQkYJjapi6E3BgBUnv5fRcWP8ugcN2sazF7od/a50Uv0uzCCvCNoC5
tqDHmccdTF/cISNJD1fEJo49t7wYHLJoxLy0lqsW+F17d8CsPX5v+QR530pN
/GIAFd8YjOQAGM8udhniFgAy/j16gc8LQANQNAnENBks6rX41hTPgl/qGGSW
Jk6aO4eIaAUPsZQmKePi7acTQhzuNq9IFLXGyyy5R7Qm2di4fQB6rPzHrNA5
cNLlHSVpZQHi9LbVk+BGxNq/AJSy8fCeTl1Jy9AW0KvIRBNESSxWUnaPy6yn
DEP+qshCdKVazp4e1GNGNTgM7ysm2AFf7ICtnfT8qg644J+O5mC+HzX0/B9G
4eGM1Kt7HcytLHifEbFjyQnwbjN/TBduqK3ocmdWK86R5/WjeqNNFMazAEJR
BtjNQLA6LQoEqEOrS/b26MrxvDofSvTAFAJUHRIodUhsgItQAuySQcj0N043
W78MuWjJJ6qDck63U+7hi51LlZlh56Hmnqpzjj7iUEkwnb6g+CVAI+e3G7fs
eqJWDnsePY6NxZJT5CvrDjlqYrRdYOW+5hhcX1gKcteATKY6RV4A91gR3xSi
a0ZhjVCJvkSXz9cIA0x/wYDpSvxgPgv3wUV9xz9ej4+PM4nzDjiPewViH20L
hxT/X1VsQG3AuEGJU90FmZPWUyuVq75uRleSoL134+Hgd2xYwHmwY4UlghUi
fAQlg22lGpMAYPYtWXiNoES0mIjC99A0cDqIVRQ8JhtcI1yzVCNcnFdzrsED
p3Jfljh6yl627dNG/Uxq7UXvVk+hSRNqiQSEL6j8ca4caAIrK/RVYzmnKjDn
AdqsKOnV0Ym4RHsm2TTdVq6m6bAN4eEiuxrAMbOm56a5rW3TMiAXVQW9+ArX
FKYJS5LTjiV0UxlY2R5P+GdPU7xO4M4tM5pWfOQjH0lysTvR5TNrXsYAQlYO
Cf2ylPmoHYsc3155rIR1w+8BsEwPPoLS8GY97gSVZWTZe1jDke9yHcROPv7x
j4/fHXv+8q6pAQAw1FDAxo6OR8t9D4kCovAXoK4ifzkOgONjAORIEbQ1/Ax6
f1Fh2SeZWqSNtcRoBUx9Wuwhp28mYph5DgNJrIn+OumgIkzxWqUWA2AeZZiy
Taq2PoCSTckccgCpTcb7yYw+RmTcb/LtamdxB1LfIWu5DM4nqwKxRAhtGNUP
B9mzZd8WZQGBY3jcp2ljYlZYTseN+TXd+7FjqwCA0qmgSoDTsmRyez8KXv/W
EKL7AvQzF8I2S2HqqKeUszuv8KGloCtD9fL2YMEOoqczPI97eJ75o9KTwPe4
Hm6XtIMBqwN7/fLWRBTmPKgEWSAQjxa2g7yOdpwiRsvnzglCg3Irmrair2Jg
sfWjrek2wD2pfSKGMt9siTaGN8X+guDTTWVj5da9Mbb9D011wPYDQNGKD+Wm
xZxyBluQxHeQqThvEdmmK9qg3OZCHCfhGudQTnMO5CVDxaKGWRF+cqApyQwj
bKA9hZJmCjLnXH44LfHpIIqaRZ306ajPoOlZJ02zf3xzJm8FKk3OSg1CZKsB
o/hmv/J9pmKiVbA282ppSsHlnbTLxr0bWufY4Xs18csQm2GCJdytNxUy6GyP
jThVIW73OguWdFWwZZAbBkpBHPKVVF4VA5AKepGvsjaBSDZ4uudAjkMXHBxi
TCEIZhtkaulCwvfx+IB2ppwVYEowz7O3/QHsHGb/84sJG4kJ9AlMJyyo/ZJq
DiSo+Rih5+Lgaxyj0NQZxnv2tM1+jZXWZmMhPSEyhIlevodA5VzcPsMEtZL0
tqQwopxm4m01AOykiAXeRA+f5Z+MR62INoNJp4rJ9vhp2Fg3G9jqE2vxVB1h
x2B9XisJYG2JuorW+4K5JmjtQHuICjpAe7oD2k6Dq0qboJ2Ynezq49r33JJ7
QuoNM9O3z1OTzssoCy4MWUK3GFmADlACZPvGG7nhPY5j40cBwPiFoRuNl5nE
JYAigVsdtwHn5hyAHtHLZ2yj9slU0RCgIApx63t2YzZMpsaAvAWFcrRr4vBa
MgQLGWTt4DPOZ545z6X645HftPCce+U93RisDKxFtibuFVnLVsPORfYW8laG
8QJElij2qsZQGsXpGi5XZWtKz0ZIFyQdl5VS1XxazUlVHerXWinBczBJ+Kej
6qIkay92OJOEtGqeM+Ayk6WVDG9gdebTt5zy2AKtZ+50/v+GkqI95VBVVbWX
nQo0oWrikGLEUQSQDzyCLt4DQYo/bHuQx8yAXI7lOSorYhiRqbMclwFqKujE
zuI1Kq47tl5b5KGyzn7Eco1JUQoa+RzZZoAge5HMc0ijbjDAuiJj/6CR85F2
YNCK38LemkZddIJ4Y96o5WZmxLJs0cPZb0jBwk+il4jnDKRJctoW+wzCfO8O
Gs2MCtHYN/pjstiJxO5p7fnYTV4GCd1kGJ+upqv4yQhkdjlVWufjTRqKmud9
1r3VZNVaIuD3vvu4dsvDJFuCmbBJK16dRhlBis/1iSIYgR5wQhfFFOd9hBq7
Oe4jdmQEHfDEPsA3ymvLzoAor3/oh35oTO04YigonBN4SrOtgQxsbB+fDTiX
YJ7/0qn0CSdrYoGaXkzOBYxtvcz7subKYWq2LtBEgeR8OljNYcAKlIaPR77D
MUDWqgPGBc2GJYfSiQsEg8TGpmDCdgvJX2BZ7h6ULTApCpfjfrM+RAopm/XF
HdaXBKDOK/f3PCRUgiU3ZIk6TyEHi1bmDt1Xo1BeC2+VThL+95vem23fBKID
tOHz1HOsVDAz0eC1CrJ23gffs9EQq5sNGGxZposIBFNgFFHHZpvECGnjvn9u
amiOiENsIPHLORCFfBf8Il04F7jWeudcbI6yCCWr88SZPKNgCHHGBsz7cukq
GnnNIxuuTVN0SA38RrDrPfMr7Nea672ZCF8H8i4bLgM9ADijY3BL6B3sIDZd
YJ8mdsceTRoeSxytsac+9V6+OqJbSWLY02ua1m6ynaewJzSt5x39ZoNTOyj5
S2aVjvdObtbmhgx5qSGyc2Wek5/C9266UzR6RxqeKj5vpWzgNnqSeLqmThZE
T7sd/GxT7X38iPAv27AhIArYkYEYcMRxjz4JpDRggBEiRL3LzDd2TUPbQBNI
I4KZS2AIPE1i0c3NseYmm3Vvxr19p8COiX02ONFFymu22MDd+4srDKz11hBC
nu9g6ei1FeJ2LfOesi583id4ROPADaEhiKWDmCSZWd0xi8CLwvDD2XJRU2Rq
byGmhGv+TWQew7f0EiiuGW66J+u+8xEezrlLS6MlSASGIXIq1DQhFxiMUNB1
1VBZAmtBoW38otMk5d7XmxZ+93B0ZGUW31hNN8lAUjiZesx0/M163OX3bkgd
dYOymhlppAKzgkMJp5FOInRGPmO2EJA93CdimW0+Y+Pm++iioBOkSqNkoSNo
Bqly3IpwN2fbSpsvDYo5VqtHenhfKyh72N/zWJxgRNT27pzDBr928NaJarDW
wDurFHSyinFD0DOJ8ZKuuIfndLvfk5kZhu7pLC7PHGxN4lVkXeqCcx7olsN4
HH8Vndlns9MP01psapOZcKSMqzykEH22SM9Doqw1Cv2uiiHDfpC9Rns8Hibd
wHF+1KpeD+eefLZrGgcFN+mOiuMYl+OaCCKaL60+lTLs2yWbtHBGHNUSlRH1
ETQiP9mG2cuIBCFDkX/IUbZtt3LUS97j+3wOMpGbbtl6YpB32rQgG8vHAkRb
5EoKaLYxaC2n0fji8u4p6qTDkArDqCgg4ycQsUYsEZd2lAZwLAINKh4RrTKT
6xfj0rgNwMgWro2Dq1tKospGP6QnqPWyiHTJSV01sHk6b+GCMLyb6YhXLtau
vVZKVLC47ACIwrokQhqQoqP7qXqM2tQLjFxMUK3VAvtd73rXuPjxbJhT0IDC
bAuJYn5Wndj9iUa2eOTD2evxkCcVxPz8IZtG2vo3/9bzCnk+JTHgU1+VJQ9p
CiCJ7lj7hG7ITKAbsqljByHuBtii0uTrp+QDb2AP6YkU4bXZv92UEE88R1Jq
cdtliM+l/0HKIbkABPiUeRX8+tp0PFsBA0J77xmPtM4aTPMZ2MdpymPmWVXn
I6W8KUusRwCIFMTXwzpFPiHTNF/1YmhebumoZlKZOZ/px47ioc5NWS6cUymJ
zZquFPm2cwe5ULbwEpsTlp2Uc6KElrkX8yXQ8qOE2jppwY/VjizpwY8wK48d
mr6SgNOPBGr7kQDyOjF9OU/bm737nIuYgJ3XswLQNQgGznI1tdXUYp9U32pG
lRGGnAEtClAiATHE0QyRfA2BB9C7vDInD6EJfvXAuwVrjzDxgAnpZJfklE4H
UJo5STYatcOQOAVzUkuAL5PlzUmKBs2PJ2bBK7s9xSacD3zyXbCGDEeeg/Vs
STK+O6TzWK7W44FPNBcyCzCx8cqwQ8OVu2984U5tg6u5J483j2fyvrKEGyi3
MtI4UDdfGu+vqe8I18tyiMtScZZrQIdHX0tAL6SS0fsE1maj6XFuienpYhoN
Fa4m1TdwhKSe58IxzzP57VdeLWv9XshZED7xORGJ1A3ZG+8BZdC5gs51iuu1
eC2QpsGB8U0F0c4qygCgKuGJw62IQEMNRBACSaDJc1tbIhTBJTgz46wLN41b
ndrstoAMwWWcUnYAAKTRoW/H7E92ZoOEMqz2hoccS+BRDhW+D8i4Lq6VtaLS
YG4JzwEy4Ae0LDciV4RsMGYIKLBLS0bdi3RaksTZv7x210mFSHoGmln0PSiY
EA2fUYYp1UabK7xZN8JznCNJ3Je1w2+8goL7svoidKglFMcxA4wTmUOY2n2U
Jkw8ZruwaHx3OV/aT4E/ngPz6KWOZD3O8/M7/I33DxwQVODHura8vkMI6ill
5+ZfcFX/WAK3z4pWK2kM5xwgMu1zhA+IfR3RCRbteWT/I7jhwyB+o7q7Wt7D
OcCj5gfCC6yBH8pDLbNkUzVPw1ChzZ8b09RhZh+tlc8Jd0QU5r0xD+PUEpyw
tIAlr22Bg+g2G8r0NnRn4lLIRHw+SUo1caNLbYbC5o5chWATb1XyaFJjd4Ls
nYSbEo8zP3oCLvqoXJWI9K8HMsfhVyEwZ2+Bhs3LjSqo2MoNejkkYsFqYnSZ
7cvXlJM287BJGC3txOh4feCNcVj2D5uHK24b7g+zP9NaZ4tuTeODY8npY0H2
kGJXsY5WMJXd5c0pXm0UqUeLtcBxbGOYNqDRokcQSjaO1Q6qj0g/7QQQ1o3b
gbZopvF0IsPCfln/AKtmhv0CTWw3MSjK48mEe33TP7ETbnIswlYqb3QQLhtz
hcWjRxLBDlL5DB8BSddDizwgKYdORYQfX7llagiwHoSL6Eg1RDv2IMnZzXGz
4QTc4XKLUd1Ey1Xvp1J7fTPhrwKHv5bmbsJyIrIZM2U4J0VfbqZnFTIl3Zoq
pN2Z7fvVMclrRGZ0sbup9zwe9AGqLpDH+yGG1+pdE6/O79mLaXYJies4zfMg
ULnEvMwUxhfzfRcbYOWkcxEEty27PWsXR5EhbXDKoyAAAOa+5evIc7ucuDDC
DT4NqAS9ORriWv4a0oKDUvKiCqT16WRLwWjI9bgYT3i0mpP939o2YGkiEvs3
TUUPqJBjMIAv8QPsOQLa3/M93zM+I9Hx2cxkAR/sIWAMbGgbSngne7puId1t
2wDyZcVD9mWapYYu255qx3Mfqkr3mHt3RIn0NAHLy/ux+uhOsLDFYUpva3gO
9e5mzrttObquCu5ao6S5xx9it5/9F0M5ALk0DKWfXXS1W0tDANv3v8f/p/6e
5xlDME8+f5BfOFbDsdR7owPOo5K53UpjBWJDgle5etK9fgCgy2tztwQoAMND
UEQNPKosImoN+Pi51rU7d5YOZxL8G0WOxqOMJpTZg1/ZqPld+9ta8aT7iN2c
5YSfFWpJojbs4kloekgK0sabHvVca5bS3Mn9jnhKZ4LulM+J3WMyUfd8r061
04j3lz2F6q/ftQM0QfhUiRZnmvPqIxRI72WY1UJ4LSMj3OXhAhe4qHqhBB7L
zk6JtlZzpPUsAYXuHRkZ5hX/r9V/HHE8YTpOTidcRHUC83DWca/qHAn6EtvZ
Ey9+6oOlTjd15fbx48fzcLwqGBHMt54e5h1csH8iStnLjdjIl2C2uX5yvm/u
GRi1JFkcdjYImdPBpD0BkK9oDwd+YXmlqE85H78p1wqqB++hruAvx1GGSzIZ
nSegprMt6J2luk238NqrZXuy4XQUFyX5WhGRygobo73rZrkpq52OJXPRjg2Z
+uTXYsLpbVyTqDpSPXasTBFLuip5u88RymU3b2lco/EdXZ9nrWDtcmn8zvj/
mMqigiqMorO2ebb7+f9ivhaETUKuicOG2xLCYnFu4UjTNzYf8cdzzgYeb25u
5hrCmwLxAxsjWzgY7BspGNUgliEpYzZRwHY14dkpQICW+/QkXIUp581pLmXj
i2qSgu8I24Zfxc8j/5J5wLzHasENi42DLxKPmCY3ph+Dn2zKTIbzY8+eRri8
TBfcBU/XdFz7RSN21YsiQLsNSN+TZLNGMXoUQTRapC5F186e26vMH1jETsL7
sSe8R/UGML2sVKMewpTndzq4xlVKcNeXnw1gppvePX96yZsfP53sYYSv+qWm
hrjm/61Z4ng1/j/v0NM/MC6x91MUmwnbVALC9nry5El9hpxFKPKTM2n6Yx/7
2LgwnJbyVc+s3gHE8TZbpGbL5OWfDX7O7VDgGJOaF+a8ZIBcgtLp9cmYBy5R
S/FFIcoI1H//93//zDom/4kMZBIn8G3h20EuMM3qUPoXHLfpyQVs1zXWPLpj
Gb/ImMaYq+lrm55gfdQRznhe5oXTsmMJl5m2nvcKLhE6U3dq699aUOfY0JBi
DzggW1oH1cez6c/CRiMdmQA96ocdiC0Msltrb59m0Cg89lGZ3BpTVYVOE6Lm
cDRK3eWwy+uIZRih8HviQUv6hHQRzWcpd8FTmDnTwzQwPJ+NAdErldZTyN9H
5dd69OjR/Aj8Ix3HuMzP+H0kJWvvox/96IFE2OUDM6WBVGD0TbxLKHNIQHtR
uQnLacomLEW13iS+gzBFsOKxYhYYTdMhWNZq8dy6kGAouCQe+YyRNUJhFCzl
XyDseoMwtX6/kiM7xnoTa7tKdUufW4IyznixwWkToS/Z7S8qhTsSF4tx68G0
ncAg/mSin6QnkGyMwGddMspEQ6l1YdTZAKh3Yb0yYmL2277t28asD9Qe5tOH
E7i2yW5S8z7y6vCJtWT1TVnQ8d7EoTUBalBeruig9X+JnAW9x3JuAdjxF/h9
Up4EJgXFkdd8G7UB9PIZz4Eop+C46Y8Km4ozCgcW6RiYcSFjz1xenQmLDppe
QhZ0YzGcY2MFM/jo3gN+ntWAqJ9XjL8rGjg2D1hqQREWE15cqac5x8848lQt
Tvksg8DhVTnGuo7FLkijKUJ4gjPAlkG2LVIzMmyuwk6aHlIXELR7cyPnMt5b
d7E65P2DCWMga7iDcBt+WFMJcfCRx+Aj+gvbDZoWC514FnD/xCc+MX5mbEIh
Va5n4BV8M0XsQchdWa3lxT1G4idPrzfkuPu69jOR1ED0abctpPjtGXKNItpB
iLG66GNV/vapvqMjXJVAAgpMp9KF51MMh92uD1Q3A4epoymU+DxtqkMFCcZ1
d2Nq2nsI9dN8mR61pnLgPXhSIYnUuMvdqy7MZ57S5Va/eNr/4tkHnYpSRiuW
8AQfKwCXIeBDIHi8O0XqWBBCdu9QPMP6YiNsm4Q9nvVXlYwA5RoieTx7MN/E
cWmiK9FVXHX2BBl61RIZDK9WR1Hzuogpk+RAFYxJsfhweS2hIaVd5I9Rr4BA
Rp4gfL/92799RWNYZyXxzYaoQWWhseqI1bU1osCPddyz/dqGvevT95QIT8xO
viisx0fl+xLGlr0z9GY4MUc59DHyHyr9wqQBxZYBMaacz0CJyq545zPeSyds
2XnAB6Sp+OoP5rXqiPoHzz0X3+G7Ks18R6cGduFQng8ZlvOU+iXSDoyPjxWS
y9DbIfFrJC4M0XN0JZ3OEY8bUOKCekrDVgkrEX2PkjC14/lMkTttjwcFVfH6
cFqA+B7MiNF5iw1gFkC2Fx0XO+zC5SvKTjWEwmssRi1JcE8cAusRXINpHL/k
OyqBCeSmFJ4KB8YABDEoHSgbWpsoGRgFRNgI+LJ3dm5zHiVmlw/KQIOl+YbC
PpxE1PKt6rRNuzBcYaeuglShZ6+ZE9OZTRo265iGbvzVVne5MXG7CK8Mrbmf
zwkd0lzxnKp0bd4pR2c07Bhowt92U1p1F8TYdx2X5Te+LD+E/glDcujjU01f
z097zPjlwnetrSUcMPx/UYDNDAhBPNOFrkDrA5494JgH00QDjKZUyUhmf1Yc
ZKY98zqixpPKf+D3AICXpxPK2Kpm+ZmAbf22LhSgCnQV0T/+4z8+zvapT31q
eZuiukQ0qT9yxKJMyAiDOFZfJp4BbBHN6MvoyZaVYscB1zO176l6ZFnNG8kI
56L1ohJbu/Rd7H7Z6ouXriIrkata5PpOafE+DR9NawJ0AG/fOsjH1BLXZvDN
DZapf9KdahMtohHUKGRFksJ8onHgb83Ag6hFuI7Pjhm5UOMtR/IhZOvZzbwR
oiFdL0qb7bHsub5CVipM82/ezPRqn/E4oHhdCSxWc/YOl1l5P85GodRpfs5x
/kG4MyNsA9Kew8QG4SxIcYpkhcH4DhlgjydgzaK18yhgJYhGso89xpoGPMZg
wHRoxTK9AVJkK7oCjhXkpIwmyMZO5I+wu9uj5Vh2WoJ1PVf1HjeEvtVf63Jf
Y9djcBsAp4yNuN0x+7kJzbNQXXsqf5gIaRlg/t1stLXupzChIZ+Hb/hUb7vV
s9sGoM57uT60l6ARKXoK/9vMgeAUp4K2Wm04QcKvp9JNVpi5Yf29ud3PDx5w
cQ+4ygcTrePwgJIgjBS/yV8Gv85lceGIMNOtIN9dI+kFOvS12HuDQvrnfu7n
gjd1rQ6DxIaPE7PHeSbZIooV8HnxUwBf1QYLasy0Tlr4qboiI/EjoKpiS2Vz
hjU5Hy0saXS1AY7xWScI2XAsphEl8UwFsK424QIRuN/cL3h2bOj2XLMq/gzC
c+ndTM+5L3dselSivm5P5RSFUaET7GLA0xk85m2v7/bksLPzLPVCvWrHSpQN
rfFyI3Ub9DJHx1yEsADXktOc2fcMlYUWikwfD5NqeUBhTfgZ/4r8ASJXa5Hf
Buf+z//8z6+TNfdi+tvk522k/Wv2wLTDRL4dPS2O1fYnKfonN//y2jyZZNEg
FaWAaAjbN5IPjRIph/tUrVBNEGknvbikXuVnSoPHHP5Wliks6u27pntxKGyL
1GaE+CpJQPdCMJht+YnLihgI1ZZYs2Tw9mW0uGtlNJw7ah83GuvAbQDzspc1
lWJqhcAxzK/xdE1N1A0/3Ehzy8SXdPYz6ZIKQTZVRUB0URt9t+nnVn1OJFAH
qJzb5VAwm1IuYqHXRXwrKSg44xHXbfKILofISuHpZbHhgjlxl7T7yyGQB8RO
0ylsC+HsDjsOmEGybX/Y+IDYxTs3XS35DDBKPYKpgwmPY+ljH/vYDOeRtK9J
ggm+7x92n7to5xpNmFyUNJN6OV+fC4XXc7f048ZimUlb84AdZ+J5K557NhLv
4R6Cldt1T65XBHpbFsFLqKcDltuV0Cv4zjXNh1ak3JMlzq3SLiZ2ux8xVVXr
Udj40/8TKdbjK/o1m+kU2MO4manfJVpNanwwPwtcxlbYFcBDsn3u8BlH3xRp
iBz7Ci3bnyRCIx573fsCT0zaLtBH+q6uBNJsLWWPYvv60M49+lw+nE1bs2/x
PAY5imi27M5m68HIhmP6WHGmxOt03Y/r0u1ppzwJ7YBxBkeWPd1M4Kk1Betu
/FmOsrFqmn1zeW8J+7aNwvMqebe6Um6le0qUC677Nq+tDMYIWda69CYnGeWt
TO87dJD3duGRsvSerrOdFbrTS+QeE4uyhbwv78QzvvB9779933uGVfb5COV3
fx5+//F8vsdnPOfdoTq+9a4lM6KOJTmzuULokZdFfm9jsS176MDt0KMkiwSx
tjNxH6+2UNfz7d4SEOQqQLNF4Li9ITrX81P7BS42AbRbMf9AMSeRlB/rnTIV
HEg4hwieGETBoMHC/uhHPzrOPN4ZRpPRY0vvQTYwzm59m4yTM6t+61J5J4Ol
mSqx9QYv/X1cYCVmL8uIucf2XuwLuYfvWeqf7jSXCIanoCIHjEnVU3yT8ppm
+7MlOCevOxflhsCidbYMjqphxfdul218NoE7S8Q9ZlZwk1L2sFZdz2DbqOO/
etz+l41h+eLJGPAhUkTG8/ken33JF33xfPfB7Yc+8MFZU+bun/gNRfTxhod8
30v6JRJ3nAy28VcKwzabFMC2/gW07vQ28mudtVfAepqdXG+mBOYfEpfvWcKK
tMXpiVo6LJ8DrqABCX2YQFS6NXybRAcj9+J6+juBN8eYALCD73KI6nr7hCVJ
BNLncYWtTa42IVsN957E2LBpln0fdT55217f3VCH2o2H8/b+rcIL2EkNhBNM
Jox8vkSM+FntNvyhvZvwYGxUCDMGxjV4j/HIz5bstMbTR4V1TYDeTLZnTeRj
o7K6LJz/ul87RMBXjUH78rHd/Jovv/2qr2BtfvVXji1sPH3A+w/4YDYs7Fpq
CtO0oi+r/UIHaXKKh8U0Rr4prONV/K9uEN0j+f9U3U8bKJepGkRz9rV6v4PP
y5eglFWBKYc7H/8m/syJUnB4WSkoPipwA6Ug+br4HkE0s4o3vodJo0XYDJGa
1Tc30yhQuS56u64Kd/usKvqXc81gkTc1j1QFqfjw6Wb733N723kVLAhMwMYt
cFMrftuxgPDgko2Ew8xMB2+VIXFvAcSpPQWQD/PpOsciOTbGB+OwwwT747kT
+aEQN3TBlXSlK+G/JH0wPQOOZ8z/liHOf/PXjwH+Wjpb/ubf9HW8nH9f/3UD
7V8zBvY3fs2D26/5DcE/BDJBX2zv+ISelVZg26WOUpMI7YXXTSvNqmhECVJv
No2wM+Gw7/8i9Tj3/ClAJybH34Ab/7+o3X+PUfz0uDfBKGmvPX2CGXCXZ2aY
IXSAw2xS9mgza4pSxrWBtPddPBZKx3cbj+OmK6Tq4c6GO5yLCOZbpRIC4Ye9
7LVSt19CfJ/52W+VIGXC7eYH3rgjMEq0geAZ3jUCadA28Bp+tp7BQzCNkTOg
BqbBdt9o3IhY1rHMv/d7v3fMDeuASIbf4/MMxo15HOM60Oem5kxk8+Fgr74q
b8xsQP8tQ75/0zfffvM3/Pbbb/pt38Dj4fZbfvs3jnP51vgb2/83/tbfNoD7
tIBrEYpdQhSz9wH37BwI0dp6WEeryPFeM7nGcQOqA8SaX5peu77WWlwHnhzi
2QDtOvsDv5jYJffxPuySeMIoErpkBl3nDA1SiNeMGhgNoYE+ez2PBeNuhaoA
redimCizE9QAbVfVejO9VkTdVbrDvsLlTCQanUN6N5z998bsdHIV/Rs24OXe
QASIAUXwhoFQMvVoLnogODHukXiaHGLSKfaYWiTnfN/3fd/4PfJyzEPjEVSD
cI7jO5wfH4xJPpyLlTE+G+f4wR/8wSH27JzO6qHEg3NyfawG0b3Pa2Pe/qf/
8Ttuv+P3fPT29/wupP3v/si3Diz9rt855u13/M7bbx2w5u8j3/wtA7u/4xu/
Ke2vcK3fVDMRRW465uf7rT1qB2xK2vEjZ10gpWr4qsbK6j4sLa/0GYTHoNJz
X9znNig3AbDlPc6PxMddQAUEflWGj+EAomxLoWmxu18UIhSPQHN8PpsxNNan
e7qGR0L2eHFqbZeUh6nALodkARBhyXx2SrxuaZr5/22b4sId1us0mi55tUUe
yObMhAMsgCFYiaMN03P8xic/+cnlzRkEhhHMLkoEgs0o4zvkMsAFijcacxWQ
AjLEMMDjODlFKekjyExdB/lBPBLTG4/rTBQ6zZIAuSQyhWLcPGvn6Vw7kudy
WvD+5/7Mn739M3/qB2//5Cf+xO0n/vj33X7/H/1jt3/8j3z89uPf+4du//Af
+IO3f/D3/f7b3/ed3zVw+p3f8XuncqB8jebMs0veeCuKpE93LKtQWpGv6z3W
1VrWFJ5UffrduTX+DrPP72m+TKxqbI2vzAbVs5c6r1/fmGWsChYOsVOcrswN
Y8oCtZdSY8KvbPxdwdXZy3/V/VP3OaEOkbU9W8agYl71nL7KIRF3k2h0PDk1
cuakS1uShh/wPt2AsfeMYJNkZ2AnYF9GMgFGZhaw/fAP//A4ERh42wQi0TV7
JJiV0KWfktTkGs4FEHnNZyCIQcQzKHPj2LWWYG48TjvWLi+zrnS8feDV8uq0
Hiyc6s8topoJQT/xj29/4h/8w9u//2M/fvupH/m7tz/yt/727d/6G3/z9m/+
9U/efvKH/+rtX/uhv3L7V/7SX779i3/+LzwAuhOQbvLR2GZiUVSOS1IVqB6N
RDKPe1X1OEEZG31WYyUcn004atB3A59HzSce+Zz3M0Ywv5cRq3EuFIlXivOZ
ZWALPaL4rGImhIFGsiCNQII0sDiEPvjBD15VIPuwy2P2L4jipfSKaNPVnWYz
khp32brez7q8Y7lofRqeFl47NJWTbOooItwNCjWbMHINlXNAblzkANMwcoCi
clHh5EbMsW1jn1Achuf4/SElx20BTz7ne+Q7Ypzi+gNOA16HySp6nIi0s8dP
//RPr0QCx53Jfmy1c7RVID7+sLi0Z9+Y//0/3f7sp3/m9mf+/X+4/ff/5t/e
/tt/+a9u//VPjVP9s5+6/Rc/Cfj/+T/5yQe3P/H3/sGD20/9nR/ZYDKa2QZ/
hFt4VKAiPo/FC5Xu/yjsP1YLsUTocRZSv7/sJG0ma1ZBoju2CFVSsoNnYU0h
k+/JF2BdLOvDxpFcOXF8WajYUJgT9ieMIi0WoGTS5oyrRHKFyWpmBvWimn16
7Jq8dxbH5F8kIp3hbYg8nKHhfdLhGR4pPeanHYvLmYP/3ERZU2mvhIJXFGuU
OBQ8xCkYRDyyOsEZOPW5G6mZ4ewtKK6aURE4wU3w9jKNMKvAMuMpWx77uA0I
5XNUlMo2Zp6lXI0kU9jy9uyKB1WPS979f//P/3v7f//cf7v9b//nf739r//5
v9z+l5/9T7f/+X/92dv/42f+t9uf/V8G4v/Df7z99L/7n2//zb/4l2OD/6f/
6CcGdh/8/xbuHyo=\
\>"], "Graphics",
Evaluatable->False,
ImageSize->{187, 241},
ImageMargins->{{0, 0}, {0, 0}},
ImageRegion->{{0, 1}, {0, 1}}],
Cell["\<\
John Wilder Tukey was born in New Bedford, Massachusetts, on June 16, 1915. \
He earned bachelor's and master's degrees in chemistry at Brown University in \
1936 and 1937, respectively. He then went to Princeton, where, in 1938 he was \
a Jacobus Fellow, and upon receiving his doctorate in mathematics from \
Princeton in 1939, he was appointed Henry B. Fine Instructor in Mathematics. \
A decade later, at age 35, he was became a full professorship. He directed \
Princeton's Statistical Techniques Research Group from its founding in 1956. \
At the same time, he was a Member of Technical Staff at AT&T Bell \
Laboratories in 1945, advancing to Assistant Director of Research, \
Communications Principles in 1958 and, in 1961, to Associate Executive \
Director-Research Information Sciences, which position he held until his \
retirement in 1985.\
\>", "Text"],
Cell["\<\
John Tukey has attracted international attention for his studies in \
mathematical and theoretical statistics and their applications to a wide \
variety of scientific and engineering disciplines. He has led the way in the \
now-burgeoning fields of Exploratory Data Analysis and Robust Estimation, and \
his contributions to the Spectrum Analysis of Time Series and other aspects \
of Digital Signal Processing have been widely used in engineering and \
science. He has been credited with coining the word \"bit\", a contraction \
of \"binary digit\", which refers to a unit of information, often as \
processed by a computer.\
\>", "Text"],
Cell[TextData[{
"In addition to strong continuing interests in a wide variety of areas of \
statistical philosophy, techniques and application, Tukey has been active in \
improving the access of the scientist to the scientific literature, \
particularly through the development of citation and permutation indices to \
the literature of statistics and probability",
StyleBox[". In another area collaboration with a fellow mathematician \
resulted in the formation of the Cooley-Tukey Fast Fourier Transform (FFT) \
algorithm, a mathematical technique that greatly simplifies computation for \
Fourier series and integrals. ",
FontWeight->"Bold",
FontColor->RGBColor[0, 0, 1]],
" Other interests range through applications to such fields asbehavioral \
sciences, geophysics and pharmaceutical research."
}], "Text"],
Cell["\<\
In 1965, Tukey was named the first recipient of the Samuel S. Wilks Award of \
the American Statistical Association. He received the National Medal of \
Science in 1973 \"for his studies in mathematical and theoretical statistics\
\[Ellipsis]and for his outstanding contributions to the applications of \
statistics to the physical, social, and engineering sciences\". Tukey \
received the Shewhart Medal of the American Society for Quality Control in \
1977; the Institute of Electronic and Electrical \
Engineers\[CloseCurlyQuote]1982 Medal of Honor , for the Cooley-Tukey Fast \
Fourier Transform (FFT) Algorithm; and the American Society for Quality \
Control\[CloseCurlyQuote]s Deming Medal in 1983. In 1989 he was elected a \
Foreign Member of The Royal Society (London) . Princeton University honored \
him in 1984 with the James Madison Medal , given annually to an alumnus of \
the Graduate School who has had a distinguished career, who has advanced the \
cause of graduate education, or who has achieved a record of outstanding \
public service. In 1989 he received the Monie A. Ferst Award of Sigma Xi, and \
in 1990 the Educational Testing Service Award for Distinguished Service to \
Measurement.\
\>", "Text"],
Cell["\<\
Tukey has taught on both the undergraduate and graduate levels and is widely \
sought as a seminar leader and lecturer. He holds honorary degrees from Case \
Institute of Technology, the University of Chicago and Brown, Temple and Yale \
Universities.\
\>", "Text"],
Cell["\<\
President of the Institute for Mathematical Statistics in 1960,he has also \
served as Vice President of the American Statistical Association and as \
Chairman of both its Biometrics Section and its Section on Physical and \
Engineering Sciences.He has been a Member of the Council of the Biometric \
Society,and served on the NationalResearch Council for more than a decade.He \
is a member of the National Academy of Sciences,and is a member of the \
American Philosophical Society (vice president,1975-77) and the American \
Academy of Arts and Sciences,Honorary Fellow of the Royal Statistical Society \
(London),and a Foreign Member of The Royal Society (London).Among his other \
affiliations are the International Statistical Institute,the American \
Association for the Advancement of Science (vice president,Section A,1972 and \
Section U,1974) and Sigma Xi.\
\>", "Text"],
Cell[TextData[{
"(",
StyleBox["From the Bell Labs Memorial site:",
FontSlant->"Italic"],
" ",
StyleBox[".)",
FontFamily->"Courier"]
}], "Text"]
}, Closed]]
}, Closed]],
Cell[CellGroupData[{
Cell[TextData[{
"Euler's Identity for ",
Cell[BoxData[
FormBox[
SuperscriptBox["e", "I\[Theta]"], TraditionalForm]]]
}], "Section"],
Cell[BoxData[
RowBox[{"ExpToTrig", "[",
RowBox[{"Exp", "[",
RowBox[{"I", " ", "\[Theta]"}], "]"}], "]"}]], "Input",
CellLabel->"In[1]:="],
Cell[BoxData[
RowBox[{"TrigToExp", "[",
RowBox[{"Cos", "[", "\[Theta]", "]"}], "]"}]], "Input",
CellLabel->"In[2]:="],
Cell[BoxData[
RowBox[{"TrigToExp", "[",
RowBox[{"Sin", "[", "\[Theta]", "]"}], "]"}]], "Input",
CellLabel->"In[3]:="],
Cell[BoxData[
RowBox[{"Plot", "[",
RowBox[{
RowBox[{"{",
RowBox[{
RowBox[{"Re", "[",
SuperscriptBox["\[ExponentialE]",
RowBox[{"\[ImaginaryI]", " ", "\[Theta]"}]], "]"}], ",",
RowBox[{"Im", "[",
SuperscriptBox["\[ExponentialE]",
RowBox[{"\[ImaginaryI]", " ", "\[Theta]"}]], "]"}]}], "}"}], ",",
RowBox[{"{",
RowBox[{"\[Theta]", ",", "0", ",",
RowBox[{"2", " ", "\[Pi]"}]}], "}"}], ",",
RowBox[{"PlotStyle", "\[Rule]",
RowBox[{"{",
RowBox[{
RowBox[{"RGBColor", "[",
RowBox[{"0", ",", "0", ",", "1"}], "]"}], ",",
RowBox[{"RGBColor", "[",
RowBox[{"1", ",", "0", ",", "0"}], "]"}]}], "}"}]}]}], "]"}]], "Input",\
CellLabel->"In[4]:="]
}, Closed]],
Cell[CellGroupData[{
Cell["Defining the Discrete Fourier Transform", "Section"],
Cell[TextData[{
StyleBox["Mathematica",
FontSlant->"Italic"],
" has a powerful command the discrete Fourier transform (DFT) that can be \
used for digital signal processing. "
}], "Text"],
Cell[BoxData[
RowBox[{"??", "Fourier"}]], "Input",
CellLabel->"In[5]:="],
Cell[BoxData[
RowBox[{"??", "InverseFourier"}]], "Input",
CellLabel->"In[6]:="],
Cell[CellGroupData[{
Cell["Example (64 Samples)", "Subsection"],
Cell[BoxData[
RowBox[{"nSize", " ", "=", " ",
RowBox[{"2", "^", "6"}]}]], "Input",
CellLabel->"In[7]:="],
Cell[BoxData[{
RowBox[{
RowBox[{"x", "=",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"N", "[",
RowBox[{"Sin", "[",
FractionBox[
RowBox[{"2", " ", "\[Pi]", " ",
RowBox[{"(",
RowBox[{"i", "-", "1"}], ")"}], " ", "2"}], "nSize"], "]"}], "]"}],
",",
RowBox[{"{",
RowBox[{"i", ",", "1", ",", "nSize"}], "}"}]}], "]"}]}], ";"}], "\n",
RowBox[{"ListPlot", "[", "x", "]"}]}], "Input",
CellLabel->"In[8]:="],
Cell[BoxData[
RowBox[{
RowBox[{
RowBox[{"h", "[", "n_", "]"}], " ", ":=", " ",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"Exp", "[",
RowBox[{"2", " ", "\[Pi]", " ", "I", " ",
RowBox[{"(",
RowBox[{"i", " ", "-", " ", "1"}], ")"}],
RowBox[{"n", "/", "nSize"}]}], "]"}], ",", " ",
RowBox[{"{",
RowBox[{"i", ",", " ", "1", ",", " ", "nSize"}], "}"}]}], "]"}]}],
";"}]], "Input",
CellLabel->"In[10]:="],
Cell[BoxData[
RowBox[{"h", "[", "0", "]"}]], "Input",
CellLabel->"In[11]:="],
Cell[BoxData[
RowBox[{"h", "[", "1", "]"}]], "Input",
CellLabel->"In[12]:="],
Cell[BoxData[
RowBox[{"h", "[", "63", "]"}]], "Input",
CellLabel->"In[13]:="],
Cell[BoxData[
RowBox[{
RowBox[{"h", "[",
RowBox[{"-", "2"}], "]"}], " ", "-", " ",
RowBox[{"h", "[",
RowBox[{"nSize", " ", "-", " ", "2"}], "]"}], " "}]], "Input",
CellLabel->"In[14]:="],
Cell[BoxData[
RowBox[{
RowBox[{
RowBox[{
RowBox[{"h", "[", "3", "]"}], " ", ".", " ",
RowBox[{"Conjugate", "[",
RowBox[{"h", "[", "3", "]"}], "]"}]}], "//", " ", "N"}], " ", "//", " ",
"Chop"}]], "Input",
CellLabel->"In[15]:="],
Cell[BoxData[
RowBox[{
RowBox[{
RowBox[{
RowBox[{"h", "[", "3", "]"}], " ", ".", " ",
RowBox[{"Conjugate", "[",
RowBox[{"h", "[", "4", "]"}], "]"}]}], "//", " ", "N"}], " ", "//", " ",
"Chop"}]], "Input",
CellLabel->"In[16]:="],
Cell[BoxData[
RowBox[{"Table", "[",
RowBox[{
RowBox[{
RowBox[{
RowBox[{
RowBox[{"h", "[", "i", "]"}], " ", ".", " ",
RowBox[{"Conjugate", "[",
RowBox[{"h", "[", "i", "]"}], "]"}]}], " ", "//", " ", "N"}], " ", "//",
" ", "Chop"}], ",", " ",
RowBox[{"{",
RowBox[{"i", ",", " ", "0", ",", " ",
RowBox[{"nSize", "-", "1"}]}], "}"}]}], "]"}]], "Input",
CellLabel->"In[17]:="],
Cell[BoxData[
RowBox[{"Table", "[",
RowBox[{
RowBox[{
RowBox[{
RowBox[{
RowBox[{"h", "[", "i", "]"}], " ", ".", " ",
RowBox[{"Conjugate", "[",
RowBox[{"h", "[", "10", "]"}], "]"}]}], " ", "//", " ", "N"}], " ", "//",
" ", "Chop"}], ",", " ",
RowBox[{"{",
RowBox[{"i", ",", " ", "0", ",", " ",
RowBox[{"nSize", "-", "1"}]}], "}"}]}], "]"}]], "Input",
CellLabel->"In[18]:="],
Cell[BoxData[
RowBox[{"xf", " ", "=", " ",
RowBox[{
RowBox[{
RowBox[{
RowBox[{"(",
RowBox[{"x", ".", "#"}], ")"}], "&"}], " ", "/@", " ",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"h", "[", "i", "]"}], ",", " ",
RowBox[{"{",
RowBox[{"i", ",", " ", "0", ",", " ",
RowBox[{"nSize", "-", "1"}]}], "}"}]}], "]"}]}], "//", " ", "Chop",
" ",
RowBox[{"(*", " ", "DFT", " ", "*)"}]}]}]], "Input",
CellLabel->"In[19]:="]
}, Closed]],
Cell[CellGroupData[{
Cell["DFT Orthogonal Modes", "Subsection"],
Cell[BoxData[{
RowBox[{
RowBox[{
RowBox[{"LPlotComplex", "[",
RowBox[{"x_List", ",", "options___"}], "]"}], ":=",
RowBox[{"Module", "[",
RowBox[{
RowBox[{"{",
RowBox[{"p1", ",", "p2"}], "}"}], ",",
RowBox[{
RowBox[{"p1", "=",
RowBox[{"ListPlot", "[",
RowBox[{
RowBox[{"Re", "[", "x", "]"}], ",",
RowBox[{"PlotStyle", "\[Rule]",
RowBox[{"RGBColor", "[",
RowBox[{"0", ",", "0", ",", "1"}], "]"}]}], ",",
RowBox[{"Joined", "\[Rule]", "True"}], ",",
RowBox[{"DisplayFunction", "\[Rule]", "Identity"}]}], "]"}]}], ";",
RowBox[{"p2", "=",
RowBox[{"ListPlot", "[",
RowBox[{
RowBox[{"Im", "[", "x", "]"}], ",",
RowBox[{"PlotStyle", "\[Rule]",
RowBox[{"RGBColor", "[",
RowBox[{"1", ",", "0", ",", "0"}], "]"}]}], ",",
RowBox[{"Joined", "\[Rule]", "True"}], ",",
RowBox[{"DisplayFunction", "\[Rule]", "Identity"}]}], "]"}]}], ";",
RowBox[{"Show", "[",
RowBox[{"p1", ",", "p2", ",", "options"}], "]"}]}]}], "]"}]}],
";"}], "\n",
RowBox[{
RowBox[{"modeTable", "=",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"LPlotComplex", "[",
RowBox[{
RowBox[{"h", "[",
RowBox[{
RowBox[{"i", " ", "2"}], "+", "j"}], "]"}], ",",
RowBox[{"PlotLabel", "\[Rule]",
RowBox[{"\"\\"", "<>",
RowBox[{"ToString", "[",
RowBox[{
RowBox[{"i", " ", "2"}], "+", "j"}], "]"}]}]}]}], "]"}], ",",
RowBox[{"{",
RowBox[{"i", ",", "0", ",", "3"}], "}"}], ",",
RowBox[{"{",
RowBox[{"j", ",", "0", ",", "1"}], "}"}]}], "]"}]}], ";"}], "\n",
RowBox[{"Show", "[",
RowBox[{
RowBox[{"GraphicsGrid", "[", "modeTable", "]"}], ",",
RowBox[{"DisplayFunction", "\[Rule]", "$DisplayFunction"}]}],
"]"}]}], "Input",
CellLabel->"In[20]:="],
Cell[BoxData[{
RowBox[{
RowBox[{"modeTable", "=",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"LPlotComplex", "[",
RowBox[{
RowBox[{"h", "[",
RowBox[{
RowBox[{"i", " ", "2"}], "+", "j"}], "]"}], ",",
RowBox[{"PlotLabel", "\[Rule]",
RowBox[{"\"\\"", "<>",
RowBox[{"ToString", "[",
RowBox[{
RowBox[{"i", " ", "2"}], "+", "j"}], "]"}]}]}]}], "]"}], ",",
RowBox[{"{",
RowBox[{"i", ",", "13", ",", "16"}], "}"}], ",",
RowBox[{"{",
RowBox[{"j", ",", "0", ",", "1"}], "}"}]}], "]"}]}], ";"}], "\n",
RowBox[{"Show", "[",
RowBox[{
RowBox[{"GraphicsGrid", "[", "modeTable", "]"}], ",",
RowBox[{"DisplayFunction", "\[Rule]", "$DisplayFunction"}]}],
"]"}]}], "Input",
CellLabel->"In[23]:="],
Cell[BoxData[{
RowBox[{
RowBox[{"modeTable", "=",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"LPlotComplex", "[",
RowBox[{
RowBox[{"h", "[",
RowBox[{
RowBox[{"i", " ", "2"}], "+", "j"}], "]"}], ",",
RowBox[{"PlotLabel", "\[Rule]",
RowBox[{"\<\"n = \"\>", "<>",
RowBox[{"ToString", "[",
RowBox[{
RowBox[{"i", " ", "2"}], "+", "j"}], "]"}]}]}]}], "]"}], ",",
RowBox[{"{",
RowBox[{"i", ",", "28", ",", "31"}], "}"}], ",",
RowBox[{"{",
RowBox[{"j", ",", "0", ",", "1"}], "}"}]}], "]"}]}], ";"}], "\n",
RowBox[{"Show", "[",
RowBox[{
RowBox[{"GraphicsGrid", "[", "modeTable", "]"}], ",",
RowBox[{"DisplayFunction", "\[Rule]", "$DisplayFunction"}]}],
"]"}]}], "Input",
CellLabel->"In[25]:="]
}, Closed]]
}, Closed]],
Cell[CellGroupData[{
Cell["DFT (Long Way)", "Section"],
Cell[BoxData[
RowBox[{
RowBox[{
RowBox[{"dft", "[", "x_List", "]"}], " ", ":=", " ",
RowBox[{"Module", "[",
RowBox[{
RowBox[{"{",
RowBox[{"n", ",", "e0", ",", " ", "eVec"}], "}"}], ",",
"\[IndentingNewLine]",
RowBox[{
RowBox[{"n", " ", "=", " ",
RowBox[{"Length", "[", "x", "]"}]}], ";", "\[IndentingNewLine]",
RowBox[{"e0", " ", "=", " ",
RowBox[{"Exp", "[",
RowBox[{"2", " ", "\[Pi]", " ",
RowBox[{"I", "/", "n"}]}], "]"}]}], ";", "\[IndentingNewLine]",
RowBox[{"eVec", " ", "=", " ",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"e0", "^",
RowBox[{"(",
RowBox[{"i", "-", "1"}], ")"}]}], ",", " ",
RowBox[{"{",
RowBox[{"i", ",", " ", "1", ",", " ", "n"}], "}"}]}], "]"}]}], ";",
"\[IndentingNewLine]",
RowBox[{
RowBox[{"Table", "[",
RowBox[{
RowBox[{"(",
RowBox[{"x", " ", ".",
RowBox[{"eVec", "^",
RowBox[{"(",
RowBox[{"i", "-", "1"}], ")"}]}]}], ")"}], ",", " ",
RowBox[{"{",
RowBox[{"i", ",", " ", "1", ",", " ", "n"}], "}"}]}], "]"}], "/",
RowBox[{"Sqrt", "[", "n", "]"}]}]}]}], "]"}]}], ";"}]], "Input",
CellLabel->"In[27]:="],
Cell[BoxData[
RowBox[{
RowBox[{
RowBox[{"idft", "[", "xf_List", "]"}], " ", ":=", " ",
RowBox[{"Module", "[",
RowBox[{
RowBox[{"{",
RowBox[{"n", ",", "e0", ",", " ", "eVec"}], "}"}], ",",
"\[IndentingNewLine]",
RowBox[{
RowBox[{"n", " ", "=", " ",
RowBox[{"Length", "[", "x", "]"}]}], ";", "\[IndentingNewLine]",
RowBox[{"e0", " ", "=", " ",
RowBox[{"Exp", "[",
RowBox[{
RowBox[{"-", "2"}], " ", "\[Pi]", " ",
RowBox[{"I", "/", "n"}]}], "]"}]}], ";", "\[IndentingNewLine]",
RowBox[{"eVec", " ", "=", " ",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"e0", "^",
RowBox[{"(",
RowBox[{"i", "-", "1"}], ")"}]}], ",", " ",
RowBox[{"{",
RowBox[{"i", ",", " ", "1", ",", " ", "n"}], "}"}]}], "]"}]}], ";",
"\[IndentingNewLine]",
RowBox[{
RowBox[{"Table", "[",
RowBox[{
RowBox[{"(",
RowBox[{"xf", " ", ".",
RowBox[{"eVec", "^",
RowBox[{"(",
RowBox[{"i", "-", "1"}], ")"}]}]}], ")"}], ",", " ",
RowBox[{"{",
RowBox[{"i", ",", " ", "1", ",", " ", "n"}], "}"}]}], "]"}], "/",
RowBox[{"Sqrt", "[", "n", "]"}]}]}]}], "]"}]}], ";"}]], "Input",
CellLabel->"In[28]:="],
Cell[BoxData[
RowBox[{
RowBox[{"xf", " ", "=", " ",
RowBox[{"dft", "[", "x", "]"}]}], ";"}]], "Input",
CellLabel->"In[29]:="],
Cell[BoxData[
RowBox[{"xf", " ", "//", " ", "Chop"}]], "Input",
CellLabel->"In[30]:="],
Cell[BoxData[
RowBox[{
RowBox[{"ListPlotComplex", "[",
RowBox[{"x_List", ",", "options___"}], "]"}], " ", ":=", " ",
RowBox[{"Module", "[",
RowBox[{
RowBox[{"{",
RowBox[{"p1", ",", "p2"}], "}"}], ",", "\[IndentingNewLine]",
RowBox[{
RowBox[{
StyleBox["p1",
FontColor->RGBColor[0, 0, 1]], " ", "=", " ",
RowBox[{"ListPlot", "[",
RowBox[{
RowBox[{"Re", "[", "x", "]"}], ",",
RowBox[{"PlotStyle", "\[Rule]", " ",
StyleBox[
RowBox[{"RGBColor", "[",
RowBox[{"0", ",", "0", ",", "1"}], "]"}],
FontColor->RGBColor[0, 0, 1]]}], ",",
RowBox[{"DisplayFunction", " ", "\[Rule]", " ", "Identity"}], ",",
"options"}], "]"}]}], ";", "\[IndentingNewLine]",
RowBox[{
StyleBox["p2",
FontColor->RGBColor[1, 0, 0]], " ", "=", " ",
RowBox[{"ListPlot", "[",
RowBox[{
RowBox[{"Im", "[", "x", "]"}], ",",
RowBox[{"PlotStyle", "\[Rule]", " ",
StyleBox[
RowBox[{"RGBColor", "[",
RowBox[{"1", ",", "0", ",", "0"}], "]"}],
FontColor->RGBColor[1, 0, 0]]}], ",",
RowBox[{"DisplayFunction", " ", "\[Rule]", " ", "Identity"}], ",",
"options"}], "]"}]}], ";", "\[IndentingNewLine]",
RowBox[{"Show", "[",
RowBox[{
StyleBox["p1",
FontColor->RGBColor[0, 0, 1]], ",",
StyleBox["p2",
FontColor->RGBColor[1, 0, 0]], ",",
RowBox[{"DisplayFunction", " ", "\[Rule]", " ", "$DisplayFunction"}]}],
"]"}]}]}], "]"}]}]], "Input",
CellLabel->"In[31]:="],
Cell[BoxData[
RowBox[{
RowBox[{"ListPlotComplex", "[",
RowBox[{"xf", ",", " ",
RowBox[{"PlotRange", "\[Rule]", " ", "All"}], ",", " ",
RowBox[{"PlotStyle", " ", "\[Rule]", " ",
RowBox[{"PointSize", "[", "0.02", "]"}]}]}], "]"}], ";"}]], "Input",
CellLabel->"In[32]:="],
Cell[BoxData[
RowBox[{
RowBox[{"xt", " ", "=", " ",
RowBox[{"idft", "[", "xf", "]"}]}], ";"}]], "Input",
CellLabel->"In[33]:="],
Cell[BoxData[
RowBox[{"ListPlot", "[",
RowBox[{"Chop", "[", "xt", "]"}], "]"}]], "Input",
CellLabel->"In[36]:="],
Cell[BoxData[
RowBox[{
RowBox[{"Print", "[",
RowBox[{"\<\"Max transform error = \"\>", ",",
RowBox[{"Max", "[",
RowBox[{"Abs", "[",
RowBox[{"xt", "-", "x"}], "]"}], "]"}]}], "]"}], ";",
RowBox[{"ListPlot", "[",
RowBox[{
RowBox[{"Abs", "[",
RowBox[{"xt", "-", "x"}], "]"}], ",",
RowBox[{"PlotRange", "\[Rule]", "All"}], ",",
RowBox[{"PlotStyle", "\[Rule]",
RowBox[{"PointSize", "[", "0.02`", "]"}]}]}], "]"}]}]], "Input",
CellLabel->"In[34]:="],
Cell[CellGroupData[{
Cell["Example (\"in-between\" mode)", "Subsection"],
Cell[BoxData[
RowBox[{"nSize", " ", "=", " ",
RowBox[{"2", "^", "6"}]}]], "Input",
CellLabel->"In[37]:="],
Cell[BoxData[{
RowBox[{
RowBox[{"x", "=",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"N", "[",
RowBox[{"Sin", "[",
FractionBox[
RowBox[{"2", " ", "\[Pi]", " ",
RowBox[{"(",
RowBox[{"i", "-", "1"}], ")"}], " ", "3.4`"}], "nSize"], "]"}],
"]"}], ",",
RowBox[{"{",
RowBox[{"i", ",", "1", ",", "nSize"}], "}"}]}], "]"}]}], ";"}], "\n",
RowBox[{"ListPlot", "[",
RowBox[{"x", ",",
RowBox[{"PlotLabel", "\[Rule]", "\<\"3.4 Periods Long\"\>"}]}],
"]"}]}], "Input",
CellLabel->"In[38]:="],
Cell[BoxData[{
RowBox[{
RowBox[{"xf", "=",
RowBox[{"dft", "[", "x", "]"}]}], ";"}], "\n",
RowBox[{"ListPlot", "[",
RowBox[{
RowBox[{"Abs", "[", "xf", "]"}], ",",
RowBox[{"PlotRange", "\[Rule]", "All"}], ",",
RowBox[{"PlotStyle", "\[Rule]",
RowBox[{"PointSize", "[", "0.02`", "]"}]}], ",",
RowBox[{"PlotLabel", "\[Rule]", "\<\"3.4 Periods Long\"\>"}]}],
"]"}]}], "Input",
CellLabel->"In[40]:="],
Cell[TextData[{
"When the sampled signal, ",
StyleBox["x",
FontSlant->"Italic"],
"[",
StyleBox["n",
FontSlant->"Italic"],
"], have oscillations that do not \"fit\" precisely into the sample period, \
then the Fourier spectrum is not simply related to the primary oscillations."
}], "Text"]
}, Closed]],
Cell[CellGroupData[{
Cell["Example (Shift)", "Subsection"],
Cell[BoxData[{
RowBox[{
RowBox[{"nSize", "=",
SuperscriptBox["2", "6"]}], ";",
RowBox[{"x1", "=",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"N", "[",
RowBox[{"Sin", "[",
FractionBox[
RowBox[{"2", " ", "\[Pi]", " ",
RowBox[{"(",
RowBox[{"i", "-", "1"}], ")"}], " ", "3"}], "nSize"], "]"}], "]"}],
",",
RowBox[{"{",
RowBox[{"i", ",", "1", ",", "nSize"}], "}"}]}], "]"}]}], ";"}], "\n",
RowBox[{
RowBox[{"x2", "=",
RowBox[{"RotateRight", "[",
RowBox[{"x1", ",", "2"}], "]"}]}], ";"}], "\n",
RowBox[{
RowBox[{"p1", "=",
RowBox[{"ListPlot", "[",
RowBox[{"x1", ",",
RowBox[{"DisplayFunction", "\[Rule]", "Identity"}]}], "]"}]}],
";"}], "\n",
RowBox[{
RowBox[{"p2", "=",
RowBox[{"ListPlot", "[",
RowBox[{"x2", ",",
RowBox[{"PlotStyle", "\[Rule]",
RowBox[{"RGBColor", "[",
RowBox[{"1", ",", "0", ",", "0"}], "]"}]}], ",",
RowBox[{"DisplayFunction", "\[Rule]", "Identity"}]}], "]"}]}],
";"}], "\n",
RowBox[{"Show", "[",
RowBox[{"p1", ",", "p2", ",",
RowBox[{"DisplayFunction", "\[Rule]", "$DisplayFunction"}]}],
"]"}]}], "Input",
CellLabel->"In[42]:="],
Cell[BoxData[{
RowBox[{
RowBox[{"x1f", " ", "=", " ",
RowBox[{"dft", "[", "x1", "]"}]}], ";"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{"x2f", " ", "=", " ",
RowBox[{"dft", "[", "x2", "]"}]}], ";"}]}], "Input",
CellLabel->"In[47]:="],
Cell[BoxData[{
RowBox[{
RowBox[{"ListPlotComplex", "[",
RowBox[{"x1f", ",", " ",
RowBox[{"PlotRange", " ", "\[Rule]", " ", "All"}], ",", " ",
RowBox[{"PlotLabel", " ", "\[Rule]", " ", "\"\\""}]}], "]"}],
";"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{"ListPlotComplex", "[",
RowBox[{"x2f", ",", " ",
RowBox[{"PlotRange", " ", "\[Rule]", " ", "All"}], ",", " ",
RowBox[{"PlotLabel", " ", "\[Rule]", " ", "\"\\""}]}], "]"}],
";"}]}], "Input",
CellLabel->"In[49]:="],
Cell[BoxData[
RowBox[{"x1f", " ", "//", " ", "Chop"}]], "Input",
CellLabel->"In[51]:="],
Cell[BoxData[
RowBox[{"x2f", " ", "//", " ", "Chop"}]], "Input",
CellLabel->"In[52]:="],
Cell["\<\
A shift in the time sequence results in a phase-shift in the frequency \
representation.\
\>", "Text"],
Cell[BoxData[
RowBox[{
RowBox[{"dx", "=",
RowBox[{"idft", "[",
RowBox[{"x1f", "-", "x2f"}], "]"}]}], ";",
RowBox[{"ListPlot", "[",
RowBox[{
RowBox[{"Re", "[", "dx", "]"}], ",",
RowBox[{"PlotLabel", "\[Rule]", "\<\"Shifted Difference\"\>"}]}],
"]"}]}]], "Input",
CellLabel->"In[53]:="],
Cell["\<\
The difference of a shifted signal results in a derivative. (Of course!)\
\>", "Text"]
}, Closed]],
Cell[CellGroupData[{
Cell["Example (1k Samples)", "Subsection"],
Cell[BoxData[{
RowBox[{
RowBox[{"nSize", "=",
SuperscriptBox["2", "10"]}], ";"}], "\n",
RowBox[{
RowBox[{"s1", "=",
RowBox[{"Table", "[",
RowBox[{
RowBox[{
RowBox[{"Sin", "[",
FractionBox[
RowBox[{
RowBox[{"(",
RowBox[{"i", "-", "1"}], ")"}], " ", "2", " ", "\[Pi]", " ",
"6.3`"}], "nSize"], "]"}], "+",
RowBox[{"Sin", "[",
FractionBox[
RowBox[{
RowBox[{"(",
RowBox[{"i", "-", "1"}], ")"}], " ", "2", " ", "\[Pi]", " ",
"15.7`"}], "nSize"], "]"}]}], ",",
RowBox[{"{",
RowBox[{"i", ",", "1", ",", "nSize"}], "}"}]}], "]"}]}], ";"}], "\n",
RowBox[{"ListPlot", "[", "s1", "]"}]}], "Input",
CellLabel->"In[54]:="],
Cell[BoxData[
RowBox[{
RowBox[{"(",
RowBox[{
RowBox[{"sf1", " ", "=", " ",
RowBox[{"dft", "[", "s1", "]"}]}], ";"}], ")"}], " ", "//", " ",
"Timing"}]], "Input",
CellLabel->"In[57]:="],
Cell[BoxData[
RowBox[{
RowBox[{"(",
RowBox[{
RowBox[{"sf2", " ", "=", " ",
RowBox[{"Fourier", "[", "s1", "]"}]}], ";"}], ")"}], " ", "//", " ",
"Timing"}]], "Input",
CellLabel->"In[58]:="],
Cell[BoxData[
RowBox[{"Max", "[",
RowBox[{"Abs", "[",
RowBox[{"sf1", " ", "-", " ", "sf2"}], "]"}], "]"}]], "Input",
CellLabel->"In[59]:="],
Cell[TextData[{
"Our \"home-made\" DFT is numerically equivalent to ",
StyleBox["Mathematica",
FontSlant->"Italic"],
"'s built-in ",
StyleBox["Fourier[\[Ellipsis]]",
FontWeight->"Bold"],
". However, our \"home-made\" DFT is ",
StyleBox["very, very slow",
FontSlant->"Italic"],
". This is because ",
StyleBox["Fourier",
FontWeight->"Bold"],
" uses the \"fast-Fourier transform\" algorithm (FFT) discussed next."
}], "Text"]
}, Closed]]
}, Closed]],
Cell[CellGroupData[{
Cell["Recursive FFT (J. W. Cooley and J. W. Tukey, 1965) ", "Section"],
Cell["\<\
The following expressions illustrate the recursive algorithm of the FFT.\
\>", "Text"],
Cell[BoxData[{
RowBox[{
RowBox[{"Clear", "[", "\"\\"", "]"}], ";"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{"nSize", " ", "=", " ",
RowBox[{"2", "^", "3"}]}], ";"}], "\[IndentingNewLine]",
RowBox[{"sData", " ", "=", " ",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"s", "[", "i", "]"}], ",", " ",
RowBox[{"{",
RowBox[{"i", ",", " ", "1", ",", " ", "nSize"}], "}"}]}],
"]"}]}]}], "Input",
CellLabel->"In[60]:="],
Cell[BoxData[
RowBox[{
RowBox[{"(",
RowBox[{
RowBox[{
RowBox[{"Sqrt", "[", "2", "]"}], " ",
RowBox[{"dft", "[", "sData", "]"}]}], " ", "//", " ", "Simplify"}],
")"}], "//", " ", "TableForm"}]], "Input",
CellLabel->"In[63]:="],
Cell[BoxData[
RowBox[{"Transpose", "[",
RowBox[{"Partition", "[",
RowBox[{"sData", ",", " ", "2"}], "]"}], "]"}]], "Input",
CellLabel->"In[64]:="],
Cell[BoxData[
RowBox[{
RowBox[{"{",
RowBox[{"fts1", ",", " ", "fts2"}], "}"}], " ", "=", " ",
RowBox[{
RowBox[{"(",
RowBox[{"dft", " ", "/@", " ",
RowBox[{"Transpose", "[",
RowBox[{"Partition", "[",
RowBox[{"sData", ",", " ", "2"}], "]"}], "]"}]}], ")"}], " ", "//",
" ", "Simplify"}]}]], "Input",
CellLabel->"In[65]:="],
Cell[BoxData[
RowBox[{
RowBox[{"(",
RowBox[{"sfExample1", " ", "=", " ",
RowBox[{
RowBox[{"(", " ",
RowBox[{
RowBox[{"(",
RowBox[{"fts1", " ", "~", " ", "Join", " ", "~", " ", "fts1"}], ")"}],
" ", "+", " ",
RowBox[{
RowBox[{"Table", "[",
RowBox[{
RowBox[{
RowBox[{"Exp", "[",
RowBox[{"2", " ", "\[Pi]", " ",
RowBox[{"I", "/", "nSize"}]}], "]"}], "^",
RowBox[{"(",
RowBox[{"m", "-", "1"}], ")"}]}], ",", " ",
RowBox[{"{",
RowBox[{"m", " ", ",", "1", ",", " ", "nSize"}], "}"}]}], "]"}],
" ",
RowBox[{"(",
RowBox[{"fts2", " ", "~", " ", "Join", " ", "~", " ", "fts2"}],
")"}]}]}], " ", ")"}], " ", "//", " ", "Simplify"}]}], ")"}], "//",
"TableForm"}]], "Input",
CellLabel->"In[66]:="],
Cell[BoxData[
RowBox[{
RowBox[{"(",
RowBox[{"sfExample2", " ", "=", " ",
RowBox[{
RowBox[{
RowBox[{"dft", "[", "sData", "]"}], " ",
RowBox[{"Sqrt", "[", "2", "]"}]}], "//", " ", "Simplify"}]}], ")"}],
" ", "//", " ", "TableForm"}]], "Input",
CellLabel->"In[67]:="],
Cell[BoxData[
RowBox[{
RowBox[{"sfExample1", " ", "-", " ", "sfExample2"}], "//", " ",
"Simplify"}]], "Input",
CellLabel->"In[68]:="],
Cell[CellGroupData[{
Cell["Recursive FFT", "Subsection"],
Cell[BoxData[
RowBox[{
RowBox[{
StyleBox["fftRecursive",
FontColor->RGBColor[0, 0, 1]], "[", "x_List", "]"}], " ", ":=", " ",
RowBox[{"Module", "[",
RowBox[{
RowBox[{"{",
RowBox[{
"n", ",", "xeven", ",", " ", "xodd", ",", " ", "g", ",", " ", "w"}],
"}"}], ",", "\[IndentingNewLine]",
RowBox[{
RowBox[{"If", "[",
RowBox[{
RowBox[{
RowBox[{"(",
RowBox[{"n", " ", "=", " ",
RowBox[{"Length", "[", "x", "]"}]}], ")"}], " ", "\[Equal]", " ",
"1"}], ",", " ",
RowBox[{"Return", "[", "x", "]"}]}], "]"}], ";", "\[IndentingNewLine]",
RowBox[{
RowBox[{"{",
RowBox[{"xeven", ",", " ", "xodd"}], "}"}], " ", "=", " ",
RowBox[{
StyleBox["fftRecursive",
FontColor->RGBColor[0, 0, 1]], " ", "/@", " ",
RowBox[{"Transpose", "[",
RowBox[{"Partition", "[",
RowBox[{"x", ",", "2"}], "]"}], "]"}]}]}], ";",
"\[IndentingNewLine]",
RowBox[{"g", " ", "=", " ",
RowBox[{"Exp", "[",
RowBox[{"2", " ", "\[Pi]", " ",
RowBox[{"I", "/", "n"}]}], "]"}]}], ";", "\[IndentingNewLine]",
RowBox[{"w", " ", "=", " ",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"g", "^",
RowBox[{"(",
RowBox[{"m", "-", "1"}], ")"}]}], ",", " ",
RowBox[{"{",
RowBox[{"m", ",", " ", "1", ",", " ", "n"}], "}"}]}], "]"}]}], ";",
"\[IndentingNewLine]",
RowBox[{
RowBox[{"(",
RowBox[{"xeven", " ", "~", " ", "Join", "~", " ", "xeven"}], ")"}],
" ", "+", " ",
RowBox[{"w", " ",
RowBox[{"(",
RowBox[{"xodd", " ", "~", " ", "Join", " ", "~", " ", "xodd"}],
")"}]}]}]}]}], "]"}]}]], "Input",
CellLabel->"In[69]:="],
Cell[BoxData[
RowBox[{
RowBox[{"fft", "[", "x_List", "]"}], " ", ":=", " ",
StyleBox[
RowBox[{"(*", " ",
RowBox[{"defaullt", " ", "normalization"}], " ", "*)"}],
FontColor->RGBColor[0, 1, 0]],
RowBox[{
RowBox[{
StyleBox["fftRecursive",
FontColor->RGBColor[0, 0, 1]], "[", "x", "]"}], "/",
RowBox[{"Sqrt", "[",
RowBox[{"Length", "[", "x", "]"}], "]"}]}]}]], "Input",
CellLabel->"In[70]:="],
Cell[BoxData[
RowBox[{
RowBox[{"(",
RowBox[{
RowBox[{"sf3", " ", "=", " ",
RowBox[{"fft", "[", "s1", "]"}]}], ";"}], " ", ")"}], " ", "//", " ",
"Timing"}]], "Input",
CellLabel->"In[71]:="],
Cell[BoxData[
RowBox[{
RowBox[{"ListPlotComplex", "[",
RowBox[{"sf3", ",", " ",
RowBox[{"PlotRange", "\[Rule]", " ", "All"}]}], "]"}], ";"}]], "Input",
CellLabel->"In[72]:="],
Cell[BoxData[
RowBox[{"Max", "[",
RowBox[{"Abs", "[",
RowBox[{"sf3", " ", "-", " ", "sf2"}], "]"}], "]"}]], "Input",
CellLabel->"In[73]:="]
}, Closed]]
}, Closed]],
Cell[CellGroupData[{
Cell["A Larger Example", "Section"],
Cell[BoxData[
RowBox[{"nSize", " ", "=", " ",
RowBox[{
RowBox[{"2", "^", "18"}], " ",
RowBox[{"(*", " ",
RowBox[{"256", "k", " ", "Samples"}], " ", "*)"}]}]}]], "Input",
CellLabel->"In[74]:="],
Cell[BoxData[
RowBox[{"rate", " ", "=", " ", "41000.0", " ",
RowBox[{"(*", " ",
RowBox[{"samples", " ", "per", " ", "second"}], " ", "*)"}]}]], "Input",
CellLabel->"In[75]:="],
Cell[BoxData[
RowBox[{
RowBox[{"nSize", "/", "rate"}], " ",
RowBox[{"(*", " ",
RowBox[{
RowBox[{"total", " ", "time"}], ",", " ", "Second"}], " ",
"*)"}]}]], "Input",
CellLabel->"In[76]:="],
Cell[BoxData[
RowBox[{
RowBox[{
RowBox[{
RowBox[{"frequency", " ", "=", " ", "2000.0"}], ";"}], " ",
RowBox[{"(*", " ",
RowBox[{
RowBox[{"cycles", " ", "per", " ", "second"}], ",", " ", "Hz"}], " ",
"*)"}], "\[IndentingNewLine]",
RowBox[{"rate", "/", "frequency"}]}], " ",
RowBox[{"(*", " ",
RowBox[{"samples", " ", "per", " ", "cycle"}], " ", "*)"}]}]], "Input",
CellLabel->"In[77]:="],
Cell[BoxData[
RowBox[{
RowBox[{"g", "[", "i_", "]"}], " ", ":=", " ",
RowBox[{
RowBox[{"Sin", "[",
RowBox[{"2", "\[Pi]", " ",
RowBox[{"(",
RowBox[{"i", " ", "-", "1"}], ")"}], " ",
RowBox[{"(",
RowBox[{"frequency", "/", "rate"}], ")"}]}], "]"}], " ",
RowBox[{
RowBox[{"Sin", "[",
RowBox[{"2", " ", "\[Pi]", " ",
RowBox[{"(",
RowBox[{"i", " ", "-", " ", "1"}], ")"}], " ",
RowBox[{"2", "/", "nSize"}]}], "]"}], "^", "2"}]}]}]], "Input",
CellLabel->"In[79]:="],
Cell[BoxData[{
RowBox[{
RowBox[{"x", "=",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"N", "[",
RowBox[{"g", "[", "i", "]"}], "]"}], ",",
RowBox[{"{",
RowBox[{"i", ",", "1", ",", "nSize"}], "}"}]}], "]"}]}], ";"}], "\n",
RowBox[{"ListPlot", "[",
RowBox[{"Take", "[",
RowBox[{"x", ",",
RowBox[{"{",
RowBox[{"1", ",",
RowBox[{"Length", "[", "x", "]"}], ",", "100"}], "}"}]}], "]"}],
"]"}]}], "Input",
CellLabel->"In[80]:="],
Cell[BoxData[
RowBox[{
RowBox[{"ListPlay", "[",
RowBox[{"x", ",", " ",
RowBox[{"SampleRate", " ", "\[Rule]", " ", "rate"}]}], "]"}],
";"}]], "Input",
CellLabel->"In[82]:="],
Cell[BoxData[
RowBox[{
RowBox[{"(",
RowBox[{
RowBox[{"xf", " ", "=", " ",
RowBox[{"Fourier", "[", "x", "]"}]}], ";"}], " ", ")"}], "//",
"Timing"}]], "Input",
CellLabel->"In[83]:="],
Cell[BoxData[
RowBox[{"ListPlot", "[",
RowBox[{
RowBox[{"Log", "[",
RowBox[{"Abs", "[",
RowBox[{"Take", "[",
RowBox[{"xf", ",",
RowBox[{"{",
RowBox[{"1", ",",
RowBox[{"Length", "[", "xf", "]"}], ",", "100"}], "}"}]}], "]"}],
"]"}], "]"}], ",",
RowBox[{"PlotRange", "\[Rule]", "All"}]}], "]"}]], "Input",
CellLabel->"In[84]:="],
Cell[BoxData[
RowBox[{
RowBox[{"frequencies", " ", "=", " ",
RowBox[{
RowBox[{
RowBox[{"Table", "[",
RowBox[{
RowBox[{"i", " ",
RowBox[{"rate", "/", "nSize"}]}], ",", " ",
RowBox[{"{",
RowBox[{"i", ",", " ", "0", ",", " ",
RowBox[{"nSize", "/", "2"}]}], " ", "}"}]}], "]"}], " ", "~", "Join",
"~", " ",
RowBox[{"Reverse", "[",
RowBox[{"Table", "[",
RowBox[{
RowBox[{
RowBox[{"-", "i"}], " ",
RowBox[{"rate", "/", "nSize"}]}], ",", " ",
RowBox[{"{",
RowBox[{"i", ",", " ", "1", ",", " ",
RowBox[{
RowBox[{"nSize", "/", "2"}], "-", "1"}]}], "}"}]}], "]"}], "]"}]}],
" ", "//", " ", "N"}]}], ";"}]], "Input",
CellLabel->"In[85]:="],
Cell[BoxData[
RowBox[{
RowBox[{"xff", " ", "=", " ",
RowBox[{"Transpose", "[",
RowBox[{"{",
RowBox[{"frequencies", ",", " ", "xf"}], "}"}], "]"}]}], ";"}]], "Input",\
CellLabel->"In[86]:="],
Cell[BoxData[
RowBox[{"xff", " ", "//", " ", "Shallow"}]], "Input",
CellLabel->"In[87]:="],
Cell[BoxData[
RowBox[{"ListPlot", "[",
RowBox[{
RowBox[{"Apply", "[",
RowBox[{
RowBox[{
RowBox[{"{",
RowBox[{"#1", ",",
RowBox[{"Log", "[",
RowBox[{"Abs", "[", "#2", "]"}], "]"}]}], "}"}], "&"}], ",",
RowBox[{"Take", "[",
RowBox[{"xff", ",",
RowBox[{"{",
RowBox[{"1", ",",
RowBox[{"Length", "[", "xff", "]"}], ",", "100"}], "}"}]}], "]"}],
",",
RowBox[{"{", "1", "}"}]}], "]"}], ",",
RowBox[{"PlotRange", "\[Rule]", "All"}], ",",
RowBox[{"PlotLabel", "\[Rule]", "\"\\""}]}],
"]"}]], "Input",
CellLabel->"In[88]:="]
}, Closed]],
Cell[CellGroupData[{
Cell["Summary", "Section"],
Cell["\<\
The discrete Fourier transform (DFT) is fundamental to modern digital signal \
processing. The transform takes as an input a sequence of equally-spaced \
samples of a signal and produces on output the complex frequency spectrum of \
the signal.\
\>", "Text"],
Cell[TextData[{
"The DFT of a ",
StyleBox["N",
FontSlant->"Italic"],
" samples requires ",
StyleBox["N",
FontSlant->"Italic"],
" dot-products of the sample-list with a Fourier modal vector. The number of \
computations grow as ",
Cell[BoxData[
FormBox[
SuperscriptBox["N", "2"], TraditionalForm]]],
"!"
}], "Text"],
Cell[TextData[{
"With the \"discovery\" of the recursive FFT algorithm, the DFT can be \
performed with many fewer operations. The number of operations scales like ",
StyleBox["N",
FontSlant->"Italic"],
" Log[",
StyleBox["N",
FontSlant->"Italic"],
"]. The FFT of one million samples can be performed in about 2 seconds. Our \
direct algorithm would take about 2 days!"
}], "Text"],
Cell["\<\
The FFT (and similar transforms) have enabled the recent revolution in \
digital communications, media, and storage.\
\>", "Text"]
}, Closed]]
}, Open ]]
},
WindowSize->{746, 935},
WindowMargins->{{Automatic, 559}, {Automatic, 24}},
PrintingCopies->1,
PrintingPageRange->{1, Automatic},
FrontEndVersion->"6.0 for Mac OS X x86 (32-bit) (May 21, 2008)",
StyleDefinitions->"TutorialBook.nb"
]
(* End of Notebook Content *)
(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{}
*)
(*CellTagsIndex
CellTagsIndex->{}
*)
(*NotebookFileOutline
Notebook[{
Cell[CellGroupData[{
Cell[590, 23, 60, 0, 51, "Title"],
Cell[653, 25, 61, 3, 41, "Subsubtitle"],
Cell[CellGroupData[{
Cell[739, 32, 31, 0, 86, "Section"],
Cell[773, 34, 731, 25, 68, "Text"],
Cell[1507, 61, 355, 6, 68, "Text"],
Cell[1865, 69, 345, 6, 68, "Text"],
Cell[2213, 77, 256, 6, 48, "Text"],
Cell[CellGroupData[{
Cell[2494, 87, 47, 0, 41, "Subsection"],
Cell[2544, 89, 76926, 1264, 249, "Graphics",
Evaluatable->False],
Cell[79473, 1355, 879, 13, 148, "Text"],
Cell[80355, 1370, 652, 10, 108, "Text"],
Cell[81010, 1382, 821, 14, 128, "Text"],
Cell[81834, 1398, 1238, 18, 208, "Text"],
Cell[83075, 1418, 276, 5, 68, "Text"],
Cell[83354, 1425, 891, 13, 168, "Text"],
Cell[84248, 1440, 205, 7, 28, "Text"]
}, Closed]]
}, Closed]],
Cell[CellGroupData[{
Cell[84502, 1453, 138, 5, 60, "Section"],
Cell[84643, 1460, 146, 4, 26, "Input"],
Cell[84792, 1466, 122, 3, 26, "Input"],
Cell[84917, 1471, 122, 3, 26, "Input"],
Cell[85042, 1476, 745, 22, 61, "Input"]
}, Closed]],
Cell[CellGroupData[{
Cell[85824, 1503, 58, 0, 54, "Section"],
Cell[85885, 1505, 191, 5, 23, "Text"],
Cell[86079, 1512, 74, 2, 26, "Input"],
Cell[86156, 1516, 81, 2, 26, "Input"],
Cell[CellGroupData[{
Cell[86262, 1522, 42, 0, 34, "Subsection"],
Cell[86307, 1524, 109, 3, 26, "Input"],
Cell[86419, 1529, 477, 15, 70, "Input"],
Cell[86899, 1546, 463, 14, 28, "Input"],
Cell[87365, 1562, 78, 2, 24, "Input"],
Cell[87446, 1566, 78, 2, 24, "Input"],
Cell[87527, 1570, 79, 2, 24, "Input"],
Cell[87609, 1574, 201, 6, 26, "Input"],
Cell[87813, 1582, 253, 8, 26, "Input"],
Cell[88069, 1592, 253, 8, 26, "Input"],
Cell[88325, 1602, 429, 13, 26, "Input"],
Cell[88757, 1617, 430, 13, 26, "Input"],
Cell[89190, 1632, 481, 15, 26, "Input"]
}, Closed]],
Cell[CellGroupData[{
Cell[89708, 1652, 42, 0, 34, "Subsection"],
Cell[89753, 1654, 1949, 54, 206, "Input"],
Cell[91705, 1710, 820, 24, 79, "Input"],
Cell[92528, 1736, 820, 24, 59, "Input"]
}, Closed]]
}, Closed]],
Cell[CellGroupData[{
Cell[93397, 1766, 33, 0, 54, "Section"],
Cell[93433, 1768, 1310, 36, 98, "Input"],
Cell[94746, 1806, 1338, 37, 98, "Input"],
Cell[96087, 1845, 133, 4, 24, "Input"],
Cell[96223, 1851, 88, 2, 26, "Input"],
Cell[96314, 1855, 1617, 43, 118, "Input"],
Cell[97934, 1900, 292, 7, 26, "Input"],
Cell[98229, 1909, 135, 4, 26, "Input"],
Cell[98367, 1915, 117, 3, 24, "Input"],
Cell[98487, 1920, 502, 14, 42, "Input"],
Cell[CellGroupData[{
Cell[99014, 1938, 51, 0, 34, "Subsection"],
Cell[99068, 1940, 110, 3, 26, "Input"],
Cell[99181, 1945, 569, 18, 59, "Input"],
Cell[99753, 1965, 429, 12, 59, "Input"],
Cell[100185, 1979, 298, 9, 41, "Text"]
}, Closed]],
Cell[CellGroupData[{
Cell[100520, 1993, 37, 0, 34, "Subsection"],
Cell[100560, 1995, 1218, 39, 110, "Input"],
Cell[101781, 2036, 249, 7, 42, "Input"],
Cell[102033, 2045, 524, 13, 45, "Input"],
Cell[102560, 2060, 89, 2, 26, "Input"],
Cell[102652, 2064, 89, 2, 26, "Input"],
Cell[102744, 2068, 112, 3, 23, "Text"],
Cell[102859, 2073, 317, 10, 24, "Input"],
Cell[103179, 2085, 96, 2, 23, "Text"]
}, Closed]],
Cell[CellGroupData[{
Cell[103312, 2092, 42, 0, 34, "Subsection"],
Cell[103357, 2094, 755, 24, 78, "Input"],
Cell[104115, 2120, 205, 7, 26, "Input"],
Cell[104323, 2129, 209, 7, 26, "Input"],
Cell[104535, 2138, 148, 4, 24, "Input"],
Cell[104686, 2144, 439, 14, 42, "Text"]
}, Closed]]
}, Closed]],
Cell[CellGroupData[{
Cell[105174, 2164, 71, 0, 54, "Section"],
Cell[105248, 2166, 96, 2, 23, "Text"],
Cell[105347, 2170, 450, 13, 61, "Input"],
Cell[105800, 2185, 252, 8, 26, "Input"],
Cell[106055, 2195, 155, 4, 26, "Input"],
Cell[106213, 2201, 364, 11, 26, "Input"],
Cell[106580, 2214, 896, 26, 79, "Input"],
Cell[107479, 2242, 299, 9, 26, "Input"],
Cell[107781, 2253, 141, 4, 26, "Input"],
Cell[CellGroupData[{
Cell[107947, 2261, 35, 0, 34, "Subsection"],
Cell[107985, 2263, 1804, 52, 115, "Input"],
Cell[109792, 2317, 430, 13, 46, "Input"],
Cell[110225, 2332, 210, 7, 26, "Input"],
Cell[110438, 2341, 187, 5, 26, "Input"],
Cell[110628, 2348, 148, 4, 24, "Input"]
}, Closed]]
}, Closed]],
Cell[CellGroupData[{
Cell[110825, 2358, 35, 0, 54, "Section"],
Cell[110863, 2360, 209, 6, 26, "Input"],
Cell[111075, 2368, 184, 4, 24, "Input"],
Cell[111262, 2374, 208, 7, 26, "Input"],
Cell[111473, 2383, 427, 12, 59, "Input"],
Cell[111903, 2397, 535, 16, 28, "Input"],
Cell[112441, 2415, 484, 16, 45, "Input"],
Cell[112928, 2433, 188, 6, 26, "Input"],
Cell[113119, 2441, 202, 7, 26, "Input"],
Cell[113324, 2450, 389, 12, 44, "Input"],
Cell[113716, 2464, 795, 24, 63, "Input"],
Cell[114514, 2490, 209, 7, 26, "Input"],
Cell[114726, 2499, 92, 2, 26, "Input"],
Cell[114821, 2503, 652, 20, 61, "Input"]
}, Closed]],
Cell[CellGroupData[{
Cell[115510, 2528, 26, 0, 54, "Section"],
Cell[115539, 2530, 268, 5, 48, "Text"],
Cell[115810, 2537, 330, 13, 48, "Text"],
Cell[116143, 2552, 389, 10, 68, "Text"],
Cell[116535, 2564, 140, 3, 28, "Text"]
}, Closed]]
}, Open ]]
}
]
*)
(* End of internal cache information *)