{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Optimization of an X-Gate for a Transmon Qubit" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "qutip 4.3.1\n", "matplotlib 3.1.0\n", "scipy 1.2.1\n", "numpy 1.16.4\n", "krotov 0.3.0+dev\n", "matplotlib.pylab 1.16.4\n", "CPython 3.6.9\n", "IPython 7.7.0\n" ] } ], "source": [ "# NBVAL_IGNORE_OUTPUT\n", "%load_ext watermark\n", "import os\n", "import qutip\n", "import numpy as np\n", "import scipy\n", "import matplotlib\n", "import matplotlib.pylab as plt\n", "import krotov\n", "from scipy.fftpack import fft\n", "from scipy.interpolate import interp1d\n", "%watermark -v --iversions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$\\newcommand{tr}[0]{\\operatorname{tr}}\n", "\\newcommand{diag}[0]{\\operatorname{diag}}\n", "\\newcommand{abs}[0]{\\operatorname{abs}}\n", "\\newcommand{pop}[0]{\\operatorname{pop}}\n", "\\newcommand{aux}[0]{\\text{aux}}\n", "\\newcommand{opt}[0]{\\text{opt}}\n", "\\newcommand{tgt}[0]{\\text{tgt}}\n", "\\newcommand{init}[0]{\\text{init}}\n", "\\newcommand{lab}[0]{\\text{lab}}\n", "\\newcommand{rwa}[0]{\\text{rwa}}\n", "\\newcommand{bra}[1]{\\langle#1\\vert}\n", "\\newcommand{ket}[1]{\\vert#1\\rangle}\n", "\\newcommand{Bra}[1]{\\left\\langle#1\\right\\vert}\n", "\\newcommand{Ket}[1]{\\left\\vert#1\\right\\rangle}\n", "\\newcommand{Braket}[2]{\\left\\langle #1\\vphantom{#2} \\mid #2\\vphantom{#1}\\right\\rangle}\n", "\\newcommand{op}[1]{\\hat{#1}}\n", "\\newcommand{Op}[1]{\\hat{#1}}\n", "\\newcommand{dd}[0]{\\,\\text{d}}\n", "\\newcommand{Liouville}[0]{\\mathcal{L}}\n", "\\newcommand{DynMap}[0]{\\mathcal{E}}\n", "\\newcommand{identity}[0]{\\mathbf{1}}\n", "\\newcommand{Norm}[1]{\\lVert#1\\rVert}\n", "\\newcommand{Abs}[1]{\\left\\vert#1\\right\\vert}\n", "\\newcommand{avg}[1]{\\langle#1\\rangle}\n", "\\newcommand{Avg}[1]{\\left\\langle#1\\right\\rangle}\n", "\\newcommand{AbsSq}[1]{\\left\\vert#1\\right\\vert^2}\n", "\\newcommand{Re}[0]{\\operatorname{Re}}\n", "\\newcommand{Im}[0]{\\operatorname{Im}}$\n", "\n", "In the previous examples, we have only optimized for state-to-state\n", "transitions, i.e., for a single objective. This example shows the optimization\n", "of a simple quantum gate, which requires multiple objectives to be fulfilled\n", "simultaneously (one for each state in the logical basis). We consider a\n", "superconducting \"transmon\" qubit and implement a single-qubit Pauli-X gate." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The transmon Hamiltonian" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The effective Hamiltonian of a single transmon depends on the capacitive energy\n", "$E_C=e^2/2C$ and the Josephson energy $E_J$, an energy due to the Josephson\n", "junction working as a nonlinear inductor periodic with the flux $\\Phi$. In the\n", "so-called transmon limit, the ratio between these two energies lies around\n", "$E_J / E_C \\approx 45$. The Hamiltonian for the transmon is\n", "\n", "$$\n", " \\op{H}_{0} = 4 E_C (\\hat{n}-n_g)^2 - E_J \\cos(\\hat{\\Phi})\n", "$$\n", "\n", "where $\\hat{n}$ is the number operator, which counts the relative number of Cooper pairs\n", "capacitively stored in the junction, and $n_g$ is the effective offset charge\n", "measured in Cooper pair charge units. The equation can be written in a truncated\n", "charge basis defined by the number operator $\\op{n} \\ket{n} = n \\ket{n}$ such\n", "that\n", "\n", "$$\n", " \\op{H}_{0}\n", " = 4 E_C \\sum_{j=-N} ^N (j-n_g)^2 \\ket{j} \\bra{j}\n", " - \\frac{E_J}{2} \\sum_{j=-N}^{N-1}\n", " (\\ket{j+1} \\bra{j} + \\ket{j} \\bra{j+1}).\n", "$$\n", "\n", "A voltage $V(t)$ applied to the circuit couples to the charge Hamiltonian\n", "$\\op{q}$, which in the (truncated) charge basis reads\n", "\n", "$$\n", " \\op{H}_1 = \\op{q} = \\sum_{j=-N} ^N -2n \\ket{n} \\bra{n}\\,.\n", "$$\n", "\n", "The factor 2 is due to the charge carriers in a superconductor being Cooper\n", "pairs. The total Hamiltonian is\n", "\n", "$$\n", " \\op{H} = \\op{H}_{0} + V(t) \\cdot \\op{H}_{1}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We use a Gaussian voltage profile as the guess pulse:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "lines_to_next_cell": 2 }, "outputs": [], "source": [ "tlist = np.linspace(0, 10, 1000)\n", "\n", "def eps0(t, args):\n", " T = tlist[-1]\n", " return 4 * np.exp(-40.0 * (t / T - 0.5) ** 2)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def plot_pulse(pulse, tlist, xlimit=None):\n", " fig, ax = plt.subplots()\n", " if callable(pulse):\n", " pulse = np.array([pulse(t, None) for t in tlist])\n", " ax.plot(tlist, pulse)\n", " ax.set_xlabel('time (ns)')\n", " ax.set_ylabel('pulse amplitude')\n", " if xlimit is not None:\n", " ax.set_xlim(xlimit)\n", " plt.show(fig)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_pulse(eps0, tlist)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The complete Hamiltonian is instantiated as\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def transmon_hamiltonian(Ec=0.386, EjEc=45, nstates=8, ng=0.0, T=10.0):\n", " \"\"\"Transmon Hamiltonian\n", "\n", " Args:\n", " Ec: capacitive energy\n", " EjEc: ratio `Ej` / `Ec`\n", " nstates: defines the maximum and minimum states for the basis. The\n", " truncated basis will have a total of ``2*nstates + 1`` states\n", "\n", " ng: offset charge\n", " T: gate duration\n", " \"\"\"\n", "\n", " Ej = EjEc * Ec\n", " n = np.arange(-nstates, nstates + 1)\n", " up = np.diag(np.ones(2 * nstates), k=-1)\n", " do = up.T\n", " H0 = qutip.Qobj(np.diag(4 * Ec * (n - ng) ** 2) - Ej * (up + do) / 2.0)\n", " H1 = qutip.Qobj(-2 * np.diag(n))\n", "\n", " return [H0, [H1, eps0]]" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "H = transmon_hamiltonian()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We define the logical basis $\\ket{0_l}$ and $\\ket{1_l}$ (not to be confused with\n", "the charge states $\\ket{n=0}$ and $\\ket{n=1}$) as the eigenstates of the drift\n", "Hamiltonian $\\op{H}_0$ with the lowest energy. The optimization goal is to find a\n", "potential $V_{opt}(t)$ such that after a given final time $T$ implements an\n", "X-gate on this logical basis.\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Energy of qubit transition is 6.914\n" ] } ], "source": [ "def logical_basis(H):\n", " H0 = H[0]\n", " eigenvals, eigenvecs = scipy.linalg.eig(H0.full())\n", " ndx = np.argsort(eigenvals.real)\n", " E = eigenvals[ndx].real\n", " V = eigenvecs[:, ndx]\n", " psi0 = qutip.Qobj(V[:, 0])\n", " psi1 = qutip.Qobj(V[:, 1])\n", " w01 = E[1] - E[0] # Transition energy between states\n", " print(\"Energy of qubit transition is %.3f\" % w01)\n", " return psi0, psi1\n", "\n", "psi0, psi1 = logical_basis(H)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We also introduce the projectors $P_i = \\ket{\\psi _i}\\bra{\\psi _i}$ for the logical\n", "states $\\ket{\\psi _i} \\in \\{\\ket{0_l}, \\ket{1_l}\\}$" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "proj0 = qutip.ket2dm(psi0)\n", "proj1 = qutip.ket2dm(psi1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Optimization target" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The key insight for the realization of a quantum gate $\\Op{O}$ is that\n", "(by virtue of linearity)\n", "\n", "$$\\ket{\\Psi(t=0)} \\rightarrow \\ket{\\Psi(t=T)}\n", " = \\Op{U}(T, \\epsilon(t))\\ket{\\Psi(0)}\n", " = \\Op{O} \\ket{\\Psi(0)}\n", "$$\n", "\n", "is fulfilled for an arbitrary state $\\Ket{\\Psi(t=0)}$ if an only if\n", "$\\Op{U}(T, \\epsilon(t))\\ket{k} = \\Op{O} \\ket{k}$ for every state $\\ket{k}$ in\n", "logical basis, for the time evolution operator $\\Op{U}(T, \\epsilon(t))$ from\n", "$t=0$ to $t=T$ under the same control $\\epsilon(t)$.\n", "\n", "The function `krotov.gate_objectives` automatically sets up the corresponding\n", "objectives $\\forall \\ket{k}: \\ket{k} \\rightarrow \\Op{O} \\ket{k}$:\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "lines_to_next_cell": 2 }, "outputs": [ { "data": { "text/plain": [ "[Objective[|Ψ₀(17)⟩ to |Ψ₁(17)⟩ via [H₀[17,17], [H₁[17,17], u₁(t)]]],\n", " Objective[|Ψ₁(17)⟩ to |Ψ₀(17)⟩ via [H₀[17,17], [H₁[17,17], u₁(t)]]]]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "objectives = krotov.gate_objectives(\n", " basis_states=[psi0, psi1], gate=qutip.operators.sigmax(), H=H\n", ")\n", "\n", "objectives" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Dynamics of the guess pulse\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "guess_dynamics = [\n", " objectives[x].mesolve(tlist, e_ops=[proj0, proj1]) for x in [0, 1]\n", "]" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "def plot_population(result):\n", " '''Representation of the expected values for the initial states'''\n", " fig, ax = plt.subplots()\n", " ax.plot(result.times, result.expect[0], label='0')\n", " ax.plot(result.times, result.expect[1], label='1')\n", " ax.legend()\n", " ax.set_xlabel('time')\n", " ax.set_ylabel('population')\n", " plt.show(fig)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2019-01-31T00:29:10.291810Z", "start_time": "2019-01-31T00:29:09.942317Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEGCAYAAABo25JHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO3deXxU9bn48c+TyU5CCFnYkrAlLGGXsAmyKCJalGq1gtWroqWLWm9t7fXW1qW9vfXa2taq9Vfcl4p1LbiBVlDZIaySsIU9QMgCCYHsM9/fH2fQGEIySWZyZjLP+/Wa18w5c86ZZ7LMM99djDEopZQKXiF2B6CUUspemgiUUirIaSJQSqkgp4lAKaWCnCYCpZQKcqF2B9BSiYmJpk+fPnaHoZRSAWXjxo3Fxpikxp4LuETQp08fsrOz7Q5DKaUCiogcPN9zWjWklFJBThOBUkoFOU0ESikV5DQRKKVUkNNEoJRSQc5niUBEnheRQhHZfp7nRUT+KiJ5IrJNRC7wVSxKKaXOz5clgheBmU08fzmQ4b7NB572YSxKKaXOw2fjCIwxX4hInyYOmQ28bKx5sNeKSBcR6WGMOeaLeDYcOMGK3UXWhoh1xzc2Efeer7e/+bz1uN5GC85t+HzD6517fIPn68fQ4MXrn+sQISIshIhQBxGh1n1k2Nf3cdFhdIkKJzxUawWV/zPGUFXrory6ljPVTk5X1VFeXUtVrZNap6HW6aLOaahx39e5XNTUuTAGDMZ9zze2z163secM7h1+6pLB3RiR2sXr17VzQFkv4HC97Xz3vnMSgYjMxyo1kJaW1qoX23TwJE8sz/Pn33G7io0IpUunMLp2iiA1Poq0rtGkdY2mX1IMQ3p2plNEwI01VAGqtKKGvMLT5BWeZm/RafJPVlJYXs3xU1UUlldTU+dq95gafmHzF8mdIztcImjsR93ox7QxZgGwACArK6tVH+U/mNKfH0zp39i13fffDOCr/d849uwx3zynuefPd82vzvfwvMbONXzz4DqXoabORXWdi6pa5zfuK2udlFXWcvJMDScrajh5pobi0zVsP1LGku0F1Lmsi4hAelIMo9K6MHVgMpMyEukcGYZS3lBaUcOynYWs3VdC9sGT7Cs689VzEaEhpMRH0a1zJFm940nuHEl8dDgxkaHERDiIiQgjJiKUqHAHYQ4hzBFCaIh1b92EUEcIIWKVpgXr71mQr0vb9bat5+sd568ZwMfsTAT5QGq97RTgaHsH0VjVi/uZ9g7FVnVOF8fKqthTWM7Ww2Vsyy/lo+0FvJGdjyNEmJieyPVZqUzPTCYi1GF3uCrAVNU6+Wj7Md7Mzmfd/hM4XYYu0WGMTovnOxekkNmjM+nJMfTsEoUjJLj+9/yBnYlgMXCniLwOjAPKfNU+oJoX6gghtWs0qV2juXhQN8BKDpsOlbJsZyGLthzhjtc2kdApnNsv6sdNE3oTo9VHqhmnqmp5dsV+Xl17kBNnauiTEM0Pp/RjRmZ3hvWKI0Q/9P2C+GrNYhFZCEwFEoHjwINAGIAx5v+J9VX8SayeRRXArcaYZmeTy8rKMjrpXPtzugwr84p5fuV+Pt9dRHx0GPdeNog5Y1L1n1mdo87p4sXVB3hyeR6lFbVcmtmNmyf04cL+Cfr3YhMR2WiMyWr0uUBbvF4Tgf22HC7l9x/uYN3+E1yQ1oU/XjeCfkkxdoel/MSugnJ+8dZWtuaXMXlAEr+4bCBDe8XZHVbQ00SgvM4YwzubjvDbD3KprXPxv9cMY/bIXnaHpWz2ZvZh7v/XdmIiQvnN7CF8a1iPoG2A9TdNJQKt5FWtIiJ8Z3QKF6YncNdrm7n79S3kFZ7mnksH6D9+EHK5DL95P5cXVx9gYnoCj88ZRWJMhN1hKQ/pqCLVJj3iolg4fzxzxqTyxLI87nv7S5yuwCplqrapdbq4540tvLj6APMm9uWlW8dqEggwWiJQbRbmCOH31wwjOTaCvy7LIyQE/vfqYVoyCAJOl+E//7mFD7Yd497LBnLHtHS7Q1KtoIlAeYWIcM+MgTiN4anle4mJCOX+b2XaHZbyIWMMD7+XwwfbjvHLKwYxf/K5AzZVYNBEoLzq5zMGUl5VxzMr9pORHMt3x6Q2f5IKSM+u2M/Law4yf3I/TQIBTtsIlFeJCA/MymRSeiK/+td2Nh48aXdIygfW7ivhkSU7uXxod+6bOcjucFQbaSJQXhfqCOHJG0bRPS6SnyzczKmqWrtDUl5UWF7Fna9tpnfXaB69drgOEOsANBEon+gSHc7jc0ZScKqKBxfl2B2O8hJjDL9850vKq2p5+sbRxOpkhB2CJgLlM6PS4rnr4nTe3XyED7bpNFIdwbubj/DvHYXce9lABnaPtTsc5SWaCJRP3TktnWG94njovRytIgpwReXVPLQ4h6ze8dw6sa/d4Sgv0kSgfCrUEcLvrh5K8elq/vzJbrvDUW3w6JKdVNY6+b9rh+tU0R2MJgLlc8NTunDjuN68tPoAuUdP2R2OaoUth0t5c2M+8yb1pb9OMNjhaCJQ7eLnMwbSOSqMR5bstDsU1ULGGB5anENSbAR3XZxhdzjKBzQRqHYRFx3GHVPT+WJ3Eavziu0OR7XAx7nH2XK4lHsvG6iLEXVQmghUu7lpQm96xkXyf0t2EmjTnwcrl8vw50920y+xE9eM0mnGOypNBKrdRIY5+M9LB7A1v4x/7yi0OxzlgQ+3H2NnQTl3T88g1KEfFx2V/mZVu7p6VC9S4qN4anmelgr8nNNl+Mu/95CRHMOs4T3tDkf5kCYC1a7CHCH8YEp/thwuZc2+ErvDUU34JPc4eYWn+cklGdpdtIPTRKDa3XWjU0iMieBvy/faHYpqwrMr9pESH8XlQ7vbHYryMU0Eqt1Fhjm4bVJfVuYVs+OYjivwR5sPnST74EnmTeyrbQNBQH/DyhZzxqQSERrCy2sO2h2KasRzK/cTGxmq60kECU0EyhbxncL59she/GvzEcoqdA4if3KktJKPthdww9g0HTcQJDQRKNv8x4W9qax18kb2YbtDUfW8vv4QLmO4aUJvu0NR7UQTgbLNkJ5xjOkTz8trD+B0aVdSf1DndPFG9mGmDkgiJT7a7nBUO9FEoGx104Q+HD5Ryeq9Ou2EP1i+q4jjp6qZMzbN7lBUO9JEoGw1I7MbnSNDeTM73+5QFLBw/SGSYyO4eFCy3aGodqSJQNkqMszB7JG9WJpTQFmlNhrb6WhpJZ/tKuS6rBTCtMtoUNHftrLddVkpVNe5eG/rUbtDCWrvbMrHZeD6LK0WCjaaCJTthvWKY2C3WN7cqNVDdjHG8K8tRxnTJ560BG0kDjaaCJTtRITrslLYeriUPcfL7Q4nKOUeO0Ve4Wlmj9SppoORTxOBiMwUkV0ikici9zXyfJqILBeRzSKyTUSu8GU8yn/NHtmLEEGrh2yyaMtRQkOEbw3rYXcoygY+SwQi4gCeAi4HMoG5IpLZ4LBfAW8YY0YBc4C/+Soe5d+SYiMY3y+B97cd0+mp25nTZVi85ShTBiQR3ync7nCUDXxZIhgL5Blj9hljaoDXgdkNjjFAZ/fjOEC/DgaxWcN7sq/4DLk6EV27Wre/hIJTVczWFciCli8TQS+g/twB+e599T0E3Cgi+cCHwF2NXUhE5otItohkFxUV+SJW5QdmDu1OaIjw3tZjdocSVBZtPkqncAeXDu5mdyjKJr5MBI2tZNGwzD8XeNEYkwJcAbwiIufEZIxZYIzJMsZkJSUl+SBU5Q+6dgpnYnoi7287qtVD7aTW6WJpbgEzhnQnKtxhdzjKJr5MBPlA/TlsUzi36uc24A0AY8waIBJI9GFMys/NGt6D/JOVbM0vszuUoLB+/wlKK2qZqYvPBDVfJoINQIaI9BWRcKzG4MUNjjkEXAIgIoOxEoHW/QSxGUO6E+4I0d5D7WTJ9gKiwhxMztCSdjDzWSIwxtQBdwJLgR1YvYNyROQ3InKV+7CfAd8Xka3AQuAWo3UCQS0uKoyLMhJZmlOg1UM+5nIZluYUMGVAklYLBTmfrjphjPkQqxG4/r4H6j3OBSb6MgYVeC7N7ManOwvZcayczJ6dmz9Btcrmw6UUlldrtZDSkcXK/1wyuBsi8EnucbtD6dCW5hQQ5hCm6UyjQU8TgfI7SbERXJAWz8e5BXaH0mEZY1ULTeifSFxUmN3hKJtpIlB+aUZmN3KOnuJIaaXdoXRIOwvKOVhSwcwhWi2kNBEoPzXD/QH1SY6WCnxhyfYCRKz2GKU0ESi/1DexE+nJMXys7QQ+sWxnIaNSu5AUG2F3KMoPaCJQfmtGZjfW7T9BWYWuXOZNheVVfHmkTJejVF/RRKD81iWDu+F0Gb7Yo2MMvemzXdbPc+pATQTKoolA+a2RqV3oEh321QeX8o7lOwvp1jmCITpGQ7lpIlB+yxEiTM5I4vPdhbhcOsrYG2qdLlbsKWbawGREGpsXUgUjTQTKr00dmETx6RpyjuoaBd6w4cAJTlfX6SAy9Q2aCJRfmzwgCRFYvqvQ7lA6hOU7CwlzCBPTdZJf9TVNBMqvJcZEMLxXHJ9pIvCK5buKGNc3gZgIn04zpgKMJgLl96YOTGbz4VJOnKmxO5SAdvhEBXmFp7VaSJ1DE4Hye9MGJWMMrNBupG2ybKdVqtLxA6ohTQTK7w3vFUfXTuHajbSNPt9dRO+EaPomdrI7FOVnNBEovxcSIkwZkMTnu4u0G2kr1dS5WLuvhIsytJFYnUsTgQoIUwcmceJMDduO6FrGrbHlcCkVNU4mpeuSlOpcmghUQDjb3XGlthO0yso9RYQITOifYHcoyg9pIlABITEmgswenVmxp9juUALSirxihqd00UVoVKM0EaiAcVFGIpsOneRMdZ3doQSUsspath4u1fYBdV6aCFTAmJSRSK3TsH7/CbtDCShr9pbgMjBJRxOr89BEoALGmD5dCQ8N0eqhFlqZV0R0uINRafF2h6L8lCYCFTAiwxyM7dOVlXnaYNwSK/cUM75fAuGh+u+uGqd/GSqgTMpIZPfx0xw/VWV3KAHh8IkKDpRUaLWQapImAhVQzjZ4rtTqIY+syrN+TtpQrJqiiUAFlMHdO5PQKZyVeZoIPLEir5hunSNIT46xOxTlxzQRqIASEmLNpb9iTzHG6HQTTXG5DKvzipmUnqSrkakmaSJQAWdSRiLFp6vZWVBudyh+LefoKU5W1Gq1kGqWJgIVcLSdwDMr3L2rdDUy1RyPE4GIOESkp4iknb35MjClzqdHXBT9kzqxQtsJmrRyTzGDuseSFBthdyjKz3mUCETkLuA48Anwgfv2vgfnzRSRXSKSJyL3neeY74pIrojkiMhrLYhdBbGLMpJYv7+Eqlqn3aH4pcoaJ9kHTmq3UeURT0sEdwMDjTFDjDHD3LfhTZ0gIg7gKeByIBOYKyKZDY7JAP4bmGiMGQL8Z4vfgQpKk9ITqap1sengSbtD8UsbDpygxulikrYPKA94mggOAy2dCH4skGeM2WeMqQFeB2Y3OOb7wFPGmJMAxhhdoVx5ZHz/BEJDRKuHzmNlXjHhjhDG9dVpp1XzQj08bh/wmYh8AFSf3WmM+VMT5/TCSiBn5QPjGhwzAEBEVgEO4CFjzJKGFxKR+cB8gLQ0bZpQEBMRyqi0LqzcU8x/zbQ7Gv+zYk8xo3vHExXusDsUFQA8LREcwmofCAdi692a0ljH5YYdv0OBDGAqMBd4VkS6nHOSMQuMMVnGmKykJF1hSVkmpSex/WgZJ8/U2B2KXykqr2bHsVNaLaQ85lGJwBjzMICIxFqb5rQHp+UDqfW2U4CjjRyz1hhTC+wXkV1YiWGDJ3Gp4DYpI5E//3s3q/YWM2t4T7vD8Rur9+q0EqplPO01NFRENgPbgRwR2SgiQ5o5bQOQISJ9RSQcmAMsbnDMv4Bp7tdIxKoq2teSN6CC14iUOGIjQ3U8QQMr9hTTJTqMIT3j7A5FBQhP2wgWAPcYY5YDiMhU4BngwvOdYIypE5E7gaVY9f/PG2NyROQ3QLYxZrH7uRkikgs4gXuNMSWtfjcqqIQ6QpjQL+Gr6SZ0GgUwxrByTzET+yfiCNGfh7fV1taSn59PVZX/zn4bGRlJSkoKYWGeL0vqaSLodDYJABhjPhORTs2dZIz5EPiwwb4H6j02wD3um1ItdlFGIh/nHudASQV9E5v9k+zw9hadoeBUlbYP+Eh+fj6xsbH06dPHL794GGMoKSkhPz+fvn37enyep43F+0Tk1yLSx337FbC/VZEq5UWTMqzOAyv36GI18PXPQQeS+UZVVRUJCQl+mQQARISEhIQWl1g8TQTzgCTgHeBd9+NbW/RKSvlAn4RoenWJ0uUr3VbmFdM7IZrUrtF2h9Jh+WsSOKs18XmUCIwxJ40xPzHGXGCMGWWMufvsIDCl7CQiXJSRyJq9JdQ5XXaHY6tap4s1e0u0t1AHt2TJEgYOHEh6ejqPPPKIV67ZZCIQkb+4798TkcUNb16JQKk2mpSRSHl1HVvzWzr4vWPZfKiUMzVOJqXrWJuOyul0cscdd/DRRx+Rm5vLwoULyc3NbfN1m2ssfsV9/8c2v5JSPjKxfyIi1mybo3vH2x2ObVbuKSJEYEJ/nVaio1q/fj3p6en069cPgDlz5rBo0SIyMzObObNpTSYCY8xG98ORxpjH6z8nIncDn7fp1ZXygvhO4QztGcfKvCLunp5hdzi2WZFXzIjULsRFed5tULXew+/lkHv0lFevmdmzMw9eef4hWkeOHCE19etxuikpKaxbt67Nr+tpY/HNjey7pc2vrpSXTMpIZPOhUk5X19kdii3KKmrZeriUi7S3UIfW2PKs3mi8brJEICJzgRuAvg3aBGIBHfil/MZF6Yk8/dle1u4tYXpmN7vDaXdr9hXjMnDRAG0faC9NfXP3lZSUFA4f/nouz/z8fHr2bPv0Ks21EawGjgGJwGP19pcD29r86kp5yeg+8USGhbAyrzgoE8GKPcXERIQyMvWcORtVBzJmzBj27NnD/v376dWrF6+//jqvvdb29byaayM4CBwEJrT5lZTyoYhQB2P7JrAiSAeWrcwrZny/roQ5dBnyjiw0NJQnn3ySyy67DKfTybx58xgypO0lE08nnRsvIhtE5LSI1IiIU0S820qiVBtdlJ7I3qIzHCurtDuUdnWopIKDJRU6mjhIXHHFFezevZu9e/dy//33e+Wann59eBJrvYA9QBRwO/CEVyJQykvOzq8TbKOMV+S5p5XI0PYB1ToelyONMXmAwxjjNMa8gHv6aKX8xaDusSTGhLMqyJavXLmnmJ5xkfRP0kn3VOt4OvtohXtNgS0i8ihWA7L+1Sm/IiJMTE9kVV4xLpchJAimYXa6DKvyipk5tLvfz4Gj/JenJYKbsNYUuBM4g7Xy2Hd8FZRSrTUpPZHi0zXsLCi3O5R2sS2/lFNVdVotpNrE06UqD7ofVgIP+y4cpdrmorPTUucVkdmzs83R+N7Z1dkm6rQSqg2aG1D2JecuOP8VY8xwr0ekVBt0j4skPTmGFXuKmT+5v93h+Nxnu4sY1iuOhJgIu0NRAay5EsGsdolCKS+alJ7IwvWHqKp1EhnmsDscnymtqGHzoZPcOS3d7lBUO5o3bx7vv/8+ycnJbN++3SvXbLKNwBhzsKmbVyJQysumDEiius7Fuv0n7A7Fp77YY00rMXVQst2hqHZ0yy23sGTJEq9e09MBZeUicsp9q9IBZcqfje+XQERoCMt3Ftodik99trOQ+OgwRqTotBLBZPLkyXTt2tWr1/S0sTi2/raIfBsY69VIlPKSqHAHF/ZPYNnOQh68MrNDdqt0uQyf7y5i8oAkHEHQTdYvfXQfFHzp3Wt2HwaXe2fVsZZo1cQkxph/ARd7ORalvObiQckcOlHBvuIzdofiE18eKaPkTA3TBmq1kGo7j0oEInJNvc0QIIsmehMpZbdpg5JhUQ7LdxbSPynG7nC8bvmuQkRgsk47bR8bvrn7iqcji6+s97gOOADM9no0SnlJSnw0A7rFsGxnIbdf1M/ucLxu+a4iRqR0oWuncLtDUR2AR1VDxphb692+b4z5nTGmY7fEqYA3bWAy6/efoLyq1u5QvKrkdDXb8ku1WihIzZ07lwkTJrBr1y5SUlJ47rnn2nxNT6uG+gGPA+OxqoTWAD81xuxrcwRK+ci0Qcn8/Yt9rNxTzOXDetgdjtd8sacIY2DaIK0WCkYLFy70+jU9bSx+DXgD6AH0BN4EvB+NUl40unc8sZGhLOtg3Ug/3VFIYkw4Q3vG2R2K6iA8TQRijHnFGFPnvr2KNhYrPxfmCGHygCQ+212Ey9Ux/lyr65x8tquISwZ1C4rZVVX78DQRLBeR+0Skj4j0FpFfAB+ISFcR8e7IBqW86OKByRSVV/PlkTK7Q/GKtftOcLq6jhlDgm9dZuU7nvYaut59/4MG++dhlQw6XrcM1SFcPCgZR4iwNKeAER1gYfdPcguIDncwUZeltI0xxq8HKRrT8tKvp72G+jZx0ySg/FZ8p3DG9+vKku0FrfoH8Scul+GT3ONMGZDUoSfT82eRkZGUlJT47d+SMYaSkhIiIyNbdJ6nvYbCgB8Bk927PgP+boxpsl+eiMzE6m3kAJ41xjQ6AkNErsVqgB5jjMn2LHSlPDNzSHd+vSiHvMLTZHSLbf4EP7XtSBnHT1VzaaZWC9klJSWF/Px8ioqK7A7lvCIjI0lJSWnROZ5WDT0NhAF/c2/f5N53+/lOEBEH8BRwKZAPbBCRxcaY3AbHxQI/Ada1KHKlPDTDnQiWbC8I6ETwcU4BjhDhYp1t1DZhYWH07dvX7jC8ztPG4jHGmJuNMcvct1uBMc2cMxbIM8bsM8bUAK/T+Gjk3wKPAlUeR61UC3TrHMkFaV1YklNgdyht8nHuccb17UqXaB1NrLzL00TgFJGvlntyDzBzNnNOL+Bwve18976viMgoINUY835TFxKR+SKSLSLZ/lwkU/5r5tDu5Bw9xeETFXaH0ip5heXkFZ5mhlYLKR/wNBHci9WF9DMR+QxYBvysmXMaa1b/qoVFREKAP3twHYwxC4wxWcaYrKQkHU2pWm7mEGtk8dIALRW8t/UYInBFBxohrfyHp4lgFfB3wOW+/R1rmomm5AOp9bZTgKP1tmOBocBnInIAa/qKxSKS5WFMSnksLSGazB6d+Wh74CUCYwzvbTvK+L4JJHduWW8QpTzhaSJ4GeiLVZ//W/fjV5o5ZwOQISJ9RSQcmAMsPvukMabMGJNojOljjOkDrAWu0l5DyleuGNadjQdPcqS00u5QWiT32Cn2FZ1h1ggtDSjf8DQRDDTG3G6MWe6+zQcGNHWCMaYOuBNYCuwA3jDG5IjIb0TkqraFrVTLXTXCaqJatOWIzZG0zPvbjuEIES4fqolA+Yan3Uc3i8h4Y8xaABEZh1Vd1CRjzIfAhw32PXCeY6d6GItSrZKWEM0FaV1YtPkoP56abnc4HjHG8N7Wo0xKT9S1B5TPeFoiGAesFpED7vr8NcAUEflSRLb5LDqlvOzqUb3YdbycHcdO2R2KR7bml5F/spJZw7U0oHzH0xLBTJ9GoZQvlR+HvcugaAfXnS6lJqyIA0u3MviyWdZi4f44b4zLBYW5HF36Fg+E7eaqw0vgZFfoNhT6T4NOOteQ8h7x1zkzzicrK8tkZ2t7svLAif2w7LeQ8y8wTnCEQ2Qc1RWniDDV1jHxfWD49TDmdojxgxG7Zfmw6WXY9AqUW53saiSC8KhYqCoDVy2EhMGwa+HiX0Fcy6YSUMFLRDYaYxrtlamJQHVM2S/AkvsgJBRG3wIj5kDyEAgJYdHmfP7wxr95ccoZ0ov+DXuXW0li5FyY/AuI69Xs5b2u9DB88Shs/gcYF6RPZ2vcNH64KpZHbp3JlIHJ4KyDgm2w7Z+w8UUQB8z6M4y4vtnLK9VUIvC0akipwOBywdJfwrqnof/FcNWT53ywzxjSg19F9OCJ0mQev+kOKM6DNU/C5ldh6+sw7gcw6acQFe/7eE8XwuePwqaXrO0xt8OEOyC+N39+YT3ElTMpwz2I0hEKvS6wbhPugHd/CO/Oh5I8mPZL/6ziUgHB08ZipfyfMV8ngXE/gu+91ei3+6hwB9eM6sVHXxZw8kwNJKbDlX+BuzZC5rdh1V/h8RGw4k9Qc8Y3sVaXw/Lfw+MjYeMLMPIG+MlmuOJRiO9NQVkVX+wu4jsXpOBobCWyLmnwH4th1E1WSeLTh30TpwoKmghUx7HqcSsJjP8xzPw9hJx/zv6549Kocbp4e1P+1zvje8M1f4cfroTU8daH6+MjYd0CqKvxTox1NbD+GfjrKPj8EciYDneshysf/0Z9/9ub8nEZuHZ0E20AjlC48q8w+lZY+WerukipVtBEoDqGfZ9bH9xDroHL/rfZapJB3TszKq0LC9cfOneRke5D4XtvwLylkJgBH90LT4y2PsCrT7cuvurTsOYpq6Tx4c8hcQDc/il892VI6P+NQ+ucLl5bd4jx/brSJ7FT09cNCYEr/gjp0+GDn8HB5mZ+UepcmghU4DtTDG/fBgkZcNUTHteVzx2bxt6iM6zff6LxA9LGwy0fwI3vQEyS9QH+p8HWB+6+z8HZ5LpMUFdtHbfoDnhskFVt1bUf3Pi2dd2UxqfV+veOQo6UVnLLhR7Oe+8IhWufh7hUeGe+1btIqRbQxmIV+D76BVSWWnXmETEen3bl8J78z/u5vLTmAOP6JTR+kAikX2I1POdnw/oFVqPyhmchojP0GAHJg62up6GRUFcFp45B8W7r+LpKCI+x2h5G3wKpzS3jAS+tPkCvLlFMH9yC7qyRcXDNAnj+MvjoPrj6ac/PVUFPE4EKbDs/hO1vw7T7oVtmi06NCnfwvfG9+fvnezlYcobeCU1Uw4hYH+KpY6DmL1aX073L4NgW2PpPqK73LTyyi1XdM/oW6DsZ+k2B8GaqeM6+nYJTrNlXwn2XDyLU0cICe+pYmHQPrPij1V2235SWna+CliYCFbhqKqxqmm5Dre6erXDLhX14dsU+nl+5n4dnD/XspPBOMHiWdTurtgqcNRAaYd1a6aXVB4kIDeH6rNTmD27M5J/Dl29a1Vg/XAWhOj+Rap62EWoKxx4AABLbSURBVKjAteZJa/Tttx4DR1irLtGtcyRXjejFG9n5lFa0oWdQWCREdm5TEjh+qoq3N+VzzQUpxLd2grmwKLjiD1bV1NqnWh2LCi6aCFRgOnXM6jI5+CqrUbcNvj+5L5W1Tl5Zc9BLwbXOM1/sw+ky/GhK/+YPbsqAy2DA5dY4iIrzNIQrVY8mAhWYlv+P1Wvn0rYPpBrUvTMXD0rm2ZX7OVXVTE8gHyk5Xc0/1h1i9siepCVEt/2C0x+0Bq2t/FPbr6U6PE0EKvAU7bbm5Bk73+qO6QU/nT6Asspanl+53yvXa6lnVuynqs7pvXUSkgfDiLnWYLiywFqIR7U/TQQq8Kz4o1UX3soG4sYMS4lj5pDuPLdivzXtRDs6WlrJC6v2M3tET9KTPe/+2qyp91kT2H3+iPeuqTokTQQqsBTnWb1isuZZg7y86J4ZAzhdU8cTy/K8et3mPPbxbgzw88sGevfC8b0h61bY8hqUHvLutVWHoolABZYVj4EjAibe7fVLD+gWy5wxaby05gC7j5d7/fqNyTlaxjub87n1wj6kxHuhbaChiXcDAquf8P61VYehiUAFjhP7rLn4s+b5bBGZey8bSExEKA8tzjl3DiIvc7oMv3x3O/HR4b5bQzkuxRpctulla8prpRqhiUAFjlV/tRaamfgTn71E107h/HzGAFbvLeHdzb5tZH15zQG2Hi7lgVmZxEW3bhyERyb91BrstvZvvnsNFdA0EajAcKYEti60VuOK7e7Tl7phXG+yesfz4OIcjpZW+uQ1Dp+o4A9LdzFlQBKzR/b0yWt8JaG/NdfR+meh8qRvX0sFJE0EKjBkP2dN6DbhTp+/lCNEeOy7I3C6DPe+tRWXy7tVRLVOF3ct3IxDhP/59lCkPVYWu+geqCnXNQtUozQRKP9XW2XN+pkxA5K83LPmPHondOLXszJZlVfCY5/s8uq1H12yky2HS3nkO8NJ7eqDBuLGdB8G/aZa4wqamz5bBR1NBMr/ffkGnClql9JAfXPGpDJ3bCpPLd/Loi3eaS94bd0hnlmxn5sn9OZbw3t45ZoeG3+HNTdTzr/a93WV39NEoPybMdbKXt2GWVM6tyMR4eGrhjK2b1fufXMbn+443qbrLdl+jF8v2s7UgUn8elbLpsz2ivTp1uI9a5+yfq5KuWkiUP4t799QtBMuvNPjlce8KTw0hGduymJg91h+9OomPvzyWKuu886mfO54bTMjUuJ48oYLWr7WgDeEhMCEH8PRzXBIl7RUX9NEoPzb6icgtoe1FrFN4qLDePW2cQzp1Zkf/2MTj328i1qny6Nza+pc/Pb9XO55Yytj+3TlldvGERNh4zIgw+dAVLxVylLKTROB8l/HtsH+z2HcD2xfYCUuOoyF3x/PdaNTeGJZHlc+sZLPdxedd9CZy2X4dMdxZj7+Bc+t3M8tF/bhpXlj6WRnEgAIj7YG5O38wBqgpxQgvh496W1ZWVkmOzvb7jBUe3j3h5C7GO7Jsb7F+omPcwp4aHEOR8uq6J/UiemDuzGoRyxxUWGcqqzjyyNlfLrjOAdKKuiTEM2DVw5h2iDfjIRulVPH4C/DYMxtcPn/2R2NaicistEYk9XYcz79eiIiM4HHAQfwrDHmkQbP3wPcDtQBRcA8Y4y9q4Mo/1BeAF++ZX179aMkADBjSHemDkxm0ZYjvLPpCM+v2k+t8+svVBGhIYzuHc9PLx3A5UN7EB7qZwXvzj1g6Hdg86sw9b8hqovdESmb+SwRiIgDeAq4FMgHNojIYmNMbr3DNgNZxpgKEfkR8Chwva9iUgFk/TPgqoPxP7Q7kkaFh4ZwXVYq12WlUlXr5EhpJacqa4mNDCO1axQRoQ67Q2zahB/Dttdh00s+mcBPBRZfflUZC+QZY/YZY2qA14HZ9Q8wxiw3xlS4N9cCKT6MRwWK2krIfh4GXuG1hWd8KTLMQf+kGEalxZOeHOP/SQCgxwjocxGs+7sOMFM+TQS9gMP1tvPd+87nNuCjxp4Qkfkiki0i2UVFRV4MUfmlra9D5QmYcIfdkXRsE+6EU0d0gJnyaSJorNN3oy3TInIjkAX8obHnjTELjDFZxpispCTvLkai/IwxsPZp6xtr7wvtjqZjy5hhDTBb84QOMAtyvkwE+UBqve0U4GjDg0RkOnA/cJUxptqH8ahAkPcpFO+ypkOwYQBZUDk7wOzYVji4yu5olI18mQg2ABki0ldEwoE5wOL6B4jIKODvWElAV81Q1vQHMd1hyNV2RxIcRsyFqK46wCzI+SwRGGPqgDuBpcAO4A1jTI6I/EZErnIf9gcgBnhTRLaIyOLzXE4Fg+O5sHcZjP2+7QPIgkZYFIy5HXZ9ZK0HrYKST8cRGGM+BD5ssO+Beo+n+/L1VYBZ+zcIjbLGDqj2M/b7sOov1s9/1p/sjkbZwM9GuqigVX4ctr1hra8b3dXuaIJLTDIM/y5seQ0qTtgdjbKBJgLlH9b+DVy1cOFddkcSnCbcCXWV1kpwKuhoIlD2qyyFDc9Z6+om9Lc7muCUPNhar2DdAqjTznvBRhOBst+GZ631dCf91O5IgtuFd8GZQmsOIhVUNBEoe9VUWAPI0qdDj+F2RxPc+k6BlDGw8s9QV2N3NKodaSJQ9tr8KlQUw6R77I5EicCU/4Kyw9aEdCpoaCJQ9qmtsrotpo7T6ST8Rfp06DkKVjwGzjq7o1HtRBOBss/GF61Jz6bdr9NJ+AsRmPwLOHkAvnzT7mhUO9FEoOxRc8b61tnnIug3xe5oVH0DL4duw+CLP+gU1UFCE4Gyx/pnrB4qF//a7khUQyJw8f1wYq+1cI3q8DQRqPZXVWa1DWTMgLRxdkejGjNgJqRdCJ89AtXldkejfEwTgWp/nz9qDSK7+Fd2R6LORwRm/BbOFMHqJ+2ORvmYJgLVvkr2WssjjrrRWnxG+a+ULMicDaufgPICu6NRPqSJQLWvj38FoZHaNhAoLnnQmgPqkweaP1YFLE0Eqv3s+QR2fQiTfwax3eyORnkioT9MvBu2/RP2f2F3NMpHNBGo9lFdDu//FBIHwPgf2x2NaomLfgZdesMHP9OpJzooTQSqfXz6WyjLh6uegNAIu6NRLREWBVf8EYp3W2M/VIejiUD53qG1sH6BtRJW2ni7o1GtMWAGDPuuNcgsf6Pd0Sgv00SgfKviBLx9O3RJg0u0wTGgXfEHiO0B7863Zo1VHYYmAuU7xsDiu6D8GFz7AkTE2h2RaouoLnD101CSBx/da/1+VYegiUD5ztqnYef7MP0hSBltdzTKG/pOhsn3WtOH67KWHYYmAuUbu5fCx/fDoFkw/g67o1HeNPWX1hQUH/0XHFxtdzTKCzQRKO87thXemgfdhsI1CyBE/8w6lJAQ6/ca3xcWzoWC7XZHpNpI/0OVdx3PgZe/DVHxcMM/IbyT3REpX4iMgxvfhrBoeOVqKM6zOyLVBpoIlPcc3QwvXWVNIXHzYujc0+6IlC/F94b/WATGBS/N0pJBANNEoLxj98fwwresb4i3vA9d+9kdkWoPSQPg5vcAgRcuh32f2x2RagVNBKptnHWw7Hfw2nchMR1u/8San0YFj26Z1u+9cy+rmmjFn8Dlsjsq1QKaCFTrFe+xqgS+eBRGzIVbPoTY7nZHpewQlwK3LYXMq+DTh+GVb8OJ/XZHpTykiUC1XGUpfPIg/G0CHM+FqxdYA40iYuyOTNkpMs4aOHjl43BkIzw1Dpb/Xlc4CwChdgegAsipo7DhWWu94epTMPJ7MP1hiEmyOzLlL0Rg9C3WMqQf/xo+fwTW/T8Y/yPImgcxyXZHqBohJsCGiWdlZZns7Gy7wwgeFScg71PY9jrsXWZNK5A525qauMdwu6NT/i5/I6z4o7UOhThgwGUw7Frof7HVxVi1GxHZaIzJauw5n5YIRGQm8DjgAJ41xjzS4PkI4GVgNFACXG+MOeDLmFQTjIGTB6xuoMe2wIFVVhEfYzUETroHRt6gjcHKcymjYe5CKNoNW16Fra9/nRRSxkDvC6HnKOg5EuJSrRKFanc+KxGIiAPYDVwK5AMbgLnGmNx6x/wYGG6M+aGIzAGuNsZc39R1tUTgIWct1FVBXTXUVlr3dZVQeRIqSqxv+hUnrMXJSw9aCeDkQesYAEe4taZw+nTr1nMUhDhsfUuqA3DWwZFsa7W6vZ9CwZfgqrOeC+tkjU2I72PNVtspCaITILqrdR8ZB6FR1voIYVHWeJXQSB257iG7SgRjgTxjzD53EK8Ds4HcesfMBh5yP34LeFJExPgiO216xVqEG/elv3oJD7cbPYamz/H2ticxuJxWAjBOPBLR2fqnS0i3PvAT0q0P/eRMCA337BpKecoRaq1JkTYeLvk11FZZo9GPbYGSve4vJAesZTFrTnt4zXCrhBHicN+HgIQ0vo8GJY5GSyDteUwLTfkFDP1O26/TgC8TQS/gcL3tfGDc+Y4xxtSJSBmQABTXP0hE5gPzAdLS0loXTXQCJA8+e8GzV27hdkvOaenxXopBQr7+phQaYd2H1duO6vr1N6yoeF0tTNkrLNKqPmpsdtraKqg84S7BlkBVmbWvrtK6r634utRrnNbYBeO0Rjq7nO599bcbjm1o5PvmOd9BfXhMa0R28c51GvBlImgs/TX8aXhyDMaYBcACsKqGWhXNoCusm1IqMIRFQlhPnaqkHfiyci0fSK23nQIcPd8xIhIKxAEnfBiTUkqpBnyZCDYAGSLSV0TCgTnA4gbHLAZudj++Fljmk/YBpZRS5+WzqiF3nf+dwFKs7qPPG2NyROQ3QLYxZjHwHPCKiORhlQTm+CoepZRSjfPpOAJjzIfAhw32PVDvcRVwnS9jUEop1TTtgKuUUkFOE4FSSgU5TQRKKRXkNBEopVSQC7jZR0WkCDjYytMTaTBqOQjoew4O+p6DQ1vec29jTKNzxgdcImgLEck+36RLHZW+5+Cg7zk4+Oo9a9WQUkoFOU0ESikV5IItESywOwAb6HsODvqeg4NP3nNQtREopZQ6V7CVCJRSSjWgiUAppYJc0CQCEZkpIrtEJE9E7rM7Hl8TkVQRWS4iO0QkR0Tutjum9iAiDhHZLCLv2x1LexCRLiLylojsdP+uJ9gdk6+JyE/df9PbRWShiETaHZO3icjzIlIoItvr7esqIp+IyB73fby3Xi8oEoGIOICngMuBTGCuiGTaG5XP1QE/M8YMBsYDdwTBewa4G9hhdxDt6HFgiTFmEDCCDv7eRaQX8BMgyxgzFGuK+444ff2LwMwG++4DPjXGZACfure9IigSATAWyDPG7DPG1ACvA7NtjsmnjDHHjDGb3I/LsT4getkblW+JSArwLeBZu2NpDyLSGZiMta4HxpgaY0ypvVG1i1Agyr2qYTTnrnwY8IwxX3Duao2zgZfcj18Cvu2t1wuWRNALOFxvO58O/qFYn4j0AUYB6+yNxOf+AvwCaLhKeUfVDygCXnBXhz0rIp3sDsqXjDFHgD8Ch4BjQJkx5mN7o2o33Ywxx8D6ogcke+vCwZIIpJF9QdFvVkRigLeB/zTGnLI7Hl8RkVlAoTFmo92xtKNQ4ALgaWPMKOAMXqwu8EfuevHZQF+gJ9BJRG60N6rAFyyJIB9IrbedQgcsTjYkImFYSeAfxph37I7HxyYCV4nIAayqv4tF5FV7Q/K5fCDfGHO2pPcWVmLoyKYD+40xRcaYWuAd4EKbY2ovx0WkB4D7vtBbFw6WRLAByBCRviISjtW4tNjmmHxKRASr7niHMeZPdsfja8aY/zbGpBhj+mD9fpcZYzr0N0VjTAFwWEQGunddAuTaGFJ7OASMF5Fo99/4JXTwBvJ6FgM3ux/fDCzy1oV9umaxvzDG1InIncBSrF4GzxtjcmwOy9cmAjcBX4rIFve+X7rXkVYdx13AP9xfcPYBt9ocj08ZY9aJyFvAJqyecZvpgFNNiMhCYCqQKCL5wIPAI8AbInIbVkL02nrvOsWEUkoFuWCpGlJKKXUemgiUUirIaSJQSqkgp4lAKaWCnCYCpZQKcpoIlGqCe3bPH7sf93R3XVSqQ9Huo0o1wT1P0/vumS6V6pCCYkCZUm3wCNDfPShvDzDYGDNURG7Bmv3RAQwFHgPCsQbxVQNXGGNOiEh/rCnQk4AK4PvGmJ3t/zaUOj+tGlKqafcBe40xI4F7Gzw3FLgBa5rz3wEV7snf1gD/4T5mAXCXMWY08HPgb+0StVItoCUCpVpvuXuth3IRKQPec+//Ehjunvn1QuBNa1ocACLaP0ylmqaJQKnWq6732FVv24X1vxUClLpLE0r5La0aUqpp5UBsa050r/+wX0SuA2tGWBEZ4c3glPIGTQRKNcEYUwKsci8i/odWXOJ7wG0ishXIoYMvkaoCk3YfVUqpIKclAqWUCnKaCJRSKshpIlBKqSCniUAppYKcJgKllApymgiUUirIaSJQSqkg9/8BCf2s8G+MxZEAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEGCAYAAABo25JHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO3deXxU9bn48c+TnUAIZIUskLAFwr4JrrgLVNFqVah6q7i1rq1db3+3i73trdXb29q6Umrdpa4VFbUWQS0isu9b2MOWBQiBkG3y/f3xnUgIWSbJnDkzmef9euV1Zs6cc+YZSOY5312MMSillApfEW4HoJRSyl2aCJRSKsxpIlBKqTCniUAppcKcJgKllApzUW4H0FYpKSkmJyfH7TCUUiqkLF++vMQYk9rUayGXCHJycli2bJnbYSilVEgRkV3NvaZVQ0opFeY0ESilVJjTRKCUUmFOE4FSSoU5TQRKKRXmHEsEIvKMiBSJyLpmXhcR+ZOIFIjIGhEZ41QsSimlmudkieBZYHILr08BBnp/7gCedDAWpZRSzXBsHIEx5lMRyWnhkCuB542dB/sLEekhIr2NMfsdCWjXYtj2sX0s4t0pDZ5LM6/RhmPbcl1fjqX5YyNjICoOort4t/EQ7d12SYIuPSEy5IaJKNU2nhqoKIUTR6CmAmpOeLfex3W1UOexW1NnHxvPyf3GA6fMxN9oWv7Tpunv6OsdlDcZMsf695q4O6AsE9jT4Hmhd99piUBE7sCWGujTp0/73q3wS/j0EU77j+q0BLr0gPgUSMyC5P6Q1B9SB9lfpC493Q5QKd9UHIK9K6BkM5Rug0PboKwQjpdA5RG3o/OBtH6IrxJ6dbpE0NS/TpPf0saYWcAsgHHjxrXvm/zs++3P6RdvkLXNyX3NPXfk2Fau09R1PdVQW2nveuq39XdDJw7D8WL7h3K8GMr2wJrXoKrs5PulDILc8yBvKuScC1Exp//bKOWG2irY8Rlsehd2fgalBSdfi0u0NzTpw6Bbmr3R6Zpib3qiu9oScnS8d9sFIqIgItJuJdL7OPLkY4kEaVRD3rhE3virqtkSe+hyMxEUAtkNnmcB+wIehUin+I9slTG2CH1wPRQuhT1fwqqXYelsiOsBo2+EcTNtyUEpN5Rstb+Pq16xNy0x3exNyqgbIGscpA2F+KTw+HsNMDcTwVzgHhGZA0wAyhxrH1D2j6drCvSbZH/AliC2L4Q1f4clT8Hix2HkdLjgp9CjnVVwSrXVoe3w8a9h3Ru27Sv/Khh+rS2xRse5HV1YcCwRiMgrwPlAiogUAr8AogGMMU8B84CpQAFQAdziVCyqGdFdIG+K/Tm6H754ApY8Devfggt/BhO/Y4vPSjnBUwuL/gALfweR0XDu92HCt22VjwooCbXF68eNG2d09lEHlRXCvB/C5nnQ9xy47jlbklDKn47ug7/fBHuXwdCvw+SHbEOocoyILDfGjGvqNR1ZrE6VmAXTX4Yrn7B/pH+5AIo2uh2V6kz2rYS/XAjFm+Abz8C1z2oScJkmAnU6ERh9A9wyD2qr4W9T4MBat6NSnUHhcnj2CoiIhlv/CcOucTsihSYC1ZLMsTDzA9sd77lpULzF7YhUKNu/Gl78OnRNtr9X6UPdjkh5aSJQLUvKhW+9YxuNX7neDu5Rqq3KD8DL10Nsd/v7lJjpdkSqAU0EqnXJ/eH6l2xD8uszoa7O7YhUKKmthlf/AyrLYMYc7ZochDQRKN/0mQBTHobtC+CLx92ORoWSTx+GPUvgyseh1zC3o1FN0ESgfDf2Zhh8OfzrQTtCWanW7FkKn/0eRt0Iw652OxrVDE0EyncicMWfIK47vPs9rSJSLfPUwNx7oXsmTP6t29GoFmgiUG3TNRku+ZUt6q9+2e1oVDBbOhuKN8KU39mbBxW0NBGothv5TcieAP/6JVQdczsaFYyOl8CC30L/C+0MtyqoaSJQbRcRAZf+2k5x/eXTbkejgtGiR6G6HC77rc4WGgI0Eaj2yT4DBk2xf/AnDrsdjQomx4rgy7/A8OsgbbDb0SgfaCJQ7Xfhf9m+4UtmuR2JCiaLHrULJ036kduRKB9pIlDt12sYDLwUvpwFNZVuR6OCQWUZLH8Whn9DFzkKIZoIVMecdR9UlMCaOW5HooLBypeg+phdy0KFDE0EqmNyzoHeo+zqZiG2toXyszqPXekueyJkjHY7GtUGmghUx4jAhDuhZAvs+tztaJSbtnwAR3ZpaSAEaSJQHZd/FcQmworn3I5EuWn5s5CQYachUSFFE4HquJh4GHEdrP+HTlMdrsoPQsF8GHk9RDq2FLpyiCYC5R9jvwWeKlj7utuRKDesfRWMx446VyFHE4Hyj17DIW0orNNEEJZWz7Er2qUOcjsS1Q6aCJT/DL/GTkZ3ZLfbkahA2r8GDq6DkTPcjkS1kyYC5T/1C5Gve8PdOFRgrX8LJFIXog9hmgiU//TMgazxsFYTQdgwBjbOhdxzIT7J7WhUO2kiUP6VfxUcXAuHd7odiQqE4s1QWqBdRkOcJgLlX4O9c89v/sDdOFRgbHrHbjURhDRNBMq/kvpB6mDYPM/tSFQgbHzHVgd27+12JKoDNBEo/8ubArsWwYkjbkeinHRkD+xfDUOucDsS1UGaCJT/5U2Fuloo+JfbkSgnFXxkt4OmuBuH6jBNBMr/MsdC11TY/L7bkSgnFcyHxGxIGeh2JKqDNBEo/4uIhAEXw/YFUFfndjTKCZ4a2P6JXZxe1yQOeY4mAhGZLCKbRaRARH7SxOt9RGSBiKwUkTUiMtXJeFQA9TsfKkptV1LV+RQutYvTD7jY7UiUHziWCEQkEngcmALkAzNEJL/RYf8FvGqMGQ1MB55wKh4VYP3Ot9vtC10MQjmmYL4dTdxvktuRKD9wskRwBlBgjNlujKkG5gBXNjrGAN29jxOBfQ7GowIpoRekDtFE0Fltm2+7jcYluh2J8gMnE0EmsKfB80LvvoZ+CdwoIoXAPODepi4kIneIyDIRWVZcXOxErMoJ/c63q5bpwvadS8Uh2LfKtg+oTsHJRNBUC1LjRW1nAM8aY7KAqcALInJaTMaYWcaYccaYcampqQ6EqhzR73yorbQzkqrOY/diwNj5hVSn4GQiKASyGzzP4vSqn1uBVwGMMYuBOCDFwZhUIOWcDRFRWj3U2excBFFxtpuw6hScTARLgYEikisiMdjG4LmNjtkNXAQgIkOwiUDrfjqL2AToPUoXte9sdi2y7QNRsW5HovzEsURgjKkF7gE+BDZiewetF5Fficg072HfB24XkdXAK8DNxpjG1UcqlPU9E/at0HaCzqKyDA6sgb5nuR2J8iNHV5k2xszDNgI33PfzBo83AGc7GYNyWZ8z4fM/22SgXx6hb/cSMHXQV/9sOxMdWayclT3RbncvdjcO5R+7/g0R0bZqSHUamgiUs7omQ0oe7P7C7UiUP+z63DYSx8S7HYnyI00Eynl9z7RVCnUetyNRHVFbZaed7jPB7UiUn2kiUM7rcyZUlUHRRrcjUR2xfw14qrVaqBPSRKCc10fbCTqFwqV2mznO3TiU32kiUM7r0deuT7B3hduRqI7Yuwy6Z+mylJ2QJgLlPBHbwLhPE0FIK1wKWVoa6Iw0EajAyBgDxZuh8qjbkaj2OFYER3ZrIuikNBGowMgcCxjYv8rtSFR7FC6zW20o7pQ0EajAyBxjt3uXuxuHap/CpXYCwd4j3Y5EOUATgQqM+CTomauJIFTtXQbpwyC6i9uRKAdoIlCBkzkW9q50OwrVVnV1tseXtg90WpoIVOBkjoGjhVB+wO1IVFsc2gbVx2yDv+qUNBGowKlfyETHE4SW/avttvcId+NQjtFEoAKn1wiQSG0nCDX7V0FkDKQOdjsS5RBNBCpwYuIhNQ8OrHU7EtUW+9dA+lCIjHY7EuUQTQQqsHoNtytcqdBgjK0a0m6jnZomAhVYvUZA+X44pktTh4Qju6HyiP1/U52WJgIVWL2G2+1BrR4KCV81FI9yNw7lKE0EKrDqE8F+rR4KCftX2wb+9Hy3I1EO0kSgAis+CRKztcE4VBxYY3sL6YjiTk0TgQq8XiM0EYSK/at1/EAY0ESgAq/XcCjdCtUVbkeiWlJ+AI4d1IbiMKCJQAVe7xFg6qBog9uRqJYcXGe3vYa5G4dynCYCFXj1DcY6niC4HfQm6rSh7sahHKeJQAVeYjbE9dCeQ8GuaAN06wVdk92ORDlME4EKPBE7t71WDQW3g+u122iY0ESg3JGeD0Ub7RQGKvh4au0a02maCMKBJgLljrQhUHUUygrdjkQ15dA28FTZkpvq9KJ8PVBEIoH0hucYY3Y7EZQKA/V3mkUboUe2u7Go0x1cb7daNRQWfCoRiMi9wEHgI+A978+7Ppw3WUQ2i0iBiPykmWOuE5ENIrJeRF5uQ+wqlNXPba/tBMGpaIOdWiIlz+1IVAD4WiK4H8gzxpT6emFvCeJx4BKgEFgqInONMRsaHDMQ+E/gbGPMYRFJ8z10FdK69IDumZoIgtXBDZDcH6Lj3I5EBYCvbQR7gLI2XvsMoMAYs90YUw3MAa5sdMztwOPGmMMAxpiiNr6HCmVpQzQRBKuD6+xiNCos+Foi2A4sFJH3gKr6ncaY/2vhnExsAqlXCExodMwgABFZBEQCvzTGfND4QiJyB3AHQJ8+fXwMWQW9tHzY8ZntoRLpc3OVclpVORzZBaNvcjsSFSC+lgh2Y9sHYoCEBj8tkSb2Ne4rGAUMBM4HZgCzRaTHaScZM8sYM84YMy41NdXHkFXQS8u3PVMO73A7EtVQ0Sa71YbisOHTbZgx5kEAEUmwT80xH04rBBp2B8kC9jVxzBfGmBpgh4hsxiaGpb7EpUJc2hC7PbgeUga6G4s6qcjbY0jHEIQNX3sNDRORlcA6YL2ILBeR1ioQlwIDRSRXRGKA6cDcRsf8A7jA+x4p2Kqi7W35ACqEpeYBYruQquBxcANEd4Uefd2ORAWIrxWzs4AHjDELAETkfOAvwFnNnWCMqRWRe4APsfX/zxhj1ovIr4Blxpi53tcuFZENgAf4YVt6JqkQF90Fkvppg3GwKdkMqYMgQsebNlZTU0NhYSGVlZVuh9KsuLg4srKyiI6O9vkcXxNB1/okAGCMWSgiXVs7yRgzD5jXaN/PGzw2wAPeHxWO6qeaUMGjeDP0O9/tKIJSYWEhCQkJ5OTkINJUM6i7jDGUlpZSWFhIbm6uz+f5mvK3i8jPRCTH+/NfgLbwqY5Ly7fTGdSccDsSBVBZBuX7IWWQ25EEpcrKSpKTk4MyCQCICMnJyW0usfiaCGYCqcCbwFvex7e06Z2UakrqYLtITclWtyNRAMVb7LZ+5Lc6TbAmgXrtic+nRGCMOWyMuc8YM8YYM9oYc3/9IDClOiTVO4VByRZ341BWyWa7TdWpJYLVBx98QF5eHgMGDOChhx7yyzVbbCMQkT8aY74rIu9w+hgAjDHT/BKFCl/JA0AibL20cl/xJoiM1R5DQcrj8XD33Xfz0UcfkZWVxfjx45k2bRr5+R3r6ttaY/EL3u3/duhdlGpOVCz0zDl5J6rcVbzFJmcd6R2UvvzySwYMGEC/fv0AmD59Om+//bazicAYs9z7cJQx5tGGr4nI/cAnHXp3pcDOcFmsVUNBoWQzZIxxO4qQ8OA769mw76hfr5mf0Z1fXNH8EK29e/eSnX1ynG5WVhZLlizp8Pv62lj8rSb23dzhd1cKbJ/10gI755ByT80JOLxL2weCmGliRT9/NF631kYwA/gmkCsiDUcFJwA68Ev5R0oe1NXA4Z2QMsDtaMJXyVbAaCLwUUt37k7Jyspiz56Tc3kWFhaSkZHR4eu2VhH4ObAfSAF+32B/ObCmw++uFDToObRZE4Gb6hvsdTGaoDV+/Hi2bt3Kjh07yMzMZM6cObz8csfX82qtjWAXsAs4s8PvpFRz6iecK94Mg7/mbizhrGSz7cGV3N/tSFQzoqKieOyxx7jsssvweDzMnDmToUM7XjLxqWuAiEwE/gwMwU5FHQkcN8Z073AESsUlQkJvHUvgtuJNdu6nqFi3I1EtmDp1KlOnTvXrNX1tLH4Mu17AVqALcBs2MSjlHymDdCyB24q3aLVQmPJ5ekFjTAEQaYzxGGP+hnf6aKX8IjXPNlY20StCBYCnxs75pA3FYcnXUSMV3jUFVonIw9gG5FZnH1XKZymDoLocju6DxEy3owk/h7ZDXa0mgjDla4ngJmy7wD3AcezKY9c4FZQKQw17DqnAK9Y5hsKZr0tV7vI+PAE86Fw4KmzV100Xb4H+F7obSzj6quuoTj8djlobULaWJiabq2eMGeH3iFR46pZmew9picAdJZshsQ/EaI1vOGqtRHB5QKJQSkTnHHJT8SY71YcKejNnzuTdd98lLS2NdevW+eWaLbYRGGN2tfTjlwiUqpc6SEsEbqirg5ICXYwmRNx888188MEHfr2mT43FIlIuIke9P5Ui4hER/067p1RKHhwvhopDbkcSXsp2Q+0JbR8IEeeddx5JSUl+vaavjcUJDZ+LyFXAGX6NRKmGq5X1mehuLOGkvjpOE0HbvP8TOLDWv9fsNRym+GfVsbbweUBZQ8aYfwDatUP5V/0XkY4wDqz6qT2062jY8nWuoasbPI0AxtFCbyKl2qVHX4iK0zmHAq1kC8QnQ7x/qxs6PRfu3J3i68jiKxo8rgV2Alf6PRoV3iIiIHmgJoJAK9mqcwyFOV/bCG5xOhClANtzqHCZ21GEl5ItOv13CJkxYwYLFy6kpKSErKwsHnzwQW699dYOXdPXqqF+wKPARGyV0GLge8aY7R16d6UaSxkE6960yyZGd3E7ms6v4hBUlGhDcQh55ZVX/H5NXxuLXwZeBXoDGcBrgP+jUSplEGDsGsbKeSXaY0j5ngjEGPOCMabW+/Mi2lisnFD/haTtBIHxVSIY6G4cylW+NhYvEJGfAHOwCeB64D0RSQIwxugIIOUfyQMA0akmAqVkC0TGQo8+bkeiXORrIrjeu72z0f6Z2MTQz28RqfAWHQc9++pUE4FSstUm34hItyMJGcYYRMTtMJpl2rG4k6+9hnLbfGWl2ivFu1qZcl7JFuilkwj7Ki4ujtLSUpKTk4MyGRhjKC0tJS4urk3n+dprKBr4DnCed9dC4GljTE0r503G9jaKBGYbY5ocgSEi38A2QI83xmjfwXCXOgi2L4Q6j96pOqm2Cg7vhOHXuh1JyMjKyqKwsJDi4mK3Q2lWXFwcWVlZbTrH16qhJ4Fo4Anv85u8+25r7gQRiQQeBy4BCoGlIjLXGLOh0XEJwH3AkjZFrjqvlEHgqYIjuyFJC6OOObQdTJ32GGqD6OhocnM73++kr4lgvDFmZIPnH4vI6lbOOQMoqB9rICJzsKORNzQ67r+Bh4Ef+BiL6uxSGkw+p4nAOV+tSqY9hsKdr91HPSLSv/6Jd4CZp5VzMoE9DZ4Xevd9RURGA9nGmHdbupCI3CEiy0RkWTAXyZSf1H8xaRdSZ9W3wyQPcDcO5TpfSwQ/xHYhrR9JnAO0Nu1EUy0pXzVni0gE8Afg5tbe3BgzC5gFMG7cOB2/0NnFJ0HXVJ2F1GklWyAxW5enVD6XCBYBTwN13p+nsdNMtKQQyG7wPAvY1+B5AjAMWCgiO7HTV8wVkXE+xqQ6s5RBWiJwWskWrRZSgO+J4HkgF1uf/9/exy+0cs5SYKCI5IpIDDAdmFv/ojGmzBiTYozJMcbkAF8A07TXkAJsIijeDO3oE618YIx31lFtKFa+Vw3lNWosXtBaY7ExplZE7gE+xHYffcYYs15EfgUsM8bMbel8FeZSBkHlETheAt1S3Y6m8zm6D2qOayJQgO+JYKWITDTGfAEgIhOw1UUtMsbMA+Y12vfzZo4938dYVDhIbTDnkCYC/9PJ5lQDvlYNTQA+F5Gd3vr8xcAkEVkrImsci06Fr68mn9MGY0fU9xjSRKDwvUQw2dEolGqsexZEx/ttqoljVbXsKj1ORbWHhLgocpK7Ehcd/KOWK2s87D1ygvLKWrrFRpKdFE9slB/iLtkMsYnQLa3j11Ihz9e5hnY5HYhSp4iIsD1aOtCF1FNneG/tfl78YhfLdx3GU3ey4TkqQhiWmcjXhvfmylEZpHVv29wsTiour+KNFYV8vLGIFbsPU9sg7pjICCb2T+bGCX24JD+9/fPd1PcYCsL5clTg+VoiUCrwUgbB7vbNPLL1YDnff201awrLyEmO59uT+jEsI5GusVGUnahh04GjfLqlhN/M28jDH27iqlGZ3DmpHwPSEvz8IXxXUFTOnz8uYN7a/dR4DEMzunPrubnkpSeQ2CWa8spa1u0tY97a/dzxwnLG5/Tk99eOok9yfNvfrGQr9LvA/x9ChSRNBCp4peTB2teg+nibBj19tOEg352zki4xkfzx+lFMG5lBRMSpd75XjMzgh5fBtuJjPP/5Tv6+bA9vrCjkG2Oz+N4lg+idGLhlMneXVvDH+Vv4x8q9dImO5MaJfblhQl8GpHU77dirRmfyn1OH8OqyPfx23ka+9qfPePLGsZwzMMX3N6w8CuX7dQyB+oomAhW8vppqYitkjPLplPfW7OfeV1YwLDORWTeNo1diy1U+/VO78eCVw7j/4kE8saCA5xfv4u1V+7jl7Fy+c35/ErtEd/RTNKu4vIo/f7yVl5fsJjJCuO3cftx5Xj+Su8W2eF5khDDjjD6cMyCF259fxsxnl/L4DWO4JD/dtzcu1YZidSpfew0pFXip9ZPP+dZg/MmWYu6fs5IxfXoy546JrSaBhpK6xvBfl+cz//uTmDKsF099so3zHl7Akwu3caK6tWm12uZYVS1/+GgLkx5ZwMtLdjP9jGw+/dEF/HTqkFaTQEPZSfHMuWMiQzK6c/dLK1i208eFAuv/Pev/fVXY00SggldSP5AIn7qQ7io9zr0vr2BgegLP3DKe+Jj2FXazk+L54/TRvHffOYzp04PffbCJ8x5ZwAuLd1JZ07GEcLSyhicXbmPSwwt4dP5WLshL46MHJvHrq4aT3s7G6h7xMTx783gyesRx5wvL2XOoovWTSrZARBT0zGnXe6rORxOBCl5RsdAzt9U5h6pqPXz7xRWICE/fOJbucR2vzhmakcjfbjmDV+88k5zkeH729nrOeuhjHvlwk29ftg1sOnCUX7+7gbN/+zG/+2AT+Rnd+cfdZ/P4DWPITen4hG89u8bw15vHU11bx/f+vopaT13LJ5RssUk20rlqLxVatI1ABbeUQa0uZP/n+QVs3H+U2f8xrn09aFpwRm4Sr955Jou3l/Lsop08sXAbjy/YxvDMRC4YnMbIrEQGpSeQmhBLTGQEVbV17C87wbbi4yzZXsq/C0rYdKCcqAjhsmG9+PZ5/RmelejXGMG2dfz668O4f84qnli4jfsuaqEhuHiLtg+oU2giUMEtdRBsmw+eWog8/dd13d4ynvxkG9eMyeJiXxtL20hEOKt/Cmf1T2HPoQrmrd3P++sO8NjHW6lrYU68mKgIxvbpyS+uyGfayIw21f+3x5WjMpm/sYg/zd/KlGG9GJjeRFdYT41dmWzwVEdjUaFFE4EKbil54KmGI7sguf8pL3nqDD9+Yw3JXWP4+eX5AQknOymeOyf1585J/TleVcuG/UfZVnSM0uPVVNXWERcdQVpCHLkpXRma0T3go5d/cUU+n2wp5mdvr+OV2yeePuDs8E6oq9ESgTqFJgIV3Oq/sIo3n5YIXl++h/X7jvLnGaNJjA98fXfX2CjG5yQxPicp4O/dnORusfx48mB++tZa3lq5l6vHNFrEvGij3aYODnxwKmhpY7EKbs0sW3msqpZHPtzC2L49uXxEbxcCC17Tx2czMtv2eDqt62v9lB3adVQ1oIlABbcuPaBb+mmJ4MmFBZQcq+Jnl+e3f76dTioiQvjplMEcPFrFs5/vPPXF4o3Qo48uT6lOoYlABb9Gy1YWHa1k9mc7uHJUBqOye7gYWPCa0C+ZC/JSeXJhAWUVNSdfKN4MqUPcC0wFJU0EKvjVdyH1Llv51Cfbqa0zPHCJNni25EeTB1NeVcuTn2yzOzy1NqFqtZBqRBOBCn6peVBVBseKKDpayUtLdnH16Ez6Jmv1RkuG9O7OlSMzeO7znRw6Xg2Hd9geWGlaIlCn0kSggt9XDcabvyoN3HPhAHdjChH3XDiAyloPz/x7BxRvsju1x5BqRBOBCn4ptiqjvHA9Ly3Zxde1NOCzAWkJTB7ai+cW76Ry33q7U8cQqEY0Eajg1z0DYhLYsm4ZNZ467rlASwNtcfcFAyivrGX35hW2x1Ds6escqPCmiUAFPxE8KXnUHdjAlOG9yfHDRG3hZFhmIufnpULRJjzJ2lCsTqeJQIWErfRhALu545xct0MJSfdMyqGv2cdGT6bboaggpIlABb1aTx3vFyXRU44xskel2+GEpHHdjxIrNby7LwFPSzPlqbCkiUAFvXnrDrCkopd9UrTe3WBCVbGdY+jz8jTmbzzocjAq2GgiUEHNGMOsT7dR2dNbt31QE0G7FNmuoxXd+zP73ztcDkYFG00EKqh9sf0Q6/Ye5brzRkFCbzi4we2QQlPReuiZw/RzhvDljkOsKTzidkQqiGgiUEFt9mfbSe4aw9VjMiEtX6uG2uvAOkgfxvXjs+kWG8VftVSgGtBEoIJWQVE58zcVcdOZfe0CL+n5ds4hT63boYWW6go4tA3Sh5EQF8308dm8t2Y/+46ccDsyFSQ0Eaig9dd/7yA2KoKbJva1O9KGgqfKfqkp3xVtBFMHvYYBcPPZORjgucU73YxKBRFHE4GITBaRzSJSICI/aeL1B0Rkg4isEZH5ItLXyXhU6Cg9VsWbK/Zy9ZjMk2v9pnuXo9QG47Y5uM5u020iyOoZz5RhvXh5yW6OVWnpSjmYCEQkEngcmALkAzNEpPHCsiuBccaYEcDrwMNOxaNCy0tLdlNVW8fMsxsMIEvJA4mEIm0wbpOD6yAmAXqcvM+67dx+lFfW8tqyPS4GpoKFkyWCM4ACY8x2Y0w1MAe4suEBxpgFxpgK79MvgEYLrKpwVFXr4fnFu5g0KJWB6QknX4iOs+sWa8+htjmwzpamIk7+uY/K7oD+y5sAABSASURBVMG4vj15ZtEOHWCmHE0EmUDD241C777m3Aq839QLInKHiCwTkWXFxcV+DFEFo3dW76fkWBW3ndvEdBLac6htjLFVad5qoYZuO7cfew6d4MP1B1wITAUTJxNBUwvJNnnrISI3AuOAR5p63RgzyxgzzhgzLjU11Y8hqmBjjGH2Z9vJS0/gnAEppx/Qaxgc3gmVRwMeW0gq22MX9el1eiK4JD+dvsnx/OWz7S4EpoKJk4mgEMhu8DwL2Nf4IBG5GPh/wDRjTJWD8agQsHhbKZsOlHPrOblNL0rfe5TdHlgT2MBC1YH6huLhp70UGSHMPDuXlbuPsHzX4QAHpoKJk4lgKTBQRHJFJAaYDsxteICIjAaexiaBIgdjUSFi9r93kNIthmmjMpo+oPdIu923KnBBhbKD6wBpdnnKa8dlkdglmtlaKghrjiUCY0wtcA/wIbAReNUYs15EfiUi07yHPQJ0A14TkVUiMreZy6kwsK34GB9vKuLGid4BZE3plgYJGbB/dWCDC1UH1kBSbrOL0cTHRHHDhD58uP4Au0srmjxGdX6OjiMwxswzxgwyxvQ3xvzGu+/nxpi53scXG2PSjTGjvD/TWr6i6sye+fcOYqIiuHFiK8NJeo+E/Voi8Mm+VZAxusVDvnVWDpERwjOLdNqJcKUji1VQKD1WxRsrCrlqVAYp9QPImpMxCkq2QtWxwAQXqo4V28bijDEtHpbePY4rRmbw6rI9lFXUBCg4FUw0Eaig8LdFO6mqreOO8/q3fnDvUYCBA2sdjyuk7Vtht5ktJwKA287pR0W1h5e/3O1wUCoYaSJQriuvrOG5xTu5LL8XA9J8WFi9vsFYq4datm8lSAT0GtHqofkZ3Tl7QDLPfr6D6tq6AASngokmAuW6l5bspryylrsu8KE0ANC9N3RL1wbj1uxdYaflaKahuLHbz+3HwaNVvLmi0OHAVLDRRKBcVVnjYfZnOzhnQAojsnr4fmLvUfaLTjXNGFs15EO1UL1Jg1IZkZXI4wsLqPFoqSCcaCJQrnpteSElx6q463wfSwP1ssdDyWY4oQOhmlRWCMeLW+0x1JCIcN+FA9lz6ARvrzpt7KfqxDQRKNdU1Xp4auE2RmX34Mz+yW07OXuC3RYu839gncG+lXbbSo+hxi4akkZ+7+48vqCAWi0VhA1NBMo1c77cw94jJ3jgkkFNTyfRkowxdkrqPUucCS7U7V0GEdGQPrRNp4kI9100gB0lx3l3zX6HglPBRhOBcsWJag+PLSjgjNwkzh3YxORyrYntZidS00TQtF2LbftAdFybT700vxd56Qn86eOtWioIE5oIlCte+GInxeVV/ODSvLaXBuplT4DC5bqGcWM1J2zVUJ+J7To9IkJ44NJBbC8+zqvLtAdRONBEoAKuvLKGJxdu47xBqZyRm9T+C2VPgJrjuj5BY3tXQF0N9Dmr3Ze4ND+dsX178od/baGiWhNtZ6eJQAXcYx8XcLiihh9emtexC2WfYbd7vux4UJ3J7sV2W//v0w4iwk+nDqa4vIrZn+kcRJ2dJgIVUDtLjvPMoh18Y2wWw7MSO3axxGxI6H3yi09ZuxdD6hCI70BpCxjbN4nJQ3vx9CfbKC7XpUI6M00EKqB+M28jMZER/OiyDpYGAEQg51zY8akdQKVse8meL9vdPtDYjybnUe2p47fvb/TL9VRw0kSgAuaTLcV8tOEgd10wgLTube/N0qR+59uBU0W6oD1gG4mrjkLueX65XL/Ubtx+bj/eXLGXL7aX+uWaKvhoIlABcbyqlp++uZZ+qV259ZwmFqVvr36T7Hb7Qv9dM5Rt+xgQmyD95N4LB5LVsws/+8c6nZCuk9JEoALif/+5mb1HTvC7a0Y0v/pYeyRmQfJATQT1tn1sp5XoYPtAQ11iInlw2lC2Fh3jqU+2+e26KnhoIlCOW77rEM9+vpObJvZlfI7/vqC+0m8S7FwEtdX+v3YoqSyDwqXQ/0K/X/qiIelcOSqDP83fyprCI36/vnKXJgLlqLKKGu57ZRWZPbrwo8l+aCBuSr8L7HiC3Z87c/1QseNTMB5HEgHAr6YNIzUhlu/+fRUnqj2OvIdyR5TbAajOyxjDj99Yw8Gjlbz+nbNIiIt25o36XwBRcbDpPb/Wjbeq/ABsW2DvwssKoaYCouPtYvEZo2HAJdC1jZPpdcTWf0JMAmSNd+TyifHR/P7akXxz9hIefGc9D13T+oI3KjRoIlCOefbznXyw/gA/nTqYUdltWGugrWK6woCLbSKY8rDtVuqk7Z/AF0/C1g/B1EFsd+jZF2K6Qfk+2PlvWPKUXR0sbyqceQ/0PdPZmDy19vMPugyiYhx7m7MGpHD3Bf15fME2hmclcsOEvo69lwocTQTKEQs2FfHf727gkvx0bjunn/NvOPhy2PSudzGWsc68R8lWeP/HsG2+XSHt7O/CsKshbShENKhlrauDA6th/Vuw/DkbV97X4LLf2NKCE3Z/DhWlkD/Nmes38MAleWzYd5RfvL2egWkJHZsmRAUFbSNQfrd+Xxn3vrKSIb278+j0UUREOHyHDvZOWCJh4zv+v3ZdHSx5Gp46107vfOmv4f41cPEvoNfwU5MA2OcZo+GSX8EDG+Cin9teTU+caRODE4PfNsyFqC62ZOSwyAjhj9NH0ycpntufX8amA0cdf0/lLE0Eyq82HTjKjbOX0D0uir9+azzxMQEqdMYn2faBtW/YL25/qTkBr94E7/8Ics+Fu7+Es+71fXrnmK5w7vfhnqV27p937oPXZ0LVMf/FWFsN69+EQZfa9wuAxC7RPDfzDLpER3Lj7C/ZUXI8IO+rnKGJQPnNur1l3PCXJcRGRfLKHRPplein0cO+Gn0DlO2GHQv9c72KQ/D8Vbbu/bL/gW++Cgm92netxEy46R+2dLDhH/DsVDjqp4Vftrxvq4VG3+Sf6/koOymeF2+bQJ0xTJ+1mI37tWQQqjQRKL9YsLmI655eTFx0JC/fPoG+yYG5Mz3F4MuhS09Y8ULHr3VkDzwz2bY5XPs3OPPujjdCR0TY0sGMOVBSALMvggPrOh7ryhchIcOxbqMtGZDWjVdun4ggXPfUYj4vKAl4DKrjNBGoDqn11PF/H21h5rNLyU3pylt3nUW/1G7uBBMVCyOm23aCsg4sqHJgHfz1Ets99Ka3YOjX/Rcj2PaMmR/YtoK/TYEdn7X/WiUFsPUjWxqK8OOI7TbI65XAm3edRe8ecdz0zJc8sbCAujqdBDCUaCJQ7bat+Bjf/MsS/jR/K1ePzuLVO8/032Ry7XXmXYCBxY+37/wdn9ovZwRmvg855/gzupN6j4DbPoLuGfDi1baHUXss+oNNgGfc4d/42iijRxde/85ZTB7Wi4c/2MxNzyxhd2mFqzEp32kiUG1WdqKGh97fxOQ/fsrGA0f5w/Uj+f11I+kaGwS9kXv0geHXwfJnofxg285d9wa8eI39cr7tozYv/N5miVlwy/u2u+trt9ieSW1xeBesnmPbBrqlORNjG3SPi+axGaP57dXDWbX7CBf/4RP+8NEWjlXpCmfBTkyIzeM+btw4s2zZMrfDCEsHyip54YudPP/5LsqravnG2Cx+PHkwqQmxbod2qtJt8MREyL8Srpnd+vHGW4L45/+zyzvOeNm2NQRKzQl44zY73uDs78LFv/StPeLvN0LBfLhnmW2MDiIHyir5zbyNvLN6Hz3io7nlrFy+OaFP8P2uhBERWW6MGdfka5oIVEsOH6/m063FvLliL59tLcYAU4b14q7zBzAss4MrjDlpwf/AJ7+zPX0GXdb8cZ4amPdDWP43GDINrv6L711D/anOA/N+AMuegZEzYNqfIbKFKTnWvWG7oV74MzjvB4GLs41W7TnCYx8X8K+NB4mKEM7PS+Oq0RmcOyCVxHiHphxRTXItEYjIZOBRIBKYbYx5qNHrscDzwFigFLjeGLOzpWtqInCOMYY9h06wZu8R1u4tY8n2Q6wuPIIx0DsxjmvGZPGNsVnkpLjQI6itak7A7IuhbI+tfmmqmufIbnjr27BrEZzzPbjw56cPDgskY+DT/4UFv7ZjIq560lZTNVa4HJ6fBmn5cMu8lhNGkCgoKue1ZYW8uXIvxeVVREYIo7N7cEZuEiOyEhmWmUhmjy6I09ODhDFXEoGIRAJbgEuAQmApMMMYs6HBMXcBI4wx3xaR6cDXjTHXt3RdTQS+qfHUUVVbR1WNh8r6bU0dR05Uc/h4DYcrqjl8vJrS49XsOVTB7kMV7DlcQWWNHYwVExnB0MzuTBqUyqRBqYzI6kFkIEYI+9PhnbYLaE0FTHkEhl0DkVFwrMiO8F30qD3ua7+HkS3+2gXWyhfhvR9AZAyc+wCM+Q87YM5TA6tehg9/Cl1TbIJrKlEEsVpPHav2HGHh5mI+3VrMhn1HqfX2MIqPiSS7ZzzZSfFk9exCakIsPeNj6BkfTc+uMXSPiyYuOoIuMZHERUUSFx1JbFREYEaudwJuJYIzgV8aYy7zPv9PAGPMbxsc86H3mMUiEgUcAFJNC0G1NxG8unQPsz7bTv2lv3oDc8rmtNcbRmK8e+v3NY6yuXNPO++0azf3eqNYT3nvpj+Hxxiqauvw+Nh9LyE2isyeXeiTFE+fpHj6pXZjRFYig9ITiInqBH0JDu+0DbH7VtiZObv0tKUEjJ0QbvJDdsK4YFO6zVZZbZsPCCRm20FjNcehz5lwzV+Drl2gPSprPGw6UM7avWXsKD5ub0gOVVB4uILjPk51HRMZQUQERIoQESFERggRYn8iG+yPEDmt6aWpFNK4VNJkmvHXddrovosGcsXI9iX/lhKBk908MoE9DZ4XAhOaO8YYUysiZUAycMqoFBG5A7gDoE+fPu0KpmfXGPLSE7wXPGXz1X/YyedNv95w38lrSDPnNPN6owv4fF6Dz3LaL1iDcyKEr+6UYqMjiI2KJM67jY2KoEd8DD27RpMUH0NifDSxUe70PQ+Ynjlw279gywd2yuiqckgeAIO/Bun5bkfXvOT+cNObsH81bPnQJoa4RBhwkZ3e2s0qLD+Ki45kVHaPJmenrazxcKSihkPHqzlcUc3REzVU1tqSbWWNhxPeUm51bR11xuCpsz/GGDzG4KmDujr7uK7OUNfozq2pW6XTbu6aPKb16zTeaZo+qs0SuzhTDehkImgqATb+1/DlGIwxs4BZYEsE7Qnmkvx0LslPb8+pKtRFRNov/sFfczuStus90v6EobjoSHolRgZ+qpIw5ORtRSGQ3eB5FrCvuWO8VUOJwCEHY1JKKdWIk4lgKTBQRHJFJAaYDsxtdMxc4Fvex98APm6pfUAppZT/OVY15K3zvwf4ENt99BljzHoR+RWwzBgzF/gr8IKIFGBLAtOdikcppVTTHJ0TwBgzD5jXaN/PGzyuBK51MgallFIt6xxdD5RSSrWbJgKllApzmgiUUirMaSJQSqkwF3Kzj4pIMbCrnaen0GjUchjQzxwe9DOHh4585r7GmNSmXgi5RNARIrKsubk2Oiv9zOFBP3N4cOoza9WQUkqFOU0ESikV5sItEcxyOwAX6GcOD/qZw4Mjnzms2giUUkqdLtxKBEoppRrRRKCUUmEubBKBiEwWkc0iUiAiP3E7HqeJSLaILBCRjSKyXkTudzumQBCRSBFZKSLvuh1LIIhIDxF5XUQ2ef+vz3Q7JqeJyPe8v9PrROQVEel0K9eIyDMiUiQi6xrsSxKRj0Rkq3fb01/vFxaJQEQigceBKUA+MENEgnidQr+oBb5vjBkCTATuDoPPDHA/sNHtIALoUeADY8xgYCSd/LOLSCZwHzDOGDMMO8V9Z5y+/llgcqN9PwHmG2MGAvO9z/0iLBIBcAZQYIzZboypBuYAV7ock6OMMfuNMSu8j8uxXxChv9p5C0QkC/gaMNvtWAJBRLoD52HX9cAYU22MOeJuVAERBXTxrmoYz+krH4Y8Y8ynnL5a45XAc97HzwFX+ev9wiURZAJ7GjwvpJN/KTYkIjnAaGCJu5E47o/Aj4A6twMJkH5AMfA3b3XYbBHp6nZQTjLG7AX+F9gN7AfKjDH/dDeqgEk3xuwHe6MHpPnrwuGSCKSJfWHRb1ZEugFvAN81xhx1Ox6niMjlQJExZrnbsQRQFDAGeNIYMxo4jh+rC4KRt178SiAXyAC6isiN7kYV+sIlERQC2Q2eZ9EJi5ONiUg0Ngm8ZIx50+14HHY2ME1EdmKr/i4UkRfdDclxhUChMaa+pPc6NjF0ZhcDO4wxxcaYGuBN4CyXYwqUgyLSG8C7LfLXhcMlESwFBopIrojEYBuX5rock6NERLB1xxuNMf/ndjxOM8b8pzEmyxiTg/3//dgY06nvFI0xB4A9IpLn3XURsMHFkAJhNzBRROK9v+MX0ckbyBuYC3zL+/hbwNv+urCjaxYHC2NMrYjcA3yI7WXwjDFmvcthOe1s4CZgrYis8u77qXcdadV53Au85L3B2Q7c4nI8jjLGLBGR14EV2J5xK+mEU02IyCvA+UCKiBQCvwAeAl4VkVuxCdFv673rFBNKKRXmwqVqSCmlVDM0ESilVJjTRKCUUmFOE4FSSoU5TQRKKRXmNBEo1QLv7J53eR9neLsuKtWpaPdRpVrgnafpXe9Ml0p1SmExoEypDngI6O8dlLcVGGKMGSYiN2Nnf4wEhgG/B2Kwg/iqgKnGmEMi0h87BXoqUAHcbozZFPiPoVTztGpIqZb9BNhmjBkF/LDRa8OAb2KnOf8NUOGd/G0x8B/eY2YB9xpjxgI/AJ4ISNRKtYGWCJRqvwXetR7KRaQMeMe7fy0wwjvz61nAa3ZaHABiAx+mUi3TRKBU+1U1eFzX4Hkd9m8rAjjiLU0oFbS0akiplpUDCe050bv+ww4RuRbsjLAiMtKfwSnlD5oIlGqBMaYUWORdRPyRdlziBuBWEVkNrKeTL5GqQpN2H1VKqTCnJQKllApzmgiUUirMaSJQSqkwp4lAKaXCnCYCpZQKc5oIlFIqzGkiUEqpMPf/AYDMjZGpQwD/AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_population(guess_dynamics[0])\n", "plot_population(guess_dynamics[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Optimization" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We define the desired shape of the update and the factor $\\lambda_a$, and then start the optimization" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "def S(t):\n", " \"\"\"Scales the Krotov methods update of the pulse value at the time t\"\"\"\n", " return krotov.shapes.flattop(\n", " t, t_start=0.0, t_stop=10.0, t_rise=0.5, func='sinsq'\n", " )\n", "\n", "pulse_options = {H[1][1]: dict(lambda_a=1, update_shape=S)}\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " iter. J_T g_a_int J Delta_J_T Delta J secs\n", " 0 1.00e+00 0.00e+00 1.00e+00 n/a n/a 1\n", " 1 2.80e-01 3.41e-01 6.22e-01 -7.20e-01 -3.78e-01 6\n", " 2 2.12e-01 3.06e-02 2.43e-01 -6.81e-02 -3.75e-02 6\n", " 3 1.35e-01 3.28e-02 1.68e-01 -7.72e-02 -4.44e-02 6\n", " 4 9.79e-02 1.56e-02 1.13e-01 -3.71e-02 -2.15e-02 6\n", " 5 7.13e-02 1.11e-02 8.25e-02 -2.65e-02 -1.54e-02 6\n" ] } ], "source": [ "oct_result = krotov.optimize_pulses(\n", " objectives,\n", " pulse_options,\n", " tlist,\n", " propagator=krotov.propagators.expm,\n", " chi_constructor=krotov.functionals.chis_re,\n", " info_hook=krotov.info_hooks.print_table(\n", " J_T=krotov.functionals.J_T_re,\n", " show_g_a_int_per_pulse=True,\n", " unicode=False,\n", " ),\n", " check_convergence=krotov.convergence.Or(\n", " krotov.convergence.value_below(1e-3, name='J_T'),\n", " krotov.convergence.delta_below(1e-5),\n", " krotov.convergence.check_monotonic_error,\n", " ),\n", " iter_stop=5,\n", " parallel_map=(\n", " qutip.parallel_map,\n", " qutip.parallel_map,\n", " krotov.parallelization.parallel_map_fw_prop_step,\n", " ),\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(this takes a while ...)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "lines_to_next_cell": 2, "scrolled": false }, "outputs": [], "source": [ "dumpfile = \"./transmonxgate_oct_result.dump\"\n", "if os.path.isfile(dumpfile):\n", " oct_result = krotov.result.Result.load(dumpfile, objectives)\n", "else:\n", " oct_result = krotov.optimize_pulses(\n", " objectives,\n", " pulse_options,\n", " tlist,\n", " propagator=krotov.propagators.expm,\n", " chi_constructor=krotov.functionals.chis_re,\n", " info_hook=krotov.info_hooks.print_table(\n", " J_T=krotov.functionals.J_T_re,\n", " show_g_a_int_per_pulse=True,\n", " unicode=False,\n", " ),\n", " check_convergence=krotov.convergence.Or(\n", " krotov.convergence.value_below(1e-3, name='J_T'),\n", " krotov.convergence.delta_below(1e-5),\n", " krotov.convergence.check_monotonic_error,\n", " ),\n", " iter_stop=1000,\n", " parallel_map=(\n", " qutip.parallel_map,\n", " qutip.parallel_map,\n", " krotov.parallelization.parallel_map_fw_prop_step,\n", " ),\n", " continue_from=oct_result\n", " )\n", " oct_result.dump(dumpfile)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Krotov Optimization Result\n", "--------------------------\n", "- Started at 2019-04-12 17:45:43\n", "- Number of objectives: 2\n", "- Number of iterations: 398\n", "- Reason for termination: Reached convergence: Δ(('info_vals', T[-1]),('info_vals', T[-2])) < 1e-05\n", "- Ended at 2019-04-12 18:20:47" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "oct_result" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "def plot_convergence(result):\n", " fig, ax = plt.subplots()\n", " ax.semilogy(result.iters, np.array(result.info_vals))\n", " ax.set_xlabel('OCT iteration')\n", " ax.set_ylabel('error')\n", " plt.show(fig)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_convergence(oct_result)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Optimized pulse and dynamics" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We obtain the following optimized pulse:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_pulse(oct_result.optimized_controls[0], tlist)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The oscillations in the control shape indicate non-negligible spectral broadening:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def plot_spectrum(pulse, tlist, xlim=None):\n", "\n", " if callable(pulse):\n", " pulse = np.array([pulse(t, None) for t in tlist])\n", "\n", " dt = tlist[1] - tlist[0]\n", " n = len(tlist)\n", "\n", " w = np.fft.fftfreq(n, d=dt/(2.0*np.pi))\n", " # the factor 2π in the normalization means that \n", " # the spectrum is in units of angular frequency,\n", " # which is normally what we want\n", " \n", " spectrum = np.fft.fft(pulse) / n\n", " # normalizing the spectrum with n means that\n", " # the y-axis is independent of dt\n", " \n", " # we assume a real-valued pulse, so we throw away\n", " # the half of the spectrum with negative frequencies\n", " w = w[range(int(n / 2))]\n", " spectrum = np.abs(spectrum[range(int(n / 2))])\n", "\n", " fig, ax = plt.subplots()\n", " ax.plot(w, spectrum, '-o')\n", " ax.set_xlabel(r'$\\omega$')\n", " ax.set_ylabel('amplitude (arb. units)')\n", " if xlim is not None:\n", " ax.set_xlim(*xlim)\n", " plt.show(fig)\n", "\n", "\n", "plot_spectrum(oct_result.optimized_controls[0], tlist, xlim=(0, 40))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lastly, we verify that the pulse produces the desired dynamics $\\ket{0_l} \\rightarrow \\ket{1_l}$ and $\\ket{1_l} \\rightarrow \\ket{0_l}$: " ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "ExecuteTime": { "end_time": "2019-01-31T00:30:10.080643Z", "start_time": "2019-01-31T00:30:08.679560Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/goerz/Documents/Programming/krotov/.venv/py36/lib/python3.6/site-packages/Cython/Compiler/Main.py:369: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: /home/goerz/Documents/Programming/krotov/docs/notebooks/rhs141880.pyx\n", " tree = Parsing.p_module(s, pxd, full_module_name)\n", "/home/goerz/Documents/Programming/krotov/.venv/py36/lib/python3.6/site-packages/Cython/Compiler/Main.py:369: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: /home/goerz/Documents/Programming/krotov/docs/notebooks/rhs141881.pyx\n", " tree = Parsing.p_module(s, pxd, full_module_name)\n" ] } ], "source": [ "opt_dynamics = [\n", " oct_result.optimized_objectives[x].mesolve(tlist, e_ops=[proj0, proj1])\n", " for x in [0, 1]\n", "]" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "ExecuteTime": { "end_time": "2019-01-31T00:30:12.041672Z", "start_time": "2019-01-31T00:30:10.083759Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/goerz/Documents/Programming/krotov/.venv/py36/lib/python3.6/site-packages/Cython/Compiler/Main.py:369: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: /home/goerz/Documents/Programming/krotov/docs/notebooks/rhs141882.pyx\n", " tree = Parsing.p_module(s, pxd, full_module_name)\n", "/home/goerz/Documents/Programming/krotov/.venv/py36/lib/python3.6/site-packages/Cython/Compiler/Main.py:369: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: /home/goerz/Documents/Programming/krotov/docs/notebooks/rhs141883.pyx\n", " tree = Parsing.p_module(s, pxd, full_module_name)\n" ] } ], "source": [ "opt_states = [\n", " oct_result.optimized_objectives[x].mesolve(tlist) for x in [0, 1]\n", "]" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "ExecuteTime": { "end_time": "2019-01-31T00:30:12.263068Z", "start_time": "2019-01-31T00:30:12.043673Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_population(opt_dynamics[0])" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "ExecuteTime": { "end_time": "2019-01-31T00:30:12.460131Z", "start_time": "2019-01-31T00:30:12.266370Z" }, "lines_to_next_cell": 2 }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_population(opt_dynamics[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Looking only at the population dynamics does not verify that the we have a *coherent* gate, i.e. that the basis transforms with the same global phase." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "def relative_phase(result):\n", "\n", " overlap_0 = np.angle(result[0].states[-1].overlap(psi1))\n", " overlap_1 = np.angle(result[1].states[-1].overlap(psi0))\n", "\n", " rel_phase = (overlap_0 - overlap_1) % (2 * np.pi)\n", " print(\"Final relative phase / 2π = %.2e\" % rel_phase)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Final relative phase / 2π = 5.00e-03\n" ] } ], "source": [ "relative_phase(opt_states)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since the optimized pulse shows some oscillations (cf. the spectrum above),\n", "it is a good idea to check for any discretization error. To this end, we also\n", "propagate the optimization result using the same propagator that\n", "was used in the optimization (instead of `qutip.mesolve`). The main difference\n", "between the two propagations is that `mesolve` assumes piecewise constant\n", "pulses that switch between two points in `tlist`, whereas `propagate` assumes\n", "that pulses are constant on the intervals of `tlist`, and thus switches *on*\n", "the points in `tlist`." ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "ExecuteTime": { "end_time": "2019-01-31T00:30:15.558501Z", "start_time": "2019-01-31T00:30:12.715401Z" } }, "outputs": [], "source": [ "opt_dynamics2 = [\n", " oct_result.optimized_objectives[x].propagate(\n", " tlist, e_ops=[proj0, proj1], propagator=krotov.propagators.expm\n", " )\n", " for x in [0, 1]\n", "]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The difference between the two propagations gives an indication of the error\n", "due to the choice of the piecewise constant time discretization. If this error\n", "were unacceptably large, we would need a smaller time step." ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "ExecuteTime": { "end_time": "2019-01-31T00:30:15.565275Z", "start_time": "2019-01-31T00:30:15.560602Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Time discretization error = 2.86e-05\n" ] } ], "source": [ "print(\n", " \"Time discretization error = %.2e\" %\n", " abs(opt_dynamics2[0].expect[1][-1] - opt_dynamics[0].expect[1][-1])\n", ")" ] } ], "metadata": { "hide_input": false, "jupytext": { "formats": "" }, "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.6.9" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }