{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pennylane as pl\n", "from pennylane import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Exercise 1: Circuits" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'pl' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[1], line 7\u001b[0m\n\u001b[1;32m 4\u001b[0m pl\u001b[38;5;241m.\u001b[39mCNOT(wires\u001b[38;5;241m=\u001b[39m[\u001b[38;5;241m0\u001b[39m, \u001b[38;5;241m1\u001b[39m])\n\u001b[1;32m 5\u001b[0m pl\u001b[38;5;241m.\u001b[39mHadamard(wires\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m)\n\u001b[0;32m----> 7\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[43mpl\u001b[49m\u001b[38;5;241m.\u001b[39mdraw(circuit)())\n", "\u001b[0;31mNameError\u001b[0m: name 'pl' is not defined" ] } ], "source": [ "def circuit():\n", " # Call pl.Hadamard and pl.CNOT to build and return this circuit\n", " pl.\n", " return pl.\n", "\n", "print(pl.draw(circuit)())\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Exercise 2: Parametrised circuits" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (1690225933.py, line 3)", "output_type": "error", "traceback": [ "\u001b[0;36m Cell \u001b[0;32mIn[2], line 3\u001b[0;36m\u001b[0m\n\u001b[0;31m pl.\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" ] } ], "source": [ "def circuit(alpha,beta,gamma):\n", " # Call pl.RX, pl.RY, pl.RZ, and pl.CNOT to build and return this circuit\n", " pl.\n", " return pl.\n", "\n", "pl.drawer.use_style(\"black_white\")\n", "pl.draw_mpl(circuit)(np.pi/4, np.pi/8, 0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Exercise 3: Executing circuits" ] }, { "cell_type": "code", "execution_count": 121, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1.0, 0.8, 0.72, 0.716)" ] }, "execution_count": 121, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmsAAAGjCAYAAABzH1KgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABDZUlEQVR4nO3de1xVdb7/8ffm4gY0U1Fw1B6gQE5Y3vBSM0ZUXs4ppdSk+0nzhnft5uUxWTpjQk1peRcvjDPlGcnIS9MxZTSp4xwTjpeB9ACKY/ULFe8iCO79+8MHuzZgIpe91t68no8Hjx5r7bXX/uzd5uub7/p+v8tit9vtAgAAgCl5GV0AAAAAboywBgAAYGKENQAAABMjrAEAAJgYYQ0AAMDECGsAAAAmRlgDAAAwMcIaAACAiRHWAAAATIywBgAAYGKENQAAABMjrAEAAJgYYQ0AAMDECGsAAAAmRlgDAAAwMcIaAACAiRHWAAAATIywBgAAYGKENQAAABMjrAEAAJgYYQ0AAMDECGsAAAAmRlgDAAAwMcIaAACAiRHWAAAATIywBgAAYGKENQAAABMjrAEAAJgYYQ0AAMDECGsAAAAmRlgDAAAwMcIaAACAiRHWAAAATIywBgAAYGKENQAAABMjrAEAAJgYYQ0AAMDECGsAAAAmRlgDAAAwMcIaAACAiRHWAAAATIywBgAAYGKENQAAABMjrAEAAJgYYQ0AAMDECGsAAAAmRlgDAAAwMcIaAACAiRHWAAAATIywBgAAYGKENQAAABMjrAEAAJgYYQ0AAMDECGsAAAAmRlgDAAAwMcIaAACAiRHWAAAATIywBgAAYGKENQAAABMjrAEAAJgYYQ0AAMDECGsAAAAmRlgDAAAwMcIaAACAiRHWAAAATIywBgAAYGKENQAAABMjrAEAAJgYYQ0AAMDECGsAAAAmRlgDAAAwMcIaAACAiRHWAAAATIywBgAAYGKENQAAABMjrAEAAJgYYQ0AAMDECGsAAAAmRlgDAAAwMcIaAACAiRHWAAAATIywBgAAYGKENQAAABMjrAEAAJgYYQ0AAMDECGsAAAAmRlgDAAAwMcIaAACAiRHWAAAATIywBgAAYGKENQAAABMjrAEAAJgYYQ0AAMDECGsAAAAmRlgDAAAwMR+jCwCAulJaWqqLFy9Kkm677Tb5+voaXBEA1B49awDc2v79+zV58mT17NlTTZo0UWBgoAIDA9WkSRP17NlTkydP1oEDB4wuEwBqzGK32+1GFwEAt+rgwYOaOHGi0tPTq3X8/fffr8WLF6tz5871XBkA1C161gC4FbvdroSEBPXo0aPaQU2S0tPT1aNHDyUkJIi/UQG4E3rWALgNu92uSZMmacmSJbU6z4QJE7Ro0SJZLJY6qgwA6g89awDcRmJiYq2DmiQtWbJEiYmJdVARANQ/etYAuIWDBw+qR48eKi0trZPz+fr6at++fYxhA2B69KwBcAsTJ06ss6AmXV/mY+LEiXV2PgCoL24V1q5evapFixZpwIABuuOOO2S1WhUUFKQhQ4bof//3f52OffPNN2WxWLRr165K50lOTpbFYlFycrJjX3x8vCwWixISEiodX/4Yl00AY+zfv/+WJhNUV3p6Ost6ADA9twprZ86c0dSpU1VSUqJHHnlE06ZNU0xMjP72t7/pN7/5jb755psan3vBggW66667NHv2bKfzpKamasWKFXrooYf06quv1sXbAHCL1qxZ45bnBoC64FZ3MGjevLn+9a9/qW3btk77s7KydO+992rWrFnavn17jc7t7++v9evXq3fv3nr66ae1f/9+nTt3TqNGjVJgYKD+/Oc/y8vLrbIt4DH27NnjlucGgLrgVmHNarVWCmqS1KlTJz344IPatm2bSktLa3yLmS5duigxMVFTp07VuHHj9N133+nMmTPatGmT2rRpU9vy64TdbldRUZHRZQAuU1paqoMHD9bb+Q8ePKjz58/Lx8etmkOgVgICAli6xo24Xeu0f/9+vf322/rqq6/0448/VhpwfPr0af3qV7+q8fknT56sbdu26S9/+Yskady4cYqNja1VzXWpqKhITZo0MboMwGOUlJSoWbNmRpcBuNSlS5fUuHFjo8tANblVWPvv//5vPfTQQ5Kk/v37KyIiQk2aNJHFYtGnn36qAwcOqKSkpFavYbFY9Pjjj+vzzz+XJE2aNKnWdQMAANSUW4W1efPmqaSkROnp6erTp4/TY//4xz+cZnWVjy8rKyurdJ7z58/f8DWOHTumV199VS1atNDZs2c1atQo7d69W97e3nX0LmonICBAly5dMroMwGVKS0sVHBysq1ev1sv5rVarCgoKuAyKBiUgIMDoEnAL3Kp1ysvLU4sWLSoFtaKiImVmZjrta968uSTp+++/r3Seist8lCsrK9Ozzz6rixcv6osvvtB//dd/6d1339WcOXM0d+7cOnoXtWOxWOi6RoPTuXNn7du3r97Offvtt9fLuQGgLrjV9MaQkBCdPXtWWVlZjn3Xrl3TK6+8olOnTjkd27NnT0nSunXrZLPZHPv37NmjDz/8sMrzz5kzR3v27NHLL7+svn376q233lL37t311ltv1csaTwCq57777nPLcwNAXXCr201t3bpVgwYNUrNmzRQXFyc/Pz/t2rVL33//ve655x7t2rVLx44dU2hoqCSpT58++vrrr9WrVy9FR0fr+PHj2rRpkx599FGlpqZq7dq1Gj58uCRp9+7devDBB9W1a1ft2bNHjRo1kiQdOXJEUVFRCgwM1IEDBxiIDBhg//796tatW72du0uXLvVybgCoC27VszZw4EB9/PHH6tChg/7yl7/oo48+0q9//Wvt3btXISEhlY7ftGmT/uM//kO5ublasmSJTpw4oS1btlSa3Xn27Fk999xzjrXWyoOaJHXs2FELFy7Uv/71L40ePbre3yOAyrp27ar777+/zs97//33E9QAmJ5b9awBaLjq40buGRkZuueee+rkfABQX9yqZw1Aw9W5c+c6negzd+5cghoAt0DPGgC3YbfbNWnSJC1ZsqRW55k4caI++OADVnAH4BboWQPgNiwWixYtWqT58+fX6LZyvr6+mj9/PkENgFuhZw2AWzp48KAmTpxY7WV17r//fi1ZsoRLnwDcDmENgFs7cOCA1qxZoz179ujAgQOOOx1YrVZ17txZ9913n1588UVmfQJwW4Q1AB7j/PnzjrUQz507x50JAHgExqwB8Bg/v78n9/oE4CkIawAAACZGWAMAADAxwhoAAICJEdYAAABMjLAGAABgYoQ1AAAAEyOsAQAAmBhhDQAAwMQIawAAACZGWAMAADAxwhoAAICJEdYAAABMjLAGAABgYoQ1AAAAEyOsAQAAmBhhDQAAwMQIawAAACZGWAMAADAxwhoAAICJEdYAAABMjLAGAABgYoQ1AAAAEyOsAQAAmBhhDQAAwMQIawAAACZGWAMAADAxwhoAAICJEdYAAABMjLAGAABgYoQ1AAAAEyOsAQAAmBhhDQAAwMQIawAAACZGWAMAADAxwhoAAICJEdYAAABMjLAGAABgYoQ1AAAAEyOsAQAAmBhhDQAAwMQIawAAACZGWAMAADAxwhoAAICJEdYAAABMjLAGAABgYoQ1AAAAE/MxugDAFUpKSnT06FHl5OQoNzdXp0+fVnFxsUpKSowuzYnVapWfn59atmyp8PBwRUREqEOHDrJarUaXBgAwCGENHqmsrExffvmlUlJStG3bNh0/flx2u93osmrEYrEoJCREAwYM0LBhw/TAAw/Ix4dfXQBoKCx2d/0XDKhCbm6u3n33XW3cuFGnTp0yupx60apVKw0dOlSvvPKKwsLCjC7HVC5fvqwmTZpIki5duqTGjRsbXBEA1B5hDR6hqKhICQkJSkxM1NWrV40uxyWsVqtee+01zZgxQwEBAUaXYwqENQCeiLAGt/fFF19ozJgxOn78+E2PDQ4OVnh4uO644w4FBASoUaNG8vIyxzwbm82mq1evqqioSCdOnFBubq4KCgpu+rzQ0FCtWLFC/fv3d0GV5kZYA+CJCGtwa6mpqYqLi1NZWVmVj0dFRWnYsGHq27evIiIi1LRpUxdXWDsXLlxQTk6OduzYoQ0bNigzM7PK43x8fLRhwwYNHjzYxRWaC2ENgCcirMFt3SioeXt7a9KkSZo0aZI6dOhgUHX1Iy8vT4sXL9aiRYt07do1p8cIbIQ1AJ6JsAa39MUXX+jRRx+tFNSio6O1ZMkS3X333QZV5hr//Oc/NWHCBO3evdtpv4+Pjz777LMGe0mUsAbAExHW4HaKiooUGRlZaYza6NGjtXz5ctOMQatvNptN8fHxSkpKctofGhqq7Oxs+fv7G1SZcS5evOi41H3hwgXddtttBlcEALXHYk1wOwkJCQ0+qEmSl5eXli9fLklOgS0/P18JCQmaM2eOUaXVu7NnzyozM1P79u1TRkaGMjIy9MMPP6i4uNhxTNOmTeXn56c2bdooKipKPXr0UFRUlLp3767mzZsbWD0A3Bp61uBWcnNzdffddzvdeSA6Olo7d+5sUEHt52w2m2JiYpSenu7YZ7ValZWV5VHrsB05ckTLli3Tli1bdPTo0Vqdq0OHDho0aJDGjRunjh071lGFAFA/CGtwK+PGjXP0JknXJxPs37/f48eo3cyhQ4fUrVs3p0kH8fHxWrZsmYFV1V5ZWZk2b96spUuXKi0tzemx9u3bO/WYhYWFyW63OwJqXl6eLBaL8vLylJGR4eiFO3bsmNN5Hn74YY0fP16xsbHcGQKAKRHW4DbKysrUpk0bpzsTTJ06VQsWLDCwKvOYNm2aFi5c6NgOCgrS999/75YBpLi4WO+9956WLl2q77//XtL1y74DBw7UqFGj9Nvf/lYtWrSo9LzqTDA4c+aMvv76a61atUpbt26VzWaTJLVt21YTJkzQSy+9xL1YAZgKYQ1uIy0tTX379nXal5eX53HLc9RUXl6ewsPDnfalpaXpoYceMqiimtm7d69GjBih7OxsSddvrzV69GiNGTNGISEhv/jcW50Nevz4ca1cuVJJSUmOPwIiIyOVnJysnj171sG7AYDaa5iDfOCWUlJSnLajoqIIaj8TFham7t27O+2r+JmZWXFxsWbMmKH77rtP2dnZCg4O1rp163TixAnNmzfvpkGtJkJCQjRv3jydOHFC69atU3BwsLKzs3Xvvfdq5syZThMWAMAohDW4jW3btjltDxs2zKBKzKviZ1LxMzOrvXv3qnv37kpMTJTNZtMzzzyjrKwsPf/88y65JGm1WvX8888rKytLzzzzjGw2mxISEhQVFaW9e/fW++sDwC8hrMEtlJSUVFquo+IlUUj9+vVz2j5+/LjTzFkz+vjjj9WnTx99++23Cg4OVmpqqj788EMFBga6vJbAwEB9+OGHSk1NVVBQkLKzs9WnTx9t3LjR5bUAQDnCGtzC0aNHVXF45Z133mlQNeYVERHhtG2z2SrNfjSTNWvW6Mknn1Rpaakee+wxZWVl6fHHHze6LD3++OPKzs7WY489ptLSUsXFxWnt2rVGlwWggSKswS3k5OQ4bQcHB7M6fRWaNm2qoKAgp30VPzuzWLt2rUaOHCmbzaaRI0dq48aNhvSm3UhgYKA2btzoqPHFF18ksAEwBGENbiE3N9dpu+KsR/ykYu+aGcPaxo0bNWrUKEnSlClTlJSUJG9vb4Orqszb21tJSUmaMmWKJGnUqFH65JNPDK4KQENDWINbOH36tNP2HXfcYVAl5teuXTun7cLCQoMqqdrevXv19NNPy2azadSoUVqwYIEsFovRZd2QxWLRggULHD1sTz31lL755hujywLQgBDW4BYqLqEQEBBgUCXmV/GzMdPyE8XFxRo+fLhjjNry5ctNHdTKWSwWrVixwjGGbfjw4ab6XAF4NsIa3ELFGY2NGjUyqBLzq7jUhZlCxZw5cxyzPlevXm3KS5834u3trVWrVjlmic6dO9fokgA0EIQ1uKWGetP26jDrZ7N37169/fbbkqTly5ebajJBdbVs2dJxb9rExEQuhwJwCXO26gA8SnFxsUaMGOFY8NYMy3PU1ODBgx1j7oYPH276dewAuD/CGoB6t2DBAsctpD744AOjy6m1RYsWOW5N9d577xldDgAPR1gDUK/Kysq0ZMkSSdI777zjlpc/KwoMDHRc0l26dKnKysoMrgiAJyOsAahXmzdv1vfff6+goCDFxcUZXU6defLJJ9WqVSt999132rJli9HlmFJpaanOnDmjM2fOqLS01OhyALdFWANQr5YuXSrp+oKyrrgpu6tYrVbHwr7l7xHS/v37NXnyZPXs2VNNmjRRYGCgAgMD1aRJE/Xs2VOTJ0/WgQMHjC4TcCuENQD15vDhw0pLS5OXl5fGjBljdDl1buzYsbJYLNqxY4eOHDlidDmGOnjwoKKjo9WtWzctWrRI+/bt09WrVx2PX716Vfv27dOiRYvUtWtXRUdH6+DBgwZWDLgPwhqAelO+zMXAgQMVEhJicDV1LyQkRAMHDpQkLVu2zOBqjGG325WQkKAePXooPT292s9LT09Xjx49lJCQILvdXo8VAu6PsAag3pSP5Sq/XOiJyt/b1q1bDa7E9ex2uyZNmqSZM2fWaExaaWmpZs6cqUmTJhHYgF/QIMPa/v37NWvWLA0YMECtWrWSxWJRTEyM0WXBRPLz82WxWJx+fH191bZtW8XFxWnfvn1OxycnJ1c6/kY/DeW7dvbsWR09elSS9Nvf/tbgaupP+XvLy8vTuXPnjC3GxRITEx0zfWtjyZIlSkxMrIOKAM/kY3QBRvj00081f/58NWrUSHfeeWelm4QD5cLCwvTcc89Jki5fvqyMjAylpKTo008/1Y4dOxQdHS1J6tq1q954441fPNeSJUt0+vRpderUqd7rNoPMzExJUvv27dWiRQuDq6k/gYGBCg0NVX5+vjIzM/XQQw8ZXZJLHDx4ULNnz66z882ePVuPPPKIOnfuXGfnBDxFgwxrw4YNU2xsrO655x4VFhbqV7/6ldElwaTCw8P15ptvOu1LSEjQzJkz9frrr+vLL7+UdD2sde3a9Ybneffdd3X69GlFRUXp3XffrceKzaO89zEqKsrgSupfjx49lJ+fr3379jWYsDZx4sQ6XY6jtLRUEydO1O7du+vsnICn8JjLoNeuXVNiYqLCw8Pl5+en8PBwzZ8/X0ePHpXFYtHw4cMdx3bq1Endu3eXr6+vcQXDbY0cOVKSlJGRUa3jd+zYoenTpysoKEipqany8/Orz/JMo/zz6dGjh8GV1L/yQFrd74S7279//y1NJqiu9PR0lvUAquAxYW3MmDGaMWOGbDabJkyYoAEDBui9997TlClTjC4NHsrH5+Yd00ePHtWTTz4pi8WilJQU3XHHHS6ozBzKg0tD6FlraGFtzZo1bnluwF15xGXQXbt2ac2aNerSpYu+/vprNW7cWJI0a9asX7w0BdTEqlWrJEl9+vT5xeMuX76sxx9/XGfOnNGiRYsc49saih9++EHS9XF/ni48PFzST+/Z0+3Zs8ctzw24K48Ia+vWrZN0fYBqeVCTpLZt22rKlCl6/fXXjSqtztntdhUVFRldhssZdaua3Nxcx5i18gkGO3fuVHBwsN55551ffO7w4cN16NAhjRgxQhMnTnRBtVUrLS3V5cuXXfqaNptNxcXFkq5/Z131+j9/HVe+5/JlJ65cuaKLFy/Ky8tjLlpUUlpaWq+L2R48eFDnz5+vVs81ai4gIEAWi8XoMlBNHvHbUD7G4f7776/0WFX73FlRUZGaNGlidBkNRl5enubMmeO0r3Xr1kpPT3f0plRl3rx5+vjjj9W7d2/DF0tNSkpSUlKSYa9vVM9acHCwIa/btGlTQ17XU5SUlKhZs2ZGl+HxLl265NS5AXPziD//zp8/Ly8vL7Vs2bLSY0Y12PAMAwYMkN1ul91u18mTJ/XOO+/o5MmTio2N1aVLl6p8zmeffabZs2erdevW2rhxo0fdDxMA4Hoe0bN2++23y2az6fTp02rVqpXTYwUFBQZVVT8CAgJuGBI82bRp0wztHZKkVq1a6ZVXXtH58+f1hz/8Qb/73e+0cOFCp2P+7//+T88++6x8fHz08ccfq23btsYU+zOjR4/WggULXPqaNpvN0cOUl5fnsj+aLl++7HitgoICl/UcFBQUOHoQL1y44PGXQYODg53u+1mXrFarCgoKuAxazwICAowuAbfAI34bunTposzMTKWnp2vIkCFOj9XH9HIjWSyWBtl1baZlVmbNmqU1a9Zo6dKlmjp1qkJDQyVd/0f6scce0/nz57V8+XLTrNrv6+tryHfGz89PxcXFhn1nGzdu7LLXLR/74+/vr9tuu80lr2mkzp07V7qLR12e+/bbb6+XcwPuyiP+/Hv++eclSXPnznUaVPz999/r/fffN6oseCh/f39Nnz5dpaWl+v3vfy/p+gDz5557TocPH9aYMWM0duxYg6s0Xps2bSRd71nzdLm5uZJ+es+e7r777nPLcwPuyiN61h588EGNGDFCa9eu1T333KPBgwerpKREf/3rX3XvvfdWusHy4cOHlZCQIOn67K3yfT9fODc5OdlV5cMNjRkzRomJiVq3bp1mzZqlTz75RFu2bFGjRo0UGBhY6a4HFd3scU8QFRWlo0ePKiMjQ3379jW6nHrVkNaUk6QXX3xRixYtqrdzA3DmEWFNuj7j7c4771RSUpIWL16sdu3a6aWXXlJcXFylsPbjjz/qT3/6k9O+goICp32ENfwSPz8/zZw5U5MmTdKcOXMcY5SuXr2q+fPn3/T5DSWspaSk1NvlMjNpaGGta9euuv/+++t8mMn999+vLl261Ok5AU/gMWHN29tbM2bM0IwZM5z25+fnVzo2JibGsS4SUJXQ0NCbfkcmTpzotH4aAd9Z+W2mGsKq/uWBtCHcWqvc4sWL1aNHjzpbA9HX11dLliypk3MBnsYjxqwBMJ/u3btLko4dO6YzZ84YXE39KSwsdPxRWP6eG4LOnTtr7ty5dXa+uXPn6p577qmz8wGehLAGoF40b95cHTp0kCR9/fXXBldTf8rfW1hYWINbzHX69OmaMGFCrc8zceJETZ8+vQ4qAjwTYQ1AvRk0aJCkn+6n6onK39vAgQMNrsT1LBaLFi1apPnz59doeR1fX1/Nnz9fH3zwAbc+An6Bx4e18rFHjCcCXG/cuHGSpK1bt+r48eMGV1P38vPzHROYyt9rQ2OxWDRjxgzt27fvlm7vd//99ysjI0MzZswgqAE34fFhDYBxOnbsqIcfflg2m00rV640upw6t3LlStntdvXt21cdO3Y0uhxDde7cWbt379b+/fs1efJk9ezZU40aNXI8brVa1bNnT02ePFn79+/X7t27GaMGVJPHzAYFYE7jx49XWlqaVq1apdmzZ3vMvVJLSkocl0DHjx9vcDXm0aVLF8di5OfPn3eM4ysoKODOBEAN0bMGoF7Fxsaqbdu2OnnypDZs2GB0OXXmr3/9q06dOqV27do5xubB2c/v78m9PoGaI6wBqFc+Pj6OGYOvvvqqCgsLDa6o9goLC/Xaa69Jut6rRhABUJ8IawDq3UsvvaTIyEgVFBRo8uTJRpdTa5MmTVJBQYEiIyP10ksvGV0OAA9HWANQ76xWq9auXSsvLy999NFH+vTTT40uqcZSU1O1fv16eXt7Kzk52WPG4AEwL8Ia3JLNZjO6BNMy62fTq1cvx6XD+Ph4t7wcevr0acXHx0uSXnvtNfXs2dPgigA0BIQ1uIWKvRdXr141qBLzKykpcdr28/MzqJLK3njjDcfl0JEjR+ratWtGl1Rt165d06hRo3Ty5ElFRkbqjTfeMLokAA0EYQ1uoWLgKCoqMqgS86v42ZgprPn5+Wnt2rXy9fXVpk2bNHbsWNntdqPLuim73a6xY8dq06ZNatSoEZc/AbgUYQ1uoWXLlk7bJ06cMKgS8/vuu++ctgMDAw2qpGq9evXS+vXr5eXlpdWrV2vatGmmDmx2u13Tpk3T6tWr5eXlpfXr13P5E4BLEdbgFsLDw522c3NzDarE/HJycpy2IyIiDKrkxoYOHepYUPb999/X6NGjTXlJtPzSZ/kir6tXr9aQIUMMrgpAQ0NYg1uoGDgKCgp04cIFg6oxrwsXLujkyZNO+8wY1iRpxIgRWrNmjaOHbejQoaaadHD69GkNHTrUUePatWs1fPhwo8sC0AAR1uAWOnToUOlmzxV7kFD5M/Hy8lL79u0NqubmRowYoQ0bNjjGsEVGRio1NdXospSamqpOnTpp06ZN8vX1VUpKCkENgGEIa3ALVqtVISEhTvt27NhhUDXmtX37dqftkJAQ0w+EHzp0qL766ivdddddOnnypIYMGaJnn33WkF62wsJCPfPMMxoyZIhj1ufXX3/NpU8AhiKswW0MGDDAaTslJcWgSsyr4mdS8TMzq169eikzM1MzZsxwLJzbqVMnrVu3rtJSJPWhpKRE69atU6dOnRyTH2bOnKmMjAwmEwAwnMVu5mlYwM+kpaWpb9++Tvvy8vLUoUMHgyoyl7y8vEoTMdLS0vTQQw8ZVFHNfPPNNxo+fLiys7MlSa1atdKoUaM0duzYSr2rFV2+fFlNmjSRJF26dEmNGzf+xeOPHz+uFStWaNWqVTp16pQkKTIyUsnJyYS0OnCr/z8AVI2eNbiNBx54QK1atXLat2jRIoOqMZ/Fixc7bQcFBSk6OtqgamquZ8+eysjI0FtvvaW2bdvq1KlTmj9/vjp06KDY2Fht3rxZZ86cqfH5z5w5o82bNys2Nlbt27fX/PnzderUKbVr105vvfWWMjMzCWoATIWeNbiVcePGafny5Y5tb29v7d+/X3fffbeBVRnv0KFD6tatm9PyF/Hx8Vq2bJmBVdVeWVmZtmzZoqVLl1YaoxgaGqoePXooKipKUVFRCg8Pl91uV1hYmKTrPY0Wi0W5ubnKyMhQRkaG9u3bp/z8fKfz9O3bV+PHj9egQYPk4+PjqrfWINCzBtQNwhrcSl5enjp16uQ0jik6Olo7d+6Ul1fD7Ci22WyKiYlRenq6Y5/ValVWVpYjuHiCI0eOaNmyZdq6davy8vJqda6wsDANHDhQ48aNU8eOHeuoQlREWAPqBmENbmf27Nn6/e9/77Rv9OjRWr58eYMLbDabTfHx8UpKSnLaP3v2bM2ZM8egqurfuXPnlJmZqX379jl6zX744QdduXLF6Th/f3+1adNGUVFRjl647t27q1mzZsYU3sAQ1oC6QViD2ykqKlJkZKSOHz/utL+hBbYbBbXQ0FBlZ2fL39/foMqMY7PZdO7cOUlSs2bNGsx3wawIa0DdoCWD2wkICNDKlSsrjS9KSkpSTEyMDh06ZFBlrnPo0CHFxMRUCmo+Pj5asWJFgwxq0vVFgFu0aKEWLVoQ1AB4DFozuKX+/ftrw4YNlQJbenq6unXrpmnTptV6XJMZ5eXladq0aerWrZvTGDXpelDbsGGD+vfvb1B1AID6wGVQuLXU1FTFxcWprKysyse7d++uYcOGqV+/foqIiFDTpk1dXGHtXLhwQTk5Odq+fbtSUlKUmZlZ5XHlQW3w4MEurhC4MS6DAnWDsAa398UXX2js2LGVlmSoSlBQkCIiItSuXTsFBATIarWa5nKZzWZTSUmJioqK9N133yknJ6fSTdmrEhoaqhUrVtCjBtMhrAF1g7AGj3DlyhUlJCQoMTHRJbcnMgOr1arp06drxowZDXaMGsyNsAbUDcIaPEpeXp7++Mc/auPGjY7bB3maoKAgDRkyRK+88opHraMGz0NYA+oGYQ0eqaysTLt371ZKSoq2bdum/Px8uetX3WKxKDQ0VAMGDNCwYcMUHR3NSvtwC4Q1oG4Q1tAglJSU6NixY8rJyVFOTo4KCwtVXFys4uJio0tz4ufnJz8/PwUGBioiIkIRERFq3769rFar0aUBt4ywBtQNwhoAoF4Q1oC6YY5pcAAAAKgSYQ0AAMDECGsAAAAmRlgDAAAwMcIaAACAiRHWAAAATIywBgAAYGKENQAAABMjrAEAAJgYYQ0AAMDECGsAAAAmRlgDAAAwMcIaAACAiRHWAAAATIywBgAAYGKENQAAABMjrAEAAJgYYQ0AAMDECGsAAAAm5mN0AYArlJSU6OjRo8rJyVFubq5Onz6t4uJilZSUGF2aE6vVKj8/P7Vs2VLh4eGKiIhQhw4dZLVajS4NgIvQXqEiwho8UllZmb788kulpKRo27ZtOn78uOx2u9Fl1YjFYlFISIgGDBigYcOG6YEHHpCPD7+6gKegvcLNWOzu+o0AqpCbm6t3331XGzdu1KlTp4wup160atVKQ4cO1SuvvKKwsDCjywFu6PLly2rSpIkk6dKlS2rcuLHBFZkL7RWqi7AGj1BUVKSEhAQlJibq6tWrRpfjElarVa+99ppmzJihgIAAo8sBKiGsVY32ivbqVhHW4Pa++OILjRkzRsePH7/pscHBwQoPD9cdd9yhgIAANWrUSF5e5phnY7PZdPXqVRUVFenEiRPKzc1VQUHBTZ8XGhqqFStWqH///i6oEqg+wlpltFe0VzVBWINbS01NVVxcnMrKyqp8PCoqSsOGDVPfvn0VERGhpk2burjC2rlw4YJycnK0Y8cObdiwQZmZmVUe5+Pjow0bNmjw4MEurhC4McKaM9qr62ivbh1hDW7rRg2ft7e3Jk2apEmTJqlDhw4GVVc/8vLytHjxYi1atEjXrl1zeowGEGZDWPsJ7RXtVa3YATe0bds2u4+Pj12S0090dLT90KFDRpdX7w4dOmSPjo6u9P59fHzs27ZtM7o8wG632+2XLl1yfDcvXbpkdDmGaQjt1e7du2/4GO1V7dGzBrdTVFSkyMjISmM+Ro8ereXLl5tmTEd9s9lsio+PV1JSktP+0NBQZWdny9/f36DKgOsuXrzouJR34cIF3XbbbQZX5Hqe3l7ZbDbNmjVLhYWFldqiisfRXtWce39L0CAlJCR4bMN3K7y8vLR8+XKNHj3aaX9+fr4SEhIMqgoN0dmzZ5WWlqbExETFxcUpLCxM/v7+TmOumjZtKn9/f4WFhSkuLk5vv/220tLSdPbsWQMrr3+e3F5duXJFTz75pBITE3Xffff94rG0V7VDzxrcSm5uru6++26nlbyjo6O1c+dOt2/4aspmsykmJkbp6emOfVarVVlZWaxrhHpz5MgRLVu2TFu2bNHRo0drda4OHTpo0KBBGjdunDp27FhHFRrPk9urgoICxcbGau/evZKk7Oxs3XXXXTd9Hu1VzRDW4FbGjRun5cuXO7a9vb21f/9+3X333QZWZbxDhw6pW7duToN44+PjtWzZMgOrgqcpKyvT5s2btXTpUqWlpTk91r59e0VFRalHjx6KiopSWFiY7Ha74x/gvLw8WSwW5eXlKSMjQ/v27VNGRoaOHTvmdJ6HH35Y48ePV2xsrNuvfO+p7VVWVpYeffRRR49hs2bNVFhYWO0ASntVAwaOlwNuSWlpqb1Vq1ZOA1SnTp1qdFmmMXXqVKfPJigoyF5aWmp0WfAAV65csc+bN8/etm1bx/fLy8vLHhsba9+8ebO9sLCwyudVZ4JBYWGhffPmzfbY2Fi7l5eX4/i2bdva33rrLXtxcXF9vrV646nt1fbt2+1NmzZ1el8DBgy45fPQXt0awhrcxo4dOyrNJsrLyzO6LNPIzc2t9PmkpaUZXRbc3P/8z//YIyMjHd+pVq1a2WfNmmXPz8+/6XNvdTZofn6+fdasWU4hJzIy0r537966eCsu5YntVVJSUpWzWt98881bPhft1a1x74vmaFBSUlKctqOiojxuXaLaCAsLU/fu3Z32VfzMgOoqLi7WjBkzdN999yk7O1vBwcFat26dTpw4oXnz5ikkJKTOXzMkJETz5s3TiRMntG7dOgUHBys7O1v33nuvZs6cqeLi4jp/zfriSe2VzWbT9OnTNXr06CoX9L3Z5IKq0F7dGsIa3Ma2bductocNG2ZQJeZV8TOp+JkB1bF37151795diYmJstlseuaZZ5SVlaXnn39eVqu13l/farXq+eefV1ZWlp555hnZbDYlJCQoKirKMaDd7Dylvbpy5Ypj9m5VLBaLevfuXaNz015VH2ENbqGkpKTS9Pe+ffsaVI159evXz2n7+PHjTjPRgJv5+OOP1adPH3377bcKDg5WamqqPvzwQwUGBrq8lsDAQH344YdKTU1VUFCQsrOz1adPH23cuNHltdwKT2mvCgoKFBMT84ufd2RkpG6//fYanZ/2qvoIa3ALR48elb3CxOU777zToGrMKyIiwmnbZrNVmm0H3MiaNWv05JNPqrS0VI899piysrL0+OOPG12WHn/8cWVnZ+uxxx5TaWmp4uLitHbtWqPLuiFPaK+ysrLUu3fvm/Zk1uQSaDnaq+ojrMEt5OTkOG0HBwc3yNXQb6Zp06YKCgpy2lfxswOqsnbtWo0cOVI2m00jR47Uxo0bDelNu5HAwEBt3LjRUeOLL75o2sDm7u3V9u3b9Zvf/KZS7+Dtt99eaXmO2oQ12qvqI6zBLeTm5jpth4eHG1SJ+VX8a5XGDzezceNGjRo1SpI0ZcoUJSUlydvb2+CqKvP29lZSUpKmTJkiSRo1apQ++eQTg6uqzJ3bq6SkJP37v/+7Lly44LQ/NDRUGzZskM1mc9pfm7Am0V5VF2ENbuH06dNO23fccYdBlZhfu3btnLYLCwsNqgTuYO/evXr66adls9k0atQoLViwQBaLxeiybshisWjBggWOHrannnpK33zzjdFlOXHH9qp8xueYMWOcFquVpN69e+sf//iHzp8/77S/WbNmtb7jBO1V9RDW4BYqTtkPCAgwqBLzq/jZuNNyB3Ct4uJiDR8+3DFGbfny5aYOauUsFotWrFjhGMM2fPhwU33P3a29KioquuGMz2HDhmnnzp0KDg7Wnj17nB7r3bt3rW+bRXtVPYQ1uIWKM4QaNWpkUCXmV3FpBRo/3MicOXMcsz5Xr15tykufN+Lt7a1Vq1Y5ZonOnTvX6JIc3Km9OnPmjB588MEbzvhs3bq1/P39JalSWKvtJVCJ9qq6CGtwS+5+E+T6xGeD6ti7d6+jJ2X58uWmmkxQXS1btnTcezMxMdF0l0PLmfl3slmzZoqPj1erVq2qfHzRokWyWCzavn27MjMznR6ri7Bm5s/GTPiUAKCBKS4u1ogRIxwL3ppheY6aGjx4sGPM3fDhw1mn6xZ5eXlpxIgROnLkiCZMmHDD8NS/f39dvXrVsV2bxXBx6whrANDALFiwwHELqQ8++MDocmpt0aJFjltTvffee0aX45aaN2+uxYsXa9++fdU6vjaL4eLWEdYAoAEpKyvTkiVLJEnvvPOOW17+rCgwMNBxSXfp0qVV3r8S1VNxxueN1MUlUFQfYQ0AGpDNmzfr+++/V1BQkOLi4owup848+eSTatWqlb777jtt2bLF6HLckt1u14MPPlitYwlrruVjdAEAANdZunSppOsLyrripuyuYrVaNWrUKM2fP19Lly7V4MGDjS7JFIqLi5Wdna2srCxdvHjRMdvSz89Pt912mzp16qROnTrJarU6FhuuKDMzUxMmTHCaDUpYcy3CGgA0EIcPH1ZaWpq8vLw0ZswYo8upc2PHjlVCQoJ27NihI0eO1HrBVnd08eJFpaSkKC0tTQcOHNDhw4crLXJbkbe3tyIiInT48OFKj+Xm5iosLExfffWV/vSnP2n69OkqLS1tkJ+tkbgMCgANRPkyFwMHDlRISIjB1dS9kJAQDRw4UJK0bNkyg6txHbvdri+//FLDhw9X69atNXLkSH300UfKysq6aVCTpGvXrlUZ1Lp06aIOHTpIcp41+t5777HkhovxaQNAA1E+lqv8PqCeqPy9bd261eBKXGPHjh3q1KmTYmJi9Kc//UlFRUV1du4DBw6oU6dO2rFjh2Nf8+bNNWLEiDp7DVRPgwtrpaWl2rhxo1544QXdddddatKkiW677Tb17t1by5Ytq9ZfIWg48vPzZbFYnH58fX3Vtm1bxcXFOaa5L1y4UBaL5RcbsV27dsnLy0s9e/Zkthpc7uzZszp69Kgk6be//a3B1dSf8veWl5enc+fOGVtMPfrhhx/01FNPqV+/fvr2229venxYWJiio6PVr18/9evXT9HR0QoLC7vp87799lv169dPTz/9tP7f//t/dVE6aqDBjVnLy8vTE088oSZNmujhhx9WbGyszp8/ry1btmj8+PH629/+ps2bN7vF/fHgOmFhYXruueckSZcvX1ZGRoZSUlL06aefaseOHZoyZYo2bdqk5ORkDRkyRIMGDXJ6/qVLlzRixAhZrVatW7dOPj4N7lcPBitffb59+/Zq0aKFwdXUn8DAQIWGhio/P1+ZmZl66KGHjC6pTtntdq1cuVKvvvqqLl68WOUx3t7eevTRR/Vv//Zv6tKli+655x7ddtttVR4bHx+vFStW3PR1//M//1OfffaZ3nnnHY0dO7ZW7wG3rsH9i3HbbbdpyZIleuGFF9S4cWPH/nfffVcxMTHaunWrPv74Yw0bNszAKmE24eHhevPNN532JSQkaObMmXr99df15ZdfKjk5WZ07d9bo0aOVlZXltH7Vyy+/rPz8fC1YsEB33XWXi6sH5OgFjoqKMriS+tejRw/l5+dr3759HhXWysrKNHXqVMc6eRX9+te/1siRI/Xcc8+pdevWNz3fuXPnqgxq06dP16ZNmyqNY7t48aLi4+P1z3/+UwsWLOCPThfymMug165dU2JiosLDw+Xn56fw8HDNnz9fR48elcVi0fDhwyVJbdu21fjx452CmiQ1btxYL730kiTpyy+/dHX5cEMjR46UJGVkZEi6Prh54cKFKigo0Lhx4xzHbdu2TStXrtSDDz54w6nxQH0r/5726NHD4ErqX3kgLX/PnuDq1auKi4urMqg1b95cK1asUFZWll555ZVqBTVJ+tWvflVpX3R0tBISEpSVlaXly5erWbNmlY5ZvHix4uLinG4/hfrlMWFtzJgxmjFjhmw2myZMmKABAwbovffeu6V/HH19fSWJvxZwS37+fRkxYoRiY2OVkpKi9evX69y5cxo1apSaNm2qtWvXcnkdhikPLg2hZ83TwlppaameeOIJpaamVnrshRde0OHDhzVmzJhbmqG5a9cux5prP1c+mcDLy0tjx47VkSNH9MILL1Q6LjU1VU888YRKS0tv4Z2gpjwirO3atUtr1qxRly5ddOjQIb377rtasmSJ9u/fr3/84x/VPs+aNWskXb9hLXAzq1atkiT16dPHaf/KlSvVsmVLTZgwQcOHD9d3332nhQsXeuRSCXAfP/zwgyRVa1C5uwsPD5f003t2d6+//nqluzI0atRIH330kZKTkxUUFHRL57vRnQpWrVrl6LQoFxQUpOTkZH344Ydq1KiR02NbtmzR7Nmzb+m1UTMe0YW0bt06SdLs2bOdLm+2bdtWU6ZM0euvv37Tc6xcuVKff/65HnroIT3yyCP1Vmtt2e32Op2a7S6M/ustNzfXMWatfILBzp07FRwcrHfeecfp2ODgYK1YsUJDhw7Vpk2bFBsba+hU99LSUl2+fNmw14fxbDaboxfFbre77Pvw89dx5XfQbrdLkq5cuaKLFy+6fE2wumyvtm/frsTERKd9jRs31tatWxUTE1Ojc97oilP50I6qPPPMM2rTpo0GDhzo9P8yMTFRDz/8sPr27VujWlBNdg/QvXt3uyT7yZMnKz22a9cuuyT7Cy+8cMPnb9myxe7r62sPCQmx//DDD/VYae1dunTJLqnB/4wfP94ln/exY8duWEPr1q3tOTk5N3xur1697JLs2dnZLqm13Pjx4w3//8MPP/z89FPT9qqgoMAeHBzsdC5fX197enp6jduHs2fPVlljbm5utZ6fnp5u9/X1dXpu69at7QUFBTWqp2J75aq23d14xGXQ8+fPy8vLSy1btqz0WHBw8C8+929/+5ueeOIJ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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "device = pl.device('default.qubit', wires=['aux', 'q1', 'q2'], shots=[1,10,100,1000])\n", "\n", "def circuit(alpha, beta):\n", " # Build and return this circuit, using pl.expval and pl.PauliZ to measure qubit 2 in the Z basis\n", " pl.\n", " return pl.\n", "\n", "parameters = [np.pi/4, np.pi/4]\n", "pl.draw_mpl(circuit)(parameters[0], parameters[1])\n", "qnode = pl.QNode(circuit,device)\n", "qnode(parameters[0], parameters[1])" ] }, { "cell_type": "code", "execution_count": 99, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-1.0, 0.8, 0.6, 0.69)" ] }, "execution_count": 99, "metadata": {}, "output_type": "execute_result" } ], "source": [ "@pl.qnode(device)\n", "def circuit(alpha, beta):\n", " pl.\n", " return pl.\n", "\n", "parameters = [np.pi/4, np.pi/4]\n", "circuit(parameters[0], parameters[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Exercise 4: Circuit depth" ] }, { "cell_type": "code", "execution_count": 120, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "wires: 3\n", "gates: 5\n", "depth: 4\n", "shots: Shots(total=None)\n", "gate_types:\n", "{'RZ': 1, 'CNOT': 3, 'RY': 1}\n", "gate_sizes:\n", "{1: 2, 2: 3}\n", "wires: 3\n", "gates: 2\n", "depth: 1\n", "shots: Shots(total=None)\n", "gate_types:\n", "{'CNOT': 1, 'RY': 1}\n", "gate_sizes:\n", "{2: 1, 1: 1}\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAs8AAAGjCAYAAADTrPgLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA64ElEQVR4nO3deXxU9b3/8feEhAlhEYQkFPBBIInWILIEpVaNUVluq4CgpNXaCmULm4CiLI8rim0laBFbiAZQQLp4S0BksV4WC5K2KA1cEEG8SSBU9BoIsmchYc7vD3+Z9iRBTrY550xez8cjD50zZ8585nyG+b7nzFk8hmEYAgAAAHBVIXYXAAAAALgF4RkAAACwiPAMAAAAWER4BgAAACwiPAMAAAAWEZ4BAAAAiwjPAAAAgEWEZwAAAMAiwjMAAABgEeEZAAAAsIjwDAAAAFhEeAYAAAAsIjwDAAAAFhGeAQAAAIsIzwAAAIBFhGcAAADAIsIzAAAAYBHhGQAAALCI8AwAAABYRHgGAAAALCI8AwAAABYRngEAAACLCM8AAACARYRnAAAAwCLCMwAAAGAR4RkAAACwiPAMAAAAWER4BgAAACwiPAMAAAAWEZ4BAAAAiwjPAAAAgEWEZwAAAMAiwjMAAABgEeEZAAAAsIjwDAAAAFhEeAYAAAAsIjwDAAAAFhGeAQAAAIsIzwAAAIBFhGcAAADAIsIzAAAAYBHhGQAAALCI8AwAAABYRHgGAAAALCI8AwAAABYRngEAAACLCM8AAACARYRnAAAAwCLCMwAAAGAR4RkAAACwiPAMAAAAWER4BgAAACwiPAMAAAAWEZ4BAAAAiwjPAAAAgEWEZwAAAMAiwjMAAABgEeEZAAAAsIjwDAAAAFhEeAYAAAAsIjwDAAAAFhGeAQAAAIsIzwAAAIBFhGcAAADAIsIzAAAAYBHhGQAAALCI8AwAAABYRHgGAAAALCI8AwAAABYRngEAAACLCM8AAACARYRnAAAAwCLCMwAAAGAR4RkAAACwiPAMAAAAWER4BgAAACwiPAMAAAAWEZ4BAAAAiwjPAAAAgEWEZwAAAMAiwjMAAABgEeEZAAAAsIjwDAAAAFhEeAYAAAAsIjwDAAAAFhGeAQAAAIsIzwAAAIBFhGcAAADAIsIzAAAAYBHhGQAAALCI8AwAAABYRHgGAAAALCI8AwAAABYRngEAAACLCM8AAACARaF2FwAA9aWsrEznz5+XJLVs2VJhYWE2V9S40Q9noR9A/WDLMwBX27dvnx5//HHdcsstatGihdq2bau2bduqRYsWuuWWW/T4449r//79dpfZaNAPZ6EfQP3zGIZh2F0EANTUxx9/rEmTJikrK8vS/HfeeacWL16sm2++uYEra5zoh7PQD6DhsOUZgKsYhqG0tDT16dPHcjCQpKysLPXp00dpaWlim0H9oR/OQj+AhseWZwCuYRiGJk+erPT09DotZ+LEiVq0aJE8Hk89VdY40Q9noR9AYLDlGYBrzJ8/v87BQJLS09M1f/78eqiocaMfzkI/gMBgyzMAV/j444/Vp08flZWV1cvywsLClJ2dzT6etUQ/nIV+AIHDlmcArjBp0qR6CwbSN6ftmjRpUr0tr7GhH85CP4DAcVV4vnTpkhYtWqSBAwfquuuuk9frVVRUlIYNG6b/+Z//Mc373HPPyePxaMeOHVWWs3LlSnk8Hq1cudI/LTU1VR6PR2lpaVXmr7iPn7EAe+zbt69GBz9ZlZWVxWm6aoF+OAv9AALLVeH566+/1tSpU1VaWqof/vCHmjZtmpKTk/XnP/9Z3//+9/WPf/yj1steuHChbrzxRs2ZM8e0nHXr1mnJkiW655579NRTT9XHywBQQ8uXL3flsoMV/XAW+gEElquuMNimTRv985//VMeOHU3TDx48qO9973uaPXu2tm7dWqtlN2vWTG+99Zb69u2rhx9+WPv27dOZM2c0evRotW3bVr/73e8UEuKq7xpA0Ni1a5crlx2s6Iez0A8gsFwVnr1eb5XgLEndunXT3Xffrc2bN6usrKzWlxzt0aOH5s+fr6lTp2r8+PE6fvy4vv76a61fv14dOnSoa/n1wjAMFRUV2V0GEDBlZWX6+OOPG2z5H3/8sc6ePavQUFd9HNqGfjgL/QgOERERnBrQRVz3r2Hfvn168cUX9de//lVfffVVlQMkCgsL9Z3vfKfWy3/88ce1efNm/f73v5ckjR8/XoMHD65TzfWpqKhILVq0sLsMIGiUlpaqdevWdpeB/49+OAv9CIwLFy6oefPmdpcBi1wVnv/+97/rnnvukSQNGDBA8fHxatGihTwej9555x3t379fpaWldXoOj8ejBx54QO+9954kafLkyXWuGwAAAMHBVeH5V7/6lUpLS5WVlaU77rjDdN+HH35oOiq4Yv/k8vLyKss5e/bsFZ/j6NGjeuqpp3Tttdfq9OnTGj16tHbu3KkmTZrU06uom4iICF24cMHuMoCAKSsrU3R0tC5dutQgy/d6vSooKOBnaYvoh7PQj+AQERFhdwmoAVf9a8jLy9O1115bJTgXFRVp7969pmlt2rSRJH3xxRdVllP5tHYVysvL9ZOf/ETnz5/Xli1b9N///d9asGCB5s6dq+eff76eXkXdeDweftpBo3PzzTcrOzu7wZZ9zTXXNMiygxX9cBb6AQSWq04f0blzZ50+fVoHDx70T7t8+bKmT5+ukydPmua95ZZbJEmrVq2Sz+fzT9+1a5f+8Ic/VLv8uXPnateuXXryySfVr18/vfDCC+rdu7deeOGFBjmHJgBrbrvtNlcuO1jRD2ehH0Bguery3Js2bdKgQYPUunVrpaSkKDw8XDt27NAXX3yh7t27a8eOHTp69KhiYmIkSXfccYf+9re/6dZbb1VSUpKOHTum9evX67777tO6deu0YsUKjRgxQpK0c+dO3X333erZs6d27dqlpk2bSpI+++wzJSYmqm3bttq/fz8HTgA22Ldvn3r16tVgy+7Ro0eDLDtY0Q9noR9AYLlqy/P999+vNWvWqGvXrvr973+vP/7xj/rud7+r3bt3q3PnzlXmX79+vX72s58pNzdX6enp+vzzz7Vx48YqZ884ffq0Hn30Uf+5niuCsyTdcMMNeuWVV/TPf/5TY8aMafDXCKCqnj176s4776z35d55550Eg1qgH85CP4DActWWZwCN18cff6w+ffpUOT1lbYWFhWnPnj3q3r17vSyvsaEfzkI/gMBx1ZZnAI3XzTffXK8H7j7//PMEgzqgH85CP4DAYcszANcwDEOTJ09Wenp6nZYzadIk/fa3v+WKXnVEP5yFfgCBwZZnAK7h8Xi0aNEizZs3T2FhYTV+fFhYmObNm0cwqCf0w1noBxAYbHkG4Eoff/yxJk2aZPk0knfeeafS09P5KbqB0A9noR9AwyE8A3C1/fv3a/ny5dq1a5f279/vv9Ka1+vVzTffrNtuu00///nPOWtAgNAPZ6EfQP0jPAMIGmfPnvWfi/3MmTNcGc1m9MNZ6AdQP9jnGUDQCA0Nrfb/YQ/64Sz0A6gfhGcAAADAIsIzAAAAYBHhGQAAALCI8AwAAABYRHgGAAAALCI8AwAAABYRngEAAACLCM8AAACARYRnAAAAwCLCMwAAAGAR4RkAAACwiPAMAAAAWER4BgAAACwiPAMAAAAWEZ4BAAAAiwjPAAAAgEWEZwAAAMAiwjMAAABgEeEZAAAAsIjwDAAAAFhEeAYAAAAsIjwDAAAAFhGeAQAAAIsIzwAAAIBFhGcAAADAIsIzAAAAYBHhGQAAALCI8AwAAABYRHgGAAAALCI8AwAAABYRngEAAACLCM8AAACARYRnAAAAwCLCMwAAAGAR4RkAAACwiPAMAAAAWER4BgAAACwiPAMAAAAWEZ4BAAAAiwjPAAAAgEWEZwAAAMAiwjMAAABgEeEZAAAAsIjwDAAAAFhEeAYAAAAsIjwDAAAAFoXaXQAQCKWlpTpy5IhycnKUm5urwsJClZSUqLS01O7STLxer8LDw9WuXTvFxcUpPj5eXbt2ldfrtbs0AAAgwjOCVHl5uT744ANlZmZq8+bNOnbsmAzDsLusWvF4POrcubMGDhyo4cOH66677lJoKP90AQCwg8dwa6IAqpGbm6sFCxZo7dq1OnnypN3lNIjIyEg9+OCDmj59umJjY+0ux1EuXryoFi1aSJIuXLig5s2b21xR40Y/nIV+APWDfZ4RFIqKijRnzhx169ZNGRkZQRucJenkyZPKyMhQt27dNGfOHBUVFdldEgAAjQZbnuF6W7Zs0dixY3Xs2LGrzhsdHa24uDhdd911ioiIUNOmTRUS4ozvkD6fT5cuXVJRUZE+//xz5ebmqqCg4KqPi4mJ0ZIlSzRgwIAAVOlsbFlzFvrhLPQDqB/sOAlXW7dunVJSUlReXl7t/YmJiRo+fLj69eun+Ph4tWrVKsAV1s25c+eUk5Ojbdu2afXq1dq7d2+VefLz83Xfffdp9erVGjp0qA1VAgDQeLDlGa51peDcpEkTTZ48WZMnT1bXrl1tqq5h5OXlafHixVq0aJEuX75sui80NLTRB2i2rDkL/XAW+gHUD2f8Xg3U0JYtW6oNzklJSdq3b58WLlwYdMFZkmJjY7Vw4ULt27dPSUlJpvvKy8uVkpKiLVu22FQdAADBj/AM1ykqKtLYsWOrBOcxY8Zo+/btuummm2yqLHBuuukmbd++XWPGjDFNLy8v17hx41RcXGxTZfby+XzV/j/sQT+chX4A9YN9nuE6aWlpVQ4OHDNmjDIyMhxz8F8ghISEKCMjQ5K0bNky//T8/HylpaVp7ty5dpXW4E6fPq29e/cqOztbe/bs0Z49e/Tll1+qpKTEP0+rVq0UHh6uDh06KDExUX369FFiYqJ69+6tNm3a2Fh98KEfzkI/gIbFPs9wldzcXN10002mKwMmJSVp+/btjSo4/zufz6fk5GRlZWX5p3m9Xh08eDCozgP92Wef6bXXXtPGjRt15MiROi2ra9euGjRokMaPH68bbrihnipsXOiHs9APIHAIz3CV8ePH+7e2St8cHLhv375GsavGtzlw4IB69eplOogwNTVVr732mo1V1V15ebk2bNigV199Ve+//77pvi5dupi2mMXGxsowDP8Xhry8PHk8HuXl5WnPnj3+rXBHjx41Lefee+/VhAkTNHjwYK7ceBX0w1noB2ATA3CJsrIyIzIy0pDk/5s6dardZTnG1KlTTesmKirKKCsrs7usWikuLjZ+9atfGR07dvS/npCQEGPw4MHGhg0bjFOnTlX7uAsXLvjnv3DhQrXznDp1ytiwYYMxePBgIyQkxD9/x44djRdeeMEoKSlpyJfmSvTDWegHYC/CM1xj27ZtpnAoycjLy7O7LMfIzc2tsn7ef/99u8uqsY8++shISEjwv4bIyEhj9uzZRn5+/lUfayUc/Lv8/Hxj9uzZpi9lCQkJxu7du+vjpQQF+uEs9AOwH+EZrjFu3DhTMExMTLS7JMfp3bu3aR2lpqbaXZJlxcXFxowZM/xbu6Kjo41Vq1bVaEtXTcNBhZKSEmPVqlVGdHS0fyvezJkzjeLi4tq8lKBAP5yFfgDOQXiGa8TExJiCYVpamt0lOc68efNM66hLly52l2TJRx99ZNx4443+uh955BGjsLCwxsupbTioUFhYaDzyyCOmrWwfffRRjZfjdvTDWegH4CyEZ7hCSUmJ4fF4TMEwOzvb7rIcJzs727SOQkJCHL+PYmZmphEWFubfmrZu3bpaL6uu4aDCunXrjKioKEOSERYWZqxZs6bWy3Ib+uEs9ANwHsIzXOHQoUNV9uc9d+6c3WU5ztmzZ6usp08//dTusq7ojTfe8P8MPWTIkFptTft39RUODOObrWxDhgzxfwlZvnx5nZbnBvTDWegH4EyEZ7jC+vXrTYEwOjra7pIcq2KLUMXfhg0b7C6pWsuXL/fXOGrUKKO8vLzOy6zPcGAYhlFeXm6MGjXKv8xgDgj0w1noB+BchGe4woIFC0yB8Pbbb7e7JMe6/fbbTetqwYIFdpdUxZo1a/xb1KZMmWL4fL56WW59hwPDMAyfz2dMmTLFv4Vt7dq19bJcJ6EfzkI/AGdrnJdkg+sUFhaabl933XU2VeJ8nTp1Mt0+deqUTZVUb/fu3Xr44Yfl8/k0evRoLVy4UB6Px+6yrsjj8WjhwoUaNWqUfD6ffvzjH+sf//iH3WXVG/rhLPQDcD7CM1yhpKTEdDsiIsKmSpyv8rqpvO7sVFJSohEjRqisrExDhgxRRkaGo4NBBY/HoyVLlmjIkCEqKyvTiBEjHLVea4t+OAv9ANyB8AxXKC0tNd1u2rSpTZU4n9frNd120iA2d+5cffrpp4qOjtYbb7yhJk2a2F2SZU2aNNHrr7+uqKgoHTp0SM8//7zdJdUZ/XAW+gG4A+EZrhQSwlv3Spy6bnbv3q0XX3xRkpSRkaG2bdvaXFHNtWvXThkZGZKk+fPnu/rnafrhLPQDcA9njrIAgkpJSYlGjhwpn8+nRx55RA888IDdJdXa0KFD/fukjhgxosqvIm5AP5yFfgDuQngG0OAWLlyoQ4cOKTo6Wr/97W/tLqfOFi1apOjoaB06dEgvv/yy3eXUGP1wFvoBuAvhGUCDKi8vV3p6uiTppZdecuXP0ZW1bdvW/xP7q6++qvLycpsrso5+OAv9ANyH8AygQW3YsEFffPGFoqKilJKSYnc59eZHP/qRIiMjdfz4cW3cuNHuciyjH85CPwD3ITwDaFCvvvqqJGn06NFVzgTiZl6vV6NHj5b0r9foBvTDWegH4D6EZwAN5vDhw3r//fcVEhKisWPH2l1OvRs3bpw8Ho+2bdumzz77zO5yrop+OAv9ANyJ8AygwVSctur+++9X586dba6m/nXu3Fn333+/JOm1116zuZqrox/OQj8AdyI8A2gwFfs6Vvx8G4wqXtumTZtsruTq6Iez0A/AnRpleN63b59mz56tgQMHKjIyUh6PR8nJyXaXBQfJz8+Xx+Mx/YWFhaljx45KSUlRdna2af6VK1dWmf9Kf43lvXb69GkdOXJEknT77bfbXE3DqXhteXl5OnPmjL3FfAv64Sz0A3CvULsLsMM777yjefPmqWnTprr++utVWFhod0lwqNjYWD366KOSpIsXL2rPnj3KzMzUO++8o23btikpKUmS1LNnTz377LPfuqz09HQVFhaqW7duDV63E+zdu1eS1KVLF1177bU2V9Nw2rZtq5iYGOXn52vv3r2655577C6pWvTDWegH4F6NMjwPHz5cgwcPVvfu3XXq1Cl95zvfsbskOFRcXJyee+4507S0tDTNmjVLzzzzjD744ANJ34Tnnj17XnE5CxYsUGFhoRITE7VgwYIGrNg5KrbOJyYm2lxJw+vTp4/y8/OVnZ3t2HBAP5yFfgDuFTS7bVy+fFnz589XXFycwsPDFRcXp3nz5unIkSPyeDwaMWKEf95u3bqpd+/eCgsLs69guNaoUaMkSXv27LE0/7Zt2zRjxgxFRUVp3bp1Cg8Pb8jyHKNi/fTp08fmShpeRQCy+p6wA/1wFvoBuFfQbHkeO3asli9fri5dumjixIkqKSnRyy+/rL///e92l4YgFRp69X8+R44c0Y9+9CN5PB5lZmbquuuuC0BlzlAxUDaGLWtuCAf0w1noB+BeQRGed+zYoeXLl6tHjx7629/+pubNm0uSZs+e/a0/pQO18frrr0uS7rjjjm+d7+LFi3rggQf09ddfa9GiRf79oxuLL7/8UtI3+40Hu7i4OEn/es1ORD+chX4A7hUU4XnVqlWSpDlz5viDsyR17NhRU6ZM0TPPPGNXafXOMAwVFRXZXUbAlZWV2fK8ubm5/n2eKw4Y3L59u6Kjo/XSSy9962NHjBihAwcOaOTIkZo0aVIAqq1eWVmZLl68GNDn9Pl8KikpkfTNezZQz//vzxPI12wYhiSpuLhY58+fV0iIs/aIox/0Q6IfThYRESGPx2N3GbAoKMLz/v37JUl33nlnlfuqm+ZmRUVFatGihd1lNBp5eXmaO3euaVr79u2VlZXl35pSnV/96ldas2aN+vbta/vFAZYtW6Zly5bZ9vx2bVmLjo625XlbtWply/NaRT+chX5Aki5cuGDa+AdnC4qvf2fPnlVISIjatWtX5T67PiAQHAYOHCjDMGQYhk6cOKGXXnpJJ06c0ODBg3XhwoVqH/Puu+9qzpw5at++vdauXSuv1xvgqgEAQEMJii3P11xzjXw+nwoLCxUZGWm6r6CgwKaqGkZERMQVQ1swmzZtmq1bTyUpMjJS06dP19mzZ/XLX/5S//mf/6lXXnnFNM///u//6ic/+YlCQ0O1Zs0adezY0Z5i/82YMWO0cOHCgD6nz+fzb2HKy8sL2JfYixcv+p+roKAgYFtyCgoK/FsQz50757ifpekH/ZDoh5NFRETYXQJqICjCc48ePbR3715lZWVp2LBhpvuysrJsqqpheDyeRvnTjpNOKzh79mwtX75cr776qqZOnaqYmBhJ3wwKQ4YM0dmzZ5WRkeGYq4aFhYXZ8p4JDw9XSUmJbe/Z5s2bB+x5K/ZVbNasmVq2bBmQ56wp+uEs9ANwr6D4+vfTn/5UkvT888+bDoL44osv9Jvf/MaushCkmjVrphkzZqisrEy/+MUvJH1zQMyjjz6qw4cPa+zYsRo3bpzNVdqvQ4cOkr7ZshbscnNzJf3rNTsR/XAW+gG4V1Bseb777rs1cuRIrVixQt27d9fQoUNVWlqqP/3pT/re976nTZs2meY/fPiw0tLSJH1z9G/FtH+/kMrKlSsDVT5caOzYsZo/f75WrVql2bNn6+2339bGjRvVtGlTtW3btspVCSu72v3BIDExUUeOHNGePXvUr18/u8tpUG44Zy/9cBb6AbhXUIRn6ZszClx//fVatmyZFi9erE6dOumJJ55QSkpKlfD81Vdf6c033zRNKygoME0jPOPbhIeHa9asWZo8ebLmzp3r34fv0qVLmjdv3lUf31jCc2Zmpv8yxMHMDeGAfjgL/QDcK2jCc5MmTTRz5kzNnDnTND0/P7/KvMnJyf7zTgLViYmJuep7ZNKkSabzN/OFy6zissON4apiFQHIyZdaph/OQj8A9wqKfZ4BOE/v3r0lSUePHtXXX39tczUN59SpU/4v6RWv2Ynoh7PQD8C9CM8AGkSbNm3UtWtXSdLf/vY3m6tpOBWvLTY2Vq1bt7a3mG9BP5yFfgDuRXgG0GAGDRokSXr99ddtrqThVLy2+++/3+ZKro5+OAv9ANwp6MNzxb6r7I8KBN748eMlSZs2bdKxY8dsrqb+5efn+w9IrnitTkY/nIV+AO4U9OEZgH1uuOEG3XvvvfL5fFq6dKnd5dS7pUuXyjAM9evXTzfccIPd5VwV/XAW+gG4E+EZQIOaMGGCpG9+vi0tLbW5mvpTWlrq/0m64jW6Af1wFvoBuA/hGUCDGjx4sDp27KgTJ05o9erVdpdTb/70pz/p5MmT6tSpk3/fVTegH85CPwD3ITwDaFChoaGaOHGiJOmpp57SqVOnbK6o7k6dOqWnn35a0jdb1UJD3XPKfPrhLPQDcB/CM4AG98QTTyghIUEFBQV6/PHH7S6nziZPnqyCggIlJCToiSeesLucGqMfzkI/AHchPANocF6vVytWrFBISIj++Mc/6p133rG7pFpbt26d3nrrLTVp0kQrV66U1+u1u6Qaox/OQj8AdyE8w5V8Pp/dJTiWU9fNrbfe6v8pNzU11ZU/TxcWFio1NVWS9PTTT+uWW26xuaLaox/OQj8A9yA8wxUqb724dOmSTZU4X+Uj9sPDw22qpKpnn33W//P0qFGjdPnyZbtLsuzy5csaPXq0Tpw4oYSEBD377LN2l1Rn9MNZ6AfgDoRnuELlAFhUVGRTJc5Xed04KTyHh4drxYoVCgsL0/r16zVu3DgZhmF3WVdlGIbGjRun9evXq2nTpkHzczT9cBb6AbgD4Rmu0K5dO9Ptzz//3KZKnO/48eOm223btrWpkurdeuuteuuttxQSEqI33nhD06ZNc3RAMAxD06ZN0xtvvKGQkBC99dZbQfVzNP1wFvoBuIABuMD69esNSf6/6Ohou0tyrKioKNO62rBhg90lVWv58uX+GkeNGmWUl5fXeZkXLlzwL/PChQt1Xl55ebnx85//3L/MFStW1HmZTkU/nIV+AM5FeIYrHDp0yBQIJRlnz561uyzHOXv2bJX19Omnn9pd1hUtX77cCAkJMSQZQ4YMMQoLC+u0vPoMBydPnjSGDBliSDJCQkIaRTCgH85CPwBnIjzDFUpKSgyPx2MKhdnZ2XaX5TjZ2dmmdRQSEmKUlJTYXda3WrNmjREWFmZIMqKiooy333671suqr3Dw9ttv+7fgh4WFGWvXrq31styGfjgL/QCch/AM14iJiTEFw7S0NLtLcpx58+aZ1lGXLl3sLsmSjz76yLjxxhv9dT/yyCO12spW13BQWFhoPPzww/5lJCQkGLt3767xctyOfjgL/QCchfAM1xg3bpwpGCYmJtpdkuP07t3btI5SU1PtLsmy4uJiY+bMmf6fqaOjo40333yzRlvOaxsOSkpKjDfffNOIjo72b7GfNWuWUVxcXJuXEhToh7PQD8A5CM9wjW3btlXZnzcvL8/ushwjNze3yvp5//337S6rxnbv3m0kJCT4X0NkZKQxa9YsIz8//6qPrWk4yM/PN2bNmmVERkayNe0K6Iez0A/AfoRnuEZZWZnpQ1ySMXXqVLvLcoypU6ea1k1UVJRRVlZmd1m1UlxcbLzwwgtGx44dTftvDxo0yFi/fr1x6tSpah9nJRycOnXKWL9+vTFo0CDTfvSdOnUyXnjhBcfvI24H+uEs9AOwl8cwHHwCSaCS8ePHKyMjw3+7SZMm2rdvn2666SYbq7LfgQMH1KtXL9MVyVJTU/Xaa6/ZWFXdlZeXa+PGjXr11Ve1bds2030xMTHq06ePEhMTlZiYqLi4OBmGodjYWElSXl6ePB6PcnNztWfPHu3Zs0fZ2dnKz883Ladfv36aMGGCBg0apNDQ0EC9NFeiH85CPwB7EJ7hKnl5eerWrZvpEtRJSUnavn27QkIa5zV/fD6fkpOTlZWV5Z/m9Xp18OBB/0AZDD777DO99tpr2rRpk/Ly8uq0rNjYWN1///0aP368brjhhnqqsHGhH85CP4DAITzDdebMmaNf/OIXpmljxoxRRkZGowvQPp9PqampWrZsmWn6nDlzNHfuXJuqanhnzpzR3r17lZ2d7d9q9uWXX6q4uNg0X7NmzdShQwclJib6t8L17t1brVu3tqfwIEU/nIV+AA2L8AzXKSoqUkJCgo4dO2aa3tgC9JWCc0xMjA4dOqRmzZrZVJl9fD6fzpw5I0lq3bp1o3kvOBX9cBb6AdQPwjNcacuWLbrvvvtUXl5umn7nnXcqPT1d3bt3t6mywDhw4IAmTpxo2lVDkkJDQ/Xuu+9qwIABNlUGAEBw42snXGnAgAFavXp1lQNYsrKy1KtXL02bNq3O+/05UV5enqZNm6ZevXpVG5xXr15NcAYAoAGx5Rmutm7dOqWkpFTZAl2hd+/eGj58uPr376/4+Hi1atUqwBXWzblz55STk6OtW7cqMzNTe/furXa+iuA8dOjQAFcIAEDjQniG623ZskXjxo2rcoql6kRFRSk+Pl6dOnVSRESEvF6vY/b78/l8Ki0tVVFRkY4fP66cnBydOHHiqo+LiYnRkiVL2OIMAEAAEJ4RFIqLi5WWlqb58+ebTmMXzLxer2bMmKGZM2c2yoMDAQCwA+EZQSUvL0+//vWvtXbtWp08edLuchpEVFSUhg0bpunTpwfVeZwBAHADwjOCUnl5uXbu3KnMzExt3rxZ+fn5cutb3ePxKCYmRgMHDtTw4cOVlJTElb4AALAJ4RmNQmlpqY4ePaqcnBzl5OTo1KlTKikpUUlJid2lmYSHhys8PFxt27ZVfHy84uPj1aVLF3m9XrtLAwAAIjwDAAAAljnjNAMAAACACxCeAQAAAIsIzwAAAIBFhGcAAADAIsIzAAAAYBHhGQAAALCI8AwAAABYRHgGAAAALCI8AwAAABYRngEAAACLCM8AAACARYRnAAAAwCLCMwAAAGAR4RkAAACwiPAMAAAAWER4BgAAACwiPAMAAAAWEZ4BAAAAiwjPAAAAgEWhdhcABEJpaamOHDminJwc5ebmqrCwUCUlJSotLbW7NBOv16vw8HC1a9dOcXFxio+PV9euXeX1eu0uDQAaJcYPVEZ4RlAqLy/XBx98oMzMTG3evFnHjh2TYRh2l1UrHo9HnTt31sCBAzV8+HDdddddCg3lny4ANATGD1yNx3DrOwKoRm5urhYsWKC1a9fq5MmTdpfTICIjI/Xggw9q+vTpio2NtbscAAgKjB+wivCMoFBUVKS0tDTNnz9fly5dsrucgPB6vXr66ac1c+ZMRURE2F0OALgS4wfjR00RnuF6W7Zs0dixY3Xs2LGrzhsdHa24uDhdd911ioiIUNOmTRUS4ozjZn0+ny5duqSioiJ9/vnnys3NVUFBwVUfFxMToyVLlmjAgAEBqBIAggfjB+NHbRCe4Wrr1q1TSkqKysvLq70/MTFRw4cPV79+/RQfH69WrVoFuMK6OXfunHJycrRt2zatXr1ae/furXa+0NBQrV69WkOHDg1whQDgTowf32D8qDnCM1zrSh98TZo00eTJkzV58mR17drVpuoaRl5enhYvXqxFixbp8uXLpvv4AAQAaxg/GD/qgvAMV9qyZYvuu+++Kh98SUlJSk9P10033WRTZYHxySefaOLEidq5c6dpemhoqN59911+ggOAK2gM40dWVpbuvPPOau9j/Kg7wjNcp6ioSAkJCVX2URszZowyMjIcsw9aQ/P5fEpNTdWyZctM02NiYnTo0CE1a9bMpsoAwJmCffzw+XyaPXu2Tp06VWVsqDwf40ftuftdgkYpLS0taD/4aiIkJEQZGRkaM2aMaXp+fr7S0tJsqgoAnCuYx4/i4mL96Ec/0vz583Xbbbd967yMH3XDlme4Sm5urm666SbTlZ2SkpK0fft213/w1ZbP51NycrKysrL807xerw4ePMh5PAHg/wvm8aOgoECDBw/W7t27JUmHDh3SjTfeeNXHMX7UjrvfLWh0FixYYPrga9KkidLT013/wVcXISEhSk9PV5MmTfzTSktL9etf/9rGqgDAWYJ1/Dh48KD69u3rD86tW7fWDTfcYOmxjB+14+53DBqV8vJyrV271jRt8uTJQXFwR111795dkydPNk17++23r3gKJgBoTIJ1/Ni2bZu+//3vm3ZF6du3b42+EDB+1BzhGa7xwQcfVLlkauV/8I3ZpEmTTLdPnDhR5WhqAGiMgnH8eP311/WDH/xA586dM02/2v7O1WH8qBnCM1wjMzPTdDsxMTHozsNZF7Gxserdu7dpWuV1BgCNUTCNHz6fTzNmzNCYMWOq3Tpcm/DM+FEzhGe4xubNm023hw8fblMlzlV5nVReZwDQGAXL+FFcXKyUlBS9+OKL1d7v8XjUt2/fWi2b8cM6wjNcobS0tMrphfr162dTNc7Vv39/0+1jx46ZDpABgMYmWMaPgoICJScnV9l3+98lJCTommuuqdXyGT+sIzzDFY4cOaLKZ1W8/vrrbarGueLj4023fT6fjh49alM1AGC/YBg/Kp9R40pqs8tGBcYP6wjPcIWcnBzT7ejoaLVs2dKmapyrVatWioqKMk2rvO4AoDFx+/ixdevWKmfUkKRrrrmmylk16hKeGT+sIzzDFXJzc0234+LibKrE+SpvPeDDD0Bj5ubxY9myZdWeUSMmJkarV6+Wz+czTa9LeJYYP6wiPMMVCgsLTbevu+46mypxvk6dOplunzp1yqZKAMB+bhw/Ks6oMXbsWF2+fNl0X9++ffXhhx/q7Nmzpuk1uTjKlTB+WBNqdwGAFSUlJabbERERNlXifJXXTeV1BwCNidvGj6KiIv3sZz+r9sDA4cOH680331SzZs20a9cu0301vThKdRg/rCE8wxUqH/HbtGlTmypxPq/Xa7rNhx+AxsxN48fXX3+tH/zgB1c8MLB9+/Zq1qyZJFUJz3XdZUNi/LCK3TbgSnX9dh3MWDcAcGVO/oxs3bq1UlNTFRkZWe39ixYtksfj0datW7V3717TffURnp28bpyEtQQAAOAAISEhGjlypD777DNNnDjximF2wIABunTpkv92XS6OgpojPAMAADhImzZttHjxYmVnZ1uavy4XR0HNEZ4BAAAcqPIZNa6kPnbZgHWEZwAAAIcxDEN33323pXkJz4HF2TYAAAACoKSkRIcOHdLBgwd1/vx5/9kswsPD1bJlS3Xr1k3dunWT1+vVlClTql3G3r17NXHiRNPZNgjPgUV4BgAAaADnz59XZmam3n//fe3fv1+HDx+uctGTypo0aaL4+HgdPny4yn25ubmKjY3VX//6V7355puaMWOGysrK6nxxFNQM4RkAAKCeGIahnTt3asWKFcrMzFRRUVGNHn/58uVqg3OPHj3UtWtXSf86K8cDDzygd955h1PMBRhrGwAAoB5s27ZN3bp1U3Jyst58880aB+dvs3//fnXr1k3btm3zT2vTpo1GjhxZb88BaxpdeC4rK9PatWv12GOP6cYbb1SLFi3UsmVL9e3bV6+99tpVf05B45Kfny+Px2P6CwsLU8eOHZWSkuI/jdArr7wij8fzrR9iO3bsUEhIiG655RaVl5cH6iUAABrYl19+qR//+Mfq37+/Pv3006vOHxsbq6SkJPXv31/9+/dXUlKSYmNjr/q4Tz/9VP3799fDDz+s//u//6uP0lELjW63jby8PD300ENq0aKF7r33Xg0ePFhnz57Vxo0bNWHCBP35z3/Whg0b5PF47C4VDhIbG6tHH31UknTx4kXt2bNHmZmZeuedd7Rt2zZNmTJF69ev18qVKzVs2DANGjTI9PgLFy5o5MiR8nq9WrVqlUJDG90/PQAIOoZhaOnSpXrqqad0/vz5audp0qSJ7rvvPv3Hf/yHevTooe7du6tly5bVzpuamqolS5Zc9Xn/67/+S++++65eeukljRs3rk6vATXX6Ebwli1bKj09XY899piaN2/un75gwQIlJydr06ZNWrNmjYYPH25jlXCauLg4Pffcc6ZpaWlpmjVrlp555hl98MEHWrlypW6++WaNGTNGBw8eVNu2bf3zPvnkk8rPz9fChQt14403Brh6AEB9Ky8v19SpU5Wenl7t/d/97nc1atQoPfroo2rfvv1Vl3fmzJlqg/OMGTO0fv36KvtBnz9/Xqmpqfrkk0+0cOFCNsoEUNDstnH58mXNnz9fcXFxCg8PV1xcnObNm6cjR47I4/FoxIgRkqSOHTtqwoQJpuAsSc2bN9cTTzwhSfrggw8CXT5caNSoUZKkPXv2SJI6d+6sV155RQUFBRo/frx/vs2bN2vp0qW6++67r3jqIQCAe1y6dEkpKSnVBuc2bdpoyZIlOnjwoKZPn24pOEvSd77znSrTkpKSlJaWpoMHDyojI0OtW7euMs/ixYuVkpJiulw3GlbQhOexY8dq5syZ8vl8mjhxogYOHKiXX365RmElLCxMkvj2hhr59/fLyJEjNXjwYGVmZuqtt97SmTNnNHr0aLVq1UorVqxgdyAAcLmysjI99NBDWrduXZX7HnvsMR0+fFhjx46t0RkwduzY4T/n87+rODgwJCRE48aN02effabHHnusynzr1q3TQw89pLKyshq8EtRWUITnHTt2aPny5erRo4cOHDigBQsWKD09Xfv27dOHH35oeTnLly+XJA0YMKChSkUQef311yVJd9xxh2n60qVL1a5dO02cOFEjRozQ8ePH9corr6hz5852lAkAqEfPPPOMNm7caJrWtGlT/fGPf9TKlSsVFRVVo+Vd6UqCr7/+un+jXoWoqCitXLlSf/jDH9S0aVPTfRs3btScOXNq9NyonaDYxLpq1SpJ0pw5c0y7Y3Ts2FFTpkzRM888c9VlLF26VO+9957uuece/fCHP2ywWuvKMIx6PfWNW9j9bTo3N9e/z3PFAYPbt29XdHS0XnrpJdO80dHRWrJkiR588EGtX79egwcPtvVUQmVlZbp48aJtzw8AdqrP8WPr1q2aP3++aVrz5s21adMmJScn12qZV/qFvGLXwOo88sgj6tChg+6//37T5/v8+fN17733ql+/frWqBRYZQaB3796GJOPEiRNV7tuxY4chyXjssceu+PiNGzcaYWFhRufOnY0vv/yyASutuwsXLhiSGv3fhAkTArK+jx49esUa2rdvb+Tk5FzxsbfeeqshyTh06FBAaq0wYcIE2/vDH3/88efUv9qOHwUFBUZ0dLRpWWFhYUZWVlatP69Pnz5dbY25ubmWHp+VlWWEhYWZHtu+fXujoKCgVvVUHj8CNda6TVDstnH27FmFhISoXbt2Ve6Ljo7+1sf++c9/1kMPPaTo6Gj95S9/qXaHfWDgwIEyDEOGYejEiRN66aWXdOLECQ0ePFgXLlyo9jHNmjUz/RcA4F6pqakqKCgwTXvxxRer7LpXE1c6SNDKOZ+lb3YbrLwl/KuvvjIdtI76FxS7bVxzzTXy+XwqLCxUZGSk6b7Kb/R/9+677+rBBx9Uu3bttH37dv9lL50sIiLiimEtmE2bNk3Lli2zuwxJUmRkpKZPn66zZ8/ql7/8pf7zP/9Tr7zyit1lXdGYMWO0cOFCu8sAAFvUx/hx8ODBKgcI/vCHP6zTGZSudpCgVVOmTNHWrVv13nvv+ae9/fbbOnTokBISEmpdH64sKMJzjx49tHfvXmVlZWnYsGGm+7Kysqp9TEVwvvbaa7V9+3bFxcUFotQ683g8VU6z1xhUPmjCCWbPnq3ly5fr1Vdf1dSpUxUTE2N3SdUKCwtrlO8ZAJDqZ/x4+eWXTbevvfZarVy5stZnUDJqcJDg1YSEhGjlypX67ne/q9OnT5tqrjiwHfUrKHbb+OlPfypJev755007zn/xxRf6zW9+U2X+9957Tw8++KDatGmj7du3Kz4+PmC1Ing0a9ZMM2bMUFlZmX7xi1/YXQ4AoAF89dVX+v3vf2+aNmHChCq/dNdEbQ4S/DZRUVGaMGGCadrvfvc7ffXVV7VaHr5dUITnu+++WyNHjtT+/fvVvXt3Pfnkk5o0aZJ69uyp733ve6Z5Dx8+rKFDh6q0tFTJycl666239Nxzz5n+Vq5cac8LgeuMHTtWHTp00KpVq5SXl2d3OQCAerZkyRLTBUiaNm2qSZMm1Xp5Z86c0aJFi6pMz83NrfUyJWnSpEmm09ddunTJ0qW+UXNBsduGJC1btkzXX3+9li1bpsWLF6tTp0564oknlJKSok2bNvnn++qrr1RaWirpm2vDV+euu+7yX5EQ+Dbh4eGaNWuWJk+erLlz5/pPmwgACA5/+ctfTLd/+tOfXvVkBN+mrgcJXkn79u316KOP+q9ZIUnbt2/Xs88+W6floqqgCc9NmjTRzJkzNXPmTNP0/Px80+3k5GQZhhHAyuBmMTExV32/TJo0qdqtEDt27GigqgAAgVBeXq7s7GzTtAceeKDWy6uvgwSv5IEHHjCF5+zsbJWXl3Pl5HoWFLttAAAA1LdPPvmkyoXJ+vbtW6tl1edBgldSubaLFy/q4MGD9bJs/AvhGQAAoBoffvih6XZsbGytDxSs74MEqxMVFVXltLuVXwPqjvAMAABQjX/+85+m27169arVchrqIMHqVK6x8mtA3QX9TjBW9lkFAACorLi42HT7mmuuqdVyGuogwepUrrHya0DdBX14BgAAqI0nn3xSP/7xj1VcXKzi4mJ16NChxsto6IMEK5s8ebIeeughNWvWTM2aNVPHjh0b5HkaM8IzAABANTp16qROnTrV+vGBOEiwsp49e6pnz54Nsmx8g32eAQAAGkAgDhJE4BGeAQAA6lkgDxJEYBGeAQAA6lkgDxJEYBGeAQAA6lGgDxJEYBGe4Uo+n8/uEhyLdQMAV9bQn5F2HCRYXxg/rCE8wxW8Xq/p9qVLl2yqxPlKS0tNt8PDw22qBADsF+jxw80HCTJ+WEN4hitU/gdcVFRkUyXOV3nd8OEHoDEL5Pjh9oMEGT+sITzDFdq1a2e6/fnnn9tUifMdP37cdLtt27Y2VQIA9gvk+OH2gwQZP6whPMMV4uLiTLfd8i3eDjk5Oabb8fHxNlUCAPYL1Phx6NAh1x8kyPhhDeEZrlD5H3BBQYHOnTtnUzXOde7cOZ04ccI0jQ8/AI1ZIMYPwzA0adKkKtPdcJBgBcYP6wjPcIWuXbvK4/GYplX+hoyq6yQkJERdunSxqRoAsF8gxo9Lly4pISFBISH/ilW33367Kw4SrMD4YR3hGa7g9XrVuXNn0zQ3/RQWKFu3bjXd7ty5c5UjzQGgMQnE+OH1erV48WJlZ2frtttuU6tWrbRmzZp6fY6GxvhhHeEZrjFw4EDT7czMTJsqca7K66TyOgOAxihQ40evXr3017/+Vbt27VL79u0b5DkaCuOHdYRnuMbw4cNNt/fs2aMjR47YVI3z5OXlae/evaZpldcZADRGgRw/QkJClJCQ0CDLbiiMHzVDeIZr3HXXXYqMjDRNq+58mo3V4sWLTbejoqKUlJRkUzUA4ByMH9+O8aNmCM9wjdDQUD344IOmaYsWLdInn3xiU0XOceDAgSoDwbBhwxQaGmpTRQDgHIwfV8b4UXMewzAMu4sArMrLy1O3bt1MlxBNSkrS9u3bTUc5NyY+n0/JycnKysryT/N6vTp48KBrTswPAA2N8aMqxo/aaZzvFrhWbGysnn76adO0nTt3KjU1VT6fz6aq7OPz+ZSammr64JOkGTNm8MEHAP+G8cOM8aP22PIM1ykqKlJCQoKOHTtmmj5mzBhlZGQ0mi0IFR98y5YtM02PiYnRoUOH1KxZM5sqAwBnYvz4BuNH3TSOdwmCSkREhJYuXVplf6xly5YpOTlZBw4csKmywDlw4ICSk5OrfPCFhoZqyZIlfPABQDUYPxg/6gPhGa40YMAArV69usoHYFZWlnr16qVp06YpLy/PpuoaTl5enqZNm6ZevXpV+aktNDRUq1ev1oABA2yqDgCcj/GD8aOu2G0DrrZu3TqlpKSovLy82vt79+6t4cOHq3///oqPj1erVq0CXGHdnDt3Tjk5Odq6dasyMzOrnIezQsUH39ChQwNcIQC4E+PHNxg/ao7wDNfbsmWLxo0bp/z8/KvOGxUVpfj4eHXq1EkRERHyer2O2cfN5/OptLRURUVFOn78uHJycnTixImrPi4mJkZLlixhiwEA1BDjB+NHbRCeERSKi4uVlpam+fPnm05DFMy8Xq9mzJihmTNnso8aANQS4wfjR00RnhFU8vLy9Otf/1pr167VyZMn7S6nQURFRWnYsGGaPn06pxMCgHrC+AGrCM8ISuXl5dq5c6cyMzO1efNm5efny61vdY/Ho5iYGA0cOFDDhw9XUlISV34CgAbC+IGrITyjUSgtLdXRo0eVk5OjnJwcnTp1SiUlJSopKbG7NJPw8HCFh4erbdu2io+PV3x8vLp06SKv12t3aQDQKDF+oDLCMwAAAGCRMw4TBQAAAFyA8AwAAABYRHgGAAAALCI8AwAAABYRngEAAACLCM8AAACARYRnAAAAwCLCMwAAAGAR4RkAAACwiPAMAAAAWER4BgAAACwiPAMAAAAWEZ4BAAAAiwjPAAAAgEWEZwAAAMAiwjMAAABgEeEZAAAAsIjwDAAAAFhEeAYAAAAsIjwDAAAAFhGeAQAAAIsIzwAAAIBFhGcAAADAIsIzAAAAYBHhGQAAALCI8AwAAABYRHgGAAAALCI8AwAAABYRngEAAACLCM8AAACARYRnAAAAwCLCMwAAAGAR4RkAAACwiPAMAAAAWER4BgAAACwiPAMAAAAWEZ4BAAAAiwjPAAAAgEWEZwAAAMAiwjMAAABgEeEZAAAAsIjwDAAAAFhEeAYAAAAsIjwDAAAAFhGeAQAAAIsIzwAAAIBFhGcAAADAIsIzAAAAYBHhGQAAALCI8AwAAABYRHgGAAAALCI8AwAAABYRngEAAACLCM8AAACARYRnAAAAwCLCMwAAAGAR4RkAAACwiPAMAAAAWER4BgAAACwiPAMAAAAWEZ4BAAAAiwjPAAAAgEWEZwAAAMAiwjMAAABgEeEZAAAAsIjwDAAAAFhEeAYAAAAsIjwDAAAAFhGeAQAAAIv+HxJBE/cCPW50AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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XUnyCqPqHqKTAtMfwYDDdLAlu1/7zJ9MvDY1uT8aN26sMWPGqHnz5mU+PmfOHDkcDm3YsMHrzq2+CKOa/NrUJLxKAIKa0+nUiBEjdODAAY0bN67ccHjooYd09erVkunqnOyKyiOMANQKTZo00dy5c7Vz584KLV+dk11ReYQRgFql9Ii58vjiEB0qjjACUGtYlqX777+/QssSRoHFaDoAtpaXl6eMjAzt3btXly5dKhmtFh4erptuukmdOnVSp06d5HK5NHHixDLbSE9P17hx4zxG0xFGgUUYAbCVS5cuKSUlRX/961+1e/du7d+/3+sk1tJCQkLUsWNH7d+/3+uxzMxMRUdHa+vWrXr//ff14osvqqCgoNonu6JyCCMANZ5lWdqyZYuWLl2qlJQU5ebmVur5RUVFZQZR586dS+7BVDzqbtCgQfrkk08Ykh1gvNoAarSNGzeqU6dO6tOnj95///1KB9H17N69W506ddLGjRtL5jVp0kQjRozw2TpQMbUujAoKCrRy5Uo99dRTuv3229WgQQPddNNN6tGjh959990b7u6jdjly5IgcDofHT1hYmFq3bq34+PiSYcJvvfWWHA7Hdd/ENm/eLKfTqW7dupV5N1F4+v777/WrX/1K/fr10759+264fHR0tHr37q1+/fqpX79+6t27t6Kjo2/4vH379qlfv3567LHH9K9//csXpaMKat1huqysLA0dOlQNGjTQgw8+qIEDB+rChQtau3atxo4dq88++0yffvqpHA6H6VJRg0RHR+uJJ56QJOXk5CgtLU0pKSn65JNPtHHjRk2cOFFr1qxRcnKyhgwZokceecTj+ZcvX9aIESPkcrm0bNkyhYbWuj+9CrMsSwsWLNDzzz+vS5culblMSEiIfvGLX+g//uM/1LlzZ91xxx3l3sJizJgxmj9//g3X+7//+7/6y1/+otmzZ2v06NHV2gZUgVXLHDt2zEpKSrIuX77sMf/y5ctW165dLUnWihUrDFWH8owdO9aSVPIzduzYgKz38OHDliSrf//+Xo/NnDnTkmT17t3bsizLOnLkiNWwYUMrMjLSOn36tMeyo0aNsiRZb775pt9rDsRr5a91FBQUWOPGjfNo+8c/t912mzV79mzrX//6V4XaO3fuXJntvPjii9Ztt91W7noSExOtgoICn2yTqd9duwmaw3RFRUWaNWuWOnTooPDwcHXo0EEzZ87UoUOH5HA4NHz4cElS69atNXbsWNWvX9/j+fXr19fkyZMlSV9++WWgy4cNPf3005KktLQ0SVJUVJTeeustZWdn65lnnilZbv369VqwYIHuv//+cocWQ7p69ari4+OVlJTk9ViTJk00f/587d27V1OmTFHLli0r1OZPfvITr3m9e/fWq6++qr179+q9995T48aNvZaZO3eu4uPjPS4PBP8KmjAaNWqUpk6dKrfbrXHjxql///564403KvXHHxYWJkkcQkGl/Pj3ZcSIERo4cKBSUlK0fPlynT9/XgkJCWrYsKGWLl3K4d9yFBQUaOjQoVq9erXXY0899ZT279+vUaNGVWqE2+bNm8u8QnbxYAWn06nRo0frwIEDeuqpp7yWW716tYYOHaqCgoJKbAmqKijCaPPmzVqyZIk6d+6sb775Rq+//rqSkpK0a9cuffXVVxVuZ8mSJZKuXTARuJFFixZJknr27Okxf8GCBWrWrJnGjRun4cOH69ixY3rrrbcUFRVlokxbmDZtmtauXesxr06dOvroo4+UnJzsdevuG7HKudLCokWLSj50FmvRooWSk5P14Ycfet0KY+3atZo+fXql1o2qCYpdgGXLlkmSpk+f7nH4rXXr1po4caKmTZt2wzYWLFigzz//XA888IAefvhhv9VaXZZl+XRoq12Y/nSamZmpl19+WdIPAxg2bdqkyMhIzZ4922PZyMhIzZ8/X3FxcVqzZo0GDhxodKhwQUGBcnJyfN6mr2zYsEGzZs3ymFe/fn2tW7dOffr0qVKb5R0RKT60WpbHH39crVq10oABAzxer1mzZunBBx9U3759q1QLKsj0l1a+0KVLF0uSdfLkSa/HNm/ebEmynnrqqXKfv3btWissLMyKioqyvv/+ez9WWn2XL18u90vX2vQT6AEMZf20bNnSOnjwYLnP7d69uyXJysjICEitxUp/YV6T+yM7O9uKjIz0aCssLMxKTU2t8vaXN2ghMzOzQs9PTU21wsLCvPo6Ozu7SvUwgKFiguIw3YULF+R0OtWsWTOvxyIjI6/73M8++0xDhw5VZGSk/va3v5X5hSfQv39/WZYly7J08uRJzZ49WydPntTAgQN1+fLlMp9TfPfQ4n/hbcyYMcrOzvaY99prr3kd+qyM8gYtVOScI+naYdfSe2onTpzwGJQC3wuKw3SN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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "device = pl.device('default.qubit', wires=['aux', 'q1', 'q2'])\n", "\n", "@pl.qnode(device)\n", "def circuit(x, y):\n", " # Build any circuit and inspect its depth\n", " pl.\n", " return pl.\n", "pl.draw_mpl(circuit)(0,0)\n", "print(pl.specs(circuit)(0,0)['resources'])\n", "\n", "@pl.compile\n", "@pl.qnode(device)\n", "def circuit(x, y):\n", " # Build any circuit and inspect its depth, now using @pl.compile decorator\n", " pl.\n", " return pl.\n", "pl.draw_mpl(circuit)(0,0)\n", "print(pl.specs(circuit)(0,0)['resources'])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Exercise 5: Teleportation" ] }, { "cell_type": "code", "execution_count": 123, "metadata": {}, "outputs": [ { "data": { "image/png": "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X2jVqlX69NNP9eWXX1bfh9+8eXP17t1b/fv31/jx43XLLbeYXKl7WLJkiSRpwoQJtWbY8GRWq1UTJkzQvHnztGTJEg0fPtzskgC4ubKyMuXm5ionJ0fnzp2rnmUoMDBQLVu2VM+ePdWzZ09ZrVbNnDmzzn1kZ2dr2rRpDrMgEcAAAOpDAAPAI3355ZeaPn269uzZU+fjly5dUmZmpjIzM7Vw4ULdfffdWrRokXr37u3iSt3H119/rYyMDPn5+WnSpElml+N0kydPVnJysrZv366DBw+qe/fuZpcEwI2cO3dO69evV0ZGhvbt26evv/5aly9fvupz/P39FRUVpa+//rrWY/n5+YqMjNTHH3+s119/XUlJSaqoqODYAwCoF7cgAfAodrtdycnJ6tu3b73hS1327Nmjvn37Kjk5WXa73cAK3VfVlM1DhgxRly5dTK7G+bp06aIhQ4ZIkpYuXWpyNQDcgd1u165duzR27Fi1b99e48eP11tvvaWcnJxrhi+SdPny5TrDl1tuuUVdu3aV5Dhb0iuvvML00QCAetFDAPAYdrtdM2bM0Jw5cxo1xktFRYXmzJmjGTNm+GQIUzU2yoQJE0yuxDhV723Lli0mVwLAbNu3b1fPnj0VFxen119/XaWlpU7b9759+9SzZ09t3769et2NN96ocePGOe01AADex2cCmMcff1wWi0UhISEqLy83uxx4sMLCQlksFv3sZz+rd5udO3fKYrEoMTHRhZV5v5SUlOoZfJpi8eLFSklJcUJFnuPs2bM6dOiQJOnOO+80uRrjVL23goICffvtt+YWA8AUx48f10MPPaSBAwfqq6++uub2kZGRio2N1cCBAzVw4EDFxsYqMjLyms/76quvNHDgQD388MP6z3/+44zSAQBezicCmHPnzmndunWyWCw6c+aMNm3aZHZJAK7Tl19+qblz5zptf3PnztWXX37ptP25u+zsbElSRESE2rZta3I1xgkJCVF4eLik798zAN9gt9uVlpamHj166B//+Eed2/j7+2vo0KFasmSJPvnkE5WUlCg/P1+7du3S1q1btXXrVu3atUv5+fmaPHlyg17373//u7p37660tDRnvh0AgBfyiQDmH//4hy5cuKBZs2bJz89PK1euNLskANdp+vTpTp1auqKiQtOnT3fa/txdZmamJCkmJsbkSozXt29fSd+/ZwDer7KyUjNmzFBiYqLOnTtX6/EePXroz3/+s44eParNmzdrypQp+ulPf6qWLVvWub9vv/22zkAlKSlJPXr0qLX+3LlzSkxM1IwZM1RZWdn0NwQA8Eo+EcCsXLlSAQEBevrpp3XPPfcoIyNDRUVFZpcFoIG++OKL6xpwt6H27Nmjffv2OX2/7igrK0vS9+GEN6sKmareMwDvdunSJSUkJNR5i+qNN96otLQ05eTk6KmnnlL79u0btM+bb7651rrY2FglJycrJydHqampatOmTa1tFi1apISEBF26dOm63wcAwPt5fQCTm5urzz77TIMGDVJYWJh+9atfyWazafXq1WaXBqCBVq1a5ZH7didVYYQvXAFDAAP4joqKCo0aNUrp6em1Hnvsscf09ddfa9KkSdc1M9HOnTtVVlZWa33VgLt+fn6aPHmyDh48qMcee6zWdunp6Ro1apRTr9oEAHiHALMLMFrV7UaPPvqoJGnEiBGaOnWqVq9erblz5zJVIBotPz9fzz33XJ2PFRYWurQWb/fpp5965L7dyfHjxyWpQQNLerpu3bpJ+v49A/Bef/jDH6pneKvSvHlzrVmzRg8//PB1789ut+uee+6ptX7FihVq1qyZw7rQ0FCtWbNGgwYN0rhx4xyuennvvfc0d+5czZs377prAAB4L68OYCoqKvTGG2+oVatWGjZsmCTphhtu0PDhw/Xmm29q+/btGjRokLlFXie73e7UaRQ9hTv+ilRQUKDnn3/e7DKuqaKiQhcuXDC7jEarqKgwdLDcL7/8Ut99950CArz3cGiz2ap/zbXb7S779/DD13Hlv8GqKcYvXryoc+fOEbQDbsSZ/fm2bdtqzWjXokULbdmyRXFxcY3a58yZM+tcP378+Hqf88gjj6hDhw4aMmSIw7EuJSVF9913n+Lj4xtVS02e3p8DcL7g4GBZLBazy8D1sHux9evX2yXZx48f77B+69atdkn2hIQEkyprvPPnz9sl+fzf1KlTTWuDw4cP2yXZBw8eXO82O3bssEuyT5482YWVXTF16lTT24c//vjjjz/+GvLX2P68uLjYHhYW5rCvZs2a2ffs2dPo/vPs2bN11pifn9+g5+/Zs8ferFkzh+e2b9/eXlxc3Kh66M/544+/a/2dP3++UccXmMerfxasuv3oV7/6lcP6++67Tx07dtTmzZt15swZM0oDAABAIyUmJqq4uNhh3fz583XXXXc1ep/1Dbzb0Fs377rrrlpX5HzzzTeaMmVKo2sCAHgXr73m/siRI9q6daskacCAAfVu9+abb+rXv/61q8pqsuDgYJ0/f97sMlxu1qxZWr58udlleKSJEydqwYIFZpfRaBUVFQoLCzNsRgmr1ari4mKvvwWpVatWkq7cOhcWFuaS171w4UL1axUXF6tFixYued3i4uLqL0wlJSXcggS4EWf05zk5ObUG3f3FL35R7+1DDXGtgXcbaubMmdq2bZs++OCD6nUbN25Ubm6uoqOjG12f5Pn9OQDnCw4ONrsEXCev/caxZs0a2Ww23XXXXerevXutxysrK/X6669r5cqVHhXAWCwWl32JcSc1B75DwzVr1szj/8307t1bmZmZhu27devWhuzbnQQGBqqsrMy0Y0iLFi1c9rpV90IHBQWpZcuWLnlNAA3jjP78lVdecVhu27at1qxZ0+hxEOzXMfDutfj5+WnNmjXq0aOHzp4961DzihUrGlVfFW/ozwHA13llAGO327V69WpZLBa9/vrr6tq1a53b/etf/9Knn36qzMxM9e3b18VVAmio/v37GxbA9O/f35D9upsOHTro0KFDKigoUEREhNnlGCo/P1/SlfcMwLt88803evPNNx3WTZ06Ve3atWv0Phsz8O7VhIaGaurUqXrxxRer173xxhv605/+pPbt2zdqnwAA7+CV12V/9NFHOnz4sGJjY+sNXyRp3Lhxkr4fKwaAe3r88cc9ct/uJCYmRpKUlZVlciXGq3qPVe8ZgPdIS0tzuCW1efPmmj59eqP39+2332rhwoW11lcFuY01ffp0NW/evHr50qVLSktLa9I+AQCezysDmKpAZezYsVfdbsyYMQoKCtLbb7+tixcvuqAyAI1x66236u6773b6fu+++27dcsstTt+vO6oKI4y6ksidEMAA3uujjz5yWH700UebNK5VUwferU/79u31y1/+0mHdjh07mrRPAIDn88pbkN566y299dZb19yuVatWKi0tdUFF8Cbh4eGy2+1X3SYuLu6a2+D6LFq0SH379lVFRYVT9tesWTMtXrzYKfvyBFW3WfrCFTBVIRO3lgLepbKyslaIPGzYsEbvz1kD79Zn2LBhWrVqVfVyZmamKisrvXrQdwDA1XnlFTAAvE/v3r31wgsvOG1/L7zwgn7yk584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vS79BwAAxgowuwCgIcrKyhyWg4ODTarE/dX8bGp+dgCMxfGq4VxxvPK09igtLdWvfvWrOgfbHT16tF5//XUFBQXp008/dXisX79+tW5Jul70HwAAGIsABh6h5kwMzZs3N6kS92e1Wh2WOYEGXIvjVcO54njlSe1x5swZ/fznP693sN327dsrKChIkmoFME29/Uii/wAAwGjcggSP1NRf+bwZnw3gXvh/sn5mfDbu3B5t2rRRYmKi2rVrV+fjCxculMVi0bZt25Sdne3wmDMCGHf+bAAA8Ab0tAAAAG7Az89P48aN08GDBzVt2rR6A5FBgwbp0qVL1csWi0X9+vVzVZkAAKCRCGAAAADcyI033qhFixYpMzOzQdtHR0erdevWBlcFAACaigAGAADADdWc6ag+zrj9CAAAGI8ABgBgiIqKijr/G8C12e123XPPPQ3algAGAADPwCxIAACn+eKLL7Rq1Sp9+umn+vLLL6vXh4WFqXfv3urfv7/Gjx+vW265xcQqAXOUlZUpNzdXOTk5OnfuXPUsQ4GBgWrZsqV69uypnj17ymq1aubMmXXuIzs7W9OmTXOYBYkABgAAz0AAAwBosi+//FLTp0/Xnj176nz80qVLyszMVGZmphYuXKi7775bixYtUu/evV1cKeA6586d0/r165WRkaF9+/bp66+/1uXLl6/6HH9/f0VFRenrr7+u9Vh+fr4iIyP18ccf6/XXX1dSUpIqKirUvXt3o94CAABwIgIYAECj2e12paSkaO7cudd1m9GePXvUt29fvfDCC0pKSpLFYjGwSsB17Ha7du/erdWrV2v9+vUqLS29rudfvny5zvDllltuUdeuXSV9P1vSsGHDtGnTJqaPBgDAQ9BjAwAaxW63a8aMGZozZ06jxnipqKjQnDlzNGPGDNntdgMqBFxr+/bt6tmzp+Li4vT6669fd/hyNfv27VPPnj21ffv26nU33nijxo0b57TXAAAAxvL6AObChQt66aWXdNttt+mGG26Q1WpVp06ddPfdd2vOnDkqKCgwu0S4oeeee04Wi0WFhYVmlwK4rZSUFC1evLjJ+1m8eLFSUlKcUBFqKiwslMVi0c9+9rN6t9m5c6csFosSExNdWJl3OX78uB566CENHDhQX3311TW3j4yMVGxsrAYOHKiBAwcqNjZWkZGR13zeV199pYEDB+rhhx/Wf/7zH2eUDgAAXMirA5hz587ppz/9qX73u9/p3Llz+uUvf6mnnnpK999/v86fP6/k5GTt2LHD7DLhAaq+oMTFxTmsT0xMlMVi0c6dO6vXVX3hCQ8Pr1734YcfymKx6O9//7trCgYM9uWXX2ru3LlO29/cuXMdBu0FPIHdbldaWpp69Oihf/zjH3Vu4+/vr6FDh2rJkiX65JNPVFJSovz8fO3atUtbt27V1q1btWvXLuXn52vy5MkNet2///3v6t69u9LS0pz5dgAAgMG8egyYV199VV9++aUmTJigZcuW1Rpj4PDhwyovLzepOviSe++9V61bt9amTZv00EMPmV0O0GTTp0936tTSFRUVmj59unbv3u20fQJGqqys1BNPPFHvVWA9evTQ+PHj9ctf/lLt27e/5v6+/fbbOgOVpKQkbd68uda4MOfOnVNiYqIOHDigBQsWKCDAq0/pAADwCl59BUzVFI3Tpk2rc4DHiIgI9ejRw9VlwQc1a9ZM999/v/7nf/6H0A8e74svvqh3tqOm2LNnj/bt2+f0/QLOdunSJSUkJNQZvtx4441KS0tTTk6OnnrqqQaFL5J0880311oXGxur5ORk5eTkKDU1VW3atKm1zaJFi5SQkKBLly5d9/sAAACu5dUBTEhIiCTpX//6l8mVwNM1ZoaWms8ZMWKEzp07p4yMDGeVBZhi1apVHrlvwBkqKio0atQopaen13rsscce09dff61JkyZd18xEO3fuVFlZWa31VQPu+vn5afLkyTp48KAee+yxWtulp6dr1KhRTr0qDQAAOJ9XX686evRovfnmm5owYYL27t2rQYMGKSYmpjqYARoqODhYkho0o8WFCxckSTfccIPD+p/97GcKDAxUenq6fvGLXzi/SMBFqq4u9LR9+7L8/Hw999xzdT7GYOPX5w9/+IPee+89h3XNmzfXmjVr9PDDD1/3/ux2u+65555a61esWKFmzZo5rAsNDdWaNWs0aNAgjRs3zuGql/fee09z587VvHnzrrsGAADgGl4dwAwdOlQvv/yynn32Wb388st6+eWXJV2ZfeBnP/uZZs6cqaioKJOrvD52u92p01p6CrN/1au6NLyoqOia21ZtU/Ny8hYtWmjQoEF69913lZaWdl2/jjZFRUVFdSgENFVFRYWhg+V++eWX+u677zx6PAuzj1d1KSgo0PPPP292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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def state_preparation(state):\n", " # use pl.StatePrep to prepare wire S in the given state\n", " pl.\n", "\n", "def entangle_qubits():\n", " # use pl.Hadamard and pl.CNOT to create a Bell pair\n", " pl.\n", "\n", "def basis_rotation():\n", " # use pl.Hadamard and pl.CNOT to rotate the basis\n", " pl.\n", "\n", "def measure_and_update():\n", " # use pl.measure for Alice's measurement and pl.PauliX, pl.PauliZ, and pl.cond for Bob's correction\n", " pl.\n", "\n", "def teleport(state):\n", " state_preparation(state)\n", " entangle_qubits()\n", " basis_rotation()\n", " measure_and_update()\n", "\n", "state = np.array([1 / np.sqrt(2) + 0.3j, 0.4 - 0.5j])\n", "pl.draw_mpl(teleport)(state)\n" ] } ], "metadata": { "kernelspec": { "display_name": "pennylane", "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.12.3" } }, "nbformat": 4, "nbformat_minor": 2 }