Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
cqp_fs16
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
compphys_lectures
cqp_fs16
Commits
6a8162b6
Commit
6a8162b6
authored
8 years ago
by
Georg Wolfgang Winkler
Browse files
Options
Downloads
Patches
Plain Diff
added heisenberg tdmrg example
parent
2b12e08b
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
examples/heisenberg_tDMRG/heisenberg_groundstate.ipynb
+421
-0
421 additions, 0 deletions
examples/heisenberg_tDMRG/heisenberg_groundstate.ipynb
with
421 additions
and
0 deletions
examples/heisenberg_tDMRG/heisenberg_groundstate.ipynb
0 → 100644
+
421
−
0
View file @
6a8162b6
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"from numpy import transpose as tr, conjugate as co\n",
"from scipy.linalg import expm, svd\n",
"import math\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"plt.rcParams['figure.figsize'] = 16, 9"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Some useful functions"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def dot(A,B):\n",
" \"\"\" Does the dot product like np.dot, but preserves the shapes also for singleton dimenstions \"\"\"\n",
" s1 = A.shape\n",
" s2 = B.shape\n",
" return np.dot(A,B).reshape((s1[0],s2[1]))\n",
"\n",
"def truncated_svd(thetas,chi):\n",
" \"\"\" Does an svd on two-site matrix thetas, and truncates to chi or the last nonzero singular value \"\"\"\n",
" U, S, Vh = svd(thetas,full_matrices = False)\n",
" # trunkieren\n",
" ind = np.where(np.isclose(np.cumsum(S[::-1])[::-1],0))[0]\n",
" if len(ind)>0:\n",
" chi_tr = min(chi,max(1,ind[0]))\n",
" else:\n",
" chi_tr = chi\n",
" S=S[:chi_tr]\n",
" w=1.-np.sum(S**2)\n",
" S/=math.sqrt(1-w)\n",
" U=U[:,:chi_tr]\n",
" Vh=Vh[:chi_tr,:]\n",
" return U, S, Vh\n",
"\n",
"def left_canonize(thetas,s,chi, return_S = False):\n",
" \"\"\" Splits up a two-site matrix thetas into two one-site matrices such that the left one is canonized \"\"\"\n",
" da, dg = thetas.shape[2], thetas.shape[3]\n",
" thetas = thetas.transpose((2,0,3,1)).reshape((da*s,dg*s)) # combine indizes\n",
" U, S, Vh = truncated_svd(thetas,chi)\n",
"\n",
" db = len(S)\n",
" U = U.reshape((da,s,db)).transpose((1,0,2))\n",
" Vh = Vh.reshape((db,dg,s)).transpose((2,0,1)) \n",
" for s2 in range(s):\n",
" Vh[s2] = dot(np.diag(S),Vh[s2])\n",
" if return_S:\n",
" return U, Vh, S\n",
" else:\n",
" return U, Vh\n",
"\n",
"def right_canonize(thetas,s,chi, return_S = False):\n",
" \"\"\" Splits up a two-site matrix thetas into two one-site matrices such that the right one is canonized \"\"\"\n",
" da, dg = thetas.shape[2], thetas.shape[3]\n",
" thetas = thetas.transpose((2,0,3,1)).reshape((da*s,dg*s)) # combine indizes\n",
" U, S, Vh = truncated_svd(thetas,chi)\n",
"\n",
" db = len(S)\n",
" U = U.reshape((da,s,db)).transpose((1,0,2))\n",
" Vh = Vh.reshape((db,dg,s)).transpose((2,0,1)) \n",
" for s1 in range(s):\n",
" U[s1] = dot(U[s1],np.diag(S))\n",
" if return_S:\n",
" return U, Vh, S\n",
" else:\n",
" return U, Vh\n",
"\n",
"\n",
"def apply_two_site_H(theta,H,s):\n",
" \"\"\" Applies a two-site operator on the two-site matrix theta \"\"\"\n",
" thetas = np.zeros_like(theta)\n",
" for s1p in range(s):\n",
" for s2p in range(s):\n",
" for s1 in range(s):\n",
" for s2 in range(s):\n",
" thetas[s1p,s2p] += H[s1p*s+s2p,s1*s+s2] * theta[s1,s2]\n",
"\n",
" return thetas\n",
"\n",
"def combine_two_matrices(M1,M2,s):\n",
" \"\"\" Combines the two neighbouring one-site matrices M1 and M2 into a two-site matrix theta \"\"\"\n",
" da, db, dg=M1.shape[1], M1.shape[2], M2.shape[2]\n",
" assert M1.shape[2] == M2.shape[1]\n",
"\n",
" theta = np.zeros((s,s,da,dg),dtype=complex)\n",
" for s1 in range(s):\n",
" for s2 in range(s):\n",
" theta[s1,s2]=dot(M1[s1],M2[s2])\n",
"\n",
" return theta"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Definition of system and initializiation"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"J = 1.\n",
"L = 20 # Length of chain\n",
"s = 2 # Local dimension of Hilbert space\n",
"dt = 0.05 # The imaginary timestep (should be 0.01 or smaller for good accuracy)\n",
"chi = 60 # The maximum matrix dimension, from which on the matrices are truncated\n",
"nmax = 10000 # Maximum number of iterations\n",
"nskip = 10 # Check energy convergence after nskip steps\n",
"\n",
"# Two-site Hamiltonian\n",
"H = np.array([[J/4,0,0,0],\n",
" [0,-J/4,J/2,0],\n",
" [0,J/2,-J/4,0],\n",
" [0,0,0,J/4]])\n",
"\n",
"# Imaginary time evolution operator\n",
"exp_beta_H=expm(-H*dt);\n",
"\n",
"# antiferromagnetic starting configuration\n",
"M = []\n",
"for i in range(L):\n",
" ar = np.zeros((2,1,1),dtype=complex)\n",
" ar[0,0,0] = i%2\n",
" ar[1,0,0] = (i+1)%2\n",
" M.append(ar)\n",
"\n",
"even = np.array(range(0,L-1,2))\n",
"odd = np.array(range(L+L%2-2,0,-2))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Imaginary time evolution"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 dE = 5.2022859299\n",
"10 dE = 2.41237932615\n",
"20 dE = 0.616048162871\n",
"30 dE = 0.19945192398\n",
"40 dE = 0.0856110936378\n",
"50 dE = 0.0446638884127\n",
"60 dE = 0.0266683370958\n",
"70 dE = 0.0176509913134\n",
"80 dE = 0.0127047223848\n",
"90 dE = 0.00977408061919\n",
"100 dE = 0.00789488605981\n",
"110 dE = 0.00658572945765\n",
"120 dE = 0.00559930606822\n",
"130 dE = 0.00480731763688\n",
"140 dE = 0.00414298945949\n",
"150 dE = 0.0035712463933\n",
"160 dE = 0.00307305023898\n",
"170 dE = 0.00263722905494\n",
"180 dE = 0.00225631290084\n",
"190 dE = 0.00192449985237\n",
"200 dE = 0.00163673118822\n",
"210 dE = 0.00138832203542\n",
"220 dE = 0.0011748521653\n",
"230 dE = 0.000992164333084\n",
"240 dE = 0.000836395474847\n",
"250 dE = 0.000704007231025\n",
"260 dE = 0.000591803752473\n",
"270 dE = 0.000496934572579\n",
"280 dE = 0.000416884722746\n",
"290 dE = 0.000349455574773\n",
"300 dE = 0.000292739848431\n",
"310 dE = 0.000245093656\n",
"320 dE = 0.000205107728403\n",
"330 dE = 0.000171579325436\n",
"340 dE = 0.000143485782885\n",
"350 dE = 0.000119960236445\n",
"360 dE = 0.000100269773123\n",
"370 dE = 8.37960556659e-05\n",
"380 dE = 7.00183361975e-05\n",
"390 dE = 5.84987014349e-05\n",
"400 dE = 4.88693502501e-05\n",
"410 dE = 4.08216810968e-05\n",
"420 dE = 3.40969704631e-05\n",
"430 dE = 2.84784768727e-05\n",
"440 dE = 2.37847443216e-05\n",
"450 dE = 1.98639157318e-05\n",
"460 dE = 1.65889561448e-05\n",
"470 dE = 1.38536333161e-05\n",
"480 dE = 1.15691357934e-05\n",
"490 dE = 9.661232097e-06\n",
"500 dE = 8.06788848529e-06\n",
"510 dE = 6.73727353018e-06\n",
"520 dE = 5.62608618715e-06\n",
"530 dE = 4.69815473814e-06\n",
"540 dE = 3.92326507992e-06\n",
"550 dE = 3.27618108287e-06\n",
"560 dE = 2.73582595511e-06\n",
"570 dE = 2.28459734686e-06\n",
"580 dE = 1.90779520892e-06\n",
"590 dE = 1.59314354775e-06\n",
"600 dE = 1.33039094941e-06\n",
"610 dE = 1.11097674527e-06\n",
"620 dE = 9.27752324742e-07\n",
"630 dE = 7.747481785e-07\n",
"640 dE = 6.46979531282e-07\n",
"650 dE = 5.40283849659e-07\n",
"660 dE = 4.51185265149e-07\n",
"670 dE = 3.76781240874e-07\n",
"680 dE = 3.1464805339e-07\n",
"690 dE = 2.62761810532e-07\n",
"700 dE = 2.19432413573e-07\n",
"710 dE = 1.83248596741e-07\n",
"720 dE = 1.53031841421e-07\n",
"730 dE = 1.27798031713e-07\n",
"740 dE = 1.06725389415e-07\n",
"750 dE = 8.91276528137e-08\n",
"760 dE = 7.44317638635e-08\n",
"770 dE = 6.21591595973e-08\n",
"780 dE = 5.19102449914e-08\n",
"790 dE = 4.33512816755e-08\n",
"800 dE = 3.62035965651e-08\n",
"810 dE = 3.02344727032e-08\n",
"820 dE = 2.52495695463e-08\n",
"830 dE = 2.10865902517e-08\n",
"840 dE = 1.76100023452e-08\n",
"850 dE = 1.47066288037e-08\n",
"860 dE = 1.22819674431e-08\n",
"870 dE = 1.02570609783e-08\n",
"880 dE = 8.56601900523e-09\n",
"Converged after 880 steps!\n",
"Ground-state energy: -8.68010558621\n"
]
}
],
"source": [
"enold = 0. # for checking energy convergence\n",
"\n",
"for n in range(nmax):\n",
" # ++++ Trotter scheme: first even bonds, than odd bonds\n",
" # === apply exp_beta_H on all even bonds ===\n",
" for j in even:\n",
" # go from left to right\n",
" theta = combine_two_matrices(M[j],M[j+1],s)\n",
" thetas = apply_two_site_H(theta,exp_beta_H,s) \n",
" M[j], M[j+1] = left_canonize(thetas,s,chi)\n",
"\n",
" # advance left canonization by a further step\n",
" if j < L-2:\n",
" theta = combine_two_matrices(M[j+1],M[j+2],s) \n",
" M[j+1], M[j+2] = left_canonize(theta,s,chi)\n",
" # === apply exp_beta_H on all even bonds ===\n",
"\n",
" # === renormalize the state on the last site ===\n",
" da = M[L-1].shape[1]\n",
" theta = M[L-1].reshape((s*da,1))\n",
" U, _, _ = truncated_svd(theta,chi) # throw away norm\n",
" M[L-1] = U.reshape((s,da,1))\n",
" # === renormalize the state on the last site ===\n",
"\n",
" if L%2 == 0:\n",
" # the right-most matrix has to be right canonized in this case\n",
" theta = combine_two_matrices(M[L-2],M[L-1],s)\n",
" M[L-2], M[L-1] = right_canonize(theta,s,chi)\n",
"\n",
" # === apply exp_beta_H on all odd bonds ===\n",
" for j in odd:\n",
" # go from right to left\n",
" theta = combine_two_matrices(M[j-1],M[j],s)\n",
" thetas = apply_two_site_H(theta,exp_beta_H,s)\n",
" M[j-1], M[j] = right_canonize(thetas,s,chi)\n",
"\n",
" # advance right canonization by a further step\n",
" if j>1:\n",
" theta = combine_two_matrices(M[j-2],M[j-1],s)\n",
" M[j-2], M[j-1] = right_canonize(theta,s,chi)\n",
" # === apply exp_beta_H on all odd bonds ===\n",
"\n",
" # === renormalize the state on the first site ===\n",
" db = M[0].shape[2]\n",
" theta = M[0].reshape((1,s*db))\n",
" _, _, Vh = truncated_svd(theta,chi) # throw away norm\n",
" M[0] = Vh.reshape((s,1,db))\n",
" # === renormalize the state on the first site ===\n",
"\n",
" # ++++ Calculate energy and check convergence ++++\n",
" if n%nskip == 0:\n",
" # Measure Energy via sum of two-site Operators H\n",
" en = 0.\n",
" for j in range(L-1): \n",
" theta = combine_two_matrices(M[j],M[j+1],s)\n",
" thetas = apply_two_site_H(theta,H,s) \n",
" for s1 in range(s):\n",
" for s2 in range(s):\n",
" en += np.trace(dot(thetas[s1,s2],co(tr(theta[s1,s2])))).real\n",
" M[j], M[j+1] = left_canonize(theta,s,chi) # Proceed with left canonization\n",
"\n",
" # make right canonized MPS for next tDMRG step\n",
" for j in range(L-1,0,-1):\n",
" theta = combine_two_matrices(M[j-1],M[j],s)\n",
" M[j-1], M[j] = right_canonize(theta,s,chi)\n",
"\n",
" print(n,'dE = ',abs(en-enold))\n",
" if abs(en-enold) < 1e-8:\n",
" print(\"Converged after \"+str(n)+\" steps!\")\n",
" print(\"Ground-state energy: \" + str(en))\n",
" break\n",
" enold = en\n",
" # === check convergence ===\n",
"\n",
"if n == nmax:\n",
" print(\"Maximum iterations reached! Convergence criterium not satisfied!\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Measure and plot the Entanglement Entropy between all sites"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA8AAAAImCAYAAACcvOOwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3WlwVVl2J/r/lgQCRCISECRIICQxz6OSKUESkEC4/Ko/\ndNuZznzt7HD5i9vpfm6nw3a7sUpB2OUXndHVEVmvh3h2vAxXZnTFs8PhcFQ/ppQQkwAxJ/MghCQQ\n8yyBQMN+HxandBFX0h32OfsM/18EUYl07z2rdNC9Z5291tpKaw0iIiIiIiKisMuwHQARERERERGR\nF5gAExERERERUSQwASYiIiIiIqJIYAJMREREREREkcAEmIiIiIiIiCKBCTARERERERFFgpUEWCm1\nWSl1USl1WSn1J3G+P1kpVaOUOqGUOqWU2hLzvT9TSl1RSl1QSn3obeREREREREQUVMrrfYCVUhkA\nLgNYD6AVwFEAH2mtL8Y85n8AOKG1/h9KqdkA/j+tdZFSag6AbwEsB1AA4DsA0zU3MyYiIiIiIqJB\n2FgBLgVwRWvdpLXuBPALAD/s85geAKNe//doADdf//f/BuAXWusurfV1AFdevx4RERERERHRgGwk\nwPkAWmL+fuP112JVAfjflVItAH4J4PN+nnszznOJiIiIiIiI3mIjAVZxvta3hPljAP+P1noygF8D\n8E0SzyUiIiIiIiJ6S5aFY94AMCXm7wWQXuBYvwNgEwBorQ8rpYYppcYl+FwAgFKKiTEREREREVGI\naa3jLZL2y8YK8FEA05RShUqpoQA+AvDPfR7TBGADALwegpWttb7/+nG/qZQaqpQqAjANQH1/B9Ja\n848P/lRWVlqPgX94Lvz2h+fCX394Pvzzh+fCP394Lvzzh+fCP394Lvz1JxWerwBrrbuVUr8PYBck\nAf9brfUFpVQVgKNa618C+ALA/62U+kPIQKzffv3c80qp/xfAeQCdAH5Pp/r/nIiIiIiIiCLFRgk0\ntNY7AMzs87XKmP++AGBNP8/9CYCfuBogERERERERhY6NEmiKmLKyMtsh0Gs8F/7Bc+EvPB/+wXPh\nHzwX/sFz4R88F8GnwlpBrJRidTQREREREVFIKaWgkxyCZaUEmoiIyA8aG5uwdevXuHmzB/n5Gdi2\n7TMUFRXaDiuSeC6IiMgLXAEmIqJIamxswsaNX6GhoQpADoB2lJRUYvfuz5l4eYzngoiIUpHKCjB7\ngImIKJK2bv06JuECgBw0NFRh69avLUYVTTwXRETkFSbAREQUSTdv9qA34XLkoLW1x0Y4kcZzQURE\nXmECTEREkZSfnwGgvc9X2zFpEj8avcZzQUREXmEPMBERRVJjYxMWL/4KT56w79S2xsYmlJZ+hfv3\neS6IiChxqfQAMwEmIqLImjGjCRMnfo2DB3vwG7+Rgb/8S04etmXDhiY8f/416ut78MMfZuDLL3ku\niIhoYEyAYzABJiKigdy+DcyeDdy/DyxdCvzsZ8CaNbajiqaXL4Hx44GGBuBHPwJ+8zeBjz+2HRUR\nEfkdp0ATERElqLoaKC8HMjOBLVuA7dttRxRdBw4As2YB48YBGzYA331nOyIiIgorJsBERBRJ1dWS\nbAFMgG3bvl3OAdCbALOIi4iI3MAEmIiIIkdrSbLWr5e/r1wJNDZKWTR5LzYBnjkT6OqScmgiIiLT\nmAATEVHkXLkiSfCMGfL3IUMkGd6xw25cUdTcDNy9CyxbJn9XimXQRETkHibAREQUOd99J0mWihmb\nsWULE2AbduwAPvxQerEdTICJiMgtTICJiDzU2NiETz+tQnl5JT79tAqNjU22Q4qk2P5fx+bNwO7d\nUn5L3oktf3asXw/s2QN0d9uJKer4PkVEYcZtkIiIPNLY2ISNG79CQ0MVgBwA7SgpqcTu3Z9zv1MP\ndXcDeXnAuXPAxIlvfm/BAuC//3dg1So7sUXNq1dyLq5ckW2QYs2ZA/z857JFFXmH71NEFCTcBomI\nyMe2bv065qISAHLQ0FCFrVu/thhV9Jw4AUya9HbyC3AatNcOHpQ+7L7JL8AyaFv4PkVEYccEmIjI\nIzdv9qD3otKRg9bWHhvhRJbT/xsPE2BvxSt/djABtoPvU0QUdkyAiYg8kp+fAaC9z1fbMWkS34q9\nFK//17F6NXD1KnDnjrcxRdVACfC6dcDhw0BHh7cxRR3fp4go7PhuRkTkkW3bPkNJSSV6Ly6lt27b\nts+sxRQ1L14AR44Aa9fG//6QIUBFBbBzp7dxRdGNG0BrK1BaGv/7ubnAvHlAXZ23cUXdtm2foaCA\n71NEFF5MgImIPFJUVIjduz/H8OFfoqSkEu+99yUHy3js4EEZdDVqVP+P4XZI3oi3/VFfLIP2XlFR\nIT766HNMn/4lsrMr8eu/zvcpIgqXLNsBEBFFSVZWIUaOrMTx40BBATBhgu2IomWg/l/Hli3An/2Z\nTIseKDmj9GzfDvzwhwM/ZsMG4I//GPirv/ImJhJHjxbipz+txM9/Lr8PRUW2IyIiMocrwEREHjp4\nUPpMc3Nle5c9e2xHFC0D9f86CgpkQvTRo97EFEWdnXIuNm0a+HErVgAXLwKPHnkTFwFPnwLHjwNl\nZfJedfCg7YiIiMxiAkxE5KG6OrmoBIDNmzlx2EsPHwKXLgHvvz/4Y3lu3FVXB5SUDF4BkZ0tezLX\n1noSFkGqJFauBHJy5L2KPdhEFDZMgImIPHTwoFzQA71b7mhtN6ao2LMHWLMGGDp08MdyOyR3DTT9\nuS/2AXsr9twsWAA0N3MFnojChQkwEZFH2tqknHPpUvn7ggWyxcvVq3bjiopE+n8da9bIavG9e+7G\nFFVMgP1J6zfPTVYWsHy5bEdFRBQWTICJiDxSXw8sWiRlnQCgFEttvZRI/69j6FCgvJzbIbnh5k2g\npSWxUnRAbhQ9fCjPIXedPStbgc2c2fu1VavYB0xE4cIEmIjII84ArFgstfVGUxPw+LHsK5sonht3\n7NwJbNwoq4uJyMiQvZmrq92Ni2Rrqi1b5Oacg4OwiChsmAATEXmkrq63/9exYQNw4ADw4oWdmKKi\nuhpYv16SqURt2QLs2iXbIZE5yZQ/O1gG7Y1452bFCuDYMZncTUQUBkyAiYg80NMDHDr0dgI8erSU\nRXPKrbuS6f91TJkCjB8vW8KQGV1dci4G2/6orw0b5CYGB8a559kz2fqrvPzNr48eDUydCpw+bSUs\nIiLjmAATEXng/HkgL08Sqr5YausurZPr/43FHm2zDh2SZGrixOSeV1QEjBghv0fkjupq6cseOfLt\n761axe2QiCg8mAATEXkgXv+vY8sW6b0jd5w9C7zzDlBYmPxzeXPCrFTKnx3r17MM2k0DnRv2ARNR\nmDABJiLyQLz+X8eiRVJ+2NDgbUxRkUr5s+ODD2TV8f59szFFVToJMPuA3dN3+6O+uAJMRGHCBJiI\nyAMDrQBzOyR3pZMAZ2cDZWUyDIvSc+sWcP06sHJlas+vqAD27eMwJjdcuCDvQ7Nnx/9+SQnw6hXQ\n3OxtXEREbmACTETksjt3gAcP+r+4BFhq65bOTpmy3XewTzJ4bszYuVNuRCS6/VFf48ZJInb0qNm4\nqHf1N3b7o1hKcRWYiMKDCTARkcvq6mTVa6AteDZuBPbvBzo6vIsrCo4cAaZNA8aOTf01tmyR5K2n\nx1xcUZRO+bODfcDuSOTcsA+YiMKCCTARkcsG6v91vPsuMH8+sHevNzFFRTrlz46pUyWBPnHCSEiR\n1NUF7N4tpf7pYB+weW1tcqOoomLgx3EFmIjCggkwEZHLBur/jcVSW/NMJMAAz026jhyRfZUnTUrv\nddaskRsRbW1m4iKgpgZYvlwmpQ9k6VLg4kX+7Iko+JgAExG5qKMDOH0aKC0d/LHcDsmsZ8/kZ79m\nTfqvxSFl6dm+Pf3VXwDIyZFkbd++9F+LRKKl6dnZMrG+vt79mIiI3MQEmIjIRcePy/CrnJzBH7t4\nMfDoEdDY6H5cUbBvnyRLw4en/1pr18p+wg8fpv9aUWSi/9exfj1QXW3mtaJOa7nplui5YR8wEYUB\nE2AiIhcl0v/ryMjgSqNJpsqfAWDYMEmCuR1S8m7flj2uE/09GAz7gM25dEn6s+fOTezx7AMmojBg\nAkxE5KJE+38d7DU1x2QCDPDcpGrXLlm1HTLEzOstWwY0Ncn2YpSewbY/6mvVKuDQIU5EJ6JgYwJM\nFAGNjU349NMqlJdX4tNPq9DY2GQ7pEjQOrkVYEC2Q9q7l9shpev2beDGDRncY4rTo82L/+SYLH8G\nZB/hsjIZ3kTpSbY3e/x4IC8POH/evZjoTfz8JjIvxe3oiSgoGhubsHHjV2hoqAKQA6Adhw9XYvfu\nz1FUVGg7vFC7elVKZydPTvw5Y8dKOeL+/ZIMU2pqaiRJysw095rFxcDo0cCpU8CSJeZeN8y6u2UF\n+D/9J7Ov6/QBf/yx2deNkvZ2Wc39h39I7nlOH/C8ee7ERb34+U3kDq4AE4Xc1q1fx3x4AkAOGhqq\nsHXr1xajioa6uuTKnx2cBp0+0+XPDpZBJ6e+HsjPBwoKzL7uhg2yr7DWZl83SvbskQqJUaOSe97q\n1ewD9go/v4ncwQSYKORu3uxB74enIwetrazjdNvBg6kN/mGSlR6t3UuAOaQsOaa2P+pr1iwZ3tTQ\nYP61oyLV0vRVqzgJ2iv8/CZyBxNgopDLz88A0N7nq+2YNIm//m5LdQV46VLg/n0Z9EPJu3JFkuAZ\nM8y/9rp1srfwo0fmXzuMTPf/OpTiNOh0aJ36uZk9G3jwgEPIvMDPbyJ38DeIKOS2bfsMJSWV6P0Q\nbUdJSSW2bfvMWkxR8OgR0NwMLFiQ/HMzMoBNm7jSmKrqaukRTXSybTKGDwc++EDKb2lgd+8Cly+n\ndhMoEdwPOHVXrgAvXwLz5yf/3IwMYOVKlkF7Ydu2z1BYyM9vItOYABOFXFFRIf7xHz9HZuaXmD69\nEsXFX3KAhgcOHQKWL5eJtalgqW3q3Cp/drBEPTG7dgEVFcDQoe68/vr1Muysu9ud1w8zpzQ91ZtE\nziAscldRUSH+4A8+x+TJX2LMmEqsXcvPbyITOAWaKAKePSvEkiWV+PnPgQ8/BKZOtR1R+CW7/VFf\nmzYBv/d7skqTnW0urrDr7pbhPj/7mXvH2LIF+Ku/ku2QMngbuV9ulT878vOBCRNkKrfJ7a6iYPt2\n4Ec/Sv35q1YBf/7n5uKh/p05U4g//dNKtLRIBUpRke2IiIKPH91EEfD991KKO2OGJAgcHOO+gwfT\nK/0cN04G/XCVJTknTgCTJgETJ7p3jGnTgJEj5feK4nO2P3IzAQbYB5yK58/lfSWdKonSUumF537l\n7tK6t6VjwQK+5xCZwgSYKAK+/x5YuFDK3dg3577OTuDYMWDFivReh6W2yXMuFt3GczOwY8dkdTaZ\nPbBTwfez5NXWAosXy57WqcrJkWFYx48bC4viuHpVKk1mzJDPcCbARGYwASaKAGcFGOAFoxdOn5Yy\n83QuMAEmWalwu//XwR7tgbm1/VFfZWXSb8+VyMTt2GFmZZ59wO6LHeg3YwZw4wbQ3ncoNBEljQkw\nUcj19ABnzvRO+6yokB7JHm4j6Jp0+38dy5bJViMtLem/VhS8eAEcOSJbFbmtrAw4eRJ4/Nj9YwWR\n2/2/jtxcYN48TiROhqlzs2oVf+5ui61oycqStphz5+zGRBQGTICJQu76dblIHDNG/l5QIP/NUir3\npNv/68jMlKFlXGlMzMGDUukwapT7xxoxQs4x+0/fdu8ecPEisGaNN8djH3Dirl4F2tqknDZdq1dL\nAqx1+q9Fb+vpkZvVFRW9X2MfMJEZTICJQi62/NnBMmh3mVoBBlhqmwyv+n8dLFGPb/duWSH3ano5\n388Sl+72R7EKCoBhwySpJvNOnwbGjpWfs2PBAvk6EaWHCTBRyDkDsGLxgtE9zc3Aq1dASYmZ19u0\nSfY6ffXKzOuFmVf9v44tW6Sfkitgb/Kq/NmxciVw/jzw6JF3xwwq0+eGfcDuiXdDj4OwiMxgAkwU\ncvFWgMvLgQMHmFS5wVn9NbHCAgDjx8vwE/baDezhQ+DSpfQnbydj+nRZAeMFaa+eHmDnTm8T4Oxs\nScRqa707ZhC9eAHs3w9s3GjuNdkH7J54CbBTAs2bbkTpYQJMFHLxEuAxY+Tivb7eTkxhZqr/NxZL\nbQe3Z4/0nA4d6t0xlepdBSZx/LjsYV1Y6O1x2Qc8uH37ZAXx3XfNvSZXgN3x6pX8XMvL3/x6Xp7c\ndLtxw05cRGHBBJgoxNrb5YNyxoy3v8cyaHeY7P91MAEenNf9vw6emzd5Xf7s4PvZ4Nw4NwsWSNsH\ny8/NOnJEblI7wytjcRAWUfqYABOF2Nmzsm1CVtbb3+MFo3ltbTL9dulSs69bWgrcvMm7/gPxuv/X\nUVYmq55Pn3p/bD/yav/fvhYuBO7f55ZhA3EjAc7KkvenQ4fMvm7UDXRDj4OwiNLHBJgoxOINwHKs\nWQOcOCGrxGRGfT2waJH56beZmdK3x1Lb+JqaZD9eZ69rL+XkyBAmlt8CDx7IHqVr13p/7IwM3tQb\nyLVr8juyaJH512YfsHmDJcBcASZKj5UEWCm1WSl1USl1WSn1J3G+/5+VUieVUieUUpeUUg9jvtf9\n+usnlVL/5G3kRMESr//XkZMjK5X793sbU5i50f/rYKlt/5yLxQxLt3R5bsSuXcC6dd5tf9QX+4D7\n56zMu/E7wj5gs9ragJMn+99Hm5OgidLn+eWCUioDwM8AbAIwF8DHSqlZsY/RWv97rfVirfUSAF8B\n+MeYb7drrZe8/v6/8CxwogAaKAEGuGJimhv9v47Nm+VcdXa68/pBZqv/1+EkwFGfzLpjh53+X4fz\nfhb18xCPm73ZK1YAx47xvcmU/fvl5nROTvzvz5oFNDYCHR3exkUUJjbul5cCuKK1btJadwL4BYAf\nDvD4jwH8z5i/G9pchCjctGYC7KWeHumDcysBnjBB9hZmr92btLbX/+uYORMYMkR67qOqp8d+Alxc\nDAwfLnsCU6+ODpkA/eGH7rz+6NHA1KnsSzVlsBt6Q4fKgCz+OydKnY0EOB9A7JiKG6+/9hal1BQA\nUwHUxHw5WylVr5SqU0oNlDgTRVpLi2yXkJfX/2NKS4GGBundo/ScPy8/6/Hj3TsGS23fdvYs8M47\ncgFuC7dDkpLNd98FiorsxsEy6Lft3w/Mmxd/orAp7AM2J5GKFg7CIkpPnNmwrou3gttfwdJHAP5B\n6zcKmqZorW8rpYoA1CilvtdaN8Z78o9//ONf/XdZWRnKyspSi5gogAZb/QVk1WrNGtlD9V/+S2/i\nCis3+38dW7YA//bfAj/5ibvHCRLbq7+OLVuAn/4U+OM/th2JHba2P+prwwbg5z8H/t2/sx2Jf3hx\nblavBv7X/wL+4A/cPU7Y3b8vA8tKSwd+HAdhUZTV1taitrY2rdewkQDfADAl5u8FAFr7eexHAH4v\n9gta69uv/7dRKVULYDGAQRNgoqgZaAJ0LKcMmglweurq+h9aYsr778uem62twKRJ7h4rKKqrgd/+\nbdtRAOXlwG/9FvDsmaxIR8327cBf/IXtKOQ8/O7vSj/qkCG2o/GH7duBv/s7d4+xejXw53/u7jGi\nYM8e+RwZ7N/uwoXAzp3exETkN30XNauqqpJ+DRsl0EcBTFNKFSqlhkKS3H/u+yCl1EwAo7XWh2O+\nNvr1c6CUGgdgFQB2QRDFkcgKMMA+YFMOHnSv/9eRlSUrXFEutY3V2SnlneXltiMBRo6UGxRR/F16\n+BA4c0YmQNuWlye9wEeP2o7EH65flxYX03uT91VcDLx6JTfoKHWJDvRzSqA58I0oNZ4nwFrrbgC/\nD2AXgHMAfqG1vqCUqlJK/SDmoR9BBmTFmg3gmFLqJIBqAD/RWl/0Im6ioEk0AZ4/X/aHbGkZ/LEU\n3507cpE5e7b7x4p6r2msI0eAadOAceNsRyKi2qO9ezfwwQcyc8AP2Afca/t2YNMm97cIU4rbIZmQ\naAL83nvyM7992/2YiMLIyq6JWusdWuuZWuvpWuu/fv21Sq31L2MeU6W1/g99nndIa73g9RZIC7XW\nX3scOlEgvHgh2yTMmjX4YzMyZAUtiitXptTVAStXerMP7ebNcnHf1eX+sfzOL/2/jqhuh2R7+nNf\nTIB7edmbzUFY6WlulpvR8+cP/lil2AdMlA4rCTARuev8edkmYejQxB7PMuj0eDEAyzFxIlBYCBw+\nPPhjw872/r99zZ4tF6ZR2p7ED9sf9bVmDXDiBNDWZjsSu16+BGpr3dv+qC+uAKenuhqoqEj8Rion\nQROljgkwUQglOgDL4STAUVu5MqWuzv3+31hRLbWN9eyZbL3j9uCxZDjbIUXp3Jw+LUO/SkpsR9Ir\nJwdYtkz6w6PswAFgzhzvWgSWLAEuXeKNh1Qle0Nv4UKuABOligkwUQgl2v/rKC6W1eKL7KhPWkeH\nJAGDbVthUtSSrHj27ZOf+YgRtiN5U9R6tP2y/VFfLIP2/txkZwOLF0tvPiVH6+QTYJZAE6WOCTBR\nCCWbACvFMuhUHT8upa85Od4dc8UK6fGO8gAUv/X/OioqJAGIyioYE2D/2r5dZgZ4iX3AqblwQW4g\nFBcn/pw5c4ArV2T6NhElhwkwUchoLSuSySTAABPgVHnZ/+sYMkTOV5RWGvuqrvZnAvzOO8Dy5UBN\nje1I3Pf4MXDqlD+2P+pr2TIZKnT3ru1I7HD+vy9b5u1x2QecGmf1V6nEnzNsGFBUxMotolQwASYK\nmVu35EP0vfeSe15FBbB3L9Dd7U5cYeV1/68jaqW2sW7flm273N7bNFVRKVHfvVt6sIcPtx3J27Ky\ngLVro3EjIp7t22X4VWamt8dduVIG9PX0eHvcoEt1oB8HYRGlhgkwUcg4A7CSuZMMSMI8aZJMT6XE\naC0JsNcrwICUNu7eHc3tkGpqgLIy7y/uExWV7ZD8Nv25ryiXQds6N+PHy59z57w/dlB1dcnN54qK\n5J/LPmCi1DABJgqZZPt/Y61fH90Vk1RcvSplaAUF3h87P1+OW1/v/bFt82v/r2PuXKmkCHNpotbB\nSYDDfiOir1evgD17gE2b7ByffcDJOXlS3s+TrdoCOAmaKFVMgIlCJt0EmH3AibPR/xsrKqW2sbT2\nfwIche2Qvv9eSp+nT7cdSf9mzQI6O4Fr12xH4q2DB4EZM4C8PDvHZx9wctLZz5wrwESpYQJMFDKp\nDMByrF0LHDoEvHxpNqawstX/69i8OdxJVjxXr0p/4YwZtiMZWNh7tP06/TmWM90+amXQNqY/x+IK\ncHLSSYALCmQrvqgOeyNKFRNgohB5+VIShDlzUnv+6NHy3EOHzMYVVrZXgFevlvN95469GLzmrP4m\n2+PutfXr5feovd12JO4IQgIMRLMP2Pa5mT0bePAgWu9LqerokKFhqU5SV4qrwESpYAJMFCIXL8o+\ngsOGpf4aLINOzKNHstVIqqvtJgwZIoNTdu2yF4PX/F7+7Bg1SqZU79ljOxLznjyRYXllZbYjGZwz\n1yAqU4lbWoDWVqC01F4MGRkyDZqrwIM7dEhmBuTmpv4aTICJkscEmChE0un/dTABTsyhQ3KRmZVl\nN46w95rG6u4GamtTLxf0WljPzXffSZnriBG2Ixlcfj4wYYLsVxwFO3fa2f6oL/YBJyad8mcHB2ER\nJY8JMFGImEiAV60CzpwBnj41E1NY2e7/dWzZIivAUdi/+eRJmZQ6caLtSBIT1u2Q/D79ua8o9QHb\nLn92sA84MSYSYK4AEyWPCTBRiJhIgIcPl5XNffvMxBRWtvt/HQUFkhAePWo7EvcFpfzZMX++bElz\n+bLtSMzR2j9JVqKi0gfc2SkJla3tj2KVlspAxo4O25H419OncrN55cr0XmfuXGl/iuKe8ESpYgJM\nrmlsbMKnn1ahvLwSn35ahcbGJtshhV46E6BjsQx6YJ2dwLFjwIoVtiMRUZkGHbQEWKnwnZuzZ4Gh\nQ/0/hTtWWZm0LIQ9GaurA0pKpOTbtpwcGYZ1/LjtSPxr717g/fflpnM6cnLkRuilS2biov7xujY8\nmACTKxobm7Bx41f49tsvUFtbhW+//QIbN37FNwsX3bkjq00FBem/FhPggZ0+DUydKlOz/SCsvaax\nXrwAjhxJfVqqLWE7N87qr9+ncMfKzQXmzQv/dHu/rcyzD3hgJsqfHSyDdh+va8OFCTC5YuvWr9HQ\nUAUg5/VXctDQUIWtW7+2GFW4nTkjH4ImLkyXLpVpotxbMD6/9P861qyRu//37tmOxD11dVJSPGqU\n7UiSs2GDxP78ue1IzPBbkpWoKPQB++3csA94YCYTYA7Cch+va8OFCTC54ubNHvS+SThy0Noakb0o\nLDDR/+vIygLWrpXtQ+htfun/dQwdCpSXh3s7pKCVPztyc4HFi2V6ddA9fSql/+XltiNJXtj7gFtb\n5abl++/bjqTX6tWSAIdtCJwJd+7I+Vq61MzrcQXYfbyuDRcmwOSK/PwMAO19vtqOSZP4T84tJhNg\ngGXQ/dHafwkwEL5S276CmgAD4Tk31dXS957T9xowAFauBM6fBx4/th2JO3bsADZutL8tW6yCAulv\nvXLFdiT+U1Mj7RymzhcTYPfxujZceNbIFdu2fYaSkkr0vlm0o6SkEtu2fWYtprAzNQDLwQQ4vpYW\nGYJVXGw7kjdt2SJ7gPaE8Gb0o0dS4u2XoWPJCksC7LcS22RkZ8tNqzCsxMfj13PDMuj4TJY/A0Bh\nIfDkCfDwobnXpDfxujZcmACTK4qKCvFP//Q5MjO/xKhRlaio+BK7d3+OoqJC26GFUmenJAhz55p7\nzTlzZPBQY6O51wwDZ/XXb0OApkwBxo+XEtWw2bNHfuZDh9qOJDULF0oPcJBXwrQO3v6/fYW1D7ir\nS/5/+WH7o744CCs+0wlwRobMSOAqsHuKigrxy1/Kde3o0ZVYu5bXtUHmo2IZChulCjFtWiV+7deA\nMWOAoiLbEYXX5cvA5MlmSxOVAioq5IP6Rz8y97pB57cBWLGcLXdKS21HYlaQy5+BN7dDmj7ddjSp\nOX9eLrIYyhY/AAAgAElEQVRnzbIdSeo2bAA+/th2FOYdOiRT6SdOtB3J21atAv7bf7Mdhb9cuyZb\ncs2ZY/Z1nTLosjKzr0u9Hj8uxPz5lVi5Urb54nVtcHEFmFzT1CRlOe+/L9uXkHtM9/86WAb9Nj/2\n/zrCUmrbV9ATYCD45yaI2x/1tXAhcP8+cOOG7UjM8mv5MyCfSy0tLM2NVV0tN5dN/y5xErT7jhyR\na9rCQrnGpeBiAkyuuX5d7ko7CTAnQbrHzQS4pobnztHWJqXmS5bYjiS+Dz6QlboHD2xHYk5zswwu\nmj/fdiTp2bgROHBA2gqCyM9JVqIyMsJ5U8/P5yYrC1i+HDh82HYk/mG6/NnBQVjucxLgqVPlGpeC\niwkwucZZAZ4yRe508m6Ze0wPwHIUFgLvvAOcPWv+tYPoyBHZ0iY723Yk8WVnS/lbmLZDclZLMgL+\naTV6NLBoEbB3r+1IkvfsGVBfL+ch6MLWB3zrllyIr1xpO5L+sQ+4V0+P3FR2IwGeNw84dw7o7jb/\n2iS4AhweAb+kID9zVoCVYhm029xaAQbCuWKSKj/3/zqCXmrbVxjKnx1OH3DQ1NRIX/nIkbYjSZ+z\nH3BYqlp27pT/T37a/qgvToLudfYsMGqUJFCmjRoFTJgAXL1q/rUJuHdPWihmzeIKcBgwASbXOCvA\nABNgNz14ICs0U6e68/pMgHv5uf/XsXlzeLZD0lr+7YUlAQ7qzQk/l9gmq7hY9qY9f952JGYE4dys\nWCHT6Ts7bUdin1vlzw6WQbunvl7K+TMyZMeFtjagve+2wBQYTIDJNUyAvXHmjPRHujWcprwc2L9f\nttqIsp4e6WPzc6khIFMp330XOHHCdiTpO3dOVh3durnjtUWLgKdPgYYG25EkLgzbH/W1YUM4bup1\ndQG7d/tz+6NYo0fL7/Dp07Yjsc/tBJiDsNzjlD8DkgRPniwzKiiYmACTKzo6ZOqjsy3D8uXAqVO8\nA+wGN8ufASAvTy5ejh517xhBcO6c3PUdP952JIML6kpjX9995+7FotcyMoJXBn3xotz8Mb1li01h\n6QM+ckQuwvPzbUcyOPYBy/XP/v1yU9ktXAF2T2wCDLAMOuiYAJMrmpuBggIgM1P+PmqUvFmcOWM1\nrFByawBWLJZBB6P/17Fli6zaBV2Y+n8dQbs5EYbtj/qqqJBhZEG/IRuE8mcH+4DlJnJRkdxUdgsT\nYHf09EgJdGwCzEFYwcYEmFwRW/7sYBm0O9xeAQaYAAPB6P91rF0rN5uCvPemF6slNmzcCOzbJ1Uy\nQRCkJCtReXnSCxz0qpYglaY7K8BhGT6WCrfLnwH5d33vHvDkibvHiZqrV4HcXBky5mACHGxMgMkV\nzgToWEyAzevulmEubu+RunatDDF5/tzd4/hZkFaAhw2Tc7Z7t+1IUldfD0ybBowbZzsSs8aMkRtW\n+/bZjmRwbW3S9x6mMnRH0PuA79yRi/KgvCcVF8tNrZYW25HY40UCnJkJzJ3LajvT+pY/AyyBDjom\nwOQKrgB74+pV4L33ZK9eN40cKcM1otrDdeeOTNuePdt2JIkLWqltX2Hr/40VlD7gPXuAZcvcf3+x\nIeh9wDt3yv+HIUNsR5IYpaLdB/z8udxEXrvW/WNxEJZ58RJgrgAHGxNgckW8FeB58+Tu7+PHNiIK\nJy/Knx1RLoOuq5PpzxkBesfcvFlKJIO6HVIY+38dQbk5EcbyZ8cHHwDHj8sqdxBt3y6/40ES5T7g\nAwdkCrwXe2mzD9g8rgCHT4Au5yhI4q0AZ2UBS5YEv+/KT7wYgOWoqIhuAhyk/l9HSYkMnzt1ynYk\nyWtrA06eBNassR2JO5YsAR49AhobbUfSP63DnQDn5Mjq9v79tiNJXnc3sGtX8M5NlFeAvSh/djAB\nNqujQ1rNlix58+uTJkll2MuXduKi9DABJlfES4ABlkGb5uUK8IoVsiXKo0feHM9PgtT/Gyuo06D3\n7QNKS4ERI2xH4o6MDNm71c+rwJcvS8/mvHm2I3FPUPuA6+vl4rugwHYkyVmyBLh0Kbir7unwMgGe\nP196gINa/eM3J08Cs2YBw4e/+fXMTPk9jHJfe5AxASbjOjuB27fjfzgzATbr+++l38cL2dmSBNbW\nenM8v+jokJX20lLbkSQvKKW2fYW5/9fh93MTxu2P+gpqH3CQpj/Hys4GFi+O3jXAw4dyQ2nFCm+O\n9+678sfPFSZBEq/82cEy6OBiAkzG3bghg5niDedwEuAob4VgypMnwP37Ml3TK1HsAz5+XIZf5eTY\njiR569ZJ8h60vvsw9/86PvxQ9qL163ZIYS5/dixfLhevd+/ajiQ5QT43UewDrq2V/99Dh3p3TA7C\nMmegBJiDsIKLCTAZF28AlqOgQHqBeccsfWfOSHmil4OZopgAB7H/1zF8uPTRBmk7pDt3pKRs6VLb\nkbhr7FjZruTAAduRvO35c0lSwr4Kn5UlN4lqamxHkrh792Q1MajvSVHsA/ay/NnBPmBzuAIcTkyA\nybj++n8BKadjGbQZXvb/OhYtktWS1lZvj2tTkBNgwP+ltn3V1ABlZZKchJ1ft0Pas0f6NXNzbUfi\nvqD1Ae/cCZSXe7uaaNKqVbK3dHe37Ui8U1PDBDio7t2TuSczZsT/PleAg4sJMBk3UAIMMAE2xcsJ\n0I7MTElOgrRikg6tgzsAy+FshxSUtoMo9P86/HpzIsgltslav14qJILy+xHE7Y9i5eUB48fLVN0o\nuHlTbhovWuTtcZkAm3HkiLRK9FdpxwQ4uJgAk3EDlUADTIBN8XIAVqwolUFfuSKTiIM2bTXW9Ony\n/+H0aduRDE5rSUbC3v/rWLZMVhj8dgEV1CFLqZg9G3j1Crh2zXYkg+vulhXgoJ+bKJVB19TIir3X\ne8hPny7JdxQnbps0UPkzwBLoIGMCTMYNtgK8bJlcjL965V1MYdPTA5w9K9sdeM1JgIOyYpKOoK/+\nOoKyHdLVq/Jve+ZM25F4w4/bIV25Arx44X11iS1KyQ2XIEyDPn4cmDABmDLFdiTpidIgLBv9v4C0\nkMyeLdcJlLrBEuCCAuDWLaCry7uYyAwmwGTcYCvA77wjk4tZnpO6xkZgzBhg9Gjvjz1jhiQpV696\nf2yvBb3/1+HXUtu+qqslGQnz1jt9+e3cOCW2UToHQekDDktpelRWgLW2lwADnASdrp4e4OjRgRPg\noUPlptSNG97FRWYwASajurul7Gby5IEfxzLo9NgYgOVQKjpl0GFZAS4rA06ckK2z/CxK/b+OTZtk\nm5SXL21HIsKSZCVj/XopVe3psR3JwMJybmbNksFCt2/bjsRdV65IEjx9up3jsw84PZcvy37KeXkD\nP459wMHEBJiMunVLViaHDRv4cUyA02NjAFasKCTADx/KdjxhKAUdMUJWXfxc5tndbWdaqm3jxklC\n4IftkF68kDii0oPtyM+Xi9xTp2xH0r/794ELF2Rbs6DLyABWrgx/GbSz+murmoIJcHoGK392MAEO\nJibAZNRg5c8OJsDpsbkCDMiH+p49/l8xScfhwzL9MSzb8fh1yx3HyZPAxInApEm2I/GeX3q0a2uB\nxYvttFbY5vc+4F27ZM/i7GzbkZgRhT5gm+XPgMwI+f77aMzrcEOiCTAHYQUTE2AyarABWI65c2Uv\n2UeP3I8pjGxNgHbk58vKVRAmC6cqLP2/DifJ8uvFkNP/G0V+uTkR9C120uH3PuCwlD87wt4H3NMj\nN4ltJsB5eVL909xsL4Yg4wpwuDEBJqOamhJbAc7MBJYuBerrXQ8pdNrapNR82jS7cYS9DDos/b+O\nGTNkYIdfp4JGsf/XsXy59EO2tNiNI0rbH/W1bp38znd02I7kbT094dj+KNby5XIj148/bxNOnZIE\nND/fbhwchJWaFy+AixelImYwU6cyAQ4iJsBk1PXria0AAyyDTtXZs7K9ge3S3DAnwJ2dwLFjwIoV\ntiMxRyn/TRx2vHghJefr1tmOxI7MTODDD+2em4YG4NkzYNEiezHYNHq0VCYdOmQ7kredOAGMHZvY\nzeWgyMkB5syR99kwsl3+7GAfcGpOnJB/n4PNswHkmpcl0MHDBJiMSrQEGmACnCrbA7AcZWVSwhbG\n/ZxPn5aLzbD1Qvo1Aa6rk3613Fzbkdhj+9xEcfujvvzaBxy28mdHmPuAmQAHW6Llz4Dsy93SEu6Z\nKGHEBJiMSnQIFtCbAPu1J9GvbA/AcowZI2W1YbyJEbb+X0d5uay4PH1qO5I3Rbn/17Fpk0zBtnVD\nKaxJVjL82gcc1nMT1j7gV68ksS8rsx2JXCuEeVaHW5JJgIcPl+2Sbt1yNyYyiwkwGaO1DFtIdAU4\nP18mWl675m5cYWN7AFassJZBh63/15GTI2XdfjtnUe7/dYwfLzeUbCQEHR3A/v3Axo3eH9tPVq4E\nzp0DHj+2HUmvhw+l7eWDD2xHYp6zAhy2m+CHD8vv8pgxtiMBZs6Uyrznz21HEixHjgClpYk/noOw\ngocJMBlz965cYOfkJP4clkEnR2tJgOfPtx2JCGMCrHV4V4AB+6W2fT16JMNGwtRvnSpb2yHt3Ssr\nRe++6/2x/SQ7W5Ky2lrbkfTatQtYuzaxXsSgKSiQKcVXrtiOxCy/lD8DMvhw5kzg/HnbkQTHnTvA\nkyfA9OmJP4cJcPAwASZjkil/djABTk5zMzBypGxB5Adr1si0y7Y225GY09IiQ7CKi21H4g6/bYe0\nZ4/cbAjL/qbpsLUdUpS3P+rLb33AYS1/doSxD9hPCTDAPuBkOau/GUlkSNwLOHiYAJMxyQzAcjAB\nTo5fBmA5RoyQ7az277cdiTnO6m9YhwHNmiUf7H5ZEWD/b6/33wdu3gRu3PD2uGFPspLhpz7gMG5/\n1FfY+oDb2uSm8Jo1tiPpxQQ4Ocn0/zq4Ahw8TIDJmFRWgJctkzfmly/diCh8/DIAK1bYyqDD2v/r\n8Nt2SOz/7ZWZKX24XpZBX7smPa+J7HcZBQsXAvfueX8TIp5Tp2QyelirUYDwrQDv2yfXNSNG2I6k\nFxPg5KSSAHMFOHiYAJMxqawAjxwJTJvGKYWJ8tMALEfYEuAw9/86/JIANzfLkB+/3dSxyetzs2OH\nlD8nU+4XZhkZQEWFP97TorAyv2CBtJ08fGg7EjP8Vv4M9E6C9kvbi5/19ABHjyY3AAvgCnAQ8SOP\njEklAQbkTlt9vfl4wsiPK8DLl8sq0v37tiNJX1sbcOkSsGSJ7UjcVVEhv3PPntmNw7lYZPLVa/Nm\n+bl0dnpzvCgkWcnySx9wFM5NVpZ8hhw+bDsSM/yYAE+YINUlra22I/G/ixdlxkpeXnLPcxJg3mQI\nDl52kDGplEAD7ANO1PPn8gY7c6btSN40ZIhs0bFnj+1I0nfkiJSChn0g08iRcoe7psZuHOz/fduE\nCUBJiTdloR0dMgH6ww/dP1aQOH3ANi9mHz2SVbu1a+3F4JWw9AHfuwc0NkpC7ydKSeUYy6AHl0r5\nMwC8847sB3zvnvmYyB1MgMkIrdNbAWYCPLhz5yT5HTLEdiRvC0sZ9MGD4e7/jWVryx2H1uz/7Y9X\nZdD79wPz5vljv1I/KS6Wm2AXLtiLYfduubE4fLi9GLyyalU4EuA9e+Sc+fEzmn3AiUk1AQZYBh00\nTIDJiIcPpcRm9OjknztnDnD7dnh6gNzix/Jnh1965tJVVxf+/l+Hk2TZWuU6d072DC8qsnN8P/Pq\n5kQUSmxTZbsMeseO6JyblSuBY8e8K/t3ix/Lnx1MgBOTTgLMQVjBYiUBVkptVkpdVEpdVkr9SZzv\n/2el1Eml1Aml1CWl1MOY7/326+ddUkr9a28jp/6kuvoLSOK8dCn7gAfjxwFYjvnzZZJsc7PtSFLX\n3S19aFFZAZ4zRwZ+XLxo5/jffcfy5/68/778Lrnds8f9f/tnMwHWOloJsDPp+tQp25Gkx+8JMIeN\nDuz5c+DyZWDRotSezxXgYPE8AVZKZQD4GYBNAOYC+FgpNSv2MVrrf6+1Xqy1XgLgKwD/+Pq57wL4\nCwDLAbwPoFIpletl/BRfOgkwwDLoRPh5BdhPk1NTdf48MH588sMvgsr2dkjs/+1fVpb8bNxcBb5+\nHXjwQG4+0tsqKmRLm64u7499+rRUR0yb5v2xbQn6dkhNTcDTp9JS4EezZwMNDdxyciDHjwNz5wLD\nhqX2fCbAwWJjBbgUwBWtdZPWuhPALwD8cIDHfwzgf77+700Admmtn2itHwPYBYD3r30g1QFYDibA\nA9Pa3wkwEPw+4Chsf9SXrQS4s1OSi/Jy748dFG6fmx07gE2bOIG7P3l58pl29Kj3x45iaXrQB2FV\nV8tNE7/+Pg0bJsP1bPa1+119ferlzwBLoIPGxq9qPoCWmL/feP21tyilpgCYCsCZVdr3uTf7ey55\ny8QKcH09R8j3p7VVVoUmTLAdSf+cBDio57CuLjrlz46KCin7bmvz9rj19XIxNm6ct8cNks2bpQTX\nrRXIKCZZybJVBh3F0nRnEFZQPz/8XP7sYB/wwNLp/wW4Ahw0WRaOqeJ8rb+3vI8A/IPWv3pLTOa5\n+PGPf/yr/y4rK0NZWVliEVLSmppk+mGqJk2SaZcNDdEq+0rU6dP+Xv0F3pycOmeO7WiSd/Ag8Kd/\najsKb40aBSxbJtNLf/3XvTsu+38HN3GirCgcOpTee2s8L18CtbXA3/6t2dcNmw0bgJ/8BNi61btj\nPn4MnDwJRO1ypbhY5jA0N6d3M90GrWVLuW3bbEcyMCbAAztyBPjLv0z9+VOn9u4FrOJlK2RMbW0t\namtr03oNGwnwDQBTYv5eAKC/UR8fAfi9Ps8t6/PcfncfjU2AyV3Xr6f/oeWUQTMBfpufB2A5lOpd\nBQ5aAnz7tuy7OWvW4I8NG2fisJcJcHU18B//o3fHCyqnDNp0AnzggPQEcgV+YB98APyrfwW0t0tP\nrheqq6UceMQIb47nF0r19gEHLQE+f15KjIuLbUcysAULgJ/+1HYU/nT7tlRCpXP9OXq0JL+PHwPv\nvmsuNnpb30XNqqqqpF/DRgn0UQDTlFKFSqmhkCT3n/s+SCk1E8BorfXhmC/vBLBRKZX7eiDWxtdf\nI8vSLYEG2Ac8EL/3/zqC2gdcVydbcfi1f8tNXm+H1NYGnDgBrFnjzfGCzK0+YJY/JyYnB1iyRPZL\n9kqUz01Q+4CDUP4McAV4IEeOAKWl6a3cKsUy6CDx/HJPa90N4PchA6zOAfiF1vqCUqpKKfWDmId+\nBBmQFfvcRwC2ATgG4AiAqtfDsMiip0+lpC7d1QQmwP0LSgJcUQHs3Wtncmo6otj/65g3D3j1SrZ/\n8MK+fcDy5dFb4UrFihVSXXPrltnXjWKPaaq87AOO2vZHfQV1EnRQEuD8fPlsvnPHdiT+k27/r4OD\nsILDynqH1nqH1nqm1nq61vqvX3+tUmv9y5jHVGmt/0Oc5379+nkztNZ/52XcFJ+z+ptuz8PSpcDZ\nsxzT39fLl9IbPXu27UgG99578iF74oTtSJITxQnQDq+3Q2L/b+KGDJEL650G65yam4G7d6X3mwbn\nZQJ85ozMUZg+3Zvj+c2SJXIj7tkz25EkrqtLbvpWVNiOZHBKcRW4P6YSYK4AB0cEC/7INBPlz4CU\nm02fDpw6lf5rhcn58zIxNzvbdiSJCVoZdEeHXBAsX247Ens2b/YuAeb+v8kxfXNixw7gww+BzExz\nrxlmy5fLis69e+4fy1mZj+oAnexsYNEimRIfFMePA5Mn+3uHhlhMgN/W3Q0cOyYl0OliAhwcTIAp\nbenuARyLZdBvC0r5syNoCfCxYzK0y6shN360YYOUHj5/7u5x7tyRFcilS909Tphs3gzs3m2urSDK\nPaapyMoC1q6VKb9u47kJXh9wUMqfHUyA33bxIjB+PDB2bPqvxRLo4Ah1Avzpp1VobOStGLeZWgEG\nmADHE4QJ0LHWrZNz2NFhO5LERLn/15GbK+WHae4qMKiaGvn3kWVj/4GAys+XFSYT74uvXsmWV5s2\npf9aUeJFGfTTp7KaWF7u7nH8Lmh9wDU1wUuAT5+2HYW/mCp/BrgC7LXGxiZ8+mnyE6CBkCfA3377\nBTZu/IpJsMu4AuyuoK0A5+YCc+fK/qVBEOX+31he9AGz/zc1ps7NwYPAjBlAXl76rxUlXiTA1dUy\niT7KlSiAJMCHD0tZqt91dMj1yrp1tiNJ3Ny5wKVLQGen7Uj8w2QCzBVg7zQ2NmHjxq/w7bdfpPT8\nUCfAQA4aGqqwdevXtgMJNZMrwLNmSa/V/ftmXi8MgpYAA8Epg9aaK8AOtxNgrZkAp8rUuWGJbWpm\nz5ZhhNeuuXcMnhuRlyflqOfP245kcHV1klCOGmU7ksSNGCHXa5cu2Y7EP0wmwHl5wIsXst0fuWvr\n1q/R0FAFILW7hiFPgAEgB62tPbaDCDWTCXBmpkwnDdIQDDfdvi29f5Mm2Y4kOUFJgK9ckQuCggLb\nkdi3YIF8cF+54s7rNzTIv+WZM915/TBbtUp+fuluX8Ltj1KjlLynubUKrDUT4FhB6QMOWv+vg33A\nvdrb5TPPVJuZUsCUKSyD9sLNmz1INfkFIpEAt2PSpAj837Tk+XPgyRPZ/sYUlkH3clZ/gzYVdNUq\n2dLq6VPbkQyMq7+9lHJ3GrSz+hu0f8t+MGSIbLOSznZIN24Ara1mJp1GkZtl0OfOSV88bw6JoPQB\nMwEOvuPHgfnzze6ywTJob+TnZwBoT/n5Ic8M21FSUolt2z6zHUhoNTfLgJYMg/+SmAD3CtoALMew\nYXIe9+61HcnA2P/7Ji8SYEpNumXQ3P4oPevXy8CjHhcKyqK+/VFfQVgBfvJEblwE8QYqB2H1Mln+\n7OAgLG9s2/YZJkyoRKpJcKgT4E8++RK7d3+OoiJD9bn0FpMDsBzvvy8l0Fqbfd0gCmL/ryMIZdBc\nAX7Txo3AgQNSCm1Sd7dMHw7iaolfbNkC7NqV+nAgltimp6BA+vvcSBx4bt40axbw6JG0APnV3r1y\nrTJsmO1IkscV4F5uJMBcAfZGUVEhPv74c8yd+2VKzw91AvzNN5VMfl1msv/X8d57wDvvuNeLGCRM\ngN3z8CHQ0hLcn68bRo8GFi0yv3J/6hQwYULwetn9pKBAfn6pzEfo7JTfRW5/lB43+oCfPQOOHpUS\ndxIZGTIR289l0EEtfwbkmq2tjcNGAa4AB92DB4X4oz+qTOm5oU6A21MvDacEuZEAAyyDBmTPzkuX\ngDlzbEeSmqVLpe8w3cE9bjl0CFi+nHvS9uXGNGiWP5uR6rmpqwOmTZObEJQ6N/qAa2rk827kSLOv\nG3SrVvm7DDrICbBScuP3zBnbkdjV2ipbWRUXm31dJsDeuXIFmD49teeGOgG+etV2BOHnRgk0wAQY\nkOS3sFCmFAdRZqbsj1hTYzuS+Orq2P8bDxNg/0r13LDE1oyyMnnfePnS3Gvy3MS3erV/V4Bv3wZu\n3pSbvEHFMmi5xiwtNd97zxJo7zAB7gdLaN3HFWD3BHUAViw/l0FzAFZ8ixZJWWZDg5nX6+gADh+W\nmyGUntWrgcuXgbt3k3sekywzRo+WfV8PHTLzetz+qH+lpfIZaHoegQk1NfJ+FuSBchyE5U75MwBM\nnCg97B0d5l+bej16JJWS48en9vxQJ8BcAXZfU5M7K8BLlsiExSi/gQS5/9fh1wS4sxM4dgxYscJ2\nJP6jlPSKmloFrqsD5s0DcnPNvF6UDR0KlJfLMKxEtbZKrzu3PzLDZB/whQuSBM+ebeb1wmTECGn/\nOX7cdiRvC3L5s4MrwO4lwBkZsjtKc7P516ZeV69Ka0+qK/ihToC5AuyuV6+Ae/fcGWwzYoTsiXjy\npPnXDoowJMCzZ0u54LVrtiN506lT0vfDpCw+k2XQLH82K9lzs2OHTPdmr7sZJvuAndVfbn8Unx+3\nQ9I6HAnw/PnA+fNAV5ftSOzo7pabK8uXu/P6hYUsg3ZbOuXPABNgSkNLi5R6uHVhFfUy6NOng58A\nKyXTTf22Csztjwa2cSOwf7+ZCgwmwGZt2QLs3Jn4dkgssTVr5UqpTnr8OP3X2rGD52Ygq1b5rw/4\n2jW5+R/0VfuRI2XxIqqVkufPy44jY8a48/ochOU+JsADYALsLrcGYDmc/YCj6N494PlzYMoU25Gk\nz49l0Oz/HdiYMbJCsG9feq/z6BFw8SJLzU2aMkWmOR87Nvhju7rkBsTmze7HFRXDhklilu5WYW1t\n0hsf9JVENzkJsNa2I+lVXS03dcOwah/lMmi3yp8dHITlPibAA3jyRD5kyB1uDcByRHkF+MwZ+XAK\nw4dsRYUMDenpsR2J0FoSYK4AD8xEGXRtrfycs7ONhESvJXpuDh0CiopkpYPMMdEHvGePlF++846Z\nmMKooEDaofy0mBGG8mdHlAdhuZ0AcwXYfU4PcKpCnQAXF0e3vMMLbg3AcsyaJRu137vn3jH8Kgz9\nv47CQmDUKODsWduRiOZmKR81vfdf2JhIgFn+7I5Ezw3Ln91hog+Y5yYxfuoD7umRm7lhSoC5AuyO\nqVOZALuNK8ADmD7dX3cOw+b6dXdXgDMy5A55FMugw5QAA/4qg3b6f8Owuu6mxYulhLmxMfXXYALs\njjVrZILwYDcHmWS5Y9Ei+dnfvJna853tj1iaPjg/9QGfOSNbYYWhNQmQbRajmAC3tck2f25uM8kh\nWO56+FBafPLyUn8NJsCUMrdLoIHolkGHYQBWLD8lwOz/TUxGRnrbIbW0yIdUmP4d+0V2NlBWBuze\n3f9jbt2SCzD2X5uXkZHecL9Ll2QrtnnzzMYVRn5aAQ5T+TMg7REPH5oZ6BYkx47J59LQoe4dIz8f\nuHNHBqaRec7qbzoLGUyAKWVuD8ECopkAd3XJ6k6YLo7Ky2WqcGen7Ug4AToZW7bIpNpUOMNiMkL9\nKWPPYGXQO3fK6ju3P3JHOn3AzvRnVqEMbv584MYNSdRsC1sCnJEh1xlnztiOxFtulz8DwJAhskvK\njSJkei4AACAASURBVBvuHieq0i1/BiKQALMH2B1dXUBrq2z27SZnErRfBih54coVuXs4cqTtSMzJ\ny5O7zUeP2o3j2TPg8mVgyRK7cQTFhx/KtNuXL5N/Lsuf3eVsh9TfeyPLn93l9AGnMqGY5yZxWVlA\naakMdLOpsxM4cEBu5oZJFPuAvUiAAQ7CclO6A7CAkCfA06ZxBdgtra2S1LhZQgLIdh+5udE6j2Hr\n/3X4oQy6vl769ziVODFjxwJz5sjqfTK0lnPNBNg9U6fK+Tl+/O3vdXVJeTR7TN1TXCzvIxcuJPe8\n58+lCoW/G4nzQx9wfb2c83Hj7MZhWhQnQTMBDj6uAA9i0iRZ8Xn61HYk4eNF+bMjamXQTIDdw/7f\n5KUyDfr8edm+pKjInZhI9HdujhyRQT2TJnkfU1QoJUlssu9pe/YAS5fKZHxKjB/6gMNW/uyI2grw\njRvSl+vFZxP3AnYPE+BBZGQAJSUsg3aDFwOwHEyAw2HtWhk+8fy5vRjY/5u8VBLg774L58Wi3/R3\nblhi641U+oB5bpK3YoV8dticIRHmBPjs2ei0mTmrv17033MF2B1aMwFOCPuA3cEVYPeEbQK0Y+RI\nKT8+cMDO8bu7gcOHmQAna+lS2fIlmQ9y9v96Y+1a4Nw54MGDN7/OJMsbFRXSI9/Vldjjuf1RanJz\npfz41Ck7x29vl1aDDz6wc3w35eZKWfe1a7Yj8UZ9vTflzwBXgN3y8KG8l44dm97rhD4BZh+wO7xc\nAV6yREoqX7zw5ng2PXokf8JaOmqzDPr8eWD8+PT2jYsiZzukRKdBd3YC+/ZJckDuys4G1q0Ddu3q\n/drt27LH5cqV9uKKivHj5SI30eF+V64AHR3hvMHpNpt9wAcOyL7oYRpMGStKZdBe9f8CXAF2i4kt\nkIAIJMDcCskdXibAw4cDs2cDJ096czybzpyRbR/CunWMzQSY/b+pS6YM+uhRaT0J27AYv9q8+c2b\nE7t2ye/ZkCH2YoqSZPqAd+yQ88Xtj5Jnsw84rOXPjqgMwurulpX80lJvjjd5MnDzphyXzDFR/gww\nAaYUeVkCDUSnDDqs/b+OFStkGyIbezqy/zd1mzbJ8J5XrwZ/LPt/veXs1ez08LH82VvJ9AHz3KRu\n1SpJgFPZdipdUUiAo7ACfO6cbDE5erQ3xxs2TMp0W1u9OV5UMAFOEBNg83p6gJYWmTLqFSbA4TB0\nqFzI1NZ6f2yuAKdu3Dhg1qzE+rfZ/+ut4mK5oDt5UlYadu1ij6mXPvhABjS1tw/8uBcv5PeHvxup\nKS6Wf9/Nzd4e9+FDuYb0qmzWhoULo5EAe1n+7GAZtHlMgBM0caJ8MD15YjuS8LhzRwYnjBjh3TGj\nkgCHdQBWLBtl0LdvS2/1rFneHjdMEimDbmsDTpwA1qzxJiYSzrmpr5cVjoIC2xFFx8iRMihusL2y\na2ulj9Sr1aewUap3FdhLe/bIjdOhQ709rpemTZPPyGfPbEfiLhsJ8NSpTIBNu3pV/s2mK/QJsFLy\ng+IkaHOuX/eu/9cxYwbw+DFw9663x/VSd7eU6MyfbzsSd9lIgOvqZChQWHurvbB58+AJ8P79wPLl\nQE6ONzGRcBJgltjakUgfMKc/p2/1au8HYYW9/BkAMjOBOXNkO6Qws7UCzEnQ5pjaAgmIQAIMsAza\nNC8HYDkyMuTCOsyrwNeuyYTi3Fzbkbhr0SLZVufmTe+OefAg+3/TtXy5rBK0tPT/GPb/2lFY2IT6\n+ip8+WUljh+vQmMjlxy8lEgfMG9OpM/GCnAUEmAg/IOwnj0DGhu9r7BjCbRZ9+9LPpDuFkgAE2BK\ngdcDsBxhL4MOe/+vIyMDKC/3dhW4ro79v+nKzAQ+/HDg7ZDY/+u9xsYm/OAHX6Gr6wu8eFGF6uov\nsHHjV0yCPbR8udzAvHcv/vevXpX2gEWLvI0rbJYskWs5r0p1b9yQPbYXLvTmeDaFfRDWsWNyHr2e\njs+9gM0ytfoLRCgBZgm0OTZWgAEmwGGyfj1QU+PNsV68kJ+tV1sfhNlAfcB378p7w7Jl3sYUdVu3\nfo2GhioATt15DhoaqrB169cWo4qWIUNkP+b+3tO4/ZEZ2dnSR+3VdUBNjdysjULrTNgHYdkofwa4\nAmyaqf5fICIJ8LRpXAE2qanJ3grw0aO9232ETRQGYDmcPmAvtrQ4flz6m7wc2hZWmzbJRWG87ZBq\naoCyMiAry/OwIu3mzR70Jr+OHLS2hvSN0qcG6gNm+bM5q1Z51wdcXQ1UVHhzLNvmzwfOnLGzzZQX\nbCbAzc3h/bl6jSvASWIJtFk2hmAB0h87Zgxw6ZL3x/ZClFaAnTcwL34vuf2ROePHy7mLdwHK/l87\n8vMzAPTdg6cdkyZF4uPdN/rrA+7okOFwGzd6H1MYrV7tTR+w1tHp/wWkp/Kdd8K5Wqm1vQQ4J0cm\nxd+54/2xw4gJcJLee08+hB4/th1J8GltrwQaCG8Z9NOn8gZpqrTD75Tybhp0XR0HYJkUbxq01sDu\n3ez/tWHbts9QUlKJ3iS4HSUlldi27TNrMUXRnDnSbnHt2ptf37tXVtfefddOXGGzcqVcA3R3u3uc\ny5flc8rUxXYQhLUP+MYN+fdi67qVZdDmMAFOErdCMuf+fenDGTXKzvHDmgCfPQvMnSuDhqLCiwRY\naybApsXrA25oALq6uM+yDUVFhdi9+3N88smXKC+vxCeffInduz9HUZGlq72IUkpuAPVdBWb5s1l5\necCECbJloJuc1d8o9W2HdRK0s/pr61xyEJYZJrdAAiKSAAMsgzbF5uovEN4EOErlz47164E9e9zt\n6b5yRXp/CwrcO0bUvP++bGEVu42VM/05SheLflJUVIhvvqlETU0VvvmmksmvJfES4B07mACb5kUf\ncJTKnx1hXQG2Vf7s4AqwGffuycBBU9U0kUmAOQjLDNsJ8OLF0gP8/Lm9GNwQpQFYjkmTpKf01Cn3\njsH+X/MyM6WfMXY7pCheLBL15Uy3d27qNTYCjx7J5xaZ43YfcHc3UFsbvfe0sE6CZgIcDiZXf4EI\nJcBcATbD1h7AjmHDpNfqxAl7MbghiivAgPtl0Cx/dkdsGXR3t1z0R+1ikaivggJg3LjeMtLt26Vn\nPgrb6HjJ7RXgU6fk5uykSe4dw49mzABaWsK1wNDVBZw8KXt128ISaDOYAKeICbAZtleAgfCVQff0\nyPYDTIDN4wqwOzZvlvPW2SkXixMmAPn5tqMisi+2DJr9v+6YNUtW1m/fduf1o1rRMmQIMHOm+/3V\nXjp7Fpg8GcjNtRcDV4DNYAKcounTOQTLBNsrwED4EuCmJnlzHjPGdiTeW7dO7uTH21c2XQ8fyvTH\n+fPNv3bUTZgAFBcDhw719v8SUW8C3NEhE6C5/ZF5GRkyDdqtVeCoJsBA+AZh2S5/BiQBvn6dewGn\n6+pVszulRCYBHj8eePlS7hpS6vyyAlxfbzcGk6Ja/gxI0j9jBnD4sPnXPnQIKC0FsrLMvzb1bocU\n5YtFor7KyiQx++47mew/dqztiMLJrT7gly/l/JWVmX/tIAjbICw/JMCjR8t1yMOHduMIOq4Ap8jZ\nz41l0OnxQwI8fXrvvrlhEMUBWLHcKoNm/6+7Fi5swn/9r1Worq7Et99WobGRNV5Ejx41ITu7Ch9/\nXIn2dv5euMWtPuDDh6XEOqr7NodtEJYfEmCAZdDpMr0FEhChBBhgApyux49l4I3tUl2lZKBBWMqg\no7wCDLiXALP/1z2NjU34sz/7Ck+ffoGenir8/d9/gY0bv+LFPkVaY2MTNm78Cg8efIG2tiqcOcPf\nC7eUlspn54sXZl836hUtzgpwGMp1nz6VpHPePNuRcBBWuu7ckSG4o0ebe83IJcDsA06ds/rrh70+\nw9QH/P33ctc1qtaskUFKbW3mXrOzEzh2DFixwtxrUq+tW7/GtWtVAHJefyUHDQ1V2Lr1a4tREdm1\ndevXaGjg74UXRoyQHSGOHzf7ulFPgMePB4YOfXOf96A6ehRYtEiGe9nGFeD0mF79BSKYAHMFOHVN\nTfYHYDnCkgC3t8ugphkzbEdiz4gRwLJlwL595l7z1CkZ0mRz8mOY3bzZg96LfEcOWlt7bIRD5Av8\nvfCW6T7gZ8+kJSnqlUNhGYTll/JnQK6dmQCnzvQALCBiCfC0aUyA03H9uv3+X0dpqdzd6wn4dcW5\nc9JvFPVBTabLoNn/6678/AwA7X2+2o5JkyL1kUL0Bv5eeMt0H/C+fdJeNWKEudcMorAMwvJTAuxM\ngqbUcAU4TVwBTo8fBmA58vKAceOAixdtR5KeqPf/OkwnwOz/dde2bZ+hpKQSvRf77SgpqcS2bZ9Z\ni4nINv5eeMtJgE31q0a9/NkRhkFYWvsvAeYKcOqYAKcpL0+GOD14YDuSYPLDHsCxwlAGHfUJ0I7l\ny4HGRuDevfRfS2tJgLkC7J6iokLs3v05PvnkS5SXV+KTT77E7t2fo6jIJ3fIiCzg74W3Cgpktfby\nZTOvxwRYhGEFuLlZ/nfKFLtxODgEKz1uJMCRKrx0tkK6epV786XCTyvAQG8C/G/+je1IUvf998AP\nf2g7CvuGDAE++ADYswf4jd9I77Wam+VGV3GxmdgovqKiQnzzTaXtMIh8hb8X3lq9WlaBZ85M73Xu\n3pUEZflyI2EF2qxZwLVrQEeHTN4NImf11w9DWwHJOV69ksnUo0bZjiZYtGYPsBHsA06dn4ZgAcFf\nAdaaE6BjmSqDdlZ//fLBR0RE7li1yswgrD17gLVrOY8DALKz5Vr5wgXbkaTOT+XPgFyPcBBWam7f\nlkoP00NNI5cAsw84Ne3tsk3N+PG2I+m1aJGUPj1/bjuS1Ny4IXdX8/JsR+IPphLgujr2/xIRRYGz\nApwulj+/KeiToP2WAAMchJUqN8qfASbAlKCmJuml8NOq2rBhwNy55vcB9AoHYL1p3rzejevTwf5f\nIqJomD9fbiY/fJje6zABflOQ+4A7O2UrRL+Vs3MQVmqYABvi9ABTcvw2AMsR5DJoDsB6U0YGUFGR\n3irws2fyZrlkibm4iIjIn7KyZFvEQ4dSf43r16XCbd48Y2EFXpAnQZ85I8mm33ptOQgrNUyADXFW\ngE2NzY8Kvw3AcgQ5AeYK8NvSLYM+cgRYvFh6mIiIKPxWr06vD7i6Wm6++qnCzTanBDqI18p+LH8G\nuAKcKjcGYAERTIDHjpVfaG6FlBwmwOZxANbb1q8HampS/9Ctq2P5MxFRlDj7AaeK5c9vmzhRPofv\n3LEdSfKYAIcLV4ANcbZCYh9wcvxaAj1tmgzounXLdiTJ6eiQfW9nzbIdib8UF0tv9/nzqT3/4EEO\nwCIiipIVK4Bjx6T3M1lay01XJsBvUiq4g7Dq6/2ZALMEOnnOFkhMgA1hApw8v64AKyX9P0FbBT5/\nXv4dDh1qOxL/SbUMurtb/h2sXGk+JiIi8qfcXLl5eupU8s89d062WCkqMh9X0AVxENaTJ0BLiz/7\nuSdMkEGfQd25xIbWVuCdd+SPaVYSYKXUZqXURaXUZaXUn/TzmN9QSp1TSp1RSn0T8/VupdQJpdRJ\npdQ/pXJ8DsJKnl9XgIFglkFzAFb/Uk2Az52TDxhuK0VEFC2p9gGz/Ll/QRyEdfSozAHx437OGRmy\nmwrLoBN35Yo7/b+AhQRYKZUB4GcANgGYC+BjpdSsPo+ZBuBPAKzUWs8H8H/EfLtda71Ea71Ya/0v\nUolh2jSuACejo0O2GJg40XYk8QUxAeYArP5VVAB79wJdXck9j/2/RETRlGofMBPg/gVxBdiv/b8O\n9gEnx63yZ8DOCnApgCta6yatdSeAXwD4YZ/H/C6A/0tr/RQAtNb3Y76X9pw+lkAnp6UFyM8HMjNt\nRxJfaan0/3R3244kcRyA1b8JE4DJk5Pf35n9v0RE0eSsACczQLGrC9i3T2660tvmzAEuXwZevbId\nSeKYAIeLWwOwADsJcD6Alpi/33j9tVgzAMxUSh1QStUppTbFfC9bKVX/+ut9E+eEcCuk5Pi5/BmQ\nyd4TJgAXLtiOJDFaswR6MKmUQXMFmIgomoqK5CZ4c3Pizzl2TEpSx493L64gGz5crv0uXrQdSWK0\n9n8CzEFYyQlbAhxvBbdvKpoFYBqAtQB+C8DfKKWcLa2naK1LAXwC4L8opZIeXTB2rKxm3r8/+GPJ\nvwOwYgWpDPr2bRne9d57tiPxr2QT4Nu3gUePOFWbiCiKlEq+D5jlz4MLUhl0U5Nc2xcU2I6kf1wB\nTo6bCbCNNvEbAKbE/L0AQGucxxzSWvcAuK6UugRgOoDjWuvbAKC1blRK1QJYDKAx3oF+/OMf/+q/\ny8rKUFZW9qu/O33AHJgzuKYmf68AA70J8O/8ju1IBues/qq0i/nDa9064OOPgRcv5C70YOrqZPpz\nRiTn2hMRkdMH/Fu/ldjjq6uBP/xDd2MKuiANwnJWf/18bTV1KhPgRPX0AA0NQEnJ29+rra1FbW1t\nWq9vIwE+CmCaUqoQwC0AHwH4uM9j/un11/5OKTUOkvxeU0qNBvBca/3q9ddXAfg/+ztQbALcl1MG\nzZLJwV2/7v+7pO+/D/zN39iOIjEcgDW4UaOA+fOBQ4cS689i/y8RUbStXg18883gjwPk5mp9vdxs\npf4tWAD87Ge2o0iM38ufAVkBZgl0YlpbZYuzeFsg9V3UrKqqSvr1PV8v0Vp3A/h9ALsAnAPwC631\nBaVUlVLqB68fsxPAA6XUOQDVAL7QWj8CMBvAMaXUyddf/4nWOqXuBA7CSlwQSqAXLpRpcW1ttiMZ\nHAdgJSaZMmj2/xIRRdvixXJd9+zZ4I+tq5ObrKNGDf7YKAtSCXQQEuBJk4B794CXL21H4n9ulj8D\nlvYB1lrv0FrP1FpP11r/9euvVWqtfxnzmD/SWs/VWi/UWv/9668d0loveL0F0kKt9depxsAEOHF+\nH4IFANnZ8mGW7ORgG7gCnJiKisQS4Bcv5GdaWup+TERE5E/Z2ZIEJzIPhP2/iZk8GXj+XJI2P+vs\nlPayZctsRzKwrCzZVaWlZfDHRl0oE2A/mD5dVgxpYJ2dMmDIz0MFHEEYhPXqlfxSz5ljOxL/W7UK\nOHcOePJk4McdPy4/zxEjvImLiIj8KdH9gJkAJ0apYKwCf/+9TAKPVy7rNxyElZgrV2Rek1simwA7\nQ7C4FdLAbt6UacVDhtiOZHBBSIAvXJA36WHDbEfif8OGyTndu3fgx7H/l4iIgMQmQT9+DJw/L4MT\naXBBGIQVhPJnBwdhJebqVa4Au2LMGEnq7t61HYm/Xb/u//5fRxASYJY/JyeRPmD2/xIRESBJ7ZEj\nsidwf/buBVas4I3oRAVhBThICTAHYSWGJdAuYh/w4IIwAMtRXCyDBW7etB1J/zgAKzmDJcBaMwEm\nIiKRlwdMmCDtM/1h+XNymACbxRLowTlbILEE2iXsAx5cEAZgOZSSQUj19bYj6R9XgJOzdKnc0Lh9\nO/73L1+W3t8g9KgTEZH7Vq0auAyaCXBy5s6V9q2uLtuRxPfokWyZM3eu7UgSM3UqV4AHc+MG8O67\nQE6Oe8eIdALs9AFT/4K0Agz4vwyaCXByMjNln8aamvjfr6tj/y8REfVavbr/QVi3bkmytGSJtzEF\n2ciRMrn48mXbkcR39Kicz8xM25EkhivAg3O7/xeIeALMEujBNTUFZwUY8HcCfPcu0NHB1cpkDVQG\nffAgy5+JiKjXQCvANTVAWVlwkiW/8HMZdJDKnwHZWurWLf+uqPuB2/2/ABNgJsCDCNIQLEBKoI8f\nH3gAhi3O6q9StiMJFicBjjexnSvAREQUa9YsmfR869bb32P5c2r8PAk6aAnw0KHSq+7neTW2MQF2\nmdMDzK2Q4uvuljr8KVNsR5K4d98FJk6ULQ78huXPqZk9W/ZPvnbtza8/fCj/PufPtxMXERH5T0ZG\n/P2AtWYCnCq/rgBrHbwEGGAZ9GCYALts9GgZg3/nju1I/OnWLdkuKmhbBZSW+rMMmhOgU6MUUFHx\ndhn0oUNyrrOy7MRFRET+FC8BbmgAOjtlhZiS49cEuLFRVlTz821HkhwOwhrYlSvuToAGIp4AAxyE\nNZCgDcBy+LUPmCvAqYvXB3zwIMufiYjobatXv90H7Kz+sg0peVOnyrTlhw9tR/KmIK7+AlwBHkh3\nt9zYYALsMvYB948JsDldXcDFi8EZ0+8369fL8JKent6vcf9fIiKKZ/ly4MwZ4MWL3q+x/Dl1GRnS\nbnTmjO1I3sQEOHxu3ADGjpUtLt3EBJgJcL+CtAdwrIULpdSprc12JL0uXZLpz27uaRZmU6ZIy4Lz\n4dvZCRw7BqxYYTcuIiLynxEj5IbzsWPy954eYM8eJsDp8OMgrKAmwCyB7p8X/b8AE+BfDcKitwV1\nBXjoUCk1dj74/IDlz+mLLYM+dQooLgZyc+3GRERE/hTbB/z99zIkc/JkuzEFmd/6gF+9kniWLbMd\nSfK4Atw/L/p/ASbA7AEeQND2AI7ltzJoDsBKX2wCzP5fIiIaSGwfMMuf0+e3BPj0aaCkBBg50nYk\nySssBFpa3mzrInH1KleAPcGtkPoXtD2AY/kxAeYKcHrKy4EDB6T8mf2/REQ0EGcFmNsfmTFvHnD2\nrAwp8oOglj8DwPDhUsF2+7btSPyHJdAeyc2VXpF4G6ZHmdZAczMTYFOYAKdv3Dgpe66v5wowEREN\nLD9fVgfPnZObp+XltiMKttxcYPx4mbHiB0FOgAGWQfeHCbCHOAjrbXfvyo2BIJaWAEBRkfSH3Lhh\nOxLZNuDJk+DeTPCTZcua8K////buPTru+7zv/OcBwbso3i8iQRAkBrLukqlb4mwcpq5qtZtGuz1N\nYie1rc05SdracpqNt06cw1Is223ceLensZttncSWXVl1E2/j5DhdR0oipnVqi7QuFnUHSBAACd7E\nm8T7Bc/+8Z0RQWhAzGDm9/v+Lu/XOTwmBjO/+cpDEvOZ5/k+349u1ZEjW7R581YNDvLTAwBQ3x13\nDOmhh7bKfYt++Zf5mdGqLA3CynsAZhDWu9WOQOrtTf65CMBiEFY9eR2AVWOWnSrwiy+G4wM6+NvW\nksHBIf3pn35ee/Z8ShcvbtUTT3xKDzzwed7QAADeZXBwSN/9bviZcerUVn3ta/zMaFVW9gEfOxba\nh2+5JfZKpo8K8LsND0vLl4cW8aTxllwMwqonzwOwarIUgBmA1brNmx/TgQNbJdXOkpqv3bu3avPm\nxyKuCgCQRZs3P6Y33+RnRjtlJQDv2CHdfbc0Y0bslUxfTw8BeKK0BmBJBGBJtEDXk+cBWDVZCsDs\n/23d/v1juvJGpma+RkcZowgAuBo/M9ovKwE47+3PUniPTQv01dLa/ysRgCURgOvJewu0JN13n/Tc\nc9KlS3HXQQBujzVrOiSdnnDraa1ezT9jAICr8TOj/Xp7pUOHpLfeiruOogRgKsBXIwCnrFIJU+04\nCumKvXvz3wK9aFGYAvnyy/HWcPlyeP7bbou3hqLYtu1h9fZu0ZU3NKfV27tF27Y9HG1NAIBs4mdG\n+82YId16q7RrV7w1uIcW6KIEYLLHFf39IZOlobORO5lZp6SfkvTD1ZvmS7os6YykFyU94e7nEllh\nCq6/Pkw7Hh0NgQnFqABLV9qgY+3BHRiQVq4Mf8bQmvXr1+mppx7R5s2f0+jomFav7tC2bY9o/foC\n/EEFALQVPzOSUZsEHesowj17wpCk1avjPH+7XH+9NHu29OabYfAT0t0DPGUANrN7Jf2opKfc/T/V\n+X6vpF80sx+4+18lsMZU1NqgCcDh06giDMGSrgTgX/zFOM/PAKz2Wr9+nR5/fEvsZQAAcoCfGe0X\nex9wEdqfa2qDsAjAYbvi3r3pHIEkNdYCfc7d/293r9vw4O673f23JY2Y2az2Li897AO+4vjxcIzQ\nokWxV9K62IOw2P8LAACKggDcPgzCumJ4OHRMzpmTzvNNGYAnC7517rfH3S+0vqQ4OAv4iqK0P0vh\nH+rBwXgDGwjAAACgKG6/PewBHos0TLtoAZhBWEGaA7CkaQzBMrMPVv/3n5jZx8zsofYvK31UgK8o\nwgCsmpkzpbvukr7//TjP/4MfEIABAEAxLFkiLVwYp3J5/nwI33ffnf5zJ6GnhwpwTZoDsKRpBGB3\n/7Pqb79T/ZXbtufxKhUCcE2RKsBSvDbokyfDcIMNG9J/bgAAgCTUBmGl7Qc/CAWr+ROPd84pKsBX\npDkAS2oiAJvZfWb2n83sGTN7UtLc6v7fP0xwfampHYUUq6UjSwjA7bFrVzj+aMaM9J8bAAAgCbH2\nARep/VkiAI+X5RboG9z9Z9z9fkkPS/pRM/vRZJaVvgULQkvH/v2xVxJfkVqgpSsBOO2z1tj/CwAA\nioYA3B60QF+R5QC8u7rvd6W7j7r7/ylpcVILi4FBWEHRKsDr1oXK/shIus9LAAYAAEVzxx2hHTlt\nRQvAixeH96cnTsReSVyXLoUp0OvXp/ecDQdgd39J0n+R9E/N7I/N7K8k3Wtm95rZzMRWmCL2AQdF\nOQO4xixOGzQBGAAAFM2NN4aOyVOn0nvOo0elw4elm25K7zmTZnblLOAyGxqSVq1K7wgkqckhWO4+\n7O6/6u4PSfpfJf21pL8t6StmluKyk8EkaOntt6Vz56Rly2KvpL3uv1/asSO95xsbC3uAb789vecE\nAABIWmendPPN0ssvp/ecO3ZI99xTvLkqnAWcfvuzNEUANrPZZra03vfc/Zi7f9vd/7m7/6yk5Yms\nMEUE4PApTHd3+FSqSNKuAA8OhtaWxYXaJAAAAJD+PuCitT/XMAgrgwHY3c9L+mEz+7CZza13HzNb\nZGa/ICn3u0bZA1y8AVg1994rPf982GeQhhdfDMcEAAAAFA0BuD0YhBUnAHdOdQd3/5aZrZL0K2a2\nQtIcSTMlXZJ0VtKIpN9z95OJrjQFvb1XjkLqaPqE5GIo2gCsmoULpbVrpZdeku66K/nnY/8vZW1w\nUAAAIABJREFUAAAoqjvukP7oj9J5LvfQAv3lL6fzfGlat0763vdiryKu/n7pgQfSfc4pA7CZPSTp\nherU50K77rrQsrpvX2gDLqOiDcAar9YGnVYA/umfTv55AAAA0larALsnv21uYCC8R1+1KtnniYEh\nWOH1zVQLdFWPpA+Z2Y9Ikpn9tJl93MwKWCdkH/DevcWsAEvp7gP+wQ+oAAMAgGJavlyaOzedIyaL\n2v4sMQTr4sXwZ2jDhnSft5EAfMzdP+vuf21mH5f0G5IOSXrYzD6Y7PLSV/YAXNQWaCm9AHzqlDQ6\nmv6nWQAAAGm588509gEXOQCvWCGdPp3ukVJZsnevtHq1NGtWus/bSABeMu73PyPp37j7N9x9q6T3\nJLOseMo+CKuoQ7CkcCTR0JD01lvJPs9LL0m33BKOCQAAACiitAZhFTkAm5V7EnR/v1SppP+8jQTg\n75jZF83scUk3Shq/5f1sMsuKp1IpbwX47Fnp5Mli7rGQQiB973ulnTuTfR4GYAEAgKJLIwCfOxfO\nG964MdnnianMATjG/l+pgQDs7s9K+qSk35Z0o7ufNLO7zezDkgp2Wmy5W6CHh8Ok5CJPwL7vvuTb\noAnAAACg6O64I8w8SdILL0g33ijNm5fs88RU5kFYMY5AkhqrAMvdz7n7DnevNY++KGmPpDOJrSyS\nSkUaHJQuX469kvQVeQBWTRr7gBmABQAAiu6mm8J7x7MJ9oMWuf25psyDsDIdgCdy94vu/oy7P97u\nBcU2b560dGk4CqlsijwAq6YWgN2Tub47FWAAAFB8s2aF6uwrryT3HGUJwFSA01XgZtfpK+s+4CIP\nwKqpne88PJzM9YeHw1l1y5Ylc30AAICsSHofcBkCcE9POSvAFy6EgmOM7EEArqOs+4DLUAE2S7YN\nmuovAAAoiyQD8JEj0ptvhlbrIitrBXjvXqmrK/0jkCQCcF1lDsBFrwBLBGAAAIB2SHIQ1o4d0r33\nFns4qyTdcIN07FiYeF0msdqfJQJwXWUNwGUYgiUlG4AZgAUAAMqiVgFOYrZKGdqfJWnGjFAJTWp7\nXlYRgDOmry+cS1UmFy5Ihw9La9bEXkny7r03jNW/eLH916YCDAAAymLVqlChPXCg/dcuSwCWytkG\n3d8f5i7FQACuY8OG8h2FtG+ftHq11NkZeyXJu/768A/Nrl3tve6ZM+Efr6LvVQEAAJDCbJUk9gGP\njYUW6LIE4DKeBTwwQAU4U+bNk5YvL1crQlnan2uSaIN+5RXpPe+RZs5s73UBAACyKokA3N8vLVwo\nrVzZ3utmVRnPAqYFOoPKtg+4DBOgx0siANP+DAAAyiaJQVhlan+WytcCfeGCNDoab/guAXgSZdsH\nXIYzgMdLIgAzAAsAAJRNEhXgsgXgsp0FvGePtHZtvK5JAvAkKhUqwEV2223SyIh04kT7rkkFGAAA\nlM0tt4Si0fnz7btm2QJw2SrAMQdgSQTgSZWxBbpMFeDOTmnjRmnnzvZczz0E4DvvbM/1AAAA8mDO\nnDBA9rXX2nO9s2fDXJWNG9tzvTzo6pIOHUrmhJIsijkASyIAT6psAbhsQ7Ck9rZBj46GUF2WYQ0A\nAAA17WyDfuEF6eabpblz23O9PJg5M7yH3Lcv9krSEXMAlkQAnlRvb6iKXroUeyXJu3QpBLi1a2Ov\nJF3tDMC0PwMAgLJqZwAuW/tzTZnaoAnAGTVnTvgkpgxHIY2OSsuWSbNnx15JumoB2L31azEACwAA\nlFU7J0GXNQCXaRAWe4AzrCyDsMo2AKumqyu0LbfjHxsqwAAAoKyoALeuLBXg8+elgwfjzh4iAF9D\nWfYBl20AVo1Z+9qgCcAAAKCsurrC2a6HDrV2nSNHpOPHpRtvbM+68qSnpxwBeM8eqbs7FKFiIQBf\nQ1kCcBkHYNW0IwCfPy/t3h2OAQAAACgbs1AI2LWrtes884x0771SRwkTyrp15WiBjr3/VyIAX1Nf\nXxjTXXRlbYGWQgDesaO1a7z6ahiaVrY91AAAADXtaIMua/uzVJ4W6Nj7f6VIAdjMHjSz18zsDTP7\n9CT3+Wkze9nMdpnZ4+Nu/1j1ca+b2UeTXGdZ9gDv3VvOFmhJuueeMLShlXPXaH8GAABl145BWGUO\nwN3d4Riky5djryRZpawAm1mHpC9I+qCkWyV92MxumnCfiqRPS/phd79d0j+p3r5Y0j+TdK+k+yVt\nMbOFSa11w4YwBbroRyGVuQK8YIG0fn1rn1gyARoAAJRdqxXgsTFp587yBuA5c6QlS6QDB2KvJFkD\nAyUMwJLuk9Tv7kPuflHS1yU9NOE+vyDp37n7W5Lk7m9Wb/+gpCfd/aS7n5D0pKQHk1ronDnSqlXF\n7scfG5NGRsobgKXW9wFTAQYAAGV3223S669Pv6vujTekxYul5cvbu648KcMgrFJWgCWtkTQy7ut9\n1dvGu1HSe8zsO2b2P8zsg5M8dn+dx7ZV0QdhHToUqqDz5sVeSTztCMB33tm+9QAAAOTNvHnS2rUh\nyE5Hmdufa4o+COvcuZA9urvjriNGALY6t/mErzslVSS9X9LPSvo9M7u+wce2VdEHYZW5/bmmlQB8\n6FBokV+9ur1rAgAAyJtW2qAJwMUfhLV7d/hvjHkEkhSCZtr2SRqf+7skjda5z3fdfUzSXjN7XVJf\n9fZNEx779GRP9Oijj77z+02bNmnTpk2T3XVSRR+EVdYzgMe79VZpdDScO7d4cXOPrbU/W72PZgAA\nAEqkNgjrwx9u/rHPPCN95CPtX1Oe9PRIL7wQexXJacf+3+3bt2v79u0tXSNGAN4pqWJm6yQdkPQh\nSRP/mnyzettXzWyZQvjdU/31L6uDrzokPSDp1yZ7ovEBeLr6+qSnnmr5MplV5jOAa2bMkDZuDIMX\n/tbfau6xDMACAAAI7rhD+g//ofnHnT0rvfaa9N73tn9NebJunfTNb8ZeRXLasf93YlFz69atTV8j\n9RZod78s6RMKA6xelvR1d3/VzLaa2U9U7/Nnko6a2cuS/kLSp9z9uLsfl7RN0vclPSNpa3UYVmKK\nvgeYFuhgum3QDMACAAAI7rxzei3Qzz0n3XJLGEBbZkVvgc7CACwp0jnA7v5td3+Pu/e5+29Wb9vi\n7t8ad59fdfdb3f1Od//Dcbc/Vn3cje7+1aTXun59mJLcyjmxWVbmM4DHayUAMwALAAAgBLi335aO\nHm3ucez/DWoB2BOdcBRPf3/YXhpblACcJ7NnhwFHRZ3IRgU4qAXgZv7BuXgxjPu/5Zbk1gUAAJAX\nZtLtt0u7djX3OAJwcN110vz50uHDsVeSjFJXgPOmqG3Q7gTgmjVrwocdg4ONP+b118P/d2U+QgoA\nAGC82iCsZhCAryjqWcBnz0pHjsQ/AkkiADekqAH46FFp5kxp4cLYK8mG++5rrg2aAVgAAABXa/Yo\npEOHpJMns9EamwVFPQt49+6wtXTGjNgrIQA3pKhnAVP9vVqz+4AZgAUAAHC1ZgPwM8+EIkQHqURS\ncQdhZaX9WSIAN6SoFWAGYF1tOgGYAVgAAABX3H679Mor0uXLjd2f9uer9fQUswKclQFYEgG4IZVK\nMQMwFeCr3XNPCLUXLjR2fyrAAAAAV1uwQFq1qvHuSQLw1YpaAR4YoAKcK+vXS/v2NR6M8mJoiArw\neNddJ/X2Nja44c03pVOnsrGRHwAAIEsabYMeG5N27gwt0AiKOgSLFuicmTVL6upqbkJwHuzdSwV4\nokbboGvVX7Pk1wQAAJAnjU6Cfu01adkyafny5NeUF7UhWEU7C5gAnENFHIRFC/S7NRuAAQAAcLVG\nK8C0P7/bokVhINjx47FX0j5nzoTTZ7q6Yq8kIAA3qIj7gBmC9W7NBGAGYAEAALzbnXcSgFtRtEFY\nAwPZOQJJIgA3rGiToE+elC5dkpYsib2SbLnlFungQenYsWvfjwowAABAfRs2hHkpJ09e+34E4PqK\nNggrSwOwJAJww4oWgGsDsNjDerUZM6S775Z27Jj8PpcuhfH+t92W3roAAADyoqMjvE/atWvy+5w5\nI73xhnTXXemtKy+KNggrS/t/JQJww4q2B5gBWJObqg26v19avTpMjQYAAMC7TTUI69lnpVtvlebM\nSW9NeVEbhFUUBOCc6umR9u8vzlFIDMCa3FQBmPZnAACAa5tqEBbtz5MrWgt0f3+Yp5QVBOAGzZwp\nrV0r7dkTeyXtwRnAk7v//tACPdn4eQIwAADAtU01CIsAPLmitUCzBzjHirQPmBboya1eLc2dK+3e\nXf/7TIAGAAC4tttvl156SRobq/99AvDkitQCffp0ONIpK0cgSQTgphQpAFMBvrZrtUFTAQYAALi2\nRYvCaSODg+/+3oEDIRhlqS02S5Ytk86fl956K/ZKWjcwEKaCd2QodWZoKdlXpEFYVICvbbIAfOJE\nOCJp/fr01wQAAJAnkw3CeuYZ6b77OI1kMmbF2Qectf2/EgG4KZVKMSrAp09Lp05JK1bEXkl2TRaA\nX3wxjPXP0qdYAAAAWTTZIKwdO2h/nkqRAnCW9v9KBOCmFKUFenhY6u4mxF3L3XeHfSvnz199O+3P\nAAAAjZksALP/d2pFGYSVtQFYEgG4KT090sGD0rlzsVfSGtqfpzZ/fvjLOrFthwFYAAAAjak3Cfry\nZen73w8t0JhcUQZhUQHOuc7OUDmtt5k/TzgDuDH12qCpAAMAADSmUgkDr06dunLba6+FbXhLl8Zb\nVx7QAp0cAnCTirAPeO9eJkA3YmIAHhsLbdG33x5vTQAAAHnR2SndfHN4/1RD+3NjenryXwF++23p\n5MlwxGiWEICbVIR9wFSAGzMxAO/eHcbSL1wYb00AAAB5MnESNAG4MUWoAO/eLfX2Zm/uUMaWk31F\nCcBUgKd2003S4cPS0aPha9qfAQAAmjNxEBYBuDGrVoXq6dmzsVcyfVlsf5YIwE0rQgBmCFZjZsyQ\n7rknjOqXGIAFAADQrPGDsE6fDu+jeT81tY4Oae3afFeBCcAF0dcXxnnn1fnzoaKZtV78rBrfBk0F\nGAAAoDm33x7eQ7lLzz4bvp49O/aq8iHvbdD9/WF+UtYQgJvU3S0dOpTfo5CGh6U1a0J1E1MjAAMA\nAEzfsmXSddeF96C0Pzcn74OwqAAXRGdn+DRm9+7YK5keBmA15/77Qwv0W2+FM6Cz+CkWAABAltUG\nYRGAm5P3CvDAAAG4MPK8D5gBWM1ZtSp8avlHfyTdcguVcwAAgGbVBmERgJvT05PfAPzWW+EYpCxu\nuyQAT0Oe9wEzAKt5998v/e7vMrABAABgOu68U/r2t8MWwg0bYq8mP9aty28L9MBA6Jw0i72SdyMA\nT0Olku8KMAG4OZXKkP76r7fqr/5qi/7BP9iqwcGcfhQHAAAQwZIl4b3U2NgWfeQjvJdqVJ5boLM6\nAEsiAE8LLdDlMTg4pK9+9fOSPqWBga362tc+pQce+Dz/cAMAADRgcHBIH/94eC917BjvpZqxZo10\n5Ih04ULslTQvq/t/JQLwtOQ5ANMC3ZzNmx/T/v1bJc2v3jJfu3dv1ebNj0VcFQAAQD5s3vyY9uzh\nvdR0dHZKN9wgjYzEXknzsjoBWiIAT0t3d/g05syZ2CtpzqVLYZJxV1fsleTH/v1juvIPds18jY6O\nxVgOAABArvBeqjV5HYRFAC6YGTOk9eulPXtir6Q5+/ZJK1ZIs2bFXkl+rFnTIen0hFtPa/Vq/uoA\nAABMhfdSrcnrICz2ABdQHgdhMQCredu2Paze3i268g/3afX2btG2bQ9HWxMAAEBe8F6qNXkchHXy\nZOiUveGG2CuprzP2AvIqj/uAGYDVvPXr1+mppx7R5s2f0+jomFav7tC2bY9o/Xo+SQAAAJgK76Va\n09Mj/bf/FnsVzcnyEUgSAXja+vqk556LvYrmMABretavX6fHH98SexkAAAC5xHup6ctjC3SW9/9K\ntEBPW19f+HQjT2iBBgAAAPIjjy3QBOCCyuMe4L17aYEGAAAA8mLtWmn//nCaS15keQCWRACetrVr\npaNH83UUEhVgAAAAID9mz5aWL5dGR2OvpHEDA1SAC6l2FFJe2qDHxsIxSN3dsVcCAAAAoFF5OwuY\nFugCy9Mk6AMHpEWLpLlzY68EAAAAQKPyNAjrxAnp3Dlp5crYK5kcAbgFeRqERfszAAAAkD95GoRV\n2/+b1SOQJAJwS/I0CIsBWAAAAED+9PTkpwKc9fZniQDckjy1QFMBBgAAAPInTxXgrA/AkgjALclb\nAKYCDAAAAORLnoZgUQEuuK4u6fhx6fTp2CuZ2t69VIABAACAvOnuloaHw6kuWUcALriODmnDhnwM\nwqIFGgAAAMifefOk66+XDh2KvZKp1YZgZRkBuEV5aIN2JwADAAAAeZWHNuhjx6SLF6UVK2Kv5NoI\nwC3KQwA+ciSc/7tgQeyVAAAAAGhWHs4Crg3AyvIRSBIBuGV5OAuYAVgAAABAfuWhApyH/b8SAbhl\neTgLmAFYAAAAQH7loQKch/2/EgG4ZXlogWb/LwAAAJBfeTgLmApwSaxZI508Kb39duyVTI4WaAAA\nACC/8tACXdsDnHUE4BZ1dEi9vdneB0wLNAAAAJBftRZo99grmRwV4BLJ+iAsKsAAAABAfl1/vTR7\ntnT0aOyV1Hf0qHT5srRsWeyVTI0A3AZZHoTlTgUYAAAAyLssD8KqVX+zfgSSRABuiywPwjpxIvzv\nokVx1wEAAABg+rI8CCsv7c8SAbgtshyAa+3Pefg0BgAAAEB9WR6ElZcBWBIBuC2yvAeY9mcAAAAg\n//LQAp0HBOA2uOGGcAzSW2/FXsm7cQYwAAAAkH9Zb4GuVGKvojFRArCZPWhmr5nZG2b26Trf/5iZ\nHTaz56q/fn7c9y5Xb3vezL6Z7srry/JRSHv3MgEaAAAAyLuenmxWgN3zVQHuTPsJzaxD0hckfUDS\nqKSdZvbH7v7ahLt+3d0/WecSp919Y9LrbFZtH/DGjK1saEh63/tirwIAAABAK7JaAT56NMwbWro0\n9koaE6MCfJ+kfncfcveLkr4u6aE695tsbFMmxzlldRAWZwADAAAA+bdkSThrt3bKS1bk6QgkKU4A\nXiNpZNzX+6q3TfT3zOwFM/sDM+sad/tsM9thZv/DzOoF5yiyOgiLIVgAAABA/pllswqcp/2/UoQW\naNWv4PqEr/9E0hPuftHMfknSVxRapiWp290Pmtl6SX9pZi+6+2C9J3r00Uff+f2mTZu0adOmVtc+\nqUpF+tKXErv8tJw6JZ09Ky1fHnslAAAAAFpVC8B33hl7JVekuf93+/bt2r59e0vXiBGA90nqHvd1\nl8Je4He4+/FxX/6upM+O+97B6v8Omtl2Se+VNGUATloWW6BrE6Dz0o4AAAAAYHJZPAu4v1/6iZ9I\n57kmFjW3bt3a9DVitEDvlFQxs3VmNkvShxQqvu8ws1XjvnxI0ivV2xdVHyMzWybpfbXvxXbDDdKZ\nM9LJk7FXcgXtzwAAAEBxZPEs4IGB/EyAliIEYHe/LOkTkp6U9LLCtOdXzWyrmdU+O/ikmb1kZs9X\n7/tw9fabJX2/evtfSPpXdaZHR2EW2qCztA+YAVgAAABAcWStApy3I5CkOC3QcvdvS3rPhNu2jPv9\nZyR9ps7jvivpjsQXOE2VSvgDcPfdsVcSUAEGAAAAiiNrFeAjR6QZM8KE6ryI0QJdWFnbB1zbAwwA\nAAAg/7I2BTpv1V+JANxWWQzAtEADAAAAxbByZTjp5fTp2CsJ8rb/VyIAt1XWAjAt0AAAAEBxmEnd\n3dmpAlMBLrm+vuwMwTp7VjpxIkynBgAAAFAMWRqE1d8f5iDlCQG4jVaulM6dC8EztuFhqatL6uAV\nBgAAAAojS4OwqACXXO0opCy0QTMACwAAACierAzCyuMRSBIBuO2ysg+YAVgAAABA8WSlBfrwYWn2\nbGnx4tgraQ4BuM2ysg+YAVgAAABA8WSlBTqP1V+JANx2tEADAAAASEpWWqDzOABLIgC3XVZaoPfu\npQUaAAAAKJrVq6WjR8Pw3ZioAENSdgIwFWAAAACgeGbMkNaskUZG4q5jYIAADEkrVkgXL0rHjsVb\nw4ULYVN6V1e8NQAAAABIRhYGYVEBhqRwFFLsQVj79kmrVkmdnfHWAAAAACAZsQdhuYe8wx5gSIo/\nCIv2ZwAAAKC4Yg/COnhQmjNHWrQo3hqmiwCcgNj7gDkDGAAAACiu2C3QeW1/lgjAiYgdgDkDGAAA\nACiu2C3QeR2AJRGAExF7DzAVYAAAAKC4qABPHwE4AbH3AFMBBgAAAIqrq0s6cCCcPhNDf38+B2BJ\nBOBELF8uXb4cDqiOgSFYAAAAQHHNnCmtXCnt3x/n+akA4yq1o5BiVIEvXw5/Ebq7039uAAAAAOmI\n1QbtLu3eTQDGBLEC8OiotHSpNHt2+s8NAAAAIB2xBmEdOCDNny9df336z90OBOCEVCpxBmExAAsA\nAAAovlgV4Dzv/5UIwImJVQFmABYAAABQfLEqwHne/ysRgBMTKwAzAAsAAAAovnXr4lWACcB4l1oA\ndk/3eWmBBgAAAIovVgv0wAABGHUsXRqmQad9FBIt0AAAAEDxdXdLIyPS2Fi6z0sFGHWZhc3habdB\nUwEGAAAAim/OHGnJkjCVOS1jY+EIJIZgoa609wGPjUnDw5wBDAAAAJRB2oOwRkelBQvCr7wiACco\n7QB8+LB03XXhXC4AAAAAxZb2IKy87/+VCMCJSjsA0/4MAAAAlEfag7Dyvv9XIgAnqlIJn5KkhQFY\nAAAAQHmk3QLd35/v/b8SAThRaR+FxBnAAAAAQHmk3QJNBRjXtHSpNGOGdORIOs9HCzQAAABQHrRA\nN48AnLA09wHTAg0AAACUR60CnEbH6diYtGcPLdCYQl9fevuAqQADAAAA5XHdddK8eel0nO7fLy1a\nFJ4zzwjACatU0qkAu1MBBgAAAMomrUFYRRiAJRGAE5dWC/SxY1Jnp7RwYfLPBQAAACAb0hqEVYT9\nvxIBOHFpBWDanwEAAIDySWsQ1sAAARgNqO0BTnpjOu3PAAAAQPmk2QJNAMaUFi+WZs6UDh9O9nmo\nAAMAAADlk1YFmD3AaFgabdBUgAEAAIDySaMCXJQjkCQCcCrSCMBDQwRgAAAAoGzSOAt4ZERaskSa\nPz+550gLATgFaQVgWqABAACAclm0SDKTTpxI7jmKMgBLIgCnojYIK0m0QAMAAADlY5Z8G3RR9v9K\nBOBUVCrJVoBPnpQuXpSWLk3uOQAAAABkU9KDsIoyAVoiAKci6aOQavt/zZK5PgAAAIDsSqMCTABG\nwxYtkubMkQ4eTOb6DMACAAAAyqs2CCsp7AFG05LcB8wALAAAAKC8kmyBvnxZGhyUenuTuX7aCMAp\nSXIfMAOwAAAAgPJKsgV6ZCTMGpo3L5nrp40AnJIkj0KiBRoAAAAoryRboIu0/1ciAKcm6QBMCzQA\nAABQTsuXS2fPSm+/3f5rE4AxLUkGYFqgAQAAgPKqnQWcRBW4SAOwJAJwaiqVZI5COnMmfNKzcmV7\nrwsAAAAgP5IahNXfH7JMURCAU7JwoTR/vnTgQHuvOzQkrV0rdfBKAgAAAKWV1CAsWqAxbUm0QTMA\nCwAAAEASLdCXLoVQXZQjkCQCcKqSCsAMwAIAAADKLYkW6JERacUKae7c9l43JgJwivr6wj7gdmIA\nFgAAAIAkWqCL1v4sEYBTValQAQYAAADQfklUgIs2AEsiAKcqiRZoKsAAAAAAVq2STpwI5wG3CxVg\ntKSvT9q9Wxoba981GYIFAAAAoKND6uqShofbd00CMFqyYEH4NTranuudPy+9+aa0enV7rgcAAAAg\nv9rdBj0wQABGi9o5CGtkJITfzs72XA8AAABAfrVzENalSyFMb9jQnutlBQE4Ze0chMUALAAAAAA1\n7awADw1JK1dKc+a053pZESUAm9mDZvaamb1hZp+u8/2PmdlhM3uu+uvnJ3zvDTN73cw+mu7KW9fO\nQVgMwAIAAABQ084KcBH3/0pS6s2zZtYh6QuSPiBpVNJOM/tjd39twl2/7u6fnPDYxZL+maSNkkzS\ns9XHnkxh6W3R1yc98UR7rsUALAAAAAA169a1rwJcxP2/UpwK8H2S+t19yN0vSvq6pIfq3M/q3PZB\nSU+6+0l3PyHpSUkPJrfU9mvnHmBaoAEAAADUtLMFuqgV4BgBeI2kkXFf76veNtHfM7MXzOwPzKz2\n/YmP3T/JYzOrt7d9RyHRAg0AAACgZs0a6dAh6cKF1q/V3x/mFxVNjPnB9Sq7PuHrP5H0hLtfNLNf\nkvRVhZbpRh77jkcfffSd32/atEmbNm1qdq1tt2CBtHChtH+/tHZta9eiAgwAAACgprMznBKzb1/r\n05uzWAHevn27tm/f3tI1zH3S/JgIM/shSY+6+4PVr39Nkrv7Zye5f4eko+6+2Mw+JGmTu//D6vf+\nvaSn3f0/13mcp/3f1qj3v1969FHpb/yN6V/j0iVp/nzp7belWbPatjQAAAAAOfZjPxayxo//+PSv\ncfGidN110ltvSbNnt21pbWdmcvd6RdJJxWiB3impYmbrzGyWpA8pVHzfYWarxn35kKRXq7//M0kP\nmNnC6kCsB6q35Uo7JkHv3y8tX074BQAAAHBFOyZBDw2FSnKWw+90pd4C7e6XzewTCgOsOiT9vru/\namZbJe10929J+qSZ/aSki5KOSXq4+tjjZrZN0vcVWp+3Vodh5Uql0vogLNqfAQAAAEzUjkFYRd3/\nK8XZAyx3/7ak90y4bcu4339G0mcmeexjkh5LcHmJ6+uTHn+8tWswAAsAAADAROvWSf/9v7d2jSzu\n/22XGC3QpdeOFmjOAAYAAAAwUTvOAiYAo60qFWnPntaOQqIFGgAAAMBE7WiBHhggAKON5s+XliwJ\n48mnixZoAAAAABOtXRsG5l6+PP1rUAFG21UqrbVBUwEGAAAAMNHs2dKyZdLo6PQef/Ev/KwEAAAP\nZ0lEQVSiNDIirV/f3nVlBQE4klb2AY+NhT+U3d3tXRMAAACA/GvlKKTBQWnNmuIet0oAjqSVAHzw\noLRwoTR3bnvXBAAAACD/WhmEVeT2Z4kAHE0rAZj2ZwAAAACTaWUQVpEHYEkE4GgqlfCHazoYgAUA\nAABgMq20QPf3h6xSVATgSCqV0F8/nelsVIABAAAATKaVCjAt0EjEvHnS0qVhmFWzqAADAAAAmEyr\nFWACMBIx3X3AQ0MEYAAAAAD1dXeHQtvYWHOPu3AhnCFc1COQJAJwVH1909sHTAs0AAAAgMnMny8t\nWCAdPtzc4wYHpbVrpZkzk1lXFhCAI6pUmq8Au1MBBgAAAHBt02mDLvoALIkAHNV0WqDffFOaMyd8\nogMAAAAA9UxnEFbR9/9KBOCophOAqf4CAAAAmMq6dQTgegjAEfX2hraEZo5CYgI0AAAAgKlMpwV6\nYIAAjATNnSstXy4NDzf+GAZgAQAAAJjKdFug2QOMRDXbBk0FGAAAAMBUmq0Anz8vjY4Wv9hGAI6s\n2QDMHmAAAAAAU6ntAXZv7P579oTzg4t8BJJEAI5uOgG46J/KAAAAAGjNwoUhzB471tj9y7D/VyIA\nR9fXF/6wNYoWaAAAAACNaKYNugwToCUCcHSVSuMV4BMnQgvD4sXJrgkAAABA/jUzCKsMA7AkAnB0\nvb3hD+WlS1Pft1b9NUt8WQAAAAByjgrwuxGAI5szR1q5srFPZhiABQAAAKBRtUFYjSAAIzWN7gNm\nABYAAACARjXaAn3unHTwYDmKbQTgDGh0HzADsAAAAAA0qtEW6D17wn07OxNfUnQE4Axo9CgkKsAA\nAAAAGtVoBbgs7c8SATgTGg3AVIABAAAANGrJEuniRenkyWvfjwCMVDVTASYAAwAAAGiEWWODsAYG\nCMBI0YYN0vBw+HRmMqdOSWfOSCtWpLcuAAAAAPnWSBt0Wc4AlgjAmTB7tnTDDdf+gzk0JHV3cwYw\nAAAAgMY1MgiLFmikbqo2aAZgAQAAAGjWVBXgs2elw4dDsa0MCMAZ0UgAZv8vAAAAgGZMtQd49+4Q\nkstwBJJEAM6Mvr6w+XwyTIAGAAAA0KypWqDLNABLIgBnRqVCCzQAAACA9pqqBbpMA7AkAnBmTNUC\nTQUYAAAAQLNWrJDefls6fbr+98s0AEsiAGfGhg3SyMjkRyFRAQYAAADQrI6OMOBqeLj+9wnAiGLW\nLGnNGmlw8N3fO3dOOn48HJUEAAAAAM241iAs9gAjmkql/iCs4eEQjjt4tQAAAAA0abJBWGfOSEeO\nSGvXpr6kaIhUGTLZPmDanwEAAABM12SDsHbvltavl2bMSH1J0RCAM2SyAMwALAAAAADTNVkFuGz7\nfyUCcKZcqwJMAAYAAAAwHZPtASYAI6q+vvp7gGmBBgAAADBdk7VAl20AlkQAzpSeHmnfPunChatv\npwUaAAAAwHStXi29+aZ0/vzVt/f3h0G8ZUIAzpBZs6SurncfhUQFGAAAAMB0zZgRTpUZGbn6dlqg\nEd3EfcAXL0oHD4Y/sAAAAAAwHRMHYZ0+LR07Vq4jkCQCcOZMDMD79kmrVkkzZ8ZbEwAAAIB8mzgI\na2BA2rBB6ihZIizZf272VSpXD8Ki/RkAAABAqyYOwhoYKN/+X4kAnDkTK8AMwAIAAADQqokt0GXc\n/ysRgDNnYgCmAgwAAACgVRMrwARgZEJPjzQ6emVE+dAQFWAAAAAArZm4B5gAjEyYOVPq7r5yFBIt\n0AAAAABa1dUVCm2XLoWvBwYIwMiISuVKGzQt0AAAAABaNWuWtHKltH+/dOqUdOJEOY9a7Yy9ALxb\nbR/w5cvhGKSync0FAAAAoP1qg7COHy/nEUgSATiT+vqkV16RDhyQli6V5syJvSIAAAAAeVcbhDV3\nbjnbnyVaoDOpVgFmABYAAACAdqkNwirrACyJAJxJlUrYlM4ALAAAAADtUmuBHhgImaOMCMAZ1NMj\nHTwovf46A7AAAAAAtEetBZoKMDKlszMchfT001SAAQAAALRHrQJMAEbm9PVJ3/seARgAAABAe3R3\nhwrw229Lq1fHXk0cTIHOoMHBIe3e/ZguXRrT7/xOh26++WGtX08SBgAAADB9Bw8OqbPzMZmN6aMf\n7dC2beXLGebusdeQCDPzPP63DQ4O6YEHPq/du7dKmi/ptHp7t+ippx4p3R9OAAAAAO1RxJxhZnJ3\na+YxUVqgzexBM3vNzN4ws09f435/38zGzGxj9et1ZnbGzJ6r/vqd9Fadjs2bHxv3h1KS5mv37q3a\nvPmxiKsCAAAAkGfkjCD1AGxmHZK+IOmDkm6V9GEzu6nO/a6T9Iik70341oC7b6z++seJLzhl+/eP\n6cofypr5Gh0di7Gctti+fXvsJaCK1yI7eC2yhdcjO3gtsoPXIjt4LbIjz69FEXPGdMSoAN8nqd/d\nh9z9oqSvS3qozv22SfqspPMTbm+qxJ03a9Z0SDo94dbTWr06v/PK8vwPRdHwWmQHr0W28HpkB69F\ndvBaZAevRXbk+bUoYs6Yjhj/tWskjYz7el/1tneY2V2Sutz9v9Z5fI+ZPWtmT5vZ/5TgOqPYtu1h\n9fZu0ZU/nKE3f9u2h6OtCQAAAEC+kTOCGFOg61Vw35lWZWYm6d9I+lidxxyQ1O3ux6v7gr9pZre4\n+6nEVpuy9evX6amnHtHmzZ/T6OiYVq/u0LZt+d2YDgAAACA+ckaQ+hRoM/shSY+6+4PVr39Nkrv7\nZ6tfXy9pQNIpheC7StJRST/p7s9NuNbTkn514u3V7+VvBDQAAAAAoGHNToGOUQHeKaliZusUKrof\nkvTh2jfd/S1JK2pfV0Pu/+7uz5vZMknH3H3MzDZIqkjaU+9Jmv0/AgAAAABQbKkHYHe/bGafkPSk\nwh7k33f3V81sq6Sd7v6tiQ/RlRbo90v652Z2UdJlSb/k7ifSWjsAAAAAIL9Sb4EGAAAAACCGws28\nNrMHzew1M3vDzD4dez1lZWZdZvaXZvaKme0ys0/GXlPZmVmHmT1nZn8Sey1lZ2YLzewPzexVM3vZ\nzO6PvaayMrNfMbOXzOxFM/uamc2KvaYyMbPfN7NDZvbiuNsWm9mTZva6mf2ZmS2MucaymOS1+NfV\nf6deMLP/tzqnBQmr91qM+96nzGzMzJbEWFvZTPZamNkj1byxy8x+M9b6ymSSf6PuNLPvmtnzZrbD\nzO5p5FqFCsBm1iHpC5I+KOlWSR82s5virqq0Lins3b5F0g9L+jivRXS/LOmV2IuAJOnfSvqv7n6z\npDslvRp5PaVkZqslPSJpo7vfobAt6ENxV1U6X1b4mT3er0n6c3d/j6S/lPTrqa+qnOq9Fk9KutXd\n75LUL16LtNR7LWRmXZL+pqSh1FdUXu96Lcxsk6S/K+k2d79d0ucirKuM6v29+NeStrj7eyVtkfRb\njVyoUAFY0n2S+t19yN0vSvq6pIcir6mU3P2gu79Q/f0phTf4a679KCSl+kPz70j6vdhrKTszWyDp\nR939y5Lk7peqw/8QxwxJ882sU9I8SaOR11Mq7v4dSccn3PyQpK9Uf/8VSf9LqosqqXqvhbv/ubuP\nVb/8nqSu1BdWQpP8vZDCMaH/R8rLKbVJXot/JOk33f1S9T5vpr6wEprktRiTVOsSWiRpfyPXKloA\nXiNpZNzX+0Tois7MeiTdJemZuCsptdoPTTb9x7dB0ptm9uVqS/oXzWxu7EWVkbuPSvq/JA0r/NA8\n4e5/HndVkLTC3Q9J4cNUScsjrwfBz0v6/2IvoqzM7O9KGnH3XbHXAt0o6f1m9j0ze7rRtlsk4lck\nfc7MhhWqwQ11qRQtANc7+og3/BGZ2XWSviHpl6uVYKTMzP5nSYeqFXlT/b8nSE+npI2S/p27b5R0\nRqHlEykzs0UK1cZ1klZLus7MfjbuqoDsMbPfkHTR3Z+IvZYyqn5I+hsKLZ7v3BxpOQg/xxe5+w9J\n+qeS/iDyesrsHylkjG6FMPylRh5UtAC8T1L3uK+7RDtbNNWWwm9I+o/u/sex11NiPyLpJ81sj6T/\nJOnHzeyrkddUZvsUPsX/fvXrbygEYqTvb0ra4+7H3P2ypP8i6X2R1wTpkJmtlCQzWyXpcOT1lJqZ\nfUxhCw0fDsXTK6lH0g/MbFDh/e2zZrYi6qrKa0Th54XcfaekMTNbGndJpfUxd/+mJLn7NxS2w06p\naAF4p6SKma2rTvL8kCQm3sbzJUmvuPu/jb2QMnP3z7h7t7tvUPg78Zfu/tHY6yqramvniJndWL3p\nA2I4WSzDkn7IzOaYmSm8FgwkS9/EzpQ/kfRw9fcfk8QHqOm56rUwswcVKlw/6e7no62qnN55Ldz9\nJXdf5e4b3H29wgep73V3PhxKx8R/o76p8PNC1Z/lM939aIyFldDE12K/mf2YJJnZByS90chFOhNY\nWDTuftnMPqEwtbBD0u+7O29mIjCzH5H0c5J2mdnzCq3on3H3b8ddGZAJn5T0NTObKWmPpP8t8npK\nyd13mNk3JD0v6WL1f78Yd1XlYmZPSNokaWl1D9cWSb8p6Q/N7OcVPqT4qXgrLI9JXovPSJol6anw\nGZG+5+7/ONoiS6Lea1EbnFjlogU6FZP8vfiSpC+b2S5J5yVRVEjBJK/FL0j6bTObIemcpF9s6Fru\nbJEFAAAAABRf0VqgAQAAAACoiwAMAAAAACgFAjAAAAAAoBQIwAAAAACAUiAAAwAAAABKgQAMAAAA\nACgFAjAAADliZl80s5uqv//1Vh4PAEDZcA4wAAA5ZWZvu/uC2OsAACAvqAADAJBBZjbPzL5lZs+b\n2Ytm9lPV2582s41m9q8kzTWz58zsP1a/93Nm9kz1tv/HzKzOdZ82s40p/+cAAJAJBGAAALLpQUn7\n3f297n6HpG+P/6a7/7qkM+6+0d0/Um1r/hlJ73P3jZLGJP1c6qsGACDDOmMvAAAA1LVL0m9VK71/\n6u7fqXOf8RXeD0jaKGlntfI7R9Kh5JcJAEB+EIABAMggd+83s7sl/R1J/8LM/tzd/8U1HmKSvuLu\nv5HOCgEAyB9aoAEAyCAzu0HSWXd/QtJvKVR3J7pgZjOqv/8LSX/fzJZXH7/YzLrTWS0AAPlABRgA\ngGy6XaEFekzSBUn/sHr7+OMbvihpl5k9W90HvFnSk2bWUX3MxyUNT7guxz8AAEqLY5AAAAAAAKVA\nCzQAAAAAoBQIwAAAAACAUiAAAwAAAABKgQAMAAAAACgFAjAAAAAAoBQIwAAAAACAUiAAAwAAAABK\ngQAMAAAAACiF/x91AUNG9p2rGAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10c5ae4a8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ent = np.zeros((L-1))\n",
"## warning measurment assumes right canonized MPS\n",
"for j in range(L-1):\n",
" theta = combine_two_matrices(M[j],M[j+1],s)\n",
" M[j], M[j+1], S = left_canonize(theta,s,chi, return_S = True)\n",
" ent[j] = -np.sum(S**2*np.log(S**2))\n",
"\n",
"\n",
"plt.figure()\n",
"plt.plot(ent,'-o')\n",
"plt.xlabel('site i')\n",
"plt.ylabel(r'$S(\\rho_i)$')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.1"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
%% Cell type:code id: tags:
```
python
import
numpy
as
np
from
numpy
import
transpose
as
tr
,
conjugate
as
co
from
scipy.linalg
import
expm
,
svd
import
math
import
matplotlib.pyplot
as
plt
%
matplotlib
inline
plt
.
rcParams
[
'
figure.figsize
'
]
=
16
,
9
```
%% Cell type:markdown id: tags:
### Some useful functions
%% Cell type:code id: tags:
```
python
def
dot
(
A
,
B
):
"""
Does the dot product like np.dot, but preserves the shapes also for singleton dimenstions
"""
s1
=
A
.
shape
s2
=
B
.
shape
return
np
.
dot
(
A
,
B
).
reshape
((
s1
[
0
],
s2
[
1
]))
def
truncated_svd
(
thetas
,
chi
):
"""
Does an svd on two-site matrix thetas, and truncates to chi or the last nonzero singular value
"""
U
,
S
,
Vh
=
svd
(
thetas
,
full_matrices
=
False
)
# trunkieren
ind
=
np
.
where
(
np
.
isclose
(
np
.
cumsum
(
S
[::
-
1
])[::
-
1
],
0
))[
0
]
if
len
(
ind
)
>
0
:
chi_tr
=
min
(
chi
,
max
(
1
,
ind
[
0
]))
else
:
chi_tr
=
chi
S
=
S
[:
chi_tr
]
w
=
1.
-
np
.
sum
(
S
**
2
)
S
/=
math
.
sqrt
(
1
-
w
)
U
=
U
[:,:
chi_tr
]
Vh
=
Vh
[:
chi_tr
,:]
return
U
,
S
,
Vh
def
left_canonize
(
thetas
,
s
,
chi
,
return_S
=
False
):
"""
Splits up a two-site matrix thetas into two one-site matrices such that the left one is canonized
"""
da
,
dg
=
thetas
.
shape
[
2
],
thetas
.
shape
[
3
]
thetas
=
thetas
.
transpose
((
2
,
0
,
3
,
1
)).
reshape
((
da
*
s
,
dg
*
s
))
# combine indizes
U
,
S
,
Vh
=
truncated_svd
(
thetas
,
chi
)
db
=
len
(
S
)
U
=
U
.
reshape
((
da
,
s
,
db
)).
transpose
((
1
,
0
,
2
))
Vh
=
Vh
.
reshape
((
db
,
dg
,
s
)).
transpose
((
2
,
0
,
1
))
for
s2
in
range
(
s
):
Vh
[
s2
]
=
dot
(
np
.
diag
(
S
),
Vh
[
s2
])
if
return_S
:
return
U
,
Vh
,
S
else
:
return
U
,
Vh
def
right_canonize
(
thetas
,
s
,
chi
,
return_S
=
False
):
"""
Splits up a two-site matrix thetas into two one-site matrices such that the right one is canonized
"""
da
,
dg
=
thetas
.
shape
[
2
],
thetas
.
shape
[
3
]
thetas
=
thetas
.
transpose
((
2
,
0
,
3
,
1
)).
reshape
((
da
*
s
,
dg
*
s
))
# combine indizes
U
,
S
,
Vh
=
truncated_svd
(
thetas
,
chi
)
db
=
len
(
S
)
U
=
U
.
reshape
((
da
,
s
,
db
)).
transpose
((
1
,
0
,
2
))
Vh
=
Vh
.
reshape
((
db
,
dg
,
s
)).
transpose
((
2
,
0
,
1
))
for
s1
in
range
(
s
):
U
[
s1
]
=
dot
(
U
[
s1
],
np
.
diag
(
S
))
if
return_S
:
return
U
,
Vh
,
S
else
:
return
U
,
Vh
def
apply_two_site_H
(
theta
,
H
,
s
):
"""
Applies a two-site operator on the two-site matrix theta
"""
thetas
=
np
.
zeros_like
(
theta
)
for
s1p
in
range
(
s
):
for
s2p
in
range
(
s
):
for
s1
in
range
(
s
):
for
s2
in
range
(
s
):
thetas
[
s1p
,
s2p
]
+=
H
[
s1p
*
s
+
s2p
,
s1
*
s
+
s2
]
*
theta
[
s1
,
s2
]
return
thetas
def
combine_two_matrices
(
M1
,
M2
,
s
):
"""
Combines the two neighbouring one-site matrices M1 and M2 into a two-site matrix theta
"""
da
,
db
,
dg
=
M1
.
shape
[
1
],
M1
.
shape
[
2
],
M2
.
shape
[
2
]
assert
M1
.
shape
[
2
]
==
M2
.
shape
[
1
]
theta
=
np
.
zeros
((
s
,
s
,
da
,
dg
),
dtype
=
complex
)
for
s1
in
range
(
s
):
for
s2
in
range
(
s
):
theta
[
s1
,
s2
]
=
dot
(
M1
[
s1
],
M2
[
s2
])
return
theta
```
%% Cell type:markdown id: tags:
### Definition of system and initializiation
%% Cell type:code id: tags:
```
python
J
=
1.
L
=
20
# Length of chain
s
=
2
# Local dimension of Hilbert space
dt
=
0.05
# The imaginary timestep (should be 0.01 or smaller for good accuracy)
chi
=
60
# The maximum matrix dimension, from which on the matrices are truncated
nmax
=
10000
# Maximum number of iterations
nskip
=
10
# Check energy convergence after nskip steps
# Two-site Hamiltonian
H
=
np
.
array
([[
J
/
4
,
0
,
0
,
0
],
[
0
,
-
J
/
4
,
J
/
2
,
0
],
[
0
,
J
/
2
,
-
J
/
4
,
0
],
[
0
,
0
,
0
,
J
/
4
]])
# Imaginary time evolution operator
exp_beta_H
=
expm
(
-
H
*
dt
);
# antiferromagnetic starting configuration
M
=
[]
for
i
in
range
(
L
):
ar
=
np
.
zeros
((
2
,
1
,
1
),
dtype
=
complex
)
ar
[
0
,
0
,
0
]
=
i
%
2
ar
[
1
,
0
,
0
]
=
(
i
+
1
)
%
2
M
.
append
(
ar
)
even
=
np
.
array
(
range
(
0
,
L
-
1
,
2
))
odd
=
np
.
array
(
range
(
L
+
L
%
2
-
2
,
0
,
-
2
))
```
%% Cell type:markdown id: tags:
### Imaginary time evolution
%% Cell type:code id: tags:
```
python
enold
=
0.
# for checking energy convergence
for
n
in
range
(
nmax
):
# ++++ Trotter scheme: first even bonds, than odd bonds
# === apply exp_beta_H on all even bonds ===
for
j
in
even
:
# go from left to right
theta
=
combine_two_matrices
(
M
[
j
],
M
[
j
+
1
],
s
)
thetas
=
apply_two_site_H
(
theta
,
exp_beta_H
,
s
)
M
[
j
],
M
[
j
+
1
]
=
left_canonize
(
thetas
,
s
,
chi
)
# advance left canonization by a further step
if
j
<
L
-
2
:
theta
=
combine_two_matrices
(
M
[
j
+
1
],
M
[
j
+
2
],
s
)
M
[
j
+
1
],
M
[
j
+
2
]
=
left_canonize
(
theta
,
s
,
chi
)
# === apply exp_beta_H on all even bonds ===
# === renormalize the state on the last site ===
da
=
M
[
L
-
1
].
shape
[
1
]
theta
=
M
[
L
-
1
].
reshape
((
s
*
da
,
1
))
U
,
_
,
_
=
truncated_svd
(
theta
,
chi
)
# throw away norm
M
[
L
-
1
]
=
U
.
reshape
((
s
,
da
,
1
))
# === renormalize the state on the last site ===
if
L
%
2
==
0
:
# the right-most matrix has to be right canonized in this case
theta
=
combine_two_matrices
(
M
[
L
-
2
],
M
[
L
-
1
],
s
)
M
[
L
-
2
],
M
[
L
-
1
]
=
right_canonize
(
theta
,
s
,
chi
)
# === apply exp_beta_H on all odd bonds ===
for
j
in
odd
:
# go from right to left
theta
=
combine_two_matrices
(
M
[
j
-
1
],
M
[
j
],
s
)
thetas
=
apply_two_site_H
(
theta
,
exp_beta_H
,
s
)
M
[
j
-
1
],
M
[
j
]
=
right_canonize
(
thetas
,
s
,
chi
)
# advance right canonization by a further step
if
j
>
1
:
theta
=
combine_two_matrices
(
M
[
j
-
2
],
M
[
j
-
1
],
s
)
M
[
j
-
2
],
M
[
j
-
1
]
=
right_canonize
(
theta
,
s
,
chi
)
# === apply exp_beta_H on all odd bonds ===
# === renormalize the state on the first site ===
db
=
M
[
0
].
shape
[
2
]
theta
=
M
[
0
].
reshape
((
1
,
s
*
db
))
_
,
_
,
Vh
=
truncated_svd
(
theta
,
chi
)
# throw away norm
M
[
0
]
=
Vh
.
reshape
((
s
,
1
,
db
))
# === renormalize the state on the first site ===
# ++++ Calculate energy and check convergence ++++
if
n
%
nskip
==
0
:
# Measure Energy via sum of two-site Operators H
en
=
0.
for
j
in
range
(
L
-
1
):
theta
=
combine_two_matrices
(
M
[
j
],
M
[
j
+
1
],
s
)
thetas
=
apply_two_site_H
(
theta
,
H
,
s
)
for
s1
in
range
(
s
):
for
s2
in
range
(
s
):
en
+=
np
.
trace
(
dot
(
thetas
[
s1
,
s2
],
co
(
tr
(
theta
[
s1
,
s2
])))).
real
M
[
j
],
M
[
j
+
1
]
=
left_canonize
(
theta
,
s
,
chi
)
# Proceed with left canonization
# make right canonized MPS for next tDMRG step
for
j
in
range
(
L
-
1
,
0
,
-
1
):
theta
=
combine_two_matrices
(
M
[
j
-
1
],
M
[
j
],
s
)
M
[
j
-
1
],
M
[
j
]
=
right_canonize
(
theta
,
s
,
chi
)
print
(
n
,
'
dE =
'
,
abs
(
en
-
enold
))
if
abs
(
en
-
enold
)
<
1e-8
:
print
(
"
Converged after
"
+
str
(
n
)
+
"
steps!
"
)
print
(
"
Ground-state energy:
"
+
str
(
en
))
break
enold
=
en
# === check convergence ===
if
n
==
nmax
:
print
(
"
Maximum iterations reached! Convergence criterium not satisfied!
"
)
```
%% Output
0 dE = 5.2022859299
10 dE = 2.41237932615
20 dE = 0.616048162871
30 dE = 0.19945192398
40 dE = 0.0856110936378
50 dE = 0.0446638884127
60 dE = 0.0266683370958
70 dE = 0.0176509913134
80 dE = 0.0127047223848
90 dE = 0.00977408061919
100 dE = 0.00789488605981
110 dE = 0.00658572945765
120 dE = 0.00559930606822
130 dE = 0.00480731763688
140 dE = 0.00414298945949
150 dE = 0.0035712463933
160 dE = 0.00307305023898
170 dE = 0.00263722905494
180 dE = 0.00225631290084
190 dE = 0.00192449985237
200 dE = 0.00163673118822
210 dE = 0.00138832203542
220 dE = 0.0011748521653
230 dE = 0.000992164333084
240 dE = 0.000836395474847
250 dE = 0.000704007231025
260 dE = 0.000591803752473
270 dE = 0.000496934572579
280 dE = 0.000416884722746
290 dE = 0.000349455574773
300 dE = 0.000292739848431
310 dE = 0.000245093656
320 dE = 0.000205107728403
330 dE = 0.000171579325436
340 dE = 0.000143485782885
350 dE = 0.000119960236445
360 dE = 0.000100269773123
370 dE = 8.37960556659e-05
380 dE = 7.00183361975e-05
390 dE = 5.84987014349e-05
400 dE = 4.88693502501e-05
410 dE = 4.08216810968e-05
420 dE = 3.40969704631e-05
430 dE = 2.84784768727e-05
440 dE = 2.37847443216e-05
450 dE = 1.98639157318e-05
460 dE = 1.65889561448e-05
470 dE = 1.38536333161e-05
480 dE = 1.15691357934e-05
490 dE = 9.661232097e-06
500 dE = 8.06788848529e-06
510 dE = 6.73727353018e-06
520 dE = 5.62608618715e-06
530 dE = 4.69815473814e-06
540 dE = 3.92326507992e-06
550 dE = 3.27618108287e-06
560 dE = 2.73582595511e-06
570 dE = 2.28459734686e-06
580 dE = 1.90779520892e-06
590 dE = 1.59314354775e-06
600 dE = 1.33039094941e-06
610 dE = 1.11097674527e-06
620 dE = 9.27752324742e-07
630 dE = 7.747481785e-07
640 dE = 6.46979531282e-07
650 dE = 5.40283849659e-07
660 dE = 4.51185265149e-07
670 dE = 3.76781240874e-07
680 dE = 3.1464805339e-07
690 dE = 2.62761810532e-07
700 dE = 2.19432413573e-07
710 dE = 1.83248596741e-07
720 dE = 1.53031841421e-07
730 dE = 1.27798031713e-07
740 dE = 1.06725389415e-07
750 dE = 8.91276528137e-08
760 dE = 7.44317638635e-08
770 dE = 6.21591595973e-08
780 dE = 5.19102449914e-08
790 dE = 4.33512816755e-08
800 dE = 3.62035965651e-08
810 dE = 3.02344727032e-08
820 dE = 2.52495695463e-08
830 dE = 2.10865902517e-08
840 dE = 1.76100023452e-08
850 dE = 1.47066288037e-08
860 dE = 1.22819674431e-08
870 dE = 1.02570609783e-08
880 dE = 8.56601900523e-09
Converged after 880 steps!
Ground-state energy: -8.68010558621
%% Cell type:markdown id: tags:
### Measure and plot the Entanglement Entropy between all sites
%% Cell type:code id: tags:
```
python
ent
=
np
.
zeros
((
L
-
1
))
## warning measurment assumes right canonized MPS
for
j
in
range
(
L
-
1
):
theta
=
combine_two_matrices
(
M
[
j
],
M
[
j
+
1
],
s
)
M
[
j
],
M
[
j
+
1
],
S
=
left_canonize
(
theta
,
s
,
chi
,
return_S
=
True
)
ent
[
j
]
=
-
np
.
sum
(
S
**
2
*
np
.
log
(
S
**
2
))
plt
.
figure
()
plt
.
plot
(
ent
,
'
-o
'
)
plt
.
xlabel
(
'
site i
'
)
plt
.
ylabel
(
r
'
$S(\rho_i)$
'
)
plt
.
show
()
```
%% Output
%% Cell type:code id: tags:
```
python
```
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment