Skip to content

Instantly share code, notes, and snippets.

@primaryobjects
Last active August 26, 2023 14:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save primaryobjects/f58e5528e3b183b6bfcb8d7a9dc34934 to your computer and use it in GitHub Desktop.
Save primaryobjects/f58e5528e3b183b6bfcb8d7a9dc34934 to your computer and use it in GitHub Desktop.
Quantum Rock Paper Scissors
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"Solving Rock Paper Scissors with Quantum Computing\n",
"=====================================\n",
"\n",
"Is it possible for a quantum computer to solve the rock paper scissors game?\n",
"\n",
"Rock, Paper Scissors is game for two players, that involves each player secretly choosing a play (rock, paper, or scissors) and then revealing their hand. The rules of the game state that rock defeats scissors, scissors defeats paper, and paper defeats rock.\n",
"\n",
"Since each player can choose 1 of 3 hands, each round in the game can have 9 possibilities: `[RR, RP, RS, PR, PS, PP, SR, SP, SS]`\n",
"However, only 3 of the 9 possibilities are winning choices: `[RS, SP, PR]`\n",
"\n",
"On a classical computer, you could write a function that encodes the rules of the game. The function could accept an input of the current round choices and determine if the first player wins.\n",
"\n",
"Now, if you wanted to find all possible winning hands from the 9 different possibilities, you would have to call this function 9 times (once for each permutation) to check which one is a winning hand.\n",
"\n",
"**A quantum computer can solve this in just a single run!**"
]
},
{
"cell_type": "code",
"execution_count": 125,
"metadata": {},
"outputs": [],
"source": [
"from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister, execute, Aer\n",
"from qiskit.circuit.classicalfunction.classicalfunction import ClassicalFunction\n",
"from qiskit.visualization import plot_histogram"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## The Characters\n",
"\n",
"- 00 = Rock\n",
"- 01 = Paper\n",
"- 10 = Scissors\n",
"\n",
"## The Rules\n",
"\n",
"### Rock\n",
"- 00 vs 00 = Tie\n",
"- 00 vs 01 = Loss\n",
"- 00 vs 10 = Win\n",
"\n",
"### Paper\n",
"- 01 vs 00 = Win\n",
"- 01 vs 01 = Tie\n",
"- 01 vs 10 = Loss\n",
"\n",
"### Scissors\n",
"- 10 vs 00 = Loss\n",
"- 10 vs 01 = Win\n",
"- 10 vs 10 = Tie\n",
"\n",
"## Can we create a quantum computing circuit to find all winning plays?\n",
"\n",
"First, let's define a binary value to represent each choice."
]
},
{
"cell_type": "code",
"execution_count": 126,
"metadata": {},
"outputs": [],
"source": [
"# Encode the choices as qubits.\n",
"choices = {\n",
" 'rock': [0,0],\n",
" 'paper': [0,1],\n",
" 'scissors': [1,0]\n",
"} "
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Defining the Problem\n",
"\n",
"Quantum computing is specifically adept at solving computational problems.\n",
"\n",
"For the game, Rock Paper Scissors, let's suppose that we want to find all possible winning moves that can be made. We've already defined a representation for each choice (rock 00, paper 01, scissors 10). Since we have two players, there would be four bits per round. So, a single round of the game might be:\n",
"\n",
"- Player 1 chooses Rock.\n",
"- Player 2 chooses Paper.\n",
"- Rock = 00 and Paper = 01\n",
"- The input would be 0001\n",
"\n",
"Now, in order to determine if this is a winning move for Player 1, we need to check some logic that dictates the rules of the game.\n",
"\n",
"The game rules state that Rock defeats Scissors, Scissors defeats Paper, and Paper defeats Rock.\n",
"\n",
"We can encode these rules using boolean logic as shown below.\n",
"\n",
"`bool isWin = (rock and scissors) or (scissors and paper) or (paper and rock)`\n",
"\n",
"We can convert this to our binary format as shown below\n",
"\n",
"`bool isWin = (00 and 10) or (10 and 01) or (01 and 00)`"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## A Classical Method to Check for Winning Games\n",
"\n",
"Let's try creating a simple classical method for checking all permutations of player choices for a winning game."
]
},
{
"cell_type": "code",
"execution_count": 127,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"([(0, 0, 1, 0), (0, 1, 0, 0), (1, 0, 0, 1)], 16)\n"
]
}
],
"source": [
"import itertools\n",
"\n",
"def isWin(player1, player2):\n",
" return (player1 == 'rock' and player2 == 'scissors') or (player1 == 'scissors' and player2 == 'paper') or (player1 == 'paper' and player2 == 'rock')\n",
"\n",
"def check_all_games():\n",
" # Generate a list of all possible game choices for player1 and player2.\n",
" result = []\n",
" count = 0\n",
"\n",
" games = list(itertools.product([0, 1], repeat=4))\n",
" for game in games:\n",
" # Example: (1, 0, 0, 1) => scissors vs paper\n",
" player1 = list(game[0:2])\n",
" player2 = list(game[2:4])\n",
"\n",
" # A quick check to make sure both player moves are valid.\n",
" if player1 in list(choices.values()) and player2 in list(choices.values()):\n",
" # Get the choice item indicated by the binary encoding. Example: (1, 0) => scissors\n",
" player1_choice = list(choices.keys())[list(choices.values()).index(player1)]\n",
" player2_choice = list(choices.keys())[list(choices.values()).index(player2)]\n",
"\n",
" # Check if this is a winning move.\n",
" is_win = isWin(player1_choice, player2_choice)\n",
" if is_win:\n",
" result += [game]\n",
"\n",
" # Keep count of how many games we have to look at.\n",
" count += 1\n",
"\n",
" return (result, count)\n",
"\n",
"print(check_all_games())"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## The results?\n",
"\n",
"As we can see, the three expected winning games were found.\n",
"\n",
"- Rock vs Scissors\n",
"- Paper vs Rock\n",
"- Scissors vs Paper\n",
"\n",
"However, this required **16** iterations to find all winning games! *(including invalid bit combinations, such as 1111)*"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Can Quantum Do Better?\n",
"\n",
"Next, we'll create a classical logic circuit to use in our quantum circuit. This is also called an **oracle** and will encode the rules for the problem that we're trying to solve.\n",
"\n",
"This is the same idea as the `isWin()` function that we've defined above in the classical example.\n",
"\n",
"Note, for player 1's qubits we refer to the least significant bit as q0 and the most significant bit as q1. The same follows for player 2.\n",
"\n",
"Using the successfull plays (`[(0, 0, 1, 0), (0, 1, 0, 0), (1, 0, 0, 1)]`) this would be translated in least/most significant bits as:\n",
"\n",
"```\n",
"[(0, 0, 1, 0), (0, 1, 0, 0), (1, 0, 0, 1)]\n",
"[(q1 q0 q3 q2),(q1 q0 q3 q2),(q1 q0 q3 q2)]\n",
"```\n",
"\n",
"This seems a bit backwards. However, qubits are interpreted in reverse order. Therefore, we just have to adjust the order.\n"
]
},
{
"cell_type": "code",
"execution_count": 128,
"metadata": {},
"outputs": [],
"source": [
"# Define a classical logical circuit with 4 variables (qubits).\n",
"isWin = 'def isWin(q0: Int1, q1: Int1, q2: Int1, q3: Int1) -> Int1:\\n return (not q0 and not q1 and not q2 and q3) or (q0 and not q1 and not q2 and not q3) or (not q0 and q1 and q2 and not q3)'\n",
"\n",
"# Convert the logic to a quantum circuit.\n",
"formula = ClassicalFunction(isWin)\n",
"fc = formula.synth()\n",
"\n",
"# Convert the quantum circuit to a quantum program.\n",
"qc = QuantumCircuit(4+1)\n",
"qc.compose(fc, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 129,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAbIAAAFvCAYAAAAv007tAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA3s0lEQVR4nO3de3xU9b3v/9fkfidAAoEkQCAJEG5BEKVaFYqt1PuuWit123M4nu4e+cneD3/Gvdtft+35nUfdWh67vyrndNt29+y9z37IptXWqmgvim2RqoViAEMABQK5DTC5kGRyz8zvjy8xBHKdzMya7+T9fDx4JMxaa+azJmvWe12+3++4/H6/HxEREUvFOF2AiIjIRCjIRETEagoyERGxmoJMRESspiATERGrKchERMRqCjIREbGagkxERKymIBMREaspyERExGoKMhERsZqCTERErKYgExERqynIRETEagoyERGxmoJMRESspiATERGrKchERMRqCjIREbGagkxERKymIBMREaspyERExGoKMhERsZqCTERErKYgExERqynIRETEagoyERGxmoJMRESspiATERGrKchERMRqCjIREbGagkxERKymIBMREaspyERExGoKMhERsZqCTERErKYgExERqynIRETEagoyERGxmoJMRESspiATERGrKchERMRqCjIREbGagkxERKymIBMREaspyERExGoKMhERsZqCTERErKYgExERqynIRETEagoyERGxmoJMRESsNimCzOPxUFZWRmFhIUlJSeTn57N161a8Xi+bN2/G5XKxfft2p8sMKW8D1JRD1Z/MT2+D0xVJOPn90HgGqg+YbaDuMHR7na4qvDpboPaQWf/qD+BCvXlfJgtfL5w7Dqf3m39nj0Ffj9NVBUec0wWEWnl5ORs3bsTtdpOamkpJSQl1dXU8++yznDhxgsbGRgBKS0udLTREPCfMRttUfeW0qfkwdzVkLQh/XRIefp85cKkuh/bGwdNcMTBzIcxbA2nZTlQXHhfqTHidPwFcFlzpMyD/Kpi1BFwuR8oLuZ7OgYOXno7B0+KSYPZSsw0kpDhTXzC4/P7oPSbxeDysXLmSmpoaHnvsMZ588knS09MBeOaZZ3jiiSeIi4ujr6+P5uZmMjIyHK44uE69Dyf2jD7fgk9DwTWhr0fCy9cLh1+D8x+PPF9sPCy/A6YX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Ck09En75pean+yg0j3CVyO83fY3wmz5UqdPDUFwYTM2HlAD6ReZGye7AFRPYuuQux7oQgygOsry8PPbs2cOtt95KUlISVVVVTJs2jeeff55du3Zx/PhxIDqDLDYB5q8dfb5LFVwbXZ1hJ7uMWZBdaPpHffAS1B+5so9URzMcfsV0nHbFwILrHCk1JFwuKPz0+JbJXQEpmSEpxxG5y01r1LFKTB84ALJNVI/sMZy2tjYyMjJwuVy0traSkpIy5Hzf+ta3+Pa3v42Nb5HfDx/9fmwdIueshqIb7ezRL8Pr6zbDMzVVm/8npJpWjDHx0N4wMO6gKwaW3gozFzpWashUfwDHxtAAL7sIlt1m59nISLyNcOBn0DXKbfOEVDOySVp2eOoKtqi9RzaSiooK/H4/xcXFQ4bYiy++CMCRI0cG/X/evHmsXr06fIVOgMsFxTdBejZU7QOv58p50rJg7tVm0FSJPrEJsPILUPUnc9+023tlX8Fp88zZe6b97RuGlL8SkjOh6r2hL7EmZZh55qwygR5tUqfBmk1wYi+4K68cczMmFmYuMmfjSRYPNTspz8h+/OMf8/DDD3Pfffexc+fOK6YP14rxoYce4l/+5V9CXF3w+f1woRYaq+H0n8zoDfHJcMN/01nYZOHrg/Mfw5Ffmb9/bAJc8yCkTHW6svBpPQeeUybU+nogLglu/G/RGWBD6bnY4f2j311c/0T41H+BhGSnK5u4SXlGdvjwYWD4+2PRlu0uF2TmmX+1B81GHBOrEJtMYmLNpcPjb1/ciSVMrhADMxxX+gwzDFNfj+k7N1lCDMzg4Hkr4NS7F9c/PjpCDKK4scdIRgsyERGxx6Q8I+sfh1FEROw3Kc/IREQkeijIRETEagoyERGxmoJMRESspiATERGrKchERMRqCjIREbGagkxERKymIBMREaspyERExGoKMhERsZqCTERErKYgExERqynIRETEagoyERGxmoJMRESspiATERGrKchERMRqCjIREbGagkxERKymIBMREaspyERExGoKMhERsZqCTERErKYgExERqynIRETEagoyERGxmoJMRESspiATERGrKchERMRqCjIREbGagkxERKymIBMREaspyERExGoKMhERsZqCTERErKYgExERqynIRETEagoyERGxmoJMRESspiATERGrKchERMRqCjIREbGagkxE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",
"text/plain": [
"<Figure size 538.33x451.5 with 1 Axes>"
]
},
"execution_count": 129,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"qc.draw(output='mpl')"
]
},
{
"cell_type": "code",
"execution_count": 130,
"metadata": {},
"outputs": [],
"source": [
"# Convert the circuit to a gate.\n",
"oracle = qc.to_gate()\n",
"oracle.name = \"rock-paper-scissors\""
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Encoding the Player Choices as Binary Values\n",
"\n",
"We will need to convert each player's choice (rock, paper, scissor) into a binary representation (00, 01, 10) for representing them with qubits in the circuit."
]
},
{
"cell_type": "code",
"execution_count": 131,
"metadata": {},
"outputs": [],
"source": [
"def encode(player1, player2, qc):\n",
" # Convert the binary representation for the choice (00, 01, 10) into a qubit circuit.\n",
" # We do this by inverting the specified bits that need to be a value of 1.\n",
"\n",
" # Since qubits are represented with q0 as the least significant bit, we need to reverse the inputs.\n",
" a = list(reversed(choices[player1]))\n",
" b = list(reversed(choices[player2]))\n",
" \n",
" # Create a quantum circuit with n qubits.\n",
" # Invert each bit that has a value of 1.\n",
" for index, bit in enumerate(a + b):\n",
" if bit:\n",
" qc.x(index)\n",
"\n",
" return qc"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Creating a Quantum Computing program with our oracle\n",
"\n",
"Finally, we create the quantum computing circuit and include our oracle, which contains the rules for rock paper scissors.\n",
"\n",
"We only need to measure the output qubit to get the result. The result will indicate if the input qubits (the two players' choices) are a win (1) for the first player or a loss (0).\n",
"\n",
"For example, if we play paper vs rock, the circuit would receive input of 01 (paper) and 00 (rock) and an output of 1 (win).\n",
"Since a quantum circuit actually reverses the order of bits, the circuit would look like:\n",
"\n",
"```\n",
" 1 00 01\n",
" ^- win\n",
" ^^----- rock\n",
" ^^--------paper\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 132,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<qiskit.circuit.instructionset.InstructionSet at 0x23fd0ab2290>"
]
},
"execution_count": 132,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get the number of qubits needed.\n",
"n = len(choices['rock']) * 2\n",
"\n",
"qc = QuantumCircuit(n + 1, 1)\n",
"\n",
"# Paper vs Rock.\n",
"qc = encode('paper', 'rock', qc)\n",
"\n",
"# Append the sudoku oracle.\n",
"qc.append(oracle, range(5))\n",
"\n",
"# Measure the result!\n",
"qc.measure(4, 0)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Viewing the Quantum Circuit\n",
"\n",
"Let's see what the input to our oracle looks like. Remember, the oracle is really our `isWin()` method.\n",
"\n",
"Notice, in the circuit drawn below, the first qubit q0 is flipped to a value of 1 using the `X` gate. The second qubit q1 is left as a 0.\n",
"\n",
"```\n",
"We read this as `01`\n",
" ^-- q0\n",
" ^----- q1\n",
"```\n",
"\n",
"The least significant bit is q0. The most significant bit is q1. The same process follows for player 2 (q2, q3).\n",
"\n",
"## Paper versus Rock\n",
"\n",
"`0001`"
]
},
{
"cell_type": "code",
"execution_count": 133,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 621.941x535.111 with 1 Axes>"
]
},
"execution_count": 133,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"qc.draw(output='mpl')"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Running the Quantum Program\n",
"\n",
"Let's run the program using the above inputs of paper versus rock, and see the result.\n",
"\n",
"We should expect to get a result of 1."
]
},
{
"cell_type": "code",
"execution_count": 134,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'1': 1024}\n"
]
},
{
"data": {
"image/png": "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jJtMAAAAmoAaX1NYEafTqdOnTyslJUWff/65hg4dWtuHAAAAQC2rcRSWPfu4Ii6XS61bt9af//znmh4CAAAA9aTGUTh48GCPUWg2m9W6dWv17dtXkyZNUtu2bW9rgQAAAKh7NY7CjIyMWlwGAAAAGhLPPgYAAEDt3Giyfft2ZWVlyW63KyAgQDExMRo4cGBt7BoAAAD14LaicMeOHZo0aZKOHj0q6frNJWXXGUZHRys5OVn9+/e//VUCAACgTtU4Cg8dOqTExERdvnxZw4YNU3x8vDp06KCzZ89qy5YtSktL0/Dhw7Vr1y517969NtcMAACAWlbjKHz55Zd17do1bdy4USNGjHDbNnPmTH355Zd69NFH9fLLL+uDDz647YUCAACg7tT4RpOMjAyNHDmyXBCWGTFihEaOHKktW7bUeHEAAACoHzWOQpvNpqioqErnREVFyWaz1fQQAAAAqCc1jsLQ0FDt2rWr0jm7d+9WaGhoTQ8BAACAelLjKHz00UeVkZGhOXPm6OrVq27brl69qnnz5mnLli167LHHbnuRAAAAqFsml8vlqskb8/Pzdf/99+vEiRMKCgpSv3791K5dO507d07ffPONzp8/r06dOikzM1Nt2rSp7XU3WXa7XRaLRTabTQEBAXV2nKRldbZrAABQi1ZOr9v9V7U9anymMCgoSLt27dKECRNUWFiojRs3Kjk5WRs3blRBQYEmTZqkXbt21UsQRkZGymQyefwTFxdXbn5xcbFefvllRUdH64477lBoaKgmT56s//3f/63wGOvWrVO/fv3k5+en1q1b65FHHtHevXvr8FMBAADUn9v68erg4GC9++67evvtt/XDDz8YTzTp2rWrWrRoUVtrrBKLxaLp06eXG4+MjHR77XQ69dhjjyk1NVUPPPCAnnzySVmtVq1atUrp6enatWuXQkJC3N6zcOFCzZ49WxEREfr1r3+tgoICffDBBxowYIDS09N5egsAAGjyqv318cKFC1VUVKQFCxZUGH7Xrl3TggUL5O/vr//4j/+olYVWpiz8srOzbzk3OTlZzzzzjMaOHat169YZT2B566239Nxzz2ny5Ml6++23jflWq1Xdu3c3vgq3WCySpKysLD3wwAPq1KmTDh48KLO5aidd+foYAADcqEl+fbxp0ybNnTtXQUFBlZ4JbNmypYKCgvTSSy81ut8pXLlypSRp8eLFRhBK0pQpU9SpUyetW7dOV65cMcaTk5NVUlKil156yQhCSYqJidHYsWP1/fff6+uvv66/DwAAAFAHqhWFq1evVuvWrTV16tRbzn3hhRfUpk0bJScn13hx1VFcXKyUlBQtWrRIK1as0O7du8vNuXr1qnbv3q0uXbooIiLCbZvJZNKwYcNUVFSkb7/91hjPyMiQJCUmJpbb3/DhwyVJW7durXRddrvd7Y8kORwO409paakkqbS01ON4SUmJ27jT6ax03OFwVOnvDAAANDyn0+n23/OSkpJKxyvqhco6oiqqdU3hjh07lJCQIB8fn1vO9fHxUUJCgrZv316dQ9TY2bNnNWnSJLexvn376h//+Ic6d+4sSTp27JicTqeio6M97qNs3Gq1atCgQcY/t2rVSu3bt690fkUWL16sBQsWlBtPS0vTnXfeKUnq2LGjevXqpf379+vUqVPGnC5duqhr167KzMzU+fPnjfGYmBhFRERo27ZtKigoMMb79++vtm3bKi0tTdLDFa4JAAA0Hnl5edq5c6fx2t/fX0OGDFFOTo6ysrKM8ZCQEA0YMEBWq1WHDx82xm/VEXv27KnSOqoVhWfOnFGnTp2qPD8qKkqff/55dQ5RI5MmTdKgQYPUo0cPtWrVSkeOHNFf/vIXrVmzRkOHDtWBAwfk7+9vPF3lxq+Bb1T2PfuNT2Gx2Wxq27ZtleffbNasWZoxY4bx2m63Kzw8XImJicb7y65HvOeee9SjRw9jbtl4v379dOOln15eXpKkwYMHexxPTEzUhoo7FQAANCLBwcF66KGHjNdll7eFh4e7PQSkbDw6Oto44SXduiP69OlTpXVUKwrNZnO1vpp0OBxVvgHjdsybN8/tdUxMjFavXi1JWrNmjVauXOkWZvXJx8fH45nVFi1alLsu08vLywi7G3l7e/7XVNF4fd/5DQAAas5sNnvspYrGK+qF6nZEueNVadb/Cw0N1cGDB6s8/+DBg7rrrruqc4haNWXKFEkyvsIuO0NY0Zm9suv9bjyTWHa3TlXnAwAANEXVisJBgwZp8+bNVfrpl+zsbG3evFmDBw+u6dpuW3BwsCSpqKhIktSpUyeZzeYKrwEsG7/xmsPo6GgVFhbq7NmzVZoPAADQFFUrCl944QU5HA6NHDlSeXl5Fc7Lz8/XqFGjVFJSoueee+62F1lTZXcgl/2Ooa+vr/r166fDhw/r5MmTbnNdLpe++uor+fn56b777jPGY2NjJen/b95wl5qa6jYHAACgqapWFPbu3VvTp0/X3r171b17d82dO1dbtmyR1WqV1WpVRkaG5syZo+7du2vPnj36zW9+o969e9fV2iVJP/zwgy5fvuxxfObMmZKkp556yhifPHmypOs3gNx4k8bbb7+t48eP65e//KV8fX2N8UmTJsnb21sLFy50+xo5KytL//jHP9StWzc9+OCDtf65AAAA6lO1n2jicrn00ksvaenSpcbv4t283cvLS3/4wx/06quvuv1AdF2YP3++/vKXv2jw4MGKiIiQn5+fjhw5oo0bN8rhcGjWrFlatGiRMd/pdOqhhx4yHnMXGxuro0eP6tNPP1VkZKR2795d6WPunnzySeMxd9euXav2Y+54ogkAALhRY3miSbWjsMyxY8eUnJysHTt2GNfbtW/fXgMHDtTEiRPdbpWuS1u3btV//ud/6rvvvtO5c+d0+fJlBQcH6/7779fzzz/v8Ueni4uL9ac//Ulr1qxRTk6O2rRpo0ceeUSvvvqq2rVr5/E469at07Jly3To0CG1bNlSAwcO1CuvvFLtM6FEIQAAuFGTj0LUDFEIAABu1FiisO5/RBAAAACNHlEIAAAAohAAAABEIQAAAEQUAgAAQEQhAAAARBQCAABARCEAAABEFAIAAEBEIQAAAEQUAgAAQEQhAAAARBQCAABARCEAAABEFAIAAEBEIQAAAEQUAgAAQEQhAAAARBQCAABARCEAAABEFAIAAEBEIQAAAEQUAgAAQEQhAAAARBQCAABARCEAAABEFAIAAEBEIQAAAEQUAgAAQEQhAAAARBQCAABARCEAAABEFAIAAEBEIQAAAEQUAgAAQEQhAAAARBQCAABARCEAAABEFAIAAEBEIQAAAEQUAgAAQEQhAAAARBQCAABARCEAAABEFAIAAEBEIQAAAEQUAgAAQEQhAAAARBQCAABARCEAAABEFAIAAEBEIQAAAEQUAgAAQEQhAAAARBQCAABARCEAAABEFAIAAEBEIQAAAEQUAgAAQEQhAAAARBQCAABARCEAAABEFAIAAEBEIQAAAEQUAgAAQEQhAAAARBQCAABARCEAAABEFAIAAEBEIQAAANQMovD06dNatmyZEhMT1bFjR7Vs2VLt27fXk08+qd27d5ebP3/+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",
"text/plain": [
"<Figure size 700x500 with 1 Axes>"
]
},
"execution_count": 134,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"simulator = Aer.get_backend('aer_simulator')\n",
"job = execute(qc, simulator)\n",
"result = job.result()\n",
"counts = result.get_counts()\n",
"\n",
"key = max(counts, key=counts.get)\n",
"\n",
"print(counts)\n",
"plot_histogram(counts)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## One More Time\n",
"\n",
"Let's run once more, this time using a losing hand. Paper will always lose to scissors!"
]
},
{
"cell_type": "code",
"execution_count": 135,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'0': 1024}\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAoUAAAGwCAYAAADfdh9XAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAra0lEQVR4nO3deXSU5aHH8d9MEmLMCklY0oQkcCPBAgYQFBBCWAIu17qwiIqAFagUKaULl8oiIiCClV7ovSKUhM2KWkWPh2tSAoErWxQMIKfCsEkChhKWmSRImGTm/kHnvQyZhCRk9/s5h3M6z/vM+z4T/+j3vPO+85qcTqdTAAAA+FEz1/cCAAAAUP+IQgAAABCFAAAAIAoBAAAgohAAAAAiCgEAACCiEAAAAJK863sBPzYOh0Nnz55VYGCgTCZTfS8HAAA0cU6nUwUFBYqIiJDZXP75QKKwjp09e1ZRUVH1vQwAAPAjk5OTo8jIyHK3E4V1LDAwUNL1/zBBQUH1vBoAANDU2Ww2RUVFGQ1SHqKwjrm+Mg4KCiIKAQBAnbnVZWvcaAIAAACiEAAAAEQhANSpHTt26N///d8VEREhk8mkTZs2uW13Op2aPXu22rRpIz8/Pw0aNEgWi8XYfurUKf385z9XbGys/Pz81L59e82ZM0fXrl3zeLxjx44pMDBQISEhtfipADQFRCEA1KGioiLdc889+vOf/+xx+xtvvKH//M//1Ntvv629e/fK399fQ4YM0dWrVyVJ3377rRwOh1asWKHDhw/rrbfe0ttvv60//OEPZfZlt9s1atQo9e3bt1Y/E4CmweR0Op31vYgfE5vNpuDgYFmtVm40AX7kTCaTPv74Yz322GOSrp8ljIiI0G9+8xv99re/lSRZrVa1atVKqampeuqppzzuZ/Hixfrv//5vnThxwm18+vTpOnv2rAYOHKipU6fq8uXLtflxADRQlW0PzhQCQANx8uRJ5eXladCgQcZYcHCw7rvvPu3evbvc91mtVrVo0cJtbOvWrfrggw/KPSMJADcjCgGggcjLy5MktWrVym28VatWxrabHTt2TMuWLdPEiRONsQsXLmjs2LFKTU3lGwkAlUYUAkAjdebMGQ0dOlTDhw/X+PHjjfHx48fr6aefVr9+/epxdQAaG6IQABqI1q1bS5LOnTvnNn7u3Dljm8vZs2eVlJSk3r1765133nHbtnXrVi1ZskTe3t7y9vbWz3/+c1mtVnl7e2v16tW1+yEANFo80QQAGojY2Fi1bt1aGRkZSkhIkHT9AvG9e/fqxRdfNOadOXNGSUlJ6t69u1JSUso84H737t0qLS01Xn/yySdatGiRdu3apZ/85Cd18lkAND5EIQDUocLCQh07dsx4ffLkSWVnZ6tFixZq27atpk6dqtdee01xcXGKjY3VrFmzFBERYdyhfObMGfXv31/R0dFasmSJzp8/b+zLdTaxY8eObsf86quvZDab1alTp9r/gAAaLaIQAOrQV199paSkJOP1tGnTJEljxoxRamqqfv/736uoqEgTJkzQ5cuX9cADD+jzzz/XHXfcIUn6+9//rmPHjunYsWOKjIx02ze/MAbgdvA7hXWM3ykEAAB1id8pBAAAQKURhQAAACAKAQAAQBQCAABARCEAAABEFAIAAEBEIQAAAEQUAgAAQEQhAAAARBQCAABARCEAAABEFAIAAEBEIQAAAEQUAgAAQEQhAAAARBQCAABARCEAAABEFAIAAEBEIQAAACR51/cCUDvGL63vFQAAgMpYObW+V3AdZwoBAABAFAIAAKCBRuH69es1ceJE3XvvvfL19ZXJZFJqamq58202m6ZNm6bo6Gj5+voqJiZGv/vd71RYWOhxvsPh0LJly9S5c2f5+fkpPDxco0aN0okTJ8o9RlpamhITExUYGKigoCAlJSUpIyPjdj8qAABAg9Ago3DmzJl655139N1336lNmzYVzi0qKlJiYqLeeustxcfH69e//rU6dOigJUuWaMCAAbp69WqZ90ycOFFTpkyR0+nUlClTNHToUH300Ufq0aOHLBZLmfnr16/X0KFD9Y9//ENjx47VmDFjdPjwYQ0ePFgffvhhjX1uAACA+tIgo3DVqlU6deqUzp8/r1/84hcVzn3jjTeUnZ2t6dOnKy0tTa+//rrS0tI0ffp0ffnll3rrrbfc5m/btk2rVq1Sv379tH//fi1atEjr1q3Tpk2bdPHiRU2ePNlt/qVLl/TSSy8pLCxM+/fv17Jly7Rs2TLt379foaGhevHFF1VQUFDjfwMAAIC61CCjcNCgQYqOjr7lPKfTqVWrVikgIECzZs1y2zZr1iwFBARo1apVbuMrV66UJM2bN0/NmjUzxh988EH1799f6enpOn36tDH+wQcf6PLly3rppZcU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JQNoQrjRBAAaiMOHDysgIEBxcXGSrl9f6LrppLS0VJLUuXNnrVmzRq+//rqOHj2q5cuX1+eSATQhRCEANBBdu3bVyZMnVVhYKEny9r5+L6DJZJKXl5ek//+Zml/96ld64okntHXrVp04caJ+FgygSSEKAaCBSEpKkiQ988wz2rp1q65du+ZxnuusYYcOHZSfn29EJADcDqIQABqI+++/X9OmTdOBAwc0efJkrVy5UufOnXOb4zpreOnSJeXm5srf319dunSppxUDaEq40QQAGpgVK1Zo8eLFOnHihCIiIvT444/rwQcfVFRUlLy8vBQSEqJly5Zp6dKlmjRpkt588836XjKAJoAoBIAGxul06tixY1q5cqXee+895ebmSpJatmwpHx8fff/993I4HBo1apQWLVqkyMjIel4xgKaAKASABqyoqEhZWVn69NNPdfbsWf3zn/9UUFCQRowYoSeffFJ33HFHfS8RQBNBFAJAI2G32+Xj41PfywDQRBGFAAAA4O5jAAAAEIUAAAAQUQgAAAARhQAAABBRCAAAABGFAAAAEFEIAAAAEYUAAAAQUQgAAAARhQAAAJD0f+MSZkeaakbTAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 700x500 with 1 Axes>"
]
},
"execution_count": 135,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"qc = QuantumCircuit(n + 1, 1)\n",
"\n",
"# Rock vs Scissors.\n",
"qc = encode('paper', 'scissors', qc)\n",
"\n",
"# Append the sudoku oracle.\n",
"qc.append(oracle, range(5))\n",
"\n",
"# Measure the result!\n",
"qc.measure(4, 0)\n",
"\n",
"# Run the program.\n",
"simulator = Aer.get_backend('aer_simulator')\n",
"job = execute(qc, simulator)\n",
"result = job.result()\n",
"counts = result.get_counts()\n",
"\n",
"key = max(counts, key=counts.get)\n",
"\n",
"print(counts)\n",
"plot_histogram(counts)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Trying all possibilities\n",
"\n",
"We've just seen how to pass a specific input to the circuit and receive an output. We can now successfully judge a single game of rock paper scissors and get back an output of win or loss. However, can we find all possible win combinations?\n",
"\n",
"It turns out that, yes, we can find *all* combinations of winning moves - in a single call of the quantum circuit! Normally, this would require passing each permutation of player choices to the function and then read back each 0 or 1 output to find only those with a value of 1. *Remember, we just did this with the classical function and it took 16 iterations!*\n",
"\n",
"With a quantum computer, we can just call the function once and get back all answers.\n",
"\n",
"To begin, instead of passing in a specific input, we'll pass in *all* inputs. We do this by placing the input qubits into superposition."
]
},
{
"cell_type": "code",
"execution_count": 136,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA1UAAAGwCAYAAABB6U/eAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABkr0lEQVR4nO3deZyNdf/H8feZ9cxqjG3GDIZZLMOgQQmhKGO9K0WpuBOllLqF1lvdqWzVL1EpSd0hhUpCKUvSTfZkqbGbMYOJYfb994fbuU0zw5w5yzUzXs/Hw4NzrZ/rcobzPt/v9f2aioqKigQAAAAAqBAXowsAAAAAgKqMUAUAAAAANiBUAQAAAIANCFUAAAAAYANCFQAAAADYgFAFAAAAADYgVAEAAACADQhVAAAAAGADQhUAAAAA2IBQBQAAAAA2IFQBAAAAgA0IVQAAAABgA0IVAAAAANiAUAUAAAAANiBUAQAAAIANCFUAAAAAYANCFQAAAADYgFAFAAAAADYgVAEAAACADQhVAAAAAGADQhUAAAAA2IBQBQAAAAA2IFQBAAAAgA0IVQAAAABgA0IVAAAAANiAUAUAAAAANiBUAQAAAIANCFUAAAAAYAM3owsAAKAq279/v1Xbnzp1Sp999pnuvPNO1a1bt1z7NGvWrCKlAQCchJYqAACc6PTp05o1a5ZOnz5tdCkAADshVAEAAACADQhVAAAAAGADQhUAAAAA2IBQBQCAE9WoUUP9+vVTjRo1jC4FAGAnpqKioiKjiwAAoKqydvS/imD0PwCo3GipAgDAiXJycnT06FHl5OQYXQoAwE4IVQAAONGBAwfUq1cvHThwwOhSAAB2QqgCAAAAABu4GV0AKqeiIim3wOgqrOPhKplMRlfxP0VFUmGe0VUAVYeLe+X6Gb7aFRUVKTMz0+gyrOLt7S0TbyIABiBUoVS5BdKERUZXYZ0pgyTPSvSOLsyT1s4wugqg6uj+mOTqYXQVuCgzM1O+vr5Gl2GV9PR0+fj4GF0GgKsQ3f8AAAAAwAaV6Ht9AACqv+joaO3bt8/oMgAAdkRLFQAAAADYgFAFAIATHT58WIMHD9bhw4eNLgUAYCeEKgAAnCgzM1O7du2qciPrAQDKRqgCAAAAABsQqgAAAADABoQqAAAAALABoQoAACcKCQnRlClTFBISYnQpAAA7YZ4qAACcKCAgQP379ze6DACAHRGqAABwojNnzmjlypWKi4tTYGCg0eU4jbe3t1q2bCl/f3+5uroqKytLf/zxh5KTk8t9jJdeekmrVq3Sxo0bHVgpAFiPUAUAgBMlJSVp0qRJatOmTbUPVR06dNDw4cN1/fXXq3nz5nJ1dS2xzYkTJ7R161YtWrRIixcvVm5ubqnHmj59usaOHasxY8YoLi6OYAWgUuGZKidISUnR+PHjFRERIbPZrAYNGmjMmDHKyMjQ8OHDZTKZNHPmTKPLBADALu68805t3bpVmzdv1siRI9WyZctSA5Uk1a9fX/3799f8+fN1/PhxvfTSS/Lx8Sm2zcVAJUk+Pj6KiIhw+DUAgDVoqXKwnTt3Ki4uTsnJyfLx8VGLFi104sQJzZgxQwcPHtSZM2ckSW3atDG2UAdJ2LtOS17prs53TVNsnydL3ebNe0wKa9NHA55c7uTqjFdYWKgvfnpT32yareSzRxTgU0c3tL5TQ2/5l7w8fK58AACoRIKCgjR79uwSz4zl5eVp9+7d2r59u06cOKHCwkLVqFFDMTExio2NVUBAgCSpbt26eu655zRkyBDdf//9WrduXbFAVVhYqAceeEAfffSRsy8NAC6LUOVAKSkp6tevn5KTkzV27FhNnDhRfn5+kqSpU6dqwoQJcnNzk8lkUkxMjMHVwgjvfP2Evvxphjq1vFUDu47VsZP79OVPM3QwcYemjPxeLi40JgOoGrp3767FixcX69K4ZcsWvf322/rss8+UmZlZ6n4mk0mdO3fWqFGjNHDgQLm7u6tx48Zau3atNm/erGuvvVbS/wLVhx9+6JTrAQBr8InNgR577DElJCRo9OjRmj59uiVQSdL48ePVunVr5efnKywsTP7+/gZWCiMcSd6jrza+pc4tb9MLQ5eq97Uj9FD/1/VQv9e18+Bardv1qdElAnAAHx8fderUqUQXt6rslltu0YoVKyyBKjk5Wbfeeqs6dOigefPmlRmoJKmoqEgbNmzQ3XffrWbNmmn9+vWWdQQqAFUFocpB9u3bp0WLFql27dp69dVXS90mNjZWktS6detiyw8fPqz+/fvLz89PNWvW1H333ac///zT4TXDudbuXKiioiLd1uXxYst7XztCZndvfb/9E2MKA+BQYWFhmjNnjsLCwowuxS7at2+vpUuXymw2S5KWL1+u6Ohoffnll1Yf69ChQ+revbvWrVtXbPny5csJVAAqNUKVgyxcuFCFhYUaMmSIfH19S93Gy8tLUvFQlZaWpu7duyshIUELFy7Ue++9pw0bNqhv374qLCx0Su2OkJ+bqay0lFJ/Xa1+P75FLiYXNW3YodhyD3ezmtRvoz+ObzGoMgCOVFBQoPT0dBUUFBhdis28vLz0ySefyNvbW5L0+eef69Zbb7U8L1wR06ZNU7du3SRdaMWSpL59++r666+3uV4AcBSeqXKQNWvWSLrQx7wsCQkJkoqHqvfee0+JiYn68ccf1bBhQ0lSaGiorr/+ei1btkx/+9vfHFe0A21aMlGblkw0uoxK5c/zJ+TvU1sebp4l1tWuEaK9R39WXn6u3N08DKgOgKPs379fAwcO1OLFixUdHW10OTaZNGmSoqKiJEmbNm3SkCFDlJ+fX+Hj/XVQiqVLl2rgwIFycXHRhx9+qDZt2igrK8sutQOAPRGqHOTo0aOSpEaNGpW6Pj8/3zLHxqWhavny5ercubMlUElSx44d1aRJE3399dcVClXt2rWzanJFSXJ199Ktk+KtPldZWnYfqchr7yh13ReTe9rlHFGRkSrIqzz/2Xq4eem90WXfw5zcTLmXEqgu7HuhG01OXiahCleNyKhI5eZXnp/h8ho2bJhV2yclJUmSVqxYoR07dpRrn3nz5llZle2u1DsiIiJCjz/+uCQpOztbw4YNU15eXoXPV9Yofz/99JM6duyoqKgoPfbYY5oyZUqZx4iMjGSAHwAVFhQUpK1bt1ZoX0KVg2RkZEhSmd+oLVq0SCkpKfLz81Pjxo0ty/fu3as77igZPqKjo7V3794K1ZKcnKzExESr9nHz9K7QucoSEBSphi172PWYf3Ui6YTyc8p+GNrZzO6Xv4eeHt7KSj9V6rrc/OwL21zhGEB1knTihLLzKs/PcHldbhCG0mRnZ1t+L+++1v4b7gyjRo2yBJiXX35Zv//+e4WPVVqguvgM1fDhw/Xbb7/JxcVFo0aN0rRp08oMfBcDKwA4G6HKQYKCgnT27Flt375dHTt2LLYuKSlJ48aNkyTFxMTIZDJZ1p09e9YyX8elAgMDK/wfVlBQkNX7uLp7VehcRqofXL/StVRdTi3/+jp2cq9y83NKdAFMOZeoGj61aaXCVSW4fv0q2VJ18Xmi8ro4oIPZbC73viEhIVbXZavCwsIyQ4qXl5f+/ve/S7oQDt9+++0Kn+dygUq6MPDTypUr1adPHzVq1Ei9e/fW8uWlz2sYHBxMSxWACqvIZ+aLCFUO0qNHD+3bt09TpkxRz549LX3Ot2zZonvvvVcpKRcGaHDGpL8VacbMyZcmLHJAMQ70R3y8PCvRO7ogV1o7o+z1TRu017Y/vtPvx35RqyZdLMtz87J16MROtWpygxOqBCqP+D/i5VoFv0fYv3+/Vdvv2bNHc+fOVe/evcv9TNWkSZMqUppNMjIyyhxoqVu3bqpZs6akCz0vKjowxZUC1UXvvPOO+vTpI0m6/fbbywxV8fHx1WqoegBVB1/nOMj48eNVq1YtHT9+XNHR0WrVqpUiIyPVoUMHNWnSRDfeeKOkksOp16xZU6mpqSWOd+bMmWITKqLq69Z6kEwmk5Zu+L9iy1dsfl/ZeZm6se0QYwoD4FBRUVHauHGj5cu2qqhdu3aWP69cubJCxyhvoJKkH374wfK81sXpSACgMiFUOUhoaKg2bNigPn36yGw268iRIwoMDNTs2bP1zTff6I8//pBUMlQ1b9681Gen9u7dq+bNmzuldjhH4+BW6n/9I/rpt6V64aPbtGLzHL379Vi9+/U/FNOkq25se7fRJQJwAHd3dwUGBsrd3d3oUirs0mCzbds2q/e3JlBJF7oY7tmzR5LUokULy5QkAFBZEKocqHnz5lq+fLnS0tKUlpamzZs3a+TIkcrIyNCRI0fk4uKili1bFtunb9+++umnnyzDrUvS5s2bdfDgQfXr18/ZlwAHG9X//zSy73QdPblHM794ROt2fqq/dXpUk+5fznMBQDV17NgxPfzwwzp27JjRpVRYRESEpAuDMR08eNCqfa0NVBft3r1bkuTq6lptJk4GUH1UoidQrh579uxRUVGRoqKiSjykPHLkSL311lsaMGCAXnzxRWVnZ2v8+PHq0KGDBgwYYFDFFRfaopvGfFJ02W2utL46c3Vx1R1dx+qOrmONLgWAk6SlpWnt2rV65JFHjC6lwjZt2qRTp04pJyfHMkFveTz33HMVClTShVD1448/KisrSzk5ORWqGwAchVBlgIvftv21658k+fv7a82aNRozZowGDx4sNzc39e3bV2+88QYtFwCASuGBBx6o0H6LFi3SqFGjFBQUZFWgkqRp06Zp2rRpFTovADgaocoAlwtVkhQeHl7myEYAAFRV8fHx6tatmzp06KD58+cbXQ4A2A2hygBXClUAAFRX8fHxio+PN7oMALArQpUB1qxZY3QJAACD1KtXTxMmTFC9evWMLgUAYCeEKgAAnKh27doaNmyY0WUAAOyIkQ8AAHCic+fOadWqVTp37pzRpQAA7IRQBQCAEyUkJOiJJ54oNh8hAKBqI1QBAAAAgA0IVQAAAABgA0IVAAAAANiAUAUAgBOZzWY1b95cZrPZ6FIAAHbCkOoAADhReHi4li5danQZAAA7oqUKAAAAAGxAqAIAwIn27t2rmJgY7d271+hSAAB2QqgCAMCJioqKlJeXp6KiIqNLAQDYCc9UoVQertKUQUZXYR0PV6MrAIDqw9vbW+np6XY73rTZn+p8Rqb8fbw17sHBJV7bg7e3t12OAwDWIlShVCaT5Mm7AwCuWiaTST4+PnY7noenWR55BfLwNMvHx6fEawCoyuj+BwAAAAA2oC0CAAAnCg8P17Jly9SgQQOjSwEA2AmhCgAAJzKbzYqMjDS6DACAHdH9DwAAJ0pMTNRzzz2nxMREo0sBANgJoQoAACdKTU3VkiVLlJqaanQpAAA7IVQBAAAAgA0IVQAAAABgA0IVAAAAANiAUAUAgBPVrl1bI0aMUO3atY0uBQBgJ4QqAACcyGQyycPDQyaTyehSAAB2QqgCAMCJTp8+rVmzZun06dNGlwIAsBNCFQAAAADYgFAFAAAAADYgVAEAAACADQhVAAA4UY0aNdSvXz/VqFHD6FIAAHbiZnQBAABcTUJDQzV16lSjywAA2BEtVQAAOFFOTo6OHj2qnJwco0sBANgJoQoAACc6cOCAevXqpQMHDhhdCgDATuj+h1IVFUm5BUZXYR0PV4m5NAEA9lJUVKTMzEyjyyg3b29vJpUGDEKoQqlyC6QJi4yuwjpTBkmevKMBAHaSmZkpX19fo8sot/T0dPn4+BhdBnBVovsfAAAAANiAUAUAAAAANqCzFAAAThQdHa19+/YZXQYAwI5oqQIAAAAAGxCqAABwosOHD2vw4ME6fPiw0aUAAOyEUAUAgBNlZmZq165dVWqobgDA5RGqAAAAAMAGhCoAAAAAsAGhCgAAAABsQKgCAMCJQkJCNGXKFIWEhBhdCgDATghVAAA4UUBAgPr376+AgACjS0EV4+3trbZt2xpdBoBSMPkvAABOdObMGa1cuVJxcXEKDAw0uhw4WP369dWjRw/FxsYqNjZWoaGh8vT0VG5urpKTk7Vt2zZt27ZNa9asueww+97e3vrmm28UGxuruLg4bdy40YlXAeBKaKlygpSUFI0fP14REREym81q0KCBxowZo4yMDA0fPlwmk0kzZ840ukwAgBMkJSVp0qRJSkpKMroUONCNN96oxYsX6+jRo/roo4/02GOPqVOnTmrUqJGCgoLUsGFDdejQQaNGjdKcOXN06NAhrVixQn379pWLS/GPZxcDVbdu3eTn56cFCxbIw8PDoCsDUBpaqhxs586diouLU3Jysnx8fNSiRQudOHFCM2bM0MGDB3XmzBlJUps2bYwt1EES9q7Tkle6q/Nd0xTb58lSt3nzHpPC2vTRgCeXO7k6Yy1c86riE7crPmGbks8cVr2ajfTJM0eMLgsAYIMGDRpozpw5uvnmm0tdf+rUKWVlZcnT01NBQUHF1sXFxSkuLk6bNm3SsGHD9PvvvxcLVJKUmpqq2267Tbm5uY6+FABWIFQ5UEpKivr166fk5GSNHTtWEydOlJ+fnyRp6tSpmjBhgtzc3GQymRQTE2NwtXC2uSufkZ93oCJDrlFGVqrR5QAAbDR06FDNmDFD/v7+lmUnTpzQ3LlztW7dOm3fvl1nz561rPPz81Pbtm3VuXNnPfDAA2rcuLEk6brrrtPOnTv14osv6pZbbikWqHr06KFt27Y59boAXBmhyoEee+wxJSQkaPTo0Zo+fXqxdePHj9eCBQu0a9cuNW7cuNg/wLg6fPzUQQXXaiJJGjG9pbJy0w2uCABQUc8++6wmTZpkeZ2QkKBx48Zp8eLFys/PL3WftLQ0/fjjj/rxxx81efJk9e7dW6+99pqioqJkNpv16quvWrYlUAGVG89UOci+ffu0aNEi1a5du9g/ipeKjY2VJLVu3dqy7GII69Chgzw9PWUymZxSL5zvYqACcHXx8fFRp06d5OPjY3QpsJNx48YVC1Rz585Vy5Yt9emnn5YZqP6qsLBQy5cvV5s2bTRjxoxi67KzswlUQCVHS5WDLFy4UIWFhRoyZIh8fX1L3cbLy0tS8VB14MABLVmyRO3bt5eHh0e1Gd0nPzdTWWkpRpcBAIYLCwvTnDlzjC4DdtK9e3dNnTrV8vrJJ5/Ua6+9VuHjlfZIgNlsVkREBKEKqMQIVQ6yZs0aSRf+sS1LQkKCpOKh6oYbbrCMCPXCCy9Um1C1aclEbVoy0egyAMBwBQUFysrKkpeXl1xdXY0uBzbw9fXV3LlzLa+ff/55mwLVXwelyMzMlLe3tyRp5syZWrt2rU6dOmVTzQAcg1DlIEePHpUkNWrUqNT1+fn5lsB0aaj66zCq1UXL7iMVee0dpa77YnJPJ1cDAMbZv3+/Bg4cqMWLFys6OtrocmCDl156SWFhYZKkdevW6eWXX67wsUob5a9Hjx4aN26cBg0apNq1a+vNN9/UXXfdZYfKAdgbocpBMjIyJElZWVmlrl+0aJFSUlLk5+dnGe3HUdq1a6fk5GSr9nF199Ktk+LtVkNAUKQatuxht+OVJioyUgV5pd9vI3i4eem90fa7h0B1FxkVqdz8yvMzXF7Dhg2zavuLvRFWrFihHTt2lGufefPmWVlV5XPr3x+Xj6+/kpKTFBoaWuJ1ZVRYWFjmuho1amjEiBGSLrQoDR8+XEVFRRU6T1mBatu2bRo9erRuvPFG1alTR3feeaeeeuopyxe3fxUZGVltv5wFnCEoKEhbt26t0L6EKgcJCgrS2bNntX37dnXs2LHYuqSkJI0bN06SFBMT4/DBKJKTk5WYmGjVPm6e3g6qxnFOJJ1Qfk6m0WVYmN2r3j0EjJR04oSy8yrPz3B5ZWZaV3N2drbl9/Lua+2/4ZVRYUGB5ffExMQSr6ua++67zzLYyNy5c3Xo0KEKHedygUq6MD3Lm2++qUmTJsnFxUUjR47Us88+W+qxmFAaMA6hykF69Oihffv2acqUKerZs6eioqIkSVu2bNG9996rlJQLgzY4Y9Lfv04uWB6u7l4OqMSx6gfXr3QtVQDKL7h+/SrZUnXxmZfyMpvNlt/Lu29ISIjVdVU2Lv99fszF1VUhISElXldGhYWFZQaV+++/3/Lnd955p0LHv1KgumjOnDmaOHGi3N3ddf/995cZqoKDg2mpAmxQkc/MFxGqHOTiPFTHjx9XdHS0mjVrpuzsbB04cEBxcXEKCwvTt99+W+x5KkepSDNmTr40YZEDinGgP+Lj5VmJ3tEFudLaGVfeDsAF8X/Ey9XD6Cqst3//fqu237Nnj+bOnavevXuX+5mqS4frrqpemTVf59MzFBwUrISEhBKvK6OMjIxSR/D18fGxjNC3Y8cO7d271+pjlzdQSdLJkyf1/fffKy4uTkFBQQoLC9ORI0dKbBcfH89Q/YBBKtFH0OolNDRUGzZs0Lhx47R+/XodOXJELVq00OzZszVixAiFh4dLklNCFSqn1dv+rVNnL/SLT804rfyCXM3//sIHp7o1G6ln7L1GlgfAQaKiorRx40b5+fkZXQoqqE2bNpYWoS1btli9vzWB6qItW7YoLi5O0oV5LksLVQCMQ6hyoObNm2v58uUllqenp+vIkSNycXFRy5YtDagMlcGqXz7Qr4fWF1s279vnJUkxTboSqoBqyt3dXYGBgUaXARtcOo/U9u3brdq3IoFKUrH1rVu31pIlS6w6LwDHIlQZYM+ePSoqKlJUVFSp/ekXL14sSZbuBBdfh4WFqV27ds4r1A5CW3TTmE8uPxrSldZXV6+NWmd0CQAMcOzYMU2ePFlPPfWUGjZsaHQ5qAB/f3/Ln60ZXbeigUq60AXwIlo5gcqHUGWA3bt3Syq7698dd9xR6uuhQ4dWi2F1AeBqlpaWprVr1+qRRx4xuhRU0MyZMzV//nyZzWarQlW9evUsA1dZE6gkadeuXYqKilJ2drZSU1MrUjYAByJUGeBKoaqi81wAAADHy8jIsMxHaY3Dhw+rW7du+uKLLzR06NByByrpwhD88fHMfQhUVoQqA1wpVAEAgOopPj5eMTExl51YGEDVQ6gywJo1a4wuAQAAGIRABVQ/zBAHAIAT1atXTxMmTFC9evWMLgUAYCe0VAEA4ES1a9fWsGHDjC4DAGBHtFQBAOBE586d06pVq3Tu3DmjSwEA2AmhCgAAJ0pISNATTzyhhIQEo0sBANgJoQoAAAAAbECoAgAAAAAbEKoAAAAAwAaEKgAAnMhsNqt58+Yym81GlwIAsBOGVAcAwInCw8O1dOlSo8sAANgRLVUAAAAAYANCFQAATrR3717FxMRo7969RpcCALATQhUAAE5UVFSkvLw8FRUVGV0KAMBOeKYKpfJwlaYMMroK63i4Gl0BAKA68fb2Vnp6ul2ONW32pzqfkSl/H2+Ne3Bwmcts4e3tbfMxAFQMoQqlMpkkT94dAICrmMlkko+Pj12O5eFplkdegTw8zZZjlrYMQNVE9z8AAAAAsAFtEQAAOFF4eLiWLVumBg0aGF0KAMBOCFUAADiR2WxWZGSk0WUAAOyI7n8AADhRYmKinnvuOSUmJhpdCgDATghVAAA4UWpqqpYsWaLU1FSjSwEA2AmhCgAAAABsQKgCAAAAABsQqgAAAADABoQqAACcyMXFRe3bt5eLC/8FA0B1wb/oAAA4UWFhobZs2aLCwkKjSwEA2AmhCgAAAABsQKgCAAAAABsQqgAAAADABoQqAACcqEaNGurXr59q1KhhdCkAADtxM7oAAACuJqGhoZo6darRZQAA7IiWKgAAnCgnJ0dHjx5VTk6O0aUAAOyEUAUAgBMdOHBAvXr10oEDB4wuBQBgJ3T/Q6mKiqTcAqOrsI6Hq2QyGV0FAADVQ1FRkTIzM40uwyre3t4y8WEABiBUoVS5BdKERUZXYZ0pgyRP3tEAANhFZmamfH19jS7DKunp6fLx8TG6DFyF6P4HAAAAADYgVAEAAACADegsBQCAE0VHR2vfvn1GlwEAsCNaqgAAAADABoQqAACc6PDhwxo8eLAOHz5sdCkAADshVAEA4ESZmZnatWtXlRuqGgBQNkIVAAAAANiAUAUAAAAANiBUAQAAAIANCFUAADhRSEiIpkyZopCQEKNLAQDYCfNUAQDgRAEBAerfv7/RZQBVkouLiwoLC40uAyiBUAUAgBOdOXNGK1euVFxcnAIDA40uB3CKBg0aKDY2Vs2bN5e3t7eKioqUnp6u3bt3a9u2bTp16tQVjxEREaFly5ZpxIgR2rhxoxOqBsqPUAWgXL7dMk/TP/u7pj+0Vq3DuxldzlWl5ziTesYO1fjB84wuBXaQlJSkSZMmqU2bNoQqVGsRERF66KGHNGTIEAUFBV1220OHDmnevHl6//33lZycXOqx1q5dq9DQUK1cuVI9evTQL7/84qjSAavxTJWTpKSkaPz48YqIiJDZbFaDBg00ZswYZWRkaPjw4TKZTJo5c6bRZdpdwt51evMek7Z9M73Mbd68x6Svpvd1YlWVQ8LpPzTv23/q0beu08AX6qj/c3568PU2mv/Dy8rKzTC6PAAAKqRJkyZavny54uPjNXbs2CsGqov7/Otf/9KxY8f00UcfqXbt2pZ1lwYq6cIE2ocOHXJY/UBF0FLlBDt37lRcXJySk5Pl4+OjFi1a6MSJE5oxY4YOHjyoM2fOSJLatGljbKFwqlVb5mrZz7PUsUV/3dR2iFxd3bXr4FrNW/Wcftz1mWY8ukme7l5Gl4lK4JtXsuTi4mp0GQBwWSaTSY888ogmT54sHx8fy/Ls7GytX79eW7du1c6dO3X27FmZTCbVrVtX11xzjdq3b69OnTrJ1dVV7u7uuu+++9SrVy89/PDD2rVrV7FA9euvv+qmm25SSkqKUZcJlIpQ5WApKSnq16+fkpOTNXbsWE2cOFF+fn6SpKlTp2rChAlyc3OTyWRSTEyMwdXCmbq0Gqi7uj8tH68almX9Oj6kkNqRWvDDy1r5ywf6W6fRVh+3oLBAefk5Mnt427NcXKKoqEjZuRny8vR1yvk83M1OOU9FOPteAKicPDw8tGDBAt1+++2WZceOHdNbb72luXPnWr5A/qsFCxZIuvDM1ciRI/Xwww8rMDBQdevW1eLFi5WWlmb53ESgQmVGqHKwxx57TAkJCRo9erSmTy/eBW78+PFasGCBdu3apcaNG8vf39+gKmGEpg3albq8W+tBWvDDyzqS/NsVj3HxOacpI1Zr79H/6Lut83Qq9ZieGPi+bmh9hxZ8P0nrd32mlHMJ8vWqqdiomzWs10uqV7NRseMUFRVp5S9ztHLzHB05uUeSFBTYWJ1a3qpht/zrsjXM/+FlzVv1nAZ0Gq2H+78pF5eyexV//N0L+vfqF/X+2N/0zabZWr/rM2Vkn1OT4Bj9Pe4VXRN5U7Ht1+1cpB92zNfBEzuVmnZSXp5+atm4s4be/C81qV/8S4h7XglTvZpheqjf63pv+ZPaf/wXubt66LoW/TSi7zTV9K1bbPvc/BwtXv+a1uyYrxN/HpSHm1mtGnfR0Fv+pYiQtpbtdh1cpyff7a4n7/xQ2bkZWvbzLCX9eVCDb3xa9938QqnXmZuXrU/XTtbanQt1OvW43Fw9VCeggdo37aWRfacV23bngbX6fP107Tu2Sdm5GarlX19twrvrgT5TVMPnQveX0p6p2rzvGy1aN1VHk/coOzdDNXzrKCq0nR7oPVmhdaIkSadSj+vj7yZqR/wPOpuWLB9zDdWvHaE+1z2om9sNtRwrKzejXO+VK92LI8l79PHqF7T3yM86n5EiX6+aalivue7o+qSubd6nzPfF1cbHx0edOnUq9k0+UJW5u7tryZIl6tv3f135Z82apQkTJigjo3zd2Y8fP67nn39eb731lt555x3ddtttkkSgQpVBqHKgffv2adGiRapdu7ZeffXVUreJjY3Vrl271Lp1a8uyxYsXa+HChdq6datOnz6thg0b6vbbb9fTTz8tX9+q+W1wfm6mstL4h7A8Tp9LkCTV9K1X7n1mL39SBYV56n3tCHmb/VW/Vriefv8W7TmyUV1iBmpg17FKTInX1/95R9v++E6zxmxVnYBQy/5TFt6rH3bMV7OG1+rum56VrzlAx07v14ZfF5cZqgoKCzTzi9FavuldDY97VYNvfKrc9U799D65uLhqUPcJysxJ0zebZuuZOb30yvCVuiaqh2W7r36eKX/vWupz7UjV9AtS0p8H9c3m9/T425309pjtCq0TWey4KecSNP69m9S51e3qEjNQ8Ynb9e2WufojYatmPrbF0nqXX5CnZ+b00t4jP+um2Hs14PrRysg+pxWb39fjszrptVE/lgi9Szf8n9Iy/1TctSMU6BekOgENyry+t754RKu2zFXP2Pt0e5d/qKAwX4kp8dp5YE2x7Zb/Z7ZmfDFKtf1D1K/jKNWr2Uinzh7Tf/Z+rdOpCZZQ9Ve7Dq7XPz/sr7Cglhp849Py9QrQn+dOaPuB75WYckChdaJUUJCvp97rqZTzierX8WGF1olSRtY5HUr6VbsPb7CEqvyCPKveK2Xdi/MZf2rc7BslSX2ve0j1ajbSuYwU/ZGwVfuObSZUXSIsLExz5swxugzAbmbOnGkJVBkZGbrjjju0cuXKCh3r1KlTmjBhgrp3766aNWtaln/xxRcEKlRqhCoHWrhwoQoLCzVkyJAyw5CX14VnZi4NVdOnT1fDhg31yiuvKDQ0VDt37tSLL76o9evX68cff7xsS0BltWnJRG1aMtHoMiq9gsICzf/+Jbm6uOnGtneXe7/c/Cy98/gOS2hYsfl97TmyUXd2HacRfadatrsmsoeem9tXH6x8Wk/d9W9J0vpdn+mHHfN10zX3aPygj4q9v8qaCyQnL0uvzr9bm/d/o/GDPlLPdvdZdZ2uLm56/eENcnfzkCT1an+/7p/WTDO/elRzx+2zbPfKA6vk5VH82/wesfdp1BtttHTDG3rstreLrTvx50GN6v+GbuvyuGVZWL1ovfv1P/TlTzMswe+rjTO16+A6vfLAKrVveotl237XP6wRr7XUe8uf1Guj1hU79unUY/pg/P4SLV6l2fjbF2rfLE7jB39U5janUxP09lePqUGdZnpz9M/y9QqwrBvW66XLzsPynz1fqbCoUJNHri5Wzz09n7f8+ejJvTp++nc90HuKBnUfX+axvts6r9zvlf/VXvJe/LxnmVLTT+m5exapa+s7yzwfpIKCAmVlZcnLy0uurjwrh6otLi5OI0eOlCRlZWWpT58+Wr9+fYWPd3FQiksDlSQ99dRT+vzzz7Vnzx6b6gUcpep9Oq9C1qy58K109+7dy9wmIeFCq8Sloerrr7/WZ599piFDhqhr164aM2aMZs6cqY0bN+qnn35ybNEO0rL7SN361OpSf+F/3ln2uPYe/Y+G3vIvNajbtNz79es4qtgzVD/99oVcTC4afOPTxba7tnkfhddvc+FD+X8/tP+wfb4k6cG+00sE9tIC/PnMM5rwXk9tP/C9/vX3r60OVJJ02w1PWAKVJNUJCNVNbYfo+Kn9Onryf6HqYqAqKipSRvZ5nctIUYBvHYXWaar9xzaXOK632V/9Oj5cbFm/6x+Wt9lfG3/7wrLsh+2fqEHdZooKjdW5jBTLr/yCXMVG9tRvR35STl5WseP0iL2vXIFKknzMNXQ0eY8OX6YL54+/fq68glzd23NisUB10eW+PPExX3gO76dfl6igIL/0bf77rN6ug2t1Nr3s+V+sea9cVNq9uFjTL/tXKiP7fJnng7R//361b99e+/fvN7oUwCY1atTQe++9Z3n96KOP2iVQXTooxVtvvSVJ8vT01IcffsgXEai0aKlyoKNHj0qSGjVqVOr6/Px8y+R1l4aqOnXqlNi2XbsLXZESExOtrqNdu3alzvlwOa7uXrp1UrzV5ypLQFCkGrbsceUNbRAVGamCv3wQNpKHm5feG13+ezhv1fP6auNM9bl2pO76ywfcKwmpHVXsdfKZw6rlX19+3jVLbBtWL1oHT+zUucwU1fStq8SUeAX6B6umX/m6G05fNExZuel6fdSPatm4c4n15zPPKD8/t9iyQP/iw+k2rNu8xH4N67X4b+2H1KjehfUHEndo3rfPa9fBdcr+yzDzQYGNSxwjOLBJsbAmSR5ungoObKKkM/8bfvfYqX3KycvSwBdK/qxddC4jRXUv6eJ38TmlizKyzpUIXjV868jVxVWj+v+fpnx6r0a+1krBgU3UOqK7Ojbvp+ta9LOEpcSUC++NS5/fKq8BnUbr571facYXD2vOigmKbtxZ7Zv2Uvc2dynA98I11avZSHff9Kw+XfOqBv8rWOH126htxE26ofUdatqgveVY1rxXyroXktQ6vKt6xt6n77bO05od8xUV2l7XRPZQtzaD1Oi/f7dXEhkVqdz8yvMzXF7Dhg2zavukpCRJ0ooVK7Rjx45y7TNv3jwrq6p8bv374/Lx9VdScpJCQ0NLvK7uSrveyn4PLtdiLkkPP/ywpe5vv/1WH3zwQYXPVVqguummm5SWlqYePXqoefPmat++vW699VYtXry4zONERkZWyR49qByCgoK0devWCu1LqHKgiw9nZmWV/iFh0aJFSklJkZ+fnxo3LvkB8VJr166VJDVvXvLD6JUkJydbHcbcPKveyHEnkk4oPyfT6DIszO7lv4cff/eC5v8wSbe0/7vG3P6u9edy4kh/XVsP0rdbP9Qn37+kF4d9WWLY9xc/uk2/Hir+TeXqaUVWn+fU2WP6xzs3yNvTX0N6PK8GdZrK7OEjk0x6Z9njyspNr/A1FBUVqXFQKz3U7/UytwnwKR64PP/y9znrqzFava14975/P31YQYFhur7lAP37mSP6Zd8K/XpovXbEf69Vv3ygVo27aMrI70sEP2v5+9TSzMe26LfDG7Ttj9XaffhHvbvsCX383US9fP8KtQjrKEn6e69J6tX+fm3e9412H96glb/M0Wfrp+nObuM1os+UCp//r/fiovGDP9Id3cZpy/6V2n14gxb/+JoWrHlZo/r/X7lGskw6cULZeZXnZ7i8MjOtqzk7O9vye3n3rcgXapVNYUGB5ffExMQSr6u70q63Kt8DFxcXPfTQQ5IuhK+HH374CnuUraxAdfEZqscee0yrV1/o2fLwww9fNlRd/NICcDZClQMFBQXp7Nmz2r59uzp27FhsXVJSksaNGydJiomJkclkKvM4iYmJev7559WrV68KzWVVnkn3/sq1Cs6PVD+4fqVrqSqPiyPi9Ywdqn8MnHPZ90J5BQc20dbfVyk9K7VE17Kjp/bK2+yvGt4XBkEIrROln/d8pbNpJ8vVWnXTNUPUNvImTVl4r56b21cv/f3rYqHuwX6vKT3z7GWPcezUPoXXb1182cm9kqSgwCaSLnRLy8pJ17+GLVObiOJdaM9n/il3N88Sx006c0h5+bnFQktufo6SzhxSwzrNLMtCakfqXMZptYm4scLfaA7qPl49rrmn2LJAv//9rPl7B6pH7D3qEXuPioqKNGfFU/ps3VT9vOcrdW19h6W15+CJnaW2/FyJq4urWod3U+vwbpKkQyd+1cNvxmr+D5P08vBvLNsF12qiv3V+VH/r/Khy87L11Jxb9Nm6qRrYdaxq+ta16r1SHo2DWqpxUEvd2W2c0rNS9ehb1+qDFU9pwPWPXPG9HVy/fpVsqfL2tu5LDbPZbPm9vPuGhIRYXVdl4/Lfblsurq4KCQkp8bq6K+16K/s9KCwsLDOk9O7dWw0bNpR0odW1opPxXilQSdL333+v/fv3q1mzZurevbuaN2+uffv2lXq84OBgWqpQYRX5zHwRocqBevTooX379mnKlCnq2bOnoqIufHDasmWL7r33Xss/GJcLSunp6RowYIA8PDw0d+7cCtVRkWbMnHxpwqIKnc4wf8THy7MSvaMLcqW1My6/zb9X/0v/Xv2ielxzr568c67d/iPo1PJv+mX/Cn26drIe6D3ZsvyX/St1IHGHbrrmHsu5bmw7RD/v+UrvfzNeT975YbEaioqKSv0g3L3NYLm6uOnVBXfrmQ/i9PL931jmKYoKjb1ifUt/fEOdW95mCT+nUxO0ZucCNajT1NL17+Jkt0Uq3sq1YvP7OpOWXGJYeEnKzD6vr//zdrGBKr7++W1lZp/X9S3/ZlnWM/Y+vffNOC358XXd0e3JEscpT8BsVK9Fqd3aCgoLlJWTViygmEwmSze/tMwLc7V0aTVQc76ZoH+vflHtmvaSj7n4lApl3XvpQtfEv44M2KBuM3m6e1mOn5F1Tp4e3nJzdbds4+FuVsO6zbX70I9Kzzyrmr51rXqvXM75zDPyNQcU29bXK0BBNRsrMSVeufnZV5zMOv6PeLna1ohnCGufjdqzZ4/mzp2r3r17Kzo6ulz7TJo0qSKlVSqvzJqv8+kZCg4KVkJCQonX1V1p11vZ70FGRkaZA23dcsv/Bvm59Lkqa5QnUF30/vvv67XXXpMk9ezZs8xQFR8fz3QFMEQl+gha/Vych+r48eOKjo5Ws2bNlJ2drQMHDiguLk5hYWH69ttviz1PdamsrCz169dPhw8f1oYNGxQcHOzkK4AjfbVxlj7+bqLqBjTUNZE9tGbHgmLra/rVU2xUzwod++Z2w/Td1o+0aO0UnTxzRK2a3KATKQe07D9vq6ZvPd0f94pl266t79BPuwdp9baPlZgSr44t+svXq6YSUv7Qtt+/1ftPlj7Ywg0xA+Xm4q5Jn9ypp96/Ra88sLJEMChLQWG+/vF2F3Vve5cys9O0fNO7ysnL0sMD/pdCOzSN0wfu3pqy8F4N6DRavl41tefIRv2yf4Xq1wpXQWHJARrq1wrXv1e/qMPJvykqJFZ/JG7Tt1vmqkHdZvpb58cs293aZYy2xa/We9+M046Da9Q2/EZ5m/11KvWYdsT/IA93s6Y/tLa8t7uYrJw0DfpXsDpG91dE/bYK8K2r5DOH9fV/3pGfV01d16KfpAuDc4zq/39668tHNPK1VuoZe5/q1mykP88l6ue9X2nsHXMVEdKm1HO88fkInT6XoNiom1WvZiPl5GVp/a5FysxJU8/YCwOH7Dy4Vv+3eKQ6t7pdDeo2ldnDV/EJ27Tylzlq1vBay0Ao1rxXLuf7bR9ryY9vqFPLW1W/doTcXNz166H12vrHt+ra+s4rBqqrSVRUlDZu3GiZfweoimJj//cF2o8//mj1/tYEKknFBsC49NxAZUGocqDQ0FBt2LBB48aN0/r163XkyBG1aNFCs2fP1ogRIxQeHi5JpYaqvLw8DRw4UFu3btUPP/ygFi3K96A3qo7fj2+RJJ1KPaapi4aWWB/TpGuFQ5Wbq7teHfGtFnw/Set2LdJPvy2VrzlAN8Tcob/3mlRsAAZJevruBWrZuItWbflAn3z/L7m4uCqoZmPdEHPHZc9zfcsBmjh0qV78+HY99f7NmvzAt5ZR5y5n/OCPtXzTu/p0zWSlZ6eqSXCMxg2aV+x669cO18sPrNTclc9o4ZpX5GJyVXRYJ702ar1mfjFaJ88eKXHc2jVC9dw9n+m95U9q3Y6FcnPz0I1th+jBvtOLDc3u5uqul+//Rsv+87a+3/ZvffzdheH+A2vUV7MGHdQztuTfR3l5unvrti6Pa8eBH7Q9/ntl56Qr0P9CyBrc/WnVrlHfsm2/60cpuFa4Pl8/TV9snKG8/BzV8q+vthE3lfg7utRNsffqu63ztHrbRzqXflreZn81rNdC/7x3sbrE3C5JalK/tTq1uk27Dq3Tmh3zVVhYoDo1G+quG5/RHTeMLXYvrHmvlCWmSTcdSNyhzfuW68z5pAvvocDGGtl3ugaU43mqq4m7u7sCAwONLgOoMFdXV0svmwMHDujcuXNW7W9toJKk3bt3Kzc3Vx4eHoQqVEqmoqIi658gh83S09Pl7+8vk8mktLS0Yv3qCwsLNXjwYC1btkwrVqzQjTfe6PT6qmL3vymDVOW6/11tLj4/dnFAB3u655Uw1asZVmJ+KVQd3R/TVdH979ixY5o8ebKeeuopyzMpV9KsWbMrb1TJXezq5u/ro2ceGVLidXVX2vVW9ntQVve/WrVqWQLQihUr1KdP+Sf3rkiguuj3339XVFSUzpw5o1q1apW6TXp6Ot3/YIhK9BH06rJnzx4VFRUpKiqqxIPKjzzyiD7//HM99dRT8vb21qZNmyzrwsPDSx1yHQBQNaSlpWnt2rV65JFHjC4FqJDs7Gw9++yz8vLyUny8ddOvzJ8/v0KBSpLeffddBQQEKC0tzeqaAUcjVBlk9+7dkkrv+rdy5UpJ0uTJkzV58uRi6z788EOr50QBAACwl4yMDL3ySvmet/yre+65R+vWrVNKSopVgUqS3njjjQqdE3AGQpVBLheqjhw54uRqAAAAHC8+Pl5du3ZVamqqVYEKqOwIVQa5XKgCqqv7bn5B9938gkOO/ckzRxxyXACAfR04cMDoEgC7I1QZZM2aNUaXAAAwQL169TRhwgTVq3flybYBAFUDoQoAACeqXbs2z8YCQDXjYnQBAABcTc6dO6dVq1ZZPbcPAKDyIlQBAOBECQkJeuKJJ5SQkGB0KQAAOyFUAQAAAIANCFUAAAAAYANCFQAAAADYgFAFAIATmc1mNW/eXGaz2ehSAAB2wpDqAAA4UXh4uJYuXWp0GQAAO6KlCgAAAABsQKgCAMCJ9u7dq5iYGO3du9foUgAAdkKoAgDAiYqKipSXl6eioiKjSwEA2AnPVKFUHq7SlEFGV2EdD1ejKwAAoPrw9vZWenq63Y43bfanOp+RKX8fb417cHCJ1/bg7e1tl+MA1iJUoVQmk+TJuwMAgKuWyWSSj4+P3Y7n4WmWR16BPDzN8vHxKfEaqMro/gcAAAAANqAtAgAAJwoPD9eyZcvUoEEDo0sBANgJoQoAACcym82KjIw0ugwAgB3R/Q8AACdKTEzUc889p8TERKNLAQDYCaEKAAAnSk1N1ZIlS5Sammp0KQAAOyFUAQAAAIANCFUAAAAAYANCFQAAAADYgFAFAIATubi4qH379nJx4b9gAKgu+BcdAAAnKiws1JYtW1RYWGh0KQAAOyFUAQAAAIANCFUAAAAAYANCFQAAAADYgFAFAIAT1ahRQ/369VONGjWMLgUAYCduRhcAAMDVJDQ0VFOnTjW6DACAHdFSBQCAE+Xk5Ojo0aPKyckxuhQAgJ0QqgAAcKIDBw6oV69eOnDggNGlAADshFAFAAAAADbgmSqUqqhIyi0wugrreLhKJpPRVQAAgOqgqKhImZmZRpdhFW9vb5n4MGQIQhVKlVsgTVhkdBXWmTJI8uQdDQAA7CAzM1O+vr5Gl2GV9PR0+fj4GF3GVYnufwAAAABgA77XBwDAiaKjo7Vv3z6jywAA2BEtVQAAAABgA0IVAABOdPjwYQ0ePFiHDx82uhQAgJ0QqgAAcKLMzEzt2rWryo0qBgAoG6EKAAAAAGxAqAIAAAAAGxCqAAAAAMAGhCoAAJwoJCREU6ZMUUhIiNGlAADshHmqAABwooCAAPXv39/oMgAAdkRLFQAATnTmzBnNnz9fZ86cMboUAE7m5+enRo0aKTw8XCEhIXJ1dbVq/969e6tTp04Oqg62oKUKAAAnSkpK0qRJk9SmTRsFBgYaXQ4AB6pRo4aGDBmiG264QbGxsYqIiCi2PisrS7t27dK2bdv05Zdf6ocfflBRUVGpx+rTp4+WLl2qnJwcxcXFaePGjc64BJQTLVVOkJKSovHjxysiIkJms1kNGjTQmDFjlJGRoeHDh8tkMmnmzJlGlwkAAAA7iIyM1OzZs5WYmKhZs2Zp0KBBJQKVJHl5eem6667TI488otWrV2v//v16/PHH5enpWWy7i4HKw8NDfn5+Gjp0qLMuBeVES5WD7dy5U3FxcUpOTpaPj49atGihEydOaMaMGTp48KCl+0ebNm2MLdRBEvau05JXuqvzXdMU2+fJUrd58x6Twtr00YAnlzu5OmMdP/W7Pvn+X4pP3K4/z59QQUGe6gY0VIdmvXVHt3Gq5R9sdIkAAMAKLi4u+sc//qGXXnpJZrO52LqsrCzt3LlTR48eVX5+vnx8fBQdHa2oqCjLNlFRUXrjjTc0cuRIDRs2TL/88kuxQCVJCxYs0KhRo5x6XbgyQpUDpaSkqF+/fkpOTtbYsWM1ceJE+fn5SZKmTp2qCRMmyM3NTSaTSTExMQZXC2c7fS5BZ84nqVPLW1WnRqhcXdx0OHm3vtn8ntbu+lTvPrFTNX3rGl0mAAAoh6CgIC1dulQdO3a0LDt//rw+/vhjffjhh9q1a5cKCgpK7Ofv76+ePXvqoYceUo8ePSRJzZs3188//6xFixZp4MCBxQLVfffdV+pxYCxClQM99thjSkhI0OjRozV9+vRi68aPH68FCxZo165daty4sfz9/Q2qEka5JvImXRN5U4nlrRrfoEmf3KnvtszToO7jDagMgCP5+PioU6dO8vHxMboUAHYSGhqqtWvXWrr4FRYW6vXXX9eLL76o9PT0y+57/vx5LVmyREuWLFGrVq30wQcfqH379nJ1ddXdd99t2Y5AVbnxTJWD7Nu3T4sWLVLt2rX16quvlrpNbGysJKl169aWZRs2bFCPHj0UHBwsT09PhYaGatCgQdq3b59T6obx6tVsJElKzzprcCUAHCEsLExz5sxRWFiY0aUAsIPAwECtXr3aEqiOHj2qLl26aNy4cVcMVH+1e/dudezYUR9//HGxASv27NlDoKrkaKlykIULF6qwsFBDhgyRr69vqdt4eXlJKh6qzp49q1atWunBBx9U3bp1lZCQoFdffVUdO3bUb7/9ptDQUKfUb2/5uZnKSksxuoxKKTcvW1m56crNy9bRk3s1Z8UESVKHZr0NrgyAIxQUFCgrK0teXl5WD6cMoPKZOXOmmjVrJkmKj49X9+7dlZiYWOHj9erVS4MHD5bJZLIsi46OVvfu3fX999/bXC8cg1DlIGvWrJEkde/evcxtEhISJBUPVf379y8xKWT79u3VtGlTLVmyRGPGjHFAtY63aclEbVoy0egyKqUVv8zRrC8ftbwOqhmmp+76RK2adDGwKgCOsn//fg0cOFCLFy9WdHS00eUAsMGtt96qu+66S9KFOeh69uxpU6D666AU27Zts/RsmjNnjlq1aqW0tDTbC4fdEaoc5OjRo5KkRo0albo+Pz/fMr/ApaGqNLVq1ZIkublV3b+ult1HKvLaO0pd98Xknk6upnLpFP03NazTTFm56TqQuEP/2btM5zJo1QMAoDLz8PAoNiXOo48+avn8VxGljfI3dOhQrVq1SjfddJMaNWqk5557ThMmTLC5dthf1f2UXsllZGRIujB8ZmkWLVqklJQU+fn5qXHjxiXWFxQUqLCwUEePHtXTTz+toKAg3XnnnRWqpV27dkpOTrZqH1d3L906Kb5C5ytNQFCkGrbsYbfjlSYqMlIFeaXfbyN4uHnpvdFXvod1AkJVJ+BCt85OLf+mLq1u1+gZ7ZWTl6m7bnza0WUClUZkVKRy8yvPz3B5DRs2zKrtk5KSJEkrVqzQjh07yrXPvHnzrKyq8rn174/Lx9dfSclJCg0NLfG6uivteq/2e1DZr7+wsPCy62+//XbVr19fkvTNN99owYIFFT5XaYHq4jNUw4cP1/79+2U2m/XAAw/ohRdeKPPzZWRkpFxcGDKhooKCgrR169YK7UuocpCgoCCdPXtW27dvLza0pnThP9Rx48ZJkmJiYor1mb2oa9eulpasiIgIrVmzRnXq1KlQLcnJyVY3Rbt5elfoXEY6kXRC+TmZRpdhYXav2D1sUj9G4SFt9fXPbxOqcFVJOnFC2XmV52e4vDIzras5Ozvb8nt597WlO1FlUfjfB+wLCwqUmJhY4nV1V9r1Xu33oKpf/yOPPGL58+TJkyt8nMsFKulC76dPP/1Uw4YNU2BgoAYPHqwPP/yw1GNd/NIGzkeocpAePXpo3759mjJlinr27GmZ2G3Lli269957lZJyoXtXWZP+fvDBB0pNTdXhw4c1bdo03Xzzzdq4caMaNmxodS1BQUFW7+Pq7mX1PkarH1y/0rVUVVRuXpbSMs/YsRqg8guuX79KtlR5e1v3BcrFCUHNZnO59w0JCbG6rsrG5b+Dcri4uiokJKTE6+qutOu92u9BZb/+wsLCMkNKgwYN1KlTJ0kXRuz76aefKnSOKwWqi95++21Lq/jdd99dZqgKDg6mpcoGFfnMfBGhykEuzkN1/PhxRUdHq1mzZsrOztaBAwcUFxensLAwffvtt2U+T9W0aVNJ0rXXXqtevXopLCxMU6dOLdZ3t7wq0oyZky9NWGT1bob6Iz5enpXoHV2QK62dUfb6M+eTFehf8od354G1OpL8m2LCuzmuOKASiv8jXq4eRldhvf3791u1fV5enoYPHy4/Pz+5u7uXa59JkyZVpLRK5ZVZ83U+PUPBQcFKSEgo8bq6K+16r/Z7UNmvPyMjo8wRnNu1a2f581dffVWh45c3UEkXvpRPSkpScHCwZeCK0sTHxzMHnkEq0UfQ6iU0NFQbNmzQuHHjtH79eh05ckQtWrTQ7NmzNWLECIWHh0u68iAVkhQQEKCIiAgdOHDA0WXDiWYsHaU/05LUJuJG1QtopNz8bMUnbNO6XZ/Ky9NPD/Z9zegSATiAu7u7AgMDjS4DgA0uDTYV+fLamkB16Xn69eunmjVrqkmTJjp06JD1hcNhCFUO1Lx5cy1fvrzE8vT0dB05ckQuLi5q2bLlFY9z6tQp/f7777r22msdUSYM0r3tXVq97WP9sO3fSs04LZNMqlezkfpc96Du7DpOdWta39UTQOV37NgxTZ48WU899VSFunQDMN7FeakkadeuXVbtW5FAJUk7d+5Uv379JF34jEmoqlwIVQbYs2ePioqKFBUVVaI//T333KOIiAi1adNGAQEBio+P1xtvvCE3Nzc98cQTBlVccaEtumnMJ0WX3eZK66urrq3vVNfWFRvREUDVlZaWprVr1xZ7yB1A1XL27FkdPXpUXl5eOnv2bLn369WrV4UClXRh4LGkpCRlZWUpPz+/wrXDMQhVBti9e7ek0rv+XXfddfr444/15ptvKjs7Ww0aNFD37t31zDPPlDnnFQAAAJxnxIgRFdrv4MGDSklJUf369a0KVNKFwSrefvvtCp0XjkeoMsDlQtXo0aM1evRoZ5cEAAAAB4uPj1e3bt30yCOPaOzYseUOVKj8CFUGuFyoAgAAQPUVHx+vxx9/3OgyYGeEKgOsWbPG6BIAAAapV6+eJkyYoHr16hldCgDATghVAAA4Ue3atS2TeAIAqgemXAYAwInOnTunVatW6dy5c0aXAgCwE0IVAABOlJCQoCeeeEIJCQlGlwIAsBNCFQAAAADYgFAFAAAAADYgVAEAAACADQhVAAA4kdlsVvPmzWU2m40uBQBgJwypDgCAE4WHh2vp0qVGlwEAsCNaqgAAAADABoQqAACcaO/evYqJidHevXuNLgUAYCeEKgAAnKioqEh5eXkqKioyuhQAgJ0QqgAAAADABgxUgVJ5uEpTBhldhXU8XI2uAAAAVBfe3t5KT0+32/Gmzf5U5zMy5e/jrXEPDi7x2h68vb3tchxYj1CFUplMkifvDgAAcJUymUzy8fGx2/E8PM3yyCuQh6dZPj4+JV6jauNjMwAAThQeHq5ly5apQYMGRpcCALATQhUAAE5kNpsVGRlpdBkAADtioAoAAJwoMTFRzz33nBITE40uBQBgJ4QqAACcKDU1VUuWLFFqaqrRpQAA7IRQBQAAAAA2IFQBAAAAgA0IVQAAAABgA0IVAABOVLt2bY0YMUK1a9c2uhQAgJ0QqgAAcCKTySQPDw+ZTCajSwEA2AmhCgAAJzp9+rRmzZql06dPG10KAMBOCFUAAAAAYANCFQAAAADYgFAFAAAAADYgVAEA4EQ1atRQv379VKNGDaNLAQDYiZvRBQAAcDUJDQ3V1KlTjS4DAGBHtFQBAOBEOTk5Onr0qHJycowuBQBgJ4QqAACc6MCBA+rVq5cOHDhgdCkAADuh+x8AAACAEoqKipSZmWl0GVbx9vY2ZHJ1QhUAAACAEjIzM+Xr62t0GVZJT0+Xj4+P089L9z8AAAAAsAGhCgAAAABsQPc/AACcKDo6Wvv27TO6DACAHdFSBQAAAAA2IFQBAOBEhw8f1uDBg3X48GGjSwEA2AmhCgAAJ8rMzNSuXbuq3DDFAICyEaoAAAAAwAaEKgAAAACwAaEKAAAAAGxAqAIAwIlCQkI0ZcoUhYSEGF0KAMBOCFUAADhRQECA+vfvr4CAAKNLAYAqp2HDhkaXUCom/wUAwInOnDmjlStXKi4uToGBgUaXAwAO5eLiojZt2qhdu3aKjY1V48aNZTablZ+frz///FPbt2/Xtm3b9Msvvyg1NfWyx3rxxRf1xBNPKC4uThs3bnTOBZQToQoAACdKSkrSpEmT1KZNG0IVgGqrbt26Gj58uB588EE1atSozO0GDhwoScrOztZnn32mt99+W5s3by6x3Ysvvqh//vOfkqSVK1cqMjJSJ0+edEzxFUD3PydISUnR+PHjFRERIbPZrAYNGmjMmDHKyMjQ8OHDZTKZNHPmTKPLhMGyczN176tN1HOcSW99MdrocgAAAKzm5uam559/XseOHdMrr7xy2UB1KbPZrPvuu0+bNm3S6tWri+13aaCSpGeeeaZSBSqJliqH27lzp+Li4pScnCwfHx+1aNFCJ06c0IwZM3Tw4EGdOXNGktSmTRtjC4XhPvr2nzqXcdroMgAAACokOjpaH3/8sa655hrLssLCQq1cuVLfffedtm3bpj179igjI0Nubm5q2LChYmNj1bFjR911112qVauWJKlHjx767bff9OSTT6p+/frFAtWjjz5aKRsjCFUOlJKSon79+ik5OVljx47VxIkT5efnJ0maOnWqJkyYIDc3N5lMJsXExBhcLYwUn7BdS3/6P43oPVWzl481uhwAAACr3HDDDfr666/l7+8vScrPz9dbb72lGTNm6MiRIyW2z8vL0++//67ff/9dCxYs0Lhx4zR48GC9+OKLatiwoXx9ffXuu+8W26eyBiqJ7n8O9dhjjykhIUGjR4/W9OnTLYFKksaPH6/WrVsrPz9fYWFhljcgrj4FhQV6Y/EItW/aS51b3WZ0OQAczMfHR506dZKPj4/RpQCAXVx//fVauXKl5fPs7t27dd111+kf//hHqYGqNNnZ2Zo3b55atmyp2bNnl1hfmQOVRKhymH379mnRokWqXbu2Xn311VK3iY2NlSS1bt26zOPExcXJZDLphRdecESZqASW/viGjp/ar9F/q7z/UACwn7CwMM2ZM0dhYWFGlwIANqtXr56WLVsmb29vSdLy5cvVoUMHbdu2rULHS0tLK/V5qezsbJvqdDRClYMsXLhQhYWFGjJkiHx9fUvdxsvLS1LZoeqzzz7Tzp07HVUiKoGkM4f18XcTNaTnPxUUGGZ0OQCcoKCgQOnp6SooKDC6FACw2TvvvGN5Fuq7777T7bffblMA+uugFBe99tpratCgQYWP62iEKgdZs2aNJKl79+5lbpOQkCCp9FB1/vx5Pf7445o+fbpjCkSl8OaShxRUq4kG3vAPo0sB4CT79+9X+/bttX//fqNLAQCb3HHHHbr11lslSadOndKQIUOUm5tb4eP9NVA9+uij+uCDDyRJ/v7+eu+992wr2IEYqMJBjh49KkllDiOZn59vmbSstFD17LPPKioqSkOGDNE999xjUy3t2rVTcnKyTceA9TzcvPTe6Pgy13+/7RNtj1+t10f9KDdXdydWBlROkVGRys3PMroMqw0bNsyq7ZOSkiRJK1as0I4dO8q1z7x586ysqvK59e+Py8fXX0nJSQoNDS3xuror7Xqv9nvA9Vf+6y8sLLzs+meffdby51GjRiklJaXC5yotUM2cOVM1atTQLbfcotDQUPXq1Utt27a97L+dkZGRcnGpWLtRUFCQtm7dWqF9CVUOkpGRIUnKyir9A8KiRYuUkpIiPz8/NW7cuNi6rVu36v33369wX9S/Sk5OVmJiol2OhfIzu3uXuS43P0ezv/6HOjTrrZp+QUpMOSBJSjl34e8pI/ucElMOqIZPbfl6BTijXMBwSSdOKDsv0+gyrJaZaV3NF7vFZGdnl3vf6vBveOF/uzsWFhQoMTGxxOvqrrTrvdrvAddfta+/Y8eOloaBTZs2aenSpRU+VlmBSpLOnTunl156yTJ4xahRozRy5Mgyj3XxiytnI1Q5SFBQkM6ePavt27erY8eOxdYlJSVp3LhxkqSYmBiZTCbLuoKCAj344IMaPXq0oqOj7VYLnM/DzavMdbl5WUrNOK3N+77R5n3flFj/w/ZP9MP2TzSyzzTd0e1JR5YJVBrB9etXyZaqiw9nl5fZbLb8Xt59Q0JCrK6rsnFxdbX8HhISUuJ1dVfa9V7t94Drr/zXX1hYWGZIuTTYzJo1q8LnuFygumj+/PmaNm2a/P39NWTIED3xxBOWBoy/Cg4OtqmlqqIIVQ7So0cP7du3T1OmTFHPnj0VFRUlSdqyZYvuvfdeS/PoXyf9nTlzpk6ePGnX0f4q2owJ2xTkSmtnlL7O7OGj5+/9vMTyc+mnNeOLh9W+aS/16jBcTYKZvwxXj/g/4uXqYXQV1rP22ag9e/Zo7ty56t27d7m/PJs0aVJFSqtUXpk1X+fTMxQcFKyEhIQSr6u70q73ar8HXH/lv/6MjIwyB1zr0qWLZZvPPy/5maY8yhOoLj3H8OHD5e3trWuuuUYbNmwo9Zjx8fGGTFlBqHKQ8ePHa8GCBTp+/Liio6PVrFkzZWdn68CBA4qLi1NYWJi+/fbbYs9TpaSk6Pnnn9f06dOVn5+v1NRUy7rs7GylpqbK39+/wukblYebq7tuiBlYYnnymSOSpOBa4aWuB1D1RUVFaePGjcXmLgSAqiQgIEDh4eGSpJ07dyonJ8fqY5Q3UF20adMmDR8+XNKFaYnKClVG4dO5g4SGhmrDhg3q06ePzGazjhw5osDAQM2ePVvffPON/vjjD0nFB6lISEhQWlqaHnzwQdWsWdPyS5KmTJmimjVr6tixY4ZcDwDAPtzd3RUYGCh3dwaoAVA1XdrTqiJjAFgbqP56nrZt21p9TkejpcqBmjdvruXLl5dYnp6eriNHjsjFxUUtW7a0LI+IiNDatWtLbN+9e3cNHTpUw4YN4/moai4oMEyrpxUZXQYABzp27JgmT56sp556Sg0bNjS6HACwWmBgoOXPx48ft2rfigSqv57n0vNXFoQqA+zZs0dFRUWKiooq9pCyr6+vunXrVuo+YWFhZa4DAFQdaWlpWrt2rR555BGjSwGAClm/fr26desms9ms+Piyp4/5q1q1aumBBx6wvC5voJKk1NRU9enTR9nZ2Tp58qTVNTsaocoAu3fvllT6/FQAAABAZfbnn39q/fr1FdqvW7duWrt2rSZPnlzuQCVdmON1xYoVVp/TWQhVBrA2VBUV0R0MAAAAVV98fLyaN2+utLQ0o0uxKwaqMAAtVQAAALhaVbdAJdFSZYg1a9YYXQIAwCD16tXThAkTVK9ePaNLAQDYCaEKAAAnql27toYNG2Z0GQAAO6L7HwAATnTu3DmtWrVK586dM7oUAICdEKoAAHCihIQEPfHEE0pISDC6FACAnRCqAAAAAMAGhCoAAAAAsAGhCgAAAABsQKgCAMCJzGazmjdvLrPZbHQpAAA7YUh1AACcKDw8XEuXLjW6DACAHdFSBQAAAAA2IFQBAOBEe/fuVUxMjPbu3Wt0KQAAOyFUAQDgREVFRcrLy1NRUZHRpQAA7IRnqgAHcXGXuj9mdBVA1eHibnQFAIBLeXt7Kz093W7Hmzb7U53PyJS/j7fGPTi4xGt78Pb2tstxrEWoAhzEZJJcPYyuAgAAoGJMJpN8fHzsdjwPT7M88grk4WmWj49PiddVGd3/AAAAAMAGtFQBAOBE4eHhWrZsmRo0aGB0KQAAOyFUAQDgRGazWZGRkUaXAQCwI7r/AQDgRImJiXruueeUmJhodCkAADshVAEA4ESpqalasmSJUlNTjS4FAGAnhCoAAAAAsAGhCgAAAABsQKgCAAAAABsw+h8AADZo1qyZVdvXqFFDEydO1PXXX6/g4GAHVQUAcCZCFQAAThQcHKwXXnjB6DIAAHZE9z8AAAAAsAGhCgAAAABsQKgCAAAAABsQqgAAAADABoQqAAAAALABoQoAAAAAbECoAgAAAAAbEKoAAAAAwAaEKgAAAACwAaEKAAAAAGxAqAIAAAAAGxCqIEl64YUXZDKZSvw6cOCA0aUBAFCqFStWqE2bNvL09FRYWJhef/11o0tyqh9//FEDBgxQo0aNZDKZNGnSJKNLcqpp06apY8eOqlmzpgICAtS5c2etWrXK6LKc6t///rdiY2NVs2ZNeXl5qXnz5nr99ddVVFRkdGmGWLNmjVxdXRUREeH0c7s5/YyotMLCwvSf//yn2LI6deoYVA0AAGXbunWrBgwYoCeffFILFy7U5s2b9dBDD8nb21sPPfSQ0eU5RXp6ulq0aKG7775bjz/+uNHlON2aNWt0//33q3379vL29tacOXPUt29frV+/Xp06dTK6PKeoW7eunn/+eTVt2lSenp7asGGDHn74Ybm6umrMmDFGl+dUycnJGjp0qG6++WbFx8c7/fyEKli4uroqKCjI6DIAALii119/Xe3bt9err74qSWrevLn27NmjyZMnXzWhqnfv3urdu7ckacKECQZX43wrV64s9nrq1KlatWqVli5detWEqltuuaXY6yZNmujLL7/UunXrrqpQVVhYqHvuuUePPPKIsrOzDQlVdP+DRUJCgkJDQxUaGqq4uDj9/PPPRpcEAECpNm7cqF69ehVb1qtXLx09elQJCQkGVQUjFRYW6vz58/Lx8TG6FEMUFRXpl19+0caNG9W9e3ejy3Gql156SSaTydAvF2ipgiSpQ4cO+vDDD9WiRQudP39es2fPVpcuXbRq1Sr17NnT6PIAAFVEXn6+Dh9PLrE8v6DA8vsfhxNKvL5U7cAaCqzhd9nzJCUllehdcfF1UlKSQkNDK3wNtkpIPq3MrJxiy0q73rLugae7mxqFVt2eI+fTM5V8+kyJ5da8BxrWryuzp4dV533llVeUmpqqkSNHVrBy+ygqKtLBoydU+Jfnmqy5/gA/H9WtXbNc5zt37pxCQkKUm5urwsJCTZw4UY899pgdrqTiTqac1bm0jBLLy3sPXEwmhTeqL5PJdMVzrV27Vu+++6527NhRru0dhVAFSbJ0H7ioS5cuSkhI0LRp0whVAIByc3N11ZZd+7T798Olrs/Mytbcz1aU+drH26zH7x/o8DodKT0jS/MWlz5gwl+vt7RlA+O6VulQ5enhri+/26AzqWmlrr/Se6Bxg2CNGNzHqnO+/fbbeuWVV7Rs2TJDA7WkCwN9HU3Uuk07S11/pet3dXXRo0NvK/f5/Pz8tHPnTmVmZurnn3/W008/rfr162v48OEVvgZbFRUV6aMlq1RQUFjq+ivdg27XtVFEWMgVz5OSkqJ77rlHH374oeGPsND9D2Xq2LGjjhw5YnQZAIAqxGQy6W+3dJGfj1eF9r+t1w3y8/G+4nbBwcFKTi7eInby5EnLOiM1C2+oa9s0r9C+LSIbKbZVlJ0rci5PD3cN6tO9Qq0Gnh7uuqNPN7m4lP8j6vTp0zVu3DgtW7ZMPXr0sPqcjtCjc6yC69aq0L633NBBQXUCy729i4uLIiIiFBMTo4ceekjjx4/Xs88+W6Fz20tQnUDd0qV9hfYNrltLPTrHlmvb3377TSdOnFDfvn3l5uYmNzc3/etf/9LBgwfl5uamBQsWVKiGiiBUoUzbt29XgwYNjC4DAFDF+HiZNTCuq9X7tWvVVNGRYeXatlOnTvr222+LLVu1apUaNWpkeEuFJPXufp1qBfhbtY+vt5duu+UGQ7sw2Uuj0CB1u6611fv163H9Fbt+Xuqf//ynXnzxRa1YsaLSBCrpQovtoL7d5epq3UftJg2D1bl9K5vOXVhYqOzsbJuOYQ+d27dS4wbWfcHh5uqqwX27y83VtVzbt2/fXrt379bOnTstvx566CE1aNBAO3fuVJ8+1rV42oLuf5Ak/eMf/1Dfvn0VFham8+fP6/3339fq1av11VdfGV0aAKAKavrf1prNO/eVa/uaNfzU96aO5T7+E088oeuvv17PPvus7r33Xm3evFlvvfWW3njjjYqWbFeeHu66s293vTt/WbnnDLot7gb5WtHCl56ebplPMjc3V8nJydq5c6d8fX0Nmafnr27qFKvfDx3XiZN/lmv76KgwxbYsfyvd448/rtmzZ2vhwoVq2rSppeXSy8tLNWrUqFDN9hRUJ1C9buigb9ZuKtf2nh7uuqN3N7lYEaonTpyoLl26qEmTJsrLy9OPP/6oKVOm6O9//3tFy7YbFxcX3dmnm/5v7mLl5OaVa59burZXPSta6Xx8fNSyZctiy+rWrSsPD48Syx2NlipIuvBQ73333afmzZvr5ptv1u+//67vv/9e/fr1M7o0AEAV1af7dapV88qtNSZJd/bpZtXABO3bt9eXX36p5cuXq3Xr1vrnP/+pl19+uVINp94opJ66XdemXNu2j2mmFhGNrDr+1q1b1bZtW7Vt21ZJSUmaNWuW2rZtqwceeKAC1dqfm6urBvUpX6uDr4+Xbr2li1WtdG+++aays7N16623Kjg42PKrMg0l3ql9KzVpWL7Wmv49O6mmFa10knT+/Hk99NBDio6O1nXXXad3331Xr776aqWZCLtmDT/171G+4e2bNKyvTu1sa6Uzkqnoap1yGQAAONyxxJN65wqtNV2vba24btc6sSrnyS8o0Dv//kqJJ1PK3Cawhp/G/P12eVo52l1VsWHLr/pmzeVba4befouaWxkqq4qz59Ku2FoTHRWme/7Ws1p0/fyroqIiffLlau3540iZ23h6uOuJ4XcowN/XeYXZGS1VsEpmVrYSkk4bXQYAoIpoGFJP3Tu2LXN9UJ1A9ezczokVOZebq6vuvMwzIiaTSXf27V5tA5UkdWrXSk0a1i9zfYfWzaptoJL+21rTs+zWGl+f6vMsXWlMJpNuvaXLZbu2DujZqUoHKolQBStt2LJbMz/+4orfOAEAcNFN11+jkKDaJZa7urpocL8b5eZWvofSq6p6tWuqV7cOpa7rem1rhVXh4dPLw8Vk0p19usnTw73EusAAP/W5sfzP0lVV10RHqmVU41LXDYzrKh9vs5Mrci5fb68yB69p1bSx2kZHOrki+6s2ocpkMlkS/tdff60uXbrI399ftWvX1sCBA3Xw4EHLtsuXL1fXrl0VEBAgf39/DRgwQPHx8WUeOycnR2+++aauv/56BQQEyGw2q2nTpho3bpxSUkpvzt+8ebMmTJig9u3bKygoSJ6engoJCdGdd96pLVu2lHmuFStWqHfv3qpbt67c3d1Vq1YtNW/eXPfff782btxYwbtjHxlZ2fp522+SVO3/AwAA2I+rq8uFZ2v+Ep5u6dLeqqGjq7LrY1sqolHxeXesGTq6qgvw99Xfbu5cbJnJZNKgPt1LDVvVTVmtNde2aa5m4Q0Nqsq5moU3VIfWzYot8/Px0t+sfJausqo2oeqiWbNmqX///jp06JAiIiKUmZmpJUuWqGvXrjp9+rT+7//+T/369VN8fLyaNGmi/Px8LVu2TDfccINOny7Zre3kyZPq2LGjHn/8cW3evFkBAQGKiorS0aNHNX36dMXGxurQoUMl9hsyZIimTp2qQ4cOqXbt2oqOjlZOTo4+//xzXX/99VqyZEmJfd5++2316dNHK1euVGFhoWJiYlSvXj0lJCToww8/1L///W+H3LPy+mnLbuXk5im4bi21iKy+zfQAAPurW7um4rr+77mpxg1sHzq6KnExmTSwd1fLYByuri4aZMXQ0dVBmxYRatX0f6013a5rXaUnObaWj3fxqQZqBfird/frDKzI+frc2LHYVAMD47rKx6t6tNJVu1A1fvx4ffTRR0pMTNT27duVkJCg9u3bKzExUffff7+eeeYZffTRRzpx4oS2b9+u48ePKzY2VsnJyXrttdeKHauoqEiDBg3Sjh071KdPHx08eFBHjhzRr7/+qpSUFN1///06duyY7rnnnhJ1/POf/1R8fLz+/PNP/fbbb9q+fbtOnTqlpUuXymw264EHHlB6erpl+/z8fD333HOSLoSrkydPatu2bdq7d6/Onz+v9evX65ZbbnHszbuMS1upenSKrRbfKAAAnKtjbLQiGoVUaILX6iDA31cD/vtsTS8rJ3itDiwTQ/t6q369Wrqp09XRSnepixNDW56luwpa6S7l6eGuO/t0k8lk0rVtmqtpNWqlqzaj/138kP/oo49qxowZxdatWrVKcXFxZa5fuXKlevfurZiYGO3atcuyfMWKFerTp49atmypLVu2yGwunqQLCgrUoUMHbd++XT/99JM6dSrfkJHPP/+8Jk2apIULF2rw4MGSpOTkZAUHB6tmzZo6c+aMdRd/BW99tFRp6Vk2HSM7J1e5eXlycXGRj5eZUAUAqJCiokLlFxTK3e3qnSozNy9PHu5X14fpS+UXFMjFZLrqQvX/FCk3L/+qfg9c+Blw04UJFSoPP18vPTr0tgrtW+3+RSttboZrrrmmXOv/2o3vYhe9oUOHlghUkuTq6qr+/ftr+/btWrduXYlQFR8fr08//VS7du3Sn3/+qby8C0Npnjp1SpK0c+dOS6iqU6eOzGazUlNTtXr1avXs2bPc13wlaelZOp+eYZdjFRYWKi0j0y7HAgBcvbKUY3QJhsrOyTW6BBjsan8PVLfrr3ahKjw8vMSyOnXqXHZ93bp1JalYdzxJ+vXXXyVJH374ob788stSz3fy5ElJUmJiYrHlr732mp566inl5+eXWeuff/5vhnFXV1eNGTNGU6ZM0c0336xrrrlGPXr0UOfOndW1a1f5+1958sSy+PmWf3b20tBKBQAAgOrOls/M1S5U+fj4lFh2aQi40vpLpaamSpL27t17xfNmZv6v9Wbjxo168skn5erqqkmTJmnAgAEKCwuTj4+PTCaT5s6dq+HDh1tari565ZVXFBoaqlmzZmn79u3avn27pk6dKk9PT919992aPn26AgOt739d0WZM6cKzVFPfXShJGjKgh6Kjwip8LAAAAKA6qnahyp58fS9MQrZs2TL169ev3PtdHKVv7NixevbZZ0usv7SF6lIuLi4aPXq0Ro8erYSEBG3YsEGrV6/WZ599pg8//FDHjx/X6tWrrb4OW56purSV6svvftJXq40d1h0AAABwBJ6pcpDo6Gjt3LlTv/32m1Wh6vDhw5Kkzp07l7p+06YrT5wbGhqqu+66S3fddZfGjh2rVq1a6fvvv9fhw4fVuHHpk8eVxR7PVPEsFQAAAFA6QtVlDBw4UPPnz9d7772nRx991NJydSVeXhf6YyYnJ5dYFx8fr+XLl1tVR3R0tGrUqKHU1FSdOHHC6lBV0f6hPEsFAACAqwXPVDnIgAED1LVrV61fv14333yz3nvvPbVs2dKyvrCwUJs3b9ZHH32k8ePHq0mTJpKkLl266KuvvtKrr76qG2+80TI4xp49e3T77beXOoTo3r179cYbb2j48OG69tprLQGmoKBAb731llJTU2U2mxUdHW31dVSkGZNnqQAAAIDyqXbzVJV1ORVdn5KSogEDBujnn3+WJDVq1EhBQUHKysrSwYMHlZFxoVvdvn371KxZM0lSWlqarrnmGh04cEDu7u5q2rSpCgsLtW/fPgUHB+vhhx/Wc889p6FDh2revHmSLgyv3rZtW0mSn5+fwsPD5erqqiNHjliewXr77bc1atSoCt0fa3374xat/c8OBdetpceG3UYrFQAAAFCGq3XWtXKrXbu21q9fr3nz5qlnz57KyMjQ1q1bdfjwYUVERGjMmDFav369oqKiLPv4+fnpp59+0v3336+aNWvq999/V3p6uh588EFt375dISEhJc4TFRWlOXPmaNCgQQoODtahQ4e0a9cumc1m3XHHHdqwYYPTAlVGVrZ+3vabJKlHp1gCFQAAAHAZ1aalCvbzZ+p5ffntBqVnZtNKBQAAAFwBoQplys7JldnTw+gyAAAAgEqNUAUAAAAANuCZKgAAAACwAaEKAAAAAGxAqAIAAAAAGxCqAAAAAMAGhCoAAAAAsAGhCgAAAABsQKgCAAAAABsQqgAAAADABoQqAAAAALABoQoAAAAAbECoAgAAAAAbEKoAAAAAwAaEKgAAAACwAaEKAAAAAGxAqAIAAAAAGxCqAAAAAMAGhCoAAAAAsAGhCgAAAABsQKgCAAAAABsQqgAAAADABoQqAAAAALABoQoAAAAAbECoAgAAAAAbEKoAAAAAwAaEKgAAAACwAaEKAAAAAGxAqAIAAAAAGxCqAAAAAMAGhCoAAAAAsAGhCgAAAABsQKgCAAAAABsQqgAAAADABoQqAAAAALABoQoAAAAAbECoAgAAAAAbEKoAAAAAwAaEKgAAAACwAaEKAAAAAGxAqAIAAAAAG/w/5emtw49hxNYAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 1082.05x535.111 with 1 Axes>"
]
},
"execution_count": 136,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"qc = QuantumCircuit(n + 1)\n",
"\n",
"qc.h(range(n))\n",
"\n",
"# Append the sudoku oracle.\n",
"qc.append(oracle, range(n+1))\n",
"\n",
"# Measure the result!\n",
"qc.measure_all()\n",
"qc.draw(output='mpl')"
]
},
{
"cell_type": "code",
"execution_count": 137,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'01110': 59, '01001': 68, '01011': 77, '01100': 66, '00011': 58, '00100': 76, '01101': 55, '10110': 57, '01111': 66, '10001': 67, '00101': 64, '11000': 61, '00010': 60, '01010': 49, '00111': 71, '00000': 70}\n"
]
},
{
"data": {
"image/png": "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ciUcHR1RuXLlLB8w6NKlC/z9/QEAY8aMwe+//47Zs2fj5MmTqF27Nk6cOIHg4GDUrVsXI0aMKNwKEBERERWAIpe0Xb16FQAQGxuLTz/9NMtjypUrpyZtDg4O2L9/P6ZOnYr169dj79698PT0xKhRozBlyhTY2dkVUsmJiIiICk6RS9pWrFiBFStW5Ol3XFxcsGDBAixYsKBgCkVERESksSI3po2IiIiIMmPSRkRERGQCmLQRERERmQAmbUREREQmgEkbERERkQlg0kZERERkApi0EREREZkAJm1EREREJoBJGxEREZEJYNJGREREZAKYtBERERGZACZtRERERCaASRsRERGRCWDSRkRERGQCmLQRERERmQAmbUREREQmgEkbERERkQlg0kZERERkApi0EREREZkAJm1EREREJoBJGxEREZEJYNJGREREZAKYtBERERGZACZtRERERCaASRsRERGRCWDSRkRERGQCmLQRERERmQAmbUREREQmgEkbERERkQlg0kZERERkApi0EREREZkAJm1EREREJoBJGxEREZEJYNJGREREZAKYtBERERGZACZtRERERCaASRsRERGRCWDSRkRERGQCmLQRERERmQAmbUREREQmgEkbERERkQlg0kZERERkApi0EREREZkAJm1EREREJoBJGxEREZEJYNJGREREZAKYtBERERGZACZtRERERCaASRsRERGRCWDSRkRERGQCmLQRERERmQAmbUREREQmgEkbERERkQlg0kZERERkApi0EREREZkAJm1EREREJoBJGxEREZEJYNJGREREZAKYtBERERGZACZtRERERCaASRsRERGRCWDSRkRERGQCmLQRERERmQAmbUREREQmgEkbERERkQlg0kZERERkApi0EREREZkAJm1EREREJoBJGxEREZEJYNJGREREZAKYtBERERGZACZtRERERCaASRsRERGRCWDSRkRERGQCmLQRERERmYAXJmk7evQo2rdvj2LFisHBwQENGjTA2rVrtS4WERERkVFYal0AY9i7dy/atm0LW1tbvPnmm3BycsL69evRs2dPREREYNSoUVoXkYiIiChfTL6nLTk5GYMGDYKFhQUOHDiAxYsXY/78+Th16hQqV66MCRMm4Nq1a1oXk4iIiChfTD5p27NnDy5fvoy33noL/v7+6nYXFxdMmDABiYmJ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5lx3ALh48SKePn2KNm3aYOjQofjyyy/x448/YsqUKfDx8cH69esxYMAAvPXWW5g2bRp27tyJ9evXIyYmBoMGDWJ8U6J11viiWrhwoVSsWFEURZHSpUvLsGHD5I8//pDTp0/L33//LTdv3pRx48aJra2tjBw50mhxk5OTZdSoUerTSt98841ERkZmeezDhw+lb9++4ubmxvgvQHxzrjvjm3d8c667iMi6detEURT59ddfDbYnJiZKeHi4/Pbbb/Lhhx9KrVq1xNraWhwcHMTe3t5oS2eZe/zCxKStgKSmpsrFixdl9OjRBmuclSpVSsqUKSM6nU4URZG33npLIiIijB5fq6SR8bWPb851Z3zzjm+udU9NTZV//vlHrly5ov6cUWxsrJw4cUJ++eUXadOmjShK2prEjG9amLQVgtjYWNmzZ4+MGDFCevToIc2aNZPOnTvLTz/9lGktNmPROmlkfO3im3PdGd+845tz3XMqU0YffPCBKIqirtDD+KaDKyIUsqSkJFhZWRVqzLi4OISGhmLz5s24desW7t69C2dnZ/To0QPdunWDra0t47+g8c257oxv3vHNue5ZSU1NhYWFBa5evYrXXnsNjx49wvXr1xnfxDBpMzNaJI2MXzTim3PdGd+845tz3TMKCQnBoEGD0LdvX4wbN47xTQyTNiIiIjMhIrhx4wZKlCihyVqf5h4/v5i0EREREZkAztNGREREZAKYtBERERGZACZtRERERCaASRsRERGRCWDSRkRERGQCmLQRERERmQAmbUREREQmgEkbERERkQlg0kZERERkAv4P34WQO8kNAnEAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 700x500 with 1 Axes>"
]
},
"execution_count": 137,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"simulator = Aer.get_backend('aer_simulator')\n",
"job = execute(qc, simulator)\n",
"result = job.result()\n",
"counts = result.get_counts()\n",
"\n",
"key = max(counts, key=counts.get)\n",
"\n",
"print(counts)\n",
"plot_histogram(counts)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"In the results, the most significant qubit (the left-most or downward-most) is a value of 0 (loss) or 1 (win). So, we're concerned with the 3 wins at the far right of the graph.\n",
"\n",
"However, the counts appear almost equal across all results. There is no clear indication of the winning results. We can fix this by amplifying the correct answers using the Grover search algorithm."
]
},
{
"cell_type": "code",
"execution_count": 138,
"metadata": {},
"outputs": [],
"source": [
"def diffuser(n):\n",
" qc = QuantumCircuit(n)\n",
"\n",
" # Apply transformation |s> -> |00..0> (H-gates)\n",
" qc.h(range(n))\n",
"\n",
" # Apply transformation |00..0> -> |11..1> (X-gates)\n",
" qc.x(range(n))\n",
"\n",
" # Do multi-controlled-Z gate\n",
" qc.h(n-1)\n",
" qc.mct(list(range(n-1)), n-1) # multi-controlled-toffoli\n",
" qc.h(n-1)\n",
"\n",
" # Apply transformation |11..1> -> |00..0>\n",
" for qubit in range(n):\n",
" qc.x(qubit)\n",
"\n",
" # Apply transformation |00..0> -> |s>\n",
" qc.h(range(n))\n",
"\n",
" # We will return the diffuser as a gate\n",
" gate = qc.to_gate()\n",
" gate.name = \"diffuser\"\n",
"\n",
" return gate\n",
"\n",
"def grover(oracle, n):\n",
" var = QuantumRegister(n, 'var')\n",
" out = QuantumRegister(1, 'out')\n",
" cr = ClassicalRegister(n, 'c')\n",
" qc = QuantumCircuit(var, out, cr)\n",
"\n",
" # Initialize the output qubit to a phase-flip.\n",
" qc.x(n)\n",
" qc.h(n)\n",
"\n",
" # Apply the Hadamard gate to every qubit.\n",
" qc.h(var)\n",
" qc.barrier()\n",
"\n",
" # Apply the oracle to every qubit.\n",
" qc.append(oracle, range(n+1))\n",
" qc.barrier()\n",
"\n",
" # Apply the diffuser to every qubit.\n",
" qc.append(diffuser(n), range(n))\n",
" qc.barrier()\n",
"\n",
" # Undo the output qubit phase-flip.\n",
" qc.h(n)\n",
" qc.x(n)\n",
"\n",
" qc.measure(var, cr)\n",
"\n",
" return qc"
]
},
{
"cell_type": "code",
"execution_count": 139,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 1570.31x535.111 with 1 Axes>"
]
},
"execution_count": 139,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"qc = grover(oracle, n)\n",
"\n",
"qc.draw(output='mpl')"
]
},
{
"cell_type": "code",
"execution_count": 140,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'1010': 4, '0001': 323, '1111': 4, '0110': 332, '1110': 4, '1000': 324, '1100': 9, '0011': 4, '0000': 2, '1011': 3, '1001': 2, '0010': 5, '0111': 2, '0101': 5, '1101': 1}\n"
]
},
{
"data": {
"image/png": "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1qr5r7/+Qp8+feDm5oZdu3ahZs2aOb5G69atATw+JyyzrVu3Gk1DREREVFxZXJF35swZ/Pfff1na//vvP4wbNw4AjC6m2Lx5M/r06YMyZcpg165dT90LN2zYMFhbW2PWrFlGh20jIiKwdu1a1KpVCy1atDBRb4iIiIjMw+LOyfv555+xcOFCtGjRAlWrVoWLiwuuX7+OzZs34+7du2jZsiXGjh0LADh37hxefPFFJCcno02bNli7dm2W16tatSqGDh2q/u3r64vp06dj8uTJqFevntGwZgCwYsUKk59TQ0RERFTULK7I69atG2JiYrB//34cOHAAiYmJcHV1Rd26dfHSSy9h+PDh6gmHsbGx6pWuhiIts9atWxsVeQAwadIkVK1aFYsXL8bSpUtha2uLli1bYubMmWjQoEGh9o+IiIioKFhckdewYUM0bNgwV9O2adMG+b0DzKBBgzBo0KB8PZeIiIjI0vG4JBEREZEGscgjIiIi0iAWeUREREQaxCKPiIiISINY5BERERFpEIs8IiIiIg1ikUdERESkQSzyiIiIiDSIRR4RERGRBrHIIyIiItIgFnlEREREGsQij4iIiEiDWOQRERERaRCLPCIiIiINYpFHREREpEEs8oiIiIg0iEUeERERkQaxyCMiIiLSIBZ5RERERBrEIo+IiIhIg1jkEREREWkQizwiIiIiDWKRR0RERKRBLPKIiIiINIhFHhEREZEGscgjIiIi0iAWeUREREQaxCKPiIiISINY5BERERFpEIs8IiIiIg1ikUdERESkQSzyiIiIiDSIRR4RERGRBrHIIyIiItIgFnlEREREGsQij4iIiEiDWOQRERERaRCLPCIiIiINYpFHREREpEEs8oiIiIg0iEUeERERkQaxyCMiIiLSIBZ5RERERBrEIo+IiIhIg1jkEREREWkQizwiIiIiDWKRR0RERKRBLPKIiIiINIhFHhEREZEGscgjIiIi0iAWeUREREQaxCKPiIiISINY5BERERFpEIs8IiIiIg1ikUdERESkQSzyiIiIiDSIRR4RERGRBrHIIyIiItIgFnlEREREGsQij4iIiEiDWOQRERERaRCLPCIiIiINYpFHREREpEEs8oiIiIg0iEUeERERkQaxyCMiIiLSIBZ5RERERBrEIo+IiIhIg1jkEREREWmQxRV5169fx+LFi9GxY0dU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u4cJEyZg3rx5hZFZVapUKTRr1gwAcObMmSyPG9oyHlpu3bo1gMfnhGW2detWo2mIiIiIiqs8F3mKomD27Nk4d+4cJkyYgNatW8PPzw9+fn5o3bo1Jk2ahHPnzmHWrFlQlIKfn/M0hsPB06dPNzpX7ty5cwgODoazszNeeOEFtX3YsGGwtrbGrFmzjA7bRkREYO3atahVq5Z6aJeIiIiouMrTOXkZ1ahRAx9//LEps6hWrlyp3pD45MmTapvhHnctWrTAq6++CgB46aWX8Ouvv2LDhg2oV68eOnXqhLi4OPzyyy949OiROkqHga+vL6ZPn47JkyejXr166NOnDxISErBu3ToAwIoVKzjaBRERERV7+S7yCtPevXvx3XffGbXt27fPaPQMQ5GnKArWrl2LZs2a4ZtvvsHy5cthZ2eHZs2aYeLEidkeep00aRKqVq2KxYsXY+nSpbC1tUXLli0xc+bMQj2HkIiIiKio5OkWKpRVfHy8esXuky5j1gpT3UKFtInbhzEuDyIqDLmtPXhckoiIiEiDWOQRERERaRCLPCIiIiINYpFHREREpEEs8oiIiIg0iEUeERERkQaxyCMiIiLSIBZ5RERERBrEIo+IiIhIg1jkEREREWkQizwiIiIiDWKRR0RERKRBLPKIiIiINIhFHhEREZEGscgjIiIi0iAWeUREREQaxCKPiIiISINY5BERERFpEIs8IiIiIg1ikUdERESkQSzyiIiIiDSIRR4RERGRBrHIIyIiItIgFnlEREREGsQij4iIiEiDWOQRERERaRCLPCIiIiINYpFHREREpEEs8oiIiIg0iEUeERERkQaxyCMiIiLSIBZ5RERERBrEIo+IiIhIg1jkEREREWkQizwiIiIiDWKRR0RERKRBLPKIiIiINIhFHhEREZEGscgjIiIi0iAWeUREREQaxCKPiIiISINY5BERERFpEIs8IiIiIg1ikUdERESkQSzyiIiIiDSIRR4RERGRBrHIIyIiItIgFnlEREREGsQij4iIiEiDWOQRERERaRCLPCIiIiINYpFHREREpEEs8oiIiIg0iEUeERERkQaxyCMiIiLSIBZ5RERERBrEIo+IiIhIg1jkEREREWkQizwiIiIiDWKRR0RERKRBLPKIiIiINIhFHhEREZEGscgjIiIi0iAWeUREREQaxCKPiIiISINY5BERERFp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",
"text/plain": [
"<Figure size 700x500 with 1 Axes>"
]
},
"execution_count": 140,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"simulator = Aer.get_backend('aer_simulator')\n",
"job = execute(qc, simulator)\n",
"result = job.result()\n",
"counts = result.get_counts()\n",
"\n",
"key = max(counts, key=counts.get)\n",
"\n",
"print(counts)\n",
"plot_histogram(counts)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## A single execution gives all winning moves!\n",
"\n",
"As shown in the above chart, the scenarios that result in a win have now jumped to the top. A single execution of the quantum circuit has returned all winning moves in the game.\n",
"\n",
"If we decode each result, beginning from the left-most. *Recall, the top-most bit is the least-significant bit in the choice.*\n",
"\n",
" - 0001 = Paper vs Rock (01 vs 00) = WIN\n",
" - 0110 = Scissors vs Paper (10 vs 01) = WIN\n",
" - 1000 = Rock vs Scissors (00 vs 10) = WIN\n",
"\n",
"Remember, to interpret the qubit results we have to follow least/most significant bits.\n",
"\n",
"```\n",
"0001 => 01 versus 00 => Paper versus Rock => WIN\n",
" ^- q0\n",
" ^--- q1\n",
" ^---- q2\n",
"^----- q3\n",
"```\n",
"\n",
"Similarly:\n",
"\n",
"```\n",
"1000 => 00 versus 10 => Rock versus Scissors => WIN\n",
" ^- q0\n",
" ^--- q1\n",
" ^---- q2\n",
"^----- q3\n",
"```"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Can we find the best move for Player 1?\n",
"\n",
"We've seen how we can evalutate all possible moves and return the set of winning moves.\n",
"\n",
"However, can we change the quantum computing program to give us a winning move for a specific play by Player 2?\n",
"\n",
"For example, if Player 2 chooses \"scissors\", can we ask the quantum computer for a counter-move and get back a result of \"rock\"?\n",
"\n",
"We can do this by removing the superposition (all possibilities) from Player 2's qubits and instead configure their qubits to the specific move (rock, scissors, paper). Then, we leave Player 1's qubits in superposition so that we can evaluate all possible moves for Player 1.\n",
"\n",
"We've slightly modified Grover's search below."
]
},
{
"cell_type": "code",
"execution_count": 141,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 1570.31x535.111 with 1 Axes>"
]
},
"execution_count": 141,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def grover2(oracle, n):\n",
" var = QuantumRegister(n, 'var')\n",
" out = QuantumRegister(1, 'out')\n",
" cr = ClassicalRegister(n, 'c')\n",
" qc = QuantumCircuit(var, out, cr)\n",
"\n",
" # Initialize the output qubit to a phase-flip.\n",
" qc.x(n)\n",
" qc.h(n)\n",
"\n",
" # Pre-set Player 2 to a specific choice of rock, scissors, or paper. We'll just use \"rock\" for player 1, since we want the qubits open to any possible counter-move.\n",
" qc = encode('rock', 'rock', qc)\n",
" \n",
" # Apply the Hadamard gate to player 1's qubits so we can find a counter move.\n",
" qc.h(range(2))\n",
" qc.barrier()\n",
"\n",
" # Apply the oracle to every qubit.\n",
" qc.append(oracle, range(n+1))\n",
" qc.barrier()\n",
"\n",
" # Apply the diffuser to every qubit.\n",
" qc.append(diffuser(n), range(n))\n",
" qc.barrier()\n",
"\n",
" # Undo the output qubit phase-flip.\n",
" qc.h(n)\n",
" qc.x(n)\n",
"\n",
" qc.measure(var, cr)\n",
"\n",
" return qc\n",
"\n",
"qc = grover2(oracle, n)\n",
"\n",
"qc.draw(output='mpl')"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"As you can see above, Player 1's qubits are still in superposition. This will evaluate all possible moves for that player.\n",
"\n",
"However, Player 2 is specifically coded for 00 = Rock. We should expect the circuit to find a resulting counter-move of 01 = Paper to be chosen by Player 1."
]
},
{
"cell_type": "code",
"execution_count": 142,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'1100': 16, '0011': 132, '0001': 416, '0010': 132, '1011': 18, '1101': 18, '0100': 21, '0000': 129, '0101': 20, '1111': 21, '0110': 19, '1110': 20, '0111': 21, '1000': 15, '1001': 12, '1010': 14}\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 700x500 with 1 Axes>"
]
},
"execution_count": 142,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"simulator = Aer.get_backend('aer_simulator')\n",
"job = execute(qc, simulator)\n",
"result = job.result()\n",
"counts = result.get_counts()\n",
"\n",
"key = max(counts, key=counts.get)\n",
"\n",
"print(counts)\n",
"plot_histogram(counts)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Success!\n",
"\n",
"Sure enough, the quantum computer returns a result of 0001. Reading from least to most significnt bits, this evaluates to:\n",
"\n",
"- Player 1 = 01 = Paper\n",
"- Player 2 = 00 = Rock\n",
"\n",
"Paper defeats rock!"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Wrapping It Up\n",
"\n",
"Just for fun, let's wrap this all up into a classical function that we can call to return the counter move for any play.\n",
"\n",
"We'll create a function called `findWin(input)` which will take an input of the opponent's move and return back the winning move for the player to make against it. We'll call our quantum program to find the result each time."
]
},
{
"cell_type": "code",
"execution_count": 143,
"metadata": {},
"outputs": [],
"source": [
"# Define our oracle to take an input for player 2's move and be open to any possible move for player 1.\n",
"def winningMoveOracle(oracle, n, move):\n",
" var = QuantumRegister(n, 'var')\n",
" out = QuantumRegister(1, 'out')\n",
" cr = ClassicalRegister(n, 'c')\n",
" qc = QuantumCircuit(var, out, cr)\n",
"\n",
" # Initialize the output qubit to a phase-flip.\n",
" qc.x(n)\n",
" qc.h(n)\n",
"\n",
" # Pre-set Player 2 to a specific choice of rock, scissors, or paper.\n",
" qc = encode('rock', move, qc)\n",
" \n",
" # Apply the Hadamard gate to player 1's qubits so we can find a counter move.\n",
" qc.h(range(2))\n",
" qc.barrier()\n",
"\n",
" # Apply the oracle to every qubit.\n",
" qc.append(oracle, range(n+1))\n",
" qc.barrier()\n",
"\n",
" # Apply the diffuser to every qubit.\n",
" qc.append(diffuser(n), range(n))\n",
" qc.barrier()\n",
"\n",
" # Undo the output qubit phase-flip.\n",
" qc.h(n)\n",
" qc.x(n)\n",
"\n",
" qc.measure(var, cr)\n",
"\n",
" return qc\n",
"\n",
"# Run the quantum program.\n",
"def findWinQuantum(move):\n",
" qc = winningMoveOracle(oracle, n, move)\n",
"\n",
" simulator = Aer.get_backend('aer_simulator')\n",
" job = execute(qc, simulator)\n",
" result = job.result()\n",
" counts = result.get_counts()\n",
"\n",
" key = max(counts, key=counts.get)\n",
"\n",
" return key"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Define our Classical Wrapper\n",
"\n",
"Finally, let's wrap the quantum program with a classical program to let us calculate the winning move!"
]
},
{
"cell_type": "code",
"execution_count": 144,
"metadata": {},
"outputs": [],
"source": [
"def findWin(move):\n",
" result = findWinQuantum(move)\n",
"\n",
" # We want player 1's move, which is located in q0, q1. Remember, qubits are in reverse order in the result.\n",
" # 0001 => rock versus paper => 01 = paper\n",
" # ^-- q0\n",
" # ^-- q1\n",
" q0 = int(result[3])\n",
" q1 = int(result[2])\n",
"\n",
" choice = [q1, q0]\n",
" return list(choices.keys())[list(choices.values()).index(choice)].capitalize()"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Success!\n",
"\n",
"Does it work?"
]
},
{
"cell_type": "code",
"execution_count": 145,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"If Player 2 chooses Rock, you should choose Paper\n",
"If Player 2 chooses Paper, you should choose Scissors\n",
"If Player 2 chooses Scissors, you should choose Rock\n"
]
}
],
"source": [
"win = findWin('rock')\n",
"print('If Player 2 chooses Rock, you should choose ' + win)\n",
"\n",
"win = findWin('paper')\n",
"print('If Player 2 chooses Paper, you should choose ' + win)\n",
"\n",
"win = findWin('scissors')\n",
"print('If Player 2 chooses Scissors, you should choose ' + win)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.2"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "369f2c481f4da34e4445cda3fffd2e751bd1c4d706f27375911949ba6bb62e1c"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment