From 28b4df43e58c82bc86f38381511d68e906759524 Mon Sep 17 00:00:00 2001 From: LT Date: Fri, 31 Dec 2021 09:50:09 +0800 Subject: [PATCH 1/3] Add the case of H2_VQE. --- src/examples/H2_VQE/host.py | 171 ++++++++++++++++++++++++++++++++++ src/examples/H2_VQE/kernel.qu | 37 ++++++++ 2 files changed, 208 insertions(+) create mode 100644 src/examples/H2_VQE/host.py create mode 100644 src/examples/H2_VQE/kernel.qu diff --git a/src/examples/H2_VQE/host.py b/src/examples/H2_VQE/host.py new file mode 100644 index 0000000..f5781c2 --- /dev/null +++ b/src/examples/H2_VQE/host.py @@ -0,0 +1,171 @@ +import logging +from quingo import quingo_interface as qi +from pathlib import Path +import matplotlib.pyplot as plt +# from scipy.optimize import minimize_scalar, minimize +from scipy.optimize import minimize_scalar +from sympy import * +from sympy.physics.matrices import msigma +from sympy import Piecewise as pw +# from symqc import * +import numpy as np + +# qi.set_verbose(True) +# qi.set_log_level(logging.DEBUG) +qi.set_compiler('mlir') +qi.config_execution("state_vector") + +if qi.connect_backend('pyqcisim_quantumsim') is False: + exit(-1) + +qu_file = Path(__file__).parent / "kernel.qu" + +bond_h_decompose = [ + [0.20, 2.8489, 0.5678, -1.4508, 0.6799, 0.0791, 0.0791], + [0.25, 2.1868, 0.5449, -1.2870, 0.6719, 0.0798, 0.0798], + [0.30, 1.7252, 0.5215, -1.1458, 0.6631, 0.0806, 0.0806], + [0.35, 1.3827, 0.4982, -1.0226, 0.6537, 0.0815, 0.0815], + [0.40, 1.1182, 0.4754, -0.9145, 0.6438, 0.0825, 0.0825], + [0.45, 0.9083, 0.4534, -0.8194, 0.6336, 0.0835, 0.0835], + [0.50, 0.7381, 0.4325, -0.7355, 0.6233, 0.0846, 0.0846], + [0.55, 0.5979, 0.4125, -0.6612, 0.6129, 0.0858, 0.0858], + [0.60, 0.4808, 0.3937, -0.5950, 0.6025, 0.0870, 0.0870], + [0.65, 0.3819, 0.3760, -0.5358, 0.5921, 0.0883, 0.0883], + [0.70, 0.2976, 0.3593, -0.4826, 0.5818, 0.0896, 0.0896], + [0.75, 0.2252, 0.3435, -0.4347, 0.5716, 0.0910, 0.0910], + [0.80, 0.1626, 0.3288, -0.3915, 0.5616, 0.0925, 0.0925], + [0.85, 0.1083, 0.3149, -0.3523, 0.5518, 0.0939, 0.0939], + [0.90, 0.0609, 0.3018, -0.3168, 0.5421, 0.0954, 0.0954], + [0.95, 0.0193, 0.2895, -0.2845, 0.5327, 0.0970, 0.0970], + [1.00, -0.0172, 0.2779, -0.2550, 0.5235, 0.0986, 0.0986], + [1.05, -0.0493, 0.2669, -0.2282, 0.5146, 0.1002, 0.1002], + [1.10, -0.0778, 0.2565, -0.2036, 0.5059, 0.1018, 0.1018], + [1.15, -0.1029, 0.2467, -0.1810, 0.4974, 0.1034, 0.1034], + [1.20, -0.1253, 0.2374, -0.1603, 0.4892, 0.1050, 0.1050], + [1.25, -0.1452, 0.2286, -0.1413, 0.4812, 0.1067, 0.1067], + [1.30, -0.1629, 0.2203, -0.1238, 0.4735, 0.1083, 0.1083], + [1.35, -0.1786, 0.2123, -0.1077, 0.4660, 0.1100, 0.1100], + [1.40, -0.1927, 0.2048, -0.0929, 0.4588, 0.1116, 0.1116], + [1.45, -0.2053, 0.1976, -0.0792, 0.4518, 0.1133, 0.1133], + [1.50, -0.2165, 0.1908, -0.0666, 0.4451, 0.1149, 0.1149], + [1.55, -0.2265, 0.1843, -0.0549, 0.4386, 0.1165, 0.1165], + [1.60, -0.2355, 0.1782, -0.0442, 0.4323, 0.1181, 0.1181], + [1.65, -0.2436, 0.1723, -0.0342, 0.4262, 0.1196, 0.1196], + [1.70, -0.2508, 0.1667, -0.0251, 0.4204, 0.1211, 0.1211], + [1.75, -0.2573, 0.1615, -0.0166, 0.4148, 0.1226, 0.1226], + [1.80, -0.2632, 0.1565, -0.0088, 0.4094, 0.1241, 0.1241], + [1.85, -0.2684, 0.1517, -0.0015, 0.4042, 0.1256, 0.1256], + [1.90, -0.2731, 0.1472, 0.0052, 0.3992, 0.1270, 0.1270], + [1.95, -0.2774, 0.1430, 0.0114, 0.3944, 0.1284, 0.1284], + [2.00, -0.2812, 0.1390, 0.0171, 0.3898, 0.1297, 0.1297], + [2.05, -0.2847, 0.1352, 0.0223, 0.3853, 0.1310, 0.1310], + [2.10, -0.2879, 0.1316, 0.0272, 0.3811, 0.1323, 0.1323], + [2.15, -0.2908, 0.1282, 0.0317, 0.3769, 0.1335, 0.1335], + [2.20, -0.2934, 0.1251, 0.0359, 0.3730, 0.1347, 0.1347], + [2.25, -0.2958, 0.1221, 0.0397, 0.3692, 0.1359, 0.1359], + [2.30, -0.2980, 0.1193, 0.0432, 0.3655, 0.1370, 0.1370], + [2.35, -0.3000, 0.1167, 0.0465, 0.3620, 0.1381, 0.1381], + [2.40, -0.3018, 0.1142, 0.0495, 0.3586, 0.1392, 0.1392], + [2.45, -0.3035, 0.1119, 0.0523, 0.3553, 0.1402, 0.1402], + [2.50, -0.3051, 0.1098, 0.0549, 0.3521, 0.1412, 0.1412], + [2.55, -0.3066, 0.1078, 0.0572, 0.3491, 0.1422, 0.1422], + [2.60, -0.3079, 0.1059, 0.0594, 0.3461, 0.1432, 0.1432], + [2.65, -0.3092, 0.1042, 0.0614, 0.3433, 0.1441, 0.1441], + [2.70, -0.3104, 0.1026, 0.0632, 0.3406, 0.1450, 0.1450], + [2.75, -0.3115, 0.1011, 0.0649, 0.3379, 0.1458, 0.1458], + [2.80, -0.3125, 0.0997, 0.0665, 0.3354, 0.1467, 0.1467], + [2.85, -0.3135, 0.0984, 0.0679, 0.3329, 0.1475, 0.1475]] + + +def expand_1q_gate(gate, target_qubit): + '''Expand a single-qubit gate applied on the `target_qubit` to a 4 x 4 matrix. + Qubits in the basis is organized as: |qubit_1, qubit_0> + The basis of this matrix is shown as following: + |00> |01> |10> |11> + |00> xx xx xx xx + |01> xx xx xx xx + |10> xx xx xx xx + |11> xx xx xx xx + ''' + if target_qubit == 1: + return kronecker_product(gate, eye(2)) + elif target_qubit == 0: + return kronecker_product(eye(2), gate) + else: + raise ValueError( + "Given target_qubit ({}) is neither 0 or 1.".format(target_qubit)) + + +def hamiltonian(g): + '''Generate the hamiltonian for the H2 molecule, which is: + H = g0*I + g1*Z0 + g2*Z1 + g3*Z0Z1 + g4*Y0Y1 + g5*X0X1 + ''' + X = msigma(1) + Y = msigma(2) + Z = msigma(3) + assert(len(g) == 6) + sigmas = [eye(4), + expand_1q_gate(Z, 0), + expand_1q_gate(Z, 1), + expand_1q_gate(Z, 0) * expand_1q_gate(Z, 1), + expand_1q_gate(X, 0) * expand_1q_gate(X, 1), + expand_1q_gate(Y, 0) * expand_1q_gate(Y, 1)] + h = zeros(4) + for i in range(6): + h += sigmas[i] * g[i] + + # print("The result of Hamiltonian is: {}".format(h)) + return h + + +def get_ansatz(circ_name, theta): + if not qi.call_quingo(qu_file, circ_name, theta): + print("Failed to call {}".format(circ_name)) + # print("The result of {} is:".format(circ_name)) + res = qi.read_result() + return res + + +def get_real(c): + return c.as_real_imag()[0] + + +def expectation(h, state): + ''' Return the expectation value of the given state under the given hamiltonian. + ''' + return get_real(N(np.dot(state, h * state))) + + +def energy_theta(theta: np.double, g): + '''Return the calculated energy for the given parameter theta. + ''' + ansatz_state = get_ansatz("ansatz", theta) + h = hamiltonian(g) + energy = expectation(h, ansatz_state) + return energy + + +def eval_all(): + bond_length = [] + lowest_energies = [] + for b in bond_h_decompose: + bond_length.append(b[0]) + g = b[1:] + + # --------------- brute-force scanning - -------------- + angles = np.linspace(-np.pi/2, np.pi/2, 50) + tmp_lowest_energies = [energy_theta(theta, g) for theta in angles] + lowest_energies.append(min(tmp_lowest_energies)) + + # # --------------- optimization based on searching --------------- + # minimum = minimize_scalar(lambda theta: energy_theta(theta, g)) + # lowest_energies.append(minimum.fun) + + plt.plot(bond_length, lowest_energies, "b.-") + plt.xlabel("Bond Length") + plt.title("Variational Quantum Eigensolver") + plt.ylabel("Energy") + plt.show() + + +eval_all() diff --git a/src/examples/H2_VQE/kernel.qu b/src/examples/H2_VQE/kernel.qu new file mode 100644 index 0000000..238017a --- /dev/null +++ b/src/examples/H2_VQE/kernel.qu @@ -0,0 +1,37 @@ +opaque X(q: qubit) : unit; +opaque X2P(q: qubit) : unit; +opaque X2M(q: qubit) : unit; +opaque Y2P(q: qubit) : unit; +opaque Y2M(q: qubit) : unit; +opaque RZ(q: qubit, angle: double) : unit; + +opaque CZ(q1: qubit, q2: qubit) : unit; +opaque measure(q: qubit): bool; + +operation CNOT(a: qubit, b: qubit) : unit { + Y2M(b); + CZ(a, b); + Y2P(b); +} + +operation init(q: qubit): unit{ + X(q); +} + +operation ansatz(angle: double): unit { + using(q0: qubit, q1: qubit) { + init(q0); + + X2M(q0); + Y2P(q1); + CNOT(q1, q0); + RZ(q0, angle); + CNOT(q1, q0); + X2P(q0); + Y2M(q1); + } + +} + + + -- Gitee From baac1b58bd7426b4c9c06a85c2ea73be8c391c2f Mon Sep 17 00:00:00 2001 From: LT Date: Fri, 31 Dec 2021 20:55:29 +0800 Subject: [PATCH 2/3] Add the case of H2_VQE. --- src/examples/H2_VQE/host.py | 57 ++++++++++++++---------- src/examples/H2_VQE/test_H2_VQE.ipynb | 62 +++++++++++++++++++++++++++ 2 files changed, 97 insertions(+), 22 deletions(-) create mode 100644 src/examples/H2_VQE/test_H2_VQE.ipynb diff --git a/src/examples/H2_VQE/host.py b/src/examples/H2_VQE/host.py index f5781c2..fba091c 100644 --- a/src/examples/H2_VQE/host.py +++ b/src/examples/H2_VQE/host.py @@ -4,10 +4,7 @@ from pathlib import Path import matplotlib.pyplot as plt # from scipy.optimize import minimize_scalar, minimize from scipy.optimize import minimize_scalar -from sympy import * -from sympy.physics.matrices import msigma -from sympy import Piecewise as pw -# from symqc import * +from numpy import * import numpy as np # qi.set_verbose(True) @@ -77,6 +74,18 @@ bond_h_decompose = [ [2.85, -0.3135, 0.0984, 0.0679, 0.3329, 0.1475, 0.1475]] +def gate(i): + if i == 1: + m = np.mat("0, 1; 1, 0") + elif i == 2: + m = np.mat("0, -1j; 1j, 0") + elif i == 3: + m = np.mat("1, 0; 0, -1") + else: + raise IndexError("Invalid Pauli index") + return m + + def expand_1q_gate(gate, target_qubit): '''Expand a single-qubit gate applied on the `target_qubit` to a 4 x 4 matrix. Qubits in the basis is organized as: |qubit_1, qubit_0> @@ -88,9 +97,9 @@ def expand_1q_gate(gate, target_qubit): |11> xx xx xx xx ''' if target_qubit == 1: - return kronecker_product(gate, eye(2)) + return np.kron(gate, eye(2)) elif target_qubit == 0: - return kronecker_product(eye(2), gate) + return np.kron(eye(2), gate) else: raise ValueError( "Given target_qubit ({}) is neither 0 or 1.".format(target_qubit)) @@ -100,9 +109,10 @@ def hamiltonian(g): '''Generate the hamiltonian for the H2 molecule, which is: H = g0*I + g1*Z0 + g2*Z1 + g3*Z0Z1 + g4*Y0Y1 + g5*X0X1 ''' - X = msigma(1) - Y = msigma(2) - Z = msigma(3) + X = gate(1) + Y = gate(2) + Z = gate(3) + assert(len(g) == 6) sigmas = [eye(4), expand_1q_gate(Z, 0), @@ -110,30 +120,30 @@ def hamiltonian(g): expand_1q_gate(Z, 0) * expand_1q_gate(Z, 1), expand_1q_gate(X, 0) * expand_1q_gate(X, 1), expand_1q_gate(Y, 0) * expand_1q_gate(Y, 1)] - h = zeros(4) + h = zeros((4, 4)) for i in range(6): - h += sigmas[i] * g[i] + h = h + np.dot(g[i], sigmas[i]) - # print("The result of Hamiltonian is: {}".format(h)) return h def get_ansatz(circ_name, theta): if not qi.call_quingo(qu_file, circ_name, theta): print("Failed to call {}".format(circ_name)) - # print("The result of {} is:".format(circ_name)) res = qi.read_result() return res def get_real(c): - return c.as_real_imag()[0] + return np.real(c) def expectation(h, state): ''' Return the expectation value of the given state under the given hamiltonian. ''' - return get_real(N(np.dot(state, h * state))) + state_matrix = np.mat(state).T + t_conj_state = state_matrix.T.conjugate() + return get_real(np.dot(t_conj_state, np.dot(h, state_matrix))) def energy_theta(theta: np.double, g): @@ -148,18 +158,21 @@ def energy_theta(theta: np.double, g): def eval_all(): bond_length = [] lowest_energies = [] + # theta = -np.pi/2 for b in bond_h_decompose: bond_length.append(b[0]) g = b[1:] - # --------------- brute-force scanning - -------------- - angles = np.linspace(-np.pi/2, np.pi/2, 50) - tmp_lowest_energies = [energy_theta(theta, g) for theta in angles] - lowest_energies.append(min(tmp_lowest_energies)) + # --------------- brute-force scanning - -------------- + # angles = np.linspace(-np.pi/2, np.pi/2, 50) + # tmp_lowest_energies = [energy_theta(theta, g) for theta in angles] + # ele_tmp_lowest_energies = (min(tmp_lowest_energies)).A[0][0] + # lowest_energies.append(ele_tmp_lowest_energies) - # # --------------- optimization based on searching --------------- - # minimum = minimize_scalar(lambda theta: energy_theta(theta, g)) - # lowest_energies.append(minimum.fun) + # # --------------- optimization based on searching --------------- + minimum = minimize_scalar( + lambda theta: (energy_theta(theta, g)).A[0][0]) + lowest_energies.append(minimum.fun) plt.plot(bond_length, lowest_energies, "b.-") plt.xlabel("Bond Length") diff --git a/src/examples/H2_VQE/test_H2_VQE.ipynb b/src/examples/H2_VQE/test_H2_VQE.ipynb new file mode 100644 index 0000000..a31b297 --- /dev/null +++ b/src/examples/H2_VQE/test_H2_VQE.ipynb @@ -0,0 +1,62 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "connecting pyqcisim_quantumsim...\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAEWCAYAAAB42tAoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAqM0lEQVR4nO3deZwcVb3//9d7JkyCQMIygYQlJDFBFlkzRoILAQICEsJF2RQNXpF7wX1H8brhBZUL/i54f2pElE0QUCDsJJFFYEAG2ddgZAkESAhLAoRsn+8fp5rpmfTM9GRmuma638/Hox9dXVVd9enumfrUOafOKUUEZmZmHanLOwAzM+vfnCjMzKxTThRmZtYpJwozM+uUE4WZmXXKicLMzDrlRGFrRdJSSWPX8r2flHRjb8dUYj9/kPSTvt5PNZB0naTpecdRiqTRkkLSoLxjqVVOFDVA0vWSflxi/jRJL6zNP2BErB8R88rY9xr/5BFxYUTs19199jZJW0q6UNLLkt6Q9HdJB1Zo35Mlza/Evor2tzpL8MWPSQARcUBEnFupeGxgcaKoDecCR0tSu/mfAi6MiJXlbqhazuokbQzcBiwHdgAagV8AF0s6JMfQ+tLzWYIvfjTnHVRequVvuRKcKGrDFcAmwIcKMyRtBBwEnCdpoqRmSa9KWiDpl5IaitYNSZ+XNBeYWzRvXDb9UUn3Snpd0rOSfli071uz51cLZ7CSjpF0W9H295B0t6TXsuc9ipbdLOlkSbdLWiLpRkmNRcsvzUpFr0m6VdIOZX4nXwWWAp+NiBci4q2IuAj4b+AMJWuUhrJ4js2m3y3pr1mJZFFWOtmwaN2nJH1D0gNZfH+SNETSesB1wOZFZ/abt68qa1/qyLb3zWx7b0j6naTNsmqjJZJmZ79rt7X7XPWSTs8+078kfaH4e5A0LNv3AknPSfqJpPps2TGSbpP0P5Jeyd5/QNF+jpE0L4v3X5I+mc2vk/Q9SU9LeknSeZKGlYjzCEkt7eZ9VdLMbHpwtu9nJL0o6deS1i3+PiV9W9ILwO/X5ruqRU4UNSAi3gIuAT5dNPtw4LGIuB9YRTpwNgKTgH2AE9pt5hDg/cD2JXbxRrbtDYGPAser9az8w9nzhqXOYJXO7K8BziQlszOAayRtUrTaJ4DPAJsCDcA3ipZdB4zPlv0DuLD0t7CGfYE/R8TqdvMvAcYA48rYhoBTgc2B7YCtgB+2W+dwYP9smzsBx0TEG8ABtD3Df77MuD+Wxb4NMJX0+b8LDCf9P3+pzO105nNZfLsAu5F++2J/AFaSvqNdgf2AY4uWvx94nPT39HPgd1niXY/0Ox8QERsAewD3Ze85JnvsBYwF1gd+WSK2q4D3SBpfNO8TwB+z6Z+Svptdsvi2AL5ftO4IYGNga+C4jr4Aa8uJonacC3xc0pDs9aezeUTEPRFxZ0SsjIingN8Ae7Z7/6kRsThLOm1ExM0R8WBErI6IB4CLSry/Ix8F5kbE+dn+LwIeIx0EC34fEU8UJbxdivZ9TkQsiYi3SQfpnUudiZbQCCwoMb8wb3hXG4iIJyNiVkS8HRELSUmu/ec+MyKej4jFpIPcLu23001nRcSLEfEc8Dfgroi4NyKWAZeTDtwd2Vyp1Fj8WK/EeocD/xsR8yPiFdLBFwBJmwEHAl+JiDci4iVSld2RRe9/OiJ+GxGrSH9jI4HNsmWrgfdKWjciFkTEw9n8TwJnRMS8iFgKfAc4Uu2qhyLiTeBK4KgsnvHAtsBMSSId/L+a/a0uAU5pF9tq4AfZb7bG37KV5kRRIyLiNmARcIikdwMTyc7CJG0j6eqsCud10j9XY7tNPNvRtiW9X9JNkhZKeg34zxLv78jmwNPt5j1NOhMseKFo+k3S2WahiuSnkv6Zxf1Utk45+15EOoC1N7Joeaeyap+Ls+qX14ELSuy7ZOw98GLR9FslXne2/ecjYsN2jzdKrLc5bX/v4umtgXWABYVkQzqx2LRonXc+c3ZgB1g/29cRpL+PBZKukbRt0T6L/w6eBgbRmmCK/ZEsUZBKE1dk+xkOvAu4pyi262mb9BdmSdW6wYmitpxHKkkcDdwQEYWDzK9IZ/HjI2IoqSqjfcN3Z8MM/xGYCWwVEcOAXxe9v6vhiZ8nHXyKjQKe6+J9kA4S04ApwDBgdDa/feylzAYOldT+f+BwYD7wJKlKDdLBp2BE0fQppM+3Y/a9HV3mvqH09/JGJ/uqpAXAlkWvtyqafhZ4G2gsSjZDI6KstqGIuCEi9iUl5MeA32aL2v8djCJVb73ImmYBwyXtQkoYhWqnRaRkuUNRbMMiojh5erjsteBEUVvOIx1UP0dW7ZTZAHgdWJqd4R3fze1uACyOiGWSJpIO4AULScX9jvpcXAtsI+kTkgZJOoLUDnJ1mft9G3iZdIA9pRsx/4KUXH4naUTWyHwU8F+kqonVWXXSc6Qrxuol/Tvw7nb7Xwq8JmkL4Jvd2P+LwCbtqsnuAw6UtLGkEcBXurG93nQJ8GVJWyg1zn+7sCAiFgA3AqdLGpo1Qr9bUpdVjVkJbFpW3fU26bsrtBFdBHxV0hhJ65N+yz+VuiIvIlYAlwKnkdobZmXzV5MSzy8kbZrtcwtJH1m7r8EKnChqSNb+cAewHqkEUPAN0sF9Cekf7U/d3PQJwI8lLSE1HF5StM83SVcS3Z5VB+zeLqaXSVdffZ10wP8WcFBEdFn1Q0p8T5MO5o8Ad5YbcLbfDwJDsvcuzbb3+Yg4p2jVz5ESwMuky2jvKFr2I1Jj72ukBvm/dGP/j5EOjvOy72Vz4HzgflIV2o10/3foSvFVVoXHx0qs99ts/w8A95KS+UrSRQ+QSqUNpO/tFeAySlfjtVcHfI1UelhMas8pnJScQ/r8twL/ApYBX+xkW38knfRc2i6ZfJtUGrwzqw6cDbynjNisE/KNi8xA0lDgduDyiPh+V+vXkuzy1l9HRPsqQqsRLlGYARHxOulqnlVZtU/NkrSupAOzqsAtgB+QrqiyGuUShZm1IeldwC2ky07fIlWrfTlLplaDnCjMzKxTuVY9Sdpf0uOSnpR0YonlX5P0iNKQBXMkuY7UzKzCcitRKI0N8wRpOIL5wN3AURHxSNE6e5F6nr4p6XhgckQc0dW2GxsbY/To0X0TuJlZFbrnnnsWRUTJEQnyHD1xIvBkYahqSReTOk+9kygi4qai9e8kdWjq0ujRo2lpael6RTMzA0BS+xES3pFn1dMWtB0aYD5th21o77OkAdBKknScpBZJLQsXLuylEM3MbEBcHivpaKCJ1BOzpIiYERFNEdE0fHiX47mZmVmZ8qx6eo62Y8hsSYnxfSRNAU4C9sxGCDUzswrKs0RxNzA+G9ulgTQUcPGwEkjalTQy5cHZcMZmZlZhuSWKbHyWLwA3AI8Cl0TEw5J+LOngbLXTSMMmXyrpPmV3sTIzs8rJ9Z6xEXEtacCx4nnfL5qeUvGgzMysjQHRmF0pzc1w6qnp2czMklxLFP3JHXfAnnvC6tUweDDMmQOTJuUdlZlZ/lyiyNxyC6xcmRLF8uVw8815R2Rm1j+4RJGZPBmU3cSyoSG9NjMzJ4p3TJoE222XShPnnedqJzOzAlc9FRkzBjbYwEnCzKyYE0WR4cNhUTl3ajYzqyFOFEUaG2HhQvC9nMzMWjlRFBk+HJYtgzffzDsSM7P+w4miSGNjevYo5WZmrZwoihRGJ3c7hZlZKyeKIi5RmJmtyYmiiEsUZmZrcqIo4hKFmdmanCiKDBsGgwa5RGFmVsyJoojU2pfCzMwSJ4p23DvbzKwtJ4p2XKIwM2vLiaKdxkaXKMzMijlRtDN8uEsUZmbFnCjaaWyEV15Jd7szM7OcE4Wk/SU9LulJSSeWWD5Y0p+y5XdJGt3XMQ0fnkaPXby4r/dkZjYw5JYoJNUD/wccAGwPHCVp+3arfRZ4JSLGAb8AftbXcRU63bmdwswsybNEMRF4MiLmRcRy4GJgWrt1pgHnZtOXAftIhTtb943CMB5upzAzS/JMFFsAzxa9np/NK7lORKwEXgM2KbUxScdJapHUsrAHR3mXKMzM2qqaxuyImBERTRHRNLxQLFgLLlGYmbWVZ6J4Dtiq6PWW2byS60gaBAwDXu7LoDbJyisuUZiZJXkmiruB8ZLGSGoAjgRmtltnJjA9m/448NeIvr2j9eDBMHSoSxRmZgWD8tpxRKyU9AXgBqAeOCciHpb0Y6AlImYCvwPOl/QksJiUTPqce2ebmbXKLVEARMS1wLXt5n2/aHoZcFil43LvbDOzVlXTmN2bXKIwM2vlRFGCSxRmZq2cKEoolCj6ttnczGxgcKIoYfhwWLYM3ngj70jMzPLnRFGCe2ebmbVyoijBvbPNzFo5UZTgEoWZWSsnihJcojAza+VEUYJLFGZmrZwoShg2DAYNconCzAycKEqS3DvbzKzAiaID7p1tZpY4UXTAJQozs8SJogMuUZiZJU4UHXCJwswscaLowPDhsHgxrFyZdyRmZvlyouhAoS/F4sX5xmFmljcnig64d7aZWeJE0QH3zjYzS5woOuAShZlZ4kTRAZcozMwSJ4oOOFGYmSW5JApJG0uaJWlu9rxRiXV2kdQs6WFJD0g6opIxNjTA0KGuejIzy6tEcSIwJyLGA3Oy1+29CXw6InYA9gf+P0kbVi7E1E7hEoWZ1bq8EsU04Nxs+lzgkPYrRMQTETE3m34eeAkYXqkAIVU/uURhZrUur0SxWUQsyKZfADbrbGVJE4EG4J+drHOcpBZJLQt76ejuEoWZGQzqqw1Lmg2MKLHopOIXERGSopPtjATOB6ZHxOqO1ouIGcAMgKampg631x2NjXDffb2xJTOzgavPEkVETOlomaQXJY2MiAVZInipg/WGAtcAJ0XEnX0UaocKJYqIdDMjM7NalFfV00xgejY9Hbiy/QqSGoDLgfMi4rIKxvaOxkZYtgzeeCOPvZuZ9Q95JYqfAvtKmgtMyV4jqUnS2dk6hwMfBo6RdF/22KWSQRZ6Z7udwsxqWZ9VPXUmIl4G9ikxvwU4Npu+ALigwqG1Ueh0t3AhjB6dZyRmZvlxz+xOuERhZuZE0aniEoWZWa1youiESxRmZk4UnRo6FNZZxyUKM6ttThSdkFL1k0sUZlbLnCi64PGezKzWOVF0weM9mVmtc6LogksUZlbrnCi64BKFmdU6J4ouNDbC4sWwcmXekZiZ5cOJoguFvhSLF+cbh5lZXpwoulDonX3KKdDcnG8sZmZ5cKLowkvZnTLOOgv22cfJwsxqjxNFF+bNS8+rV8Py5XDzzbmGY2ZWcU4UXZg2LT1L0NAAkyfnGo6ZWcU5UXRh8mTYZBPYbTeYMwcmTco7IjOzysrlxkUDzXvek0oTThJmVotcoijDmDHwr3/lHYWZWT6cKMowZgw8+yysWJF3JGZmledEUYaxY9NVT888k3ckZmaV50RRhjFj0rOrn8ysFuWWKCRtLGmWpLnZ80adrDtU0nxJv6xkjAVOFGZWy/IsUZwIzImI8cCc7HVHTgZurUhUJWy5JQwa5ERhZrUpz0QxDTg3mz4XOKTUSpImAJsBN1YmrDXV18OoUU4UZlab8kwUm0XEgmz6BVIyaENSHXA68I1KBlbK2LGtw3mYmdWSshKFpNMl7dDdjUuaLemhEo9pxetFRABRYhMnANdGxPwy9nWcpBZJLQv74JZ07kthZrWq3J7ZjwIzJA0Cfg9cFBGvdfWmiJjS0TJJL0oaGRELJI0EXiqx2iTgQ5JOANYHGiQtjYg12jMiYgYwA6CpqalU0umRMWPSLVGXLoX11+/trZuZ9V9llSgi4uyI+ADwaWA08ICkP0raqwf7nglMz6anA1eW2O8nI2JURIwmVT+dVypJVELhyqennspj72Zm+Sm7jUJSPbBt9lgE3A98TdLFa7nvnwL7SpoLTMleI6lJ0tlruc0+40tkzaxWlVX1JOkXwFTSZaynRMTfs0U/k/T42uw4Il4G9ikxvwU4tsT8PwB/WJt99YaxY9OzG7TNrNaU20bxAPC9iHijxLKJvRhPv9XYCOut5xKFmdWechPF/cB7JBXPew14upxG7Wog+conM6tN5SaK/x/YjVSyEPBe4GFgmKTjIyK3znCV5ERhZrWo3Mbs54FdI6IpIiYAuwLzgH2Bn/dVcP1NIVFEr198a2bWf5WbKLaJiIcLLyLiEWDbiKippt2xY1M/ikWL8o7EzKxyyq16ekTSr4DCpbBHZPMGAzVzO5/iS2SHD883FjOzSim3RDEdeBL4SvaYBxxDShI96XQ3oLgvhZnVoi5LFFlHu2sjYi/SAH3tLe31qPopJwozq0VdligiYhWwWtKwCsTTr62/fupP4URhZrWk3DaKpcCDkmYB73S6i4gv9UlU/djYsU4UZlZbyk0Uf8keNW/MGGhpyTsKM7PKKStRRMS5ktYFRkXEWo3tVC3GjIG//AVWrUp3vjMzq3bl3rhoKnAfcH32ehdJM/swrn5rzBhYsQKeey7vSMzMKqPcy2N/SBr871WAiLgPGNsnEfVzvvLJzGpNuYliRYnB/1b3djADQWG4cScKM6sV5TZmPyzpE0C9pPHAl4A7+i6s/mvUKKir830pzKx2lFui+CKwA/A2cBHwOqmHds1ZZx3YckuXKMysdpR71dObwEnZo+Z5uHEzqyXl3gp1G+AbwOji90TE3n0TVv82ZgzcWBN34DAzK7+N4lLg18DZwKq+C2dgGDMGnn8eli2DIUPyjsbMrG+VmyhWRsSv+jSSAaRw5dNTT8G22+YaiplZnyu3MfsqSSdIGilp48KjTyPrx9yXwsxqSbkliunZ8zeL5gVr2ekuSzJ/IrV5PAUcHhGvlFhvFKm6a6tsfwdGxFNrs8/e5ERhZrWkrBJFRIwp8ehJz+wTgTkRMR6Yk70u5TzgtIjYjtQz/KUe7LPXjBgBgwc7UZhZbeg0UUj6VtH0Ye2WndKD/U4Dzs2mzwUOKbHv7YFBETELICKWZpfp5q6uDkaPdqIws9rQVYniyKLp77Rbtn8P9rtZRCzIpl8ANiuxzjbAq5L+IuleSadld9srSdJxkloktSxcuLAHoZVno43gjjugubnPd2VmlquuEoU6mC71uu1Cabakh0o8phWvFxFBan9obxDwIVL/jfeR2kOO6Wh/ETEjIpoiomn48OGdhdZjzc3pnhQLFsA++zhZmFl166oxOzqYLvW67cKIKR0tk/SipJERsUDSSEq3PcwH7ouIedl7rgB2B37XRcx97uab0/0oAJYvT68nTcozIjOzvtNViWJnSa9LWgLslE0XXu/Yg/3OpPVKqunAlSXWuRvYUFKheLA38EgP9tlrJk+GhoY0XV+fXpuZVatOE0VE1EfE0IjYICIGZdOF1+v0YL8/BfaVNBeYkr1GUpOks7N9ryJVO82R9CCpquu3Pdhnr5k0Ca6+Ok1Pn+7ShJlVt3L7UfSqiHgZ2KfE/Bbg2KLXs4CdKhha2aZMgW22gZf6xQW7ZmZ9p9ye2VbChAlwzz15R2Fm1recKHpgwgSYP9+lCjOrbk4UPTBhQnp2qcLMqpkTRQ/stlt6dqIws2rmRNEDQ4emBm0nCjOrZk4UPeQGbTOrdk4UPTRhAjz7rBu0zax6OVH0kBu0zazaOVH00K67pmcnCjOrVk4UPTRsGIwf70RhZtXLiaIXNDU5UZhZ9XKi6AWFBu0K3C/JzKzinCh6gRu0zayaOVH0gkKDdktLvnGYmfUFJ4pe4AZtM6tmThS9xD20zaxaOVH0Ejdom1m1cqLoJU1N6dmlCjOrNk4UvcQ9tM2sWjlR9BI3aJtZtXKi6EUTJvgSWTOrPk4UvcgN2mZWjXJLFJI2ljRL0tzseaMO1vu5pIclPSrpTEmqdKzlcg9tM6tGeZYoTgTmRMR4YE72ug1JewAfAHYC3gu8D9izkkF2R+Ee2mecAc3N+cZiZtZb8kwU04Bzs+lzgUNKrBPAEKABGAysA7xYieDWxiOPgASzZsE++zhZmFl1yDNRbBYRC7LpF4DN2q8QEc3ATcCC7HFDRDxaamOSjpPUIqllYU6NBDffDBFpevny9NrMbKAb1JcblzQbGFFi0UnFLyIiJEWJ948DtgO2zGbNkvShiPhb+3UjYgYwA6CpqWmNbVXC5MnQ0JCSxKBB6bWZ2UDXp4kiIqZ0tEzSi5JGRsQCSSOBl0qs9m/AnRGxNHvPdcAkYI1E0R9MmgTXXAP77w+HHppem5kNdHlWPc0EpmfT04ErS6zzDLCnpEGS1iE1ZJeseuovpkxJ7RO+8snMqkWeieKnwL6S5gJTstdIapJ0drbOZcA/gQeB+4H7I+KqPILtjqlT4Ykn0sPMbKDLLVFExMsRsU9EjI+IKRGxOJvfEhHHZtOrIuI/ImK7iNg+Ir6WV7zdMXVqer6q36c0M7OuuWd2H9h6a9hxR7j66rwjMTPrOSeKPjJ1Kvztb/DKK3lHYmbWM04UfWTqVFi1Cq6/Pu9IzMx6xomij0ycCJtu6nYKMxv4nCj6SF0dfPSjcN11sGJF3tGYma09J4o+dNBB8OqrcPvteUdiZrb2nCj60H77pSE9XP1kZgOZE0UfWn992GsvJwozG9icKPrY1Kkwdy48/njekZiZrR0nij520EHp2aUKMxuonCj62NZbw047uZe2mQ1cThQVUOil/f3v+653ZjbwOFFUwOjRsHo1/Pd/+xapZjbwOFFUwEvZLZlWr/YtUs1s4HGiqIC99oJ11knTvkWqWeU1N8Opp7YtzZea11vz+9O2e0Of3grVkkmTUmP21KkpSfgWqVbLmptTqbr9/0J35hfmffjDMGECLFuWHnfcAbfdBrvtBtttl0rw994LX/taGkpn0KDUVrhiRTqoFuadcAJsuSX8859w9tlpQM/6ejj88DRm27PPwhVXpFqBurp0u+NNNoEXX4TZs1vX/8AHICKNxlBYt6kJhg5NI0nfe2/r/B12gA02gNdeg0cfTfMlGDsWhgyBpUvhmWfS9iTYfPP02Z9/vnXeZpvB4MHps7/0Upq/7rowZ07vHmecKCpkv/3g+OPh//4PnnsOttgi74jMek9HB/O//jUdKLffHpYsSfM+//nWA/SXvwzDh6cD5fnnpwNuXR186EPwrnfBggVw//2tB9FNN00H/7Udvn/5cvje99rOW7EC/vd/11x35Uq49NJ04F2xIsUG6fm222DDDeH119vOf/zxFOfq1Wne6tXpMwwaBIsWtZ3/xhvpQP/SS63zI9JoDu95T7pDZkRrPJtskrb93HOt80aMSFdVPvRQaxV3oXq7V09II6LqHhMmTIj+aN68iLq6iG9/O+9IzDp3xx0Rp5ySnlevjnj99fT3e/bZEcccE/GDH0SceWZ6/tjHIurrIyD9fY8eHdHYmF6v7WPTTSOamtK2CvOkiN12i5g4MU0X5n3kIxG/+EXEtGmt8+vqIj71qYjrr48466yIwYNTjIMHR5x/fsTFF0cMGZLmDRmS1luyJOLmmyPWXTfNX3fd9PkL30e587uzbl9vuzuAlujgmKooTllVoqmpKVpaWvIOo6TDDktF1WefTUN8mFVK+7P+pUtTleicOanaZejQdPb74INw442tZ/GDBnU+AvKQIanqo2CHHdJZ+D33tFaRHHJIqsaZPz+d0a9cmdrtLrkkteHdfz/su286G25oaK06aW5OVwoWz4c153W0bvuqqlLVVz2pAhsI2y6XpHsioqnkMieKyrrzzvQjnnkmfPGLeUdj1ai5OR3ot9kmVVc880yquz/vvFQ9IqUD+ZtvrvnewYPTsldfTa+lVA100EFw111w+eUpgdTXw4knwg9/CHffXf7BvBBffz1Y1jInin5mjz1SI9gTT6R/OLPOlDr4rV4NV14J11yT6vglmDcPHngg1fd3ZdKkVIKYNav1wP/d78KPfpROZvryjN36p84SRS5tCMBhwMPAaqCpk/X2Bx4HngROLHf7/bWNouCyy1I96p//nHck1t8Utw1ERNx0U6pXr6uLGDQoYu+9I3beOaKhoW2dfn19xLhx6VFcT3/ccRFPPRVx663l13eXiqOr+Tbw0d/aKCRtlyWJ3wDfiIg1Tv8l1QNPAPsC84G7gaMi4pGutt/fSxSrVsH48elyt9tuyzsay0P7s+3CFTbHHJPaA+rqYOTIdIVL8b/oxhvD7runSyrvuCMtq69PJYGTTvJZv629zkoUuVweGxGPAkjqbLWJwJMRMS9b92JgGtBloujv6uvhK19JlwbedRe8//15R2SVNHt2qvNfvjwlhHHj4Omn2zYIr1oFw4aly6ovuCC9bmhIjc+lqoH23ju9b9KklBxKHfwnTVozGZSaZ9Zef+5HsQXwbNHr+UDVHFI/85nU8ee734UpU3xGV61uugn+9KfUQLxoEbS0wGOPtS5ftSqVJk44AdZbD37+8/S6oQF++9v0N3HssWse+LubEMx6os8ShaTZwIgSi06KiCv7YH/HAccBjBo1qrc33+s22CCdVV54YfpnHzy493tTWuU0N6ekMG4cvP12ahCePTtdsFCwySap5+4HP9h6BVJDQ+poVvjdDzigdFIo9XfhhGCV0meJIiKm9HATzwFbFb3eMpvX0f5mADMgtVH0cN8VsVX26YoHC/Q/fv9XqNffY4/Ux+DCC+E3v2ntXQupj8ymm6arkQrtCF//OnznO2n5v/+7SwM2cPTnqqe7gfGSxpASxJHAJ/INqXcdfDCcfnpr46UHC+zflixJ4wB961upeqiUurrUP+b00+Hvf2/bjlD8+zoh2ECSy+ixkv5N0nxgEnCNpBuy+ZtLuhYgIlYCXwBuAB4FLomIh/OIt69MmpTOKseNS2ecI0pV1FluZs9ObUmf+lS60mijjdLgcoUkIcHRR6e+DOuum37DwYPhiCPSdKEd4eSTXa1oA5s73PUDzzwD731vGjxt9ux0VmqVU6hK+uAH0wF+9mz4859T57WCHXdMJcBNN009kkt1RvNlpjaQ9bvLY62tUaNSVcVxx8GMGfCf/5l3RLXj0kvhk59sO5ZRYUjn4vaFo45qbV943/vKb3A2qwYuUfQTEema+TvvTIOyjR6dd0TVp7kZbrghXYb69NNp+sknW5dLcOSRcNZZ6WqljjqumVUjj/U0QDz9dKrimDgxjcHTeX9E60yhKmjPPVPbwq9+le4FUrgyafDg1H9lm23SshUryh+8zqwaueppgNh6a/if/4H/+A849NB0dY0PUN13883wkY+0Vie1Pxeqq0vDXfzXf6XXhx3mS1XNOuNE0c+8973pQHbFFXDddakTlw9WHSuc9W+/PbzwQhri4vrr216+Om0afPrT6QqlQlXSlKJePk4IZp1zouhnbrmltcrp7bfhnHN8ECtl9Wr4/e9Tw39xUhgzJt0k56qrWofC+Pa3Ox/ywsw650TRz0yenA5uy5eng+F556UG1n32yTuyfDU3p8tW3/UumDs3JYLnn29dLqVBFs84I02Xal9wycFs7ThR9DPFZ7477ZQuyTzooHSTmv32yzu6ynvxxXQ3wJ/9rPUm9kOGwEc/mqqbTjuttSH68MNbS2NOCma9x4miHyo+yL3//ak+/eCD4dRT01DU1Vx1cscdcPHF6XM+8EAaBqO4MbquLo24W2iILjWInpn1Ll8eOwC8/HIagO6JJ9KBslpGmi1UD02cCEuXpvaYq65qTQzbbQef+EQaPPH4492nwawv+fLYAW6TTdL4QSefnNot3noLZs4cuAfLiFRqmD69bY/ohobWJFFfn8ZYKvSG3mYblxzM8uJEMUAccEDqY7FsWTqYnnkmbLFFOtOur887us41N6dLfQcPhqeeSj2iny26JZUEn/1sSgz77+/RVs36G1c9DSCFqppx49Ldz2bNSuMOnXACLFiQ/9l28ZVGO+yQ7gf+xz/CRRe19oheb73UGW7cuJTs2veIdm9os3x4CI8qVKi++fzn4ZVX0ryGBrjxxjRsRaXNnJl6OBdXJUWkNpVCkqirgx//OPWKBicFs/7EbRRVSEojmj76KPzkJ+mgvHx5qro5+mjYZRd47TXYa6+eHYRLHcxvuCENw93QkHpD33UXzJ/f9n17750SgpQuZS1UJ+29d+s6rk4yGxhcohjgmptbRzkdNCglhltuSQ3ekM7ijzwyXWK73XbpLm0tLWuexRcnhJ13TldazZmTej4vX57aQXbcMbUxFEowkIbj3nPPdJ+GX/+6tTe0B9czG1hc9VTl2h+If/SjVMVTqPKpr2/trFassTH1dF65MrVxdPWnsNVWKSH84x+t92k4+eTWK5OcEMwGLieKGlNcyii0W4wYkZLHBRekg7wEEyakRuf77oP770/vlVIP8I9/HBYtgh/+sG0pAXyfBrNq5ERRg0qd3bdPIMVXGnV08O9oOy45mFUXJwp7R0cHeR/8zWqbE4WZmXWqs0RRV+lgzMxsYMklUUg6TNLDklZLKl3UkbaSdJOkR7J1v1zpOM3MLL8SxUPAocCtnayzEvh6RGwP7A58XtL2lQjOzMxa5dIzOyIeBVDhLjOl11kALMiml0h6FNgCeKQSMZqZWTIg2igkjQZ2Be7qZJ3jJLVIalm4cGHFYjMzq3Z9VqKQNBsYUWLRSRFxZTe2sz7wZ+ArEfF6R+tFxAxgBqSrnroZrpmZdaDPEkVETOnpNiStQ0oSF0bEX8p93z333LNI0tM93X/OGoFFeQdRAbXwOWvhM0JtfM5q/oxbd7Sg344eq9SA8Tvg0Yg4ozvvjYjhfRNV5Uhq6eia5mpSC5+zFj4j1MbnrIXPWEpel8f+m6T5wCTgGkk3ZPM3l3RtttoHgE8Be0u6L3scmEe8Zma1LK+rni4HLi8x/3ngwGz6NqDjy6LMzKwiBsRVTzVqRt4BVEgtfM5a+IxQG5+zFj7jGqpyrCczM+s9LlGYmVmnnCjMzKxTThQ5k7S/pMclPSnpxBLLj5G0sOjKr2PziLMnJJ0j6SVJD3WwXJLOzL6DByTtVukYe6qMzzhZ0mtFv+P3Kx1jT5UzUGeV/JblfM4B/3t2S0T4kdMDqAf+CYwFGoD7ge3brXMM8Mu8Y+3h5/wwsBvwUAfLDwSuI13ltjtwV94x98FnnAxcnXecPfyMI4HdsukNgCdK/L1Ww29Zzucc8L9ndx4uUeRrIvBkRMyLiOXAxcC0nGPqdRFxK7C4k1WmAedFciewoaSRlYmud5TxGQe8iFgQEf/IppcAhYE6i1XDb1nO56wpThT52gJ4tuj1fEr/QX4sK8ZfJmmryoRWUeV+DwPdJEn3S7pO0g55B9MTnQzUWVW/ZRcDklbN79kVJ4r+7ypgdETsBMwCzs05Hls7/wC2joidgbOAK/INZ+2VO1DnQNfF56ya37McThT5eg4oLiFsmc17R0S8HBFvZy/PBiZUKLZK6vJ7GOgi4vWIWJpNXwusI6kx57C6rYyBOqvit+zqc1bL71kuJ4p83Q2MlzRGUgNwJDCzeIV29bsHk+pLq81M4NPZFTO7A69FunFV1ZA0IhvoEkkTSf97L+cbVfeUOVDngP8ty/mc1fB7dke/HT22FkTESklfAG4gXQF1TkQ8LOnHQEtEzAS+JOlg0q1hF5OughpQJF1EukqkMRsM8gfAOgAR8WvgWtLVMk8CbwKfySfStVfGZ/w4cLyklcBbwJGRXT4zgBQG6nxQ0n3ZvO8Co6B6fkvK+5zV8HuWzUN4mJlZp1z1ZGZmnXKiMDOzTjlRmJlZp5wozMysU04UZmbWKScKqzmSVmUjft4v6R+S9uil7U6WdHW583uLpA0lnVCp/VntcaKwWvRWROySDb/wHeDUvAPqoQ2BE7payWxtOVFYrRsKvALv3EvhNEkPSXpQ0hHZ/MmSbs4GZXxM0oVFvXL3z+b9Azi0OzuWtJ+k5qxUc2k2thCSnpL0o2z+g5K2zeYPlzQru0fC2ZKezoaN+Cnw7qyUdFq2+fVLxWu2NpworBatmx1UHyONn3VyNv9QYBdgZ2AKcFrRECq7Al8BtifdP+QDkoYAvwWmksbgGlFuANkB/nvAlIjYDWgBvla0yqJs/q+Ab2TzfgD8NSJ2AC4j6ykMnAj8MyslfbOjeMuNzaw9JwqrRYWqp22B/YHzsjPuDwIXRcSqiHgRuAV4X/aev0fE/IhYDdwHjAa2Bf4VEXOz4Rsu6EYMu5MO4rdnw0RMB7YuWl4YiO6ebF9k8V0MEBHXk5WEOlAqXrO14rGerKZFRHN2dj+8i1XfLppeRc//dwTMioijutjf2u6rt+O1GuYShdW0rP6/njTy59+AIyTVSxpOur3p3zt5+2PAaEnvzl53dNAv5U5S9dW4LI71JG3TxXtuBw7P1t8P2Cibv4R0y06zPuGzDKtF6xaNCipgekSsknQ5MIl07/IAvhURLxQak9uLiGWSjgOukfQmKdF0dMDeJxtVtuAw0kjAF0kanM37Hun+zB35Ubb+p4Bm4AVgSUS8Lel2SQ+R7ld9TWcf3qy7PHqs2QCRJZRV2fD0k4BfRcQuOYdlNcAlCrOBYxRwiaQ6YDnwuZzjsRrhEoWZmXXKjdlmZtYpJwozM+uUE4WZmXXKicLMzDrlRGFmZp36fxPyk/5eFcwgAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import sys\n", + "import numpy as np\n", + "# you can fix the path in you pc\n", + "sys.path.insert(0, r'~/quingo-runtime/src/examples/H2_VQE')\n", + "import host\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "916dbcbb3f70747c44a77c7bcd40155683ae19c65e1c03b4aa3499c5328201f1" + }, + "kernelspec": { + "display_name": "Python 3.8.10 64-bit", + "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.8.10" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} -- Gitee From 1343f4dcac85369c7feb5817165d040782abef25 Mon Sep 17 00:00:00 2001 From: LT Date: Fri, 31 Dec 2021 20:58:45 +0800 Subject: [PATCH 3/3] Add the case of H2_VQE. --- src/examples/H2_VQE/test_H2_VQE.ipynb | 26 +++----------------------- 1 file changed, 3 insertions(+), 23 deletions(-) diff --git a/src/examples/H2_VQE/test_H2_VQE.ipynb b/src/examples/H2_VQE/test_H2_VQE.ipynb index a31b297..dbd66d3 100644 --- a/src/examples/H2_VQE/test_H2_VQE.ipynb +++ b/src/examples/H2_VQE/test_H2_VQE.ipynb @@ -2,35 +2,15 @@ "cells": [ { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "connecting pyqcisim_quantumsim...\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAEWCAYAAAB42tAoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAqM0lEQVR4nO3deZwcVb3//9d7JkyCQMIygYQlJDFBFlkzRoILAQICEsJF2RQNXpF7wX1H8brhBZUL/i54f2pElE0QUCDsJJFFYEAG2ddgZAkESAhLAoRsn+8fp5rpmfTM9GRmuma638/Hox9dXVVd9enumfrUOafOKUUEZmZmHanLOwAzM+vfnCjMzKxTThRmZtYpJwozM+uUE4WZmXXKicLMzDrlRGFrRdJSSWPX8r2flHRjb8dUYj9/kPSTvt5PNZB0naTpecdRiqTRkkLSoLxjqVVOFDVA0vWSflxi/jRJL6zNP2BErB8R88rY9xr/5BFxYUTs19199jZJW0q6UNLLkt6Q9HdJB1Zo35Mlza/Evor2tzpL8MWPSQARcUBEnFupeGxgcaKoDecCR0tSu/mfAi6MiJXlbqhazuokbQzcBiwHdgAagV8AF0s6JMfQ+tLzWYIvfjTnHVRequVvuRKcKGrDFcAmwIcKMyRtBBwEnCdpoqRmSa9KWiDpl5IaitYNSZ+XNBeYWzRvXDb9UUn3Snpd0rOSfli071uz51cLZ7CSjpF0W9H295B0t6TXsuc9ipbdLOlkSbdLWiLpRkmNRcsvzUpFr0m6VdIOZX4nXwWWAp+NiBci4q2IuAj4b+AMJWuUhrJ4js2m3y3pr1mJZFFWOtmwaN2nJH1D0gNZfH+SNETSesB1wOZFZ/abt68qa1/qyLb3zWx7b0j6naTNsmqjJZJmZ79rt7X7XPWSTs8+078kfaH4e5A0LNv3AknPSfqJpPps2TGSbpP0P5Jeyd5/QNF+jpE0L4v3X5I+mc2vk/Q9SU9LeknSeZKGlYjzCEkt7eZ9VdLMbHpwtu9nJL0o6deS1i3+PiV9W9ILwO/X5ruqRU4UNSAi3gIuAT5dNPtw4LGIuB9YRTpwNgKTgH2AE9pt5hDg/cD2JXbxRrbtDYGPAser9az8w9nzhqXOYJXO7K8BziQlszOAayRtUrTaJ4DPAJsCDcA3ipZdB4zPlv0DuLD0t7CGfYE/R8TqdvMvAcYA48rYhoBTgc2B7YCtgB+2W+dwYP9smzsBx0TEG8ABtD3Df77MuD+Wxb4NMJX0+b8LDCf9P3+pzO105nNZfLsAu5F++2J/AFaSvqNdgf2AY4uWvx94nPT39HPgd1niXY/0Ox8QERsAewD3Ze85JnvsBYwF1gd+WSK2q4D3SBpfNO8TwB+z6Z+Svptdsvi2AL5ftO4IYGNga+C4jr4Aa8uJonacC3xc0pDs9aezeUTEPRFxZ0SsjIingN8Ae7Z7/6kRsThLOm1ExM0R8WBErI6IB4CLSry/Ix8F5kbE+dn+LwIeIx0EC34fEU8UJbxdivZ9TkQsiYi3SQfpnUudiZbQCCwoMb8wb3hXG4iIJyNiVkS8HRELSUmu/ec+MyKej4jFpIPcLu23001nRcSLEfEc8Dfgroi4NyKWAZeTDtwd2Vyp1Fj8WK/EeocD/xsR8yPiFdLBFwBJmwEHAl+JiDci4iVSld2RRe9/OiJ+GxGrSH9jI4HNsmWrgfdKWjciFkTEw9n8TwJnRMS8iFgKfAc4Uu2qhyLiTeBK4KgsnvHAtsBMSSId/L+a/a0uAU5pF9tq4AfZb7bG37KV5kRRIyLiNmARcIikdwMTyc7CJG0j6eqsCud10j9XY7tNPNvRtiW9X9JNkhZKeg34zxLv78jmwNPt5j1NOhMseKFo+k3S2WahiuSnkv6Zxf1Utk45+15EOoC1N7Joeaeyap+Ls+qX14ELSuy7ZOw98GLR9FslXne2/ecjYsN2jzdKrLc5bX/v4umtgXWABYVkQzqx2LRonXc+c3ZgB1g/29cRpL+PBZKukbRt0T6L/w6eBgbRmmCK/ZEsUZBKE1dk+xkOvAu4pyi262mb9BdmSdW6wYmitpxHKkkcDdwQEYWDzK9IZ/HjI2IoqSqjfcN3Z8MM/xGYCWwVEcOAXxe9v6vhiZ8nHXyKjQKe6+J9kA4S04ApwDBgdDa/feylzAYOldT+f+BwYD7wJKlKDdLBp2BE0fQppM+3Y/a9HV3mvqH09/JGJ/uqpAXAlkWvtyqafhZ4G2gsSjZDI6KstqGIuCEi9iUl5MeA32aL2v8djCJVb73ImmYBwyXtQkoYhWqnRaRkuUNRbMMiojh5erjsteBEUVvOIx1UP0dW7ZTZAHgdWJqd4R3fze1uACyOiGWSJpIO4AULScX9jvpcXAtsI+kTkgZJOoLUDnJ1mft9G3iZdIA9pRsx/4KUXH4naUTWyHwU8F+kqonVWXXSc6Qrxuol/Tvw7nb7Xwq8JmkL4Jvd2P+LwCbtqsnuAw6UtLGkEcBXurG93nQJ8GVJWyg1zn+7sCAiFgA3AqdLGpo1Qr9bUpdVjVkJbFpW3fU26bsrtBFdBHxV0hhJ65N+yz+VuiIvIlYAlwKnkdobZmXzV5MSzy8kbZrtcwtJH1m7r8EKnChqSNb+cAewHqkEUPAN0sF9Cekf7U/d3PQJwI8lLSE1HF5StM83SVcS3Z5VB+zeLqaXSVdffZ10wP8WcFBEdFn1Q0p8T5MO5o8Ad5YbcLbfDwJDsvcuzbb3+Yg4p2jVz5ESwMuky2jvKFr2I1Jj72ukBvm/dGP/j5EOjvOy72Vz4HzgflIV2o10/3foSvFVVoXHx0qs99ts/w8A95KS+UrSRQ+QSqUNpO/tFeAySlfjtVcHfI1UelhMas8pnJScQ/r8twL/ApYBX+xkW38knfRc2i6ZfJtUGrwzqw6cDbynjNisE/KNi8xA0lDgduDyiPh+V+vXkuzy1l9HRPsqQqsRLlGYARHxOulqnlVZtU/NkrSupAOzqsAtgB+QrqiyGuUShZm1IeldwC2ky07fIlWrfTlLplaDnCjMzKxTuVY9Sdpf0uOSnpR0YonlX5P0iNKQBXMkuY7UzKzCcitRKI0N8wRpOIL5wN3AURHxSNE6e5F6nr4p6XhgckQc0dW2GxsbY/To0X0TuJlZFbrnnnsWRUTJEQnyHD1xIvBkYahqSReTOk+9kygi4qai9e8kdWjq0ujRo2lpael6RTMzA0BS+xES3pFn1dMWtB0aYD5th21o77OkAdBKknScpBZJLQsXLuylEM3MbEBcHivpaKCJ1BOzpIiYERFNEdE0fHiX47mZmVmZ8qx6eo62Y8hsSYnxfSRNAU4C9sxGCDUzswrKs0RxNzA+G9ulgTQUcPGwEkjalTQy5cHZcMZmZlZhuSWKbHyWLwA3AI8Cl0TEw5J+LOngbLXTSMMmXyrpPmV3sTIzs8rJ9Z6xEXEtacCx4nnfL5qeUvGgzMysjQHRmF0pzc1w6qnp2czMklxLFP3JHXfAnnvC6tUweDDMmQOTJuUdlZlZ/lyiyNxyC6xcmRLF8uVw8815R2Rm1j+4RJGZPBmU3cSyoSG9NjMzJ4p3TJoE222XShPnnedqJzOzAlc9FRkzBjbYwEnCzKyYE0WR4cNhUTl3ajYzqyFOFEUaG2HhQvC9nMzMWjlRFBk+HJYtgzffzDsSM7P+w4miSGNjevYo5WZmrZwoihRGJ3c7hZlZKyeKIi5RmJmtyYmiiEsUZmZrcqIo4hKFmdmanCiKDBsGgwa5RGFmVsyJoojU2pfCzMwSJ4p23DvbzKwtJ4p2XKIwM2vLiaKdxkaXKMzMijlRtDN8uEsUZmbFnCjaaWyEV15Jd7szM7OcE4Wk/SU9LulJSSeWWD5Y0p+y5XdJGt3XMQ0fnkaPXby4r/dkZjYw5JYoJNUD/wccAGwPHCVp+3arfRZ4JSLGAb8AftbXcRU63bmdwswsybNEMRF4MiLmRcRy4GJgWrt1pgHnZtOXAftIhTtb943CMB5upzAzS/JMFFsAzxa9np/NK7lORKwEXgM2KbUxScdJapHUsrAHR3mXKMzM2qqaxuyImBERTRHRNLxQLFgLLlGYmbWVZ6J4Dtiq6PWW2byS60gaBAwDXu7LoDbJyisuUZiZJXkmiruB8ZLGSGoAjgRmtltnJjA9m/448NeIvr2j9eDBMHSoSxRmZgWD8tpxRKyU9AXgBqAeOCciHpb0Y6AlImYCvwPOl/QksJiUTPqce2ebmbXKLVEARMS1wLXt5n2/aHoZcFil43LvbDOzVlXTmN2bXKIwM2vlRFGCSxRmZq2cKEoolCj6ttnczGxgcKIoYfhwWLYM3ngj70jMzPLnRFGCe2ebmbVyoijBvbPNzFo5UZTgEoWZWSsnihJcojAza+VEUYJLFGZmrZwoShg2DAYNconCzAycKEqS3DvbzKzAiaID7p1tZpY4UXTAJQozs8SJogMuUZiZJU4UHXCJwswscaLowPDhsHgxrFyZdyRmZvlyouhAoS/F4sX5xmFmljcnig64d7aZWeJE0QH3zjYzS5woOuAShZlZ4kTRAZcozMwSJ4oOOFGYmSW5JApJG0uaJWlu9rxRiXV2kdQs6WFJD0g6opIxNjTA0KGuejIzy6tEcSIwJyLGA3Oy1+29CXw6InYA9gf+P0kbVi7E1E7hEoWZ1bq8EsU04Nxs+lzgkPYrRMQTETE3m34eeAkYXqkAIVU/uURhZrUur0SxWUQsyKZfADbrbGVJE4EG4J+drHOcpBZJLQt76ejuEoWZGQzqqw1Lmg2MKLHopOIXERGSopPtjATOB6ZHxOqO1ouIGcAMgKampg631x2NjXDffb2xJTOzgavPEkVETOlomaQXJY2MiAVZInipg/WGAtcAJ0XEnX0UaocKJYqIdDMjM7NalFfV00xgejY9Hbiy/QqSGoDLgfMi4rIKxvaOxkZYtgzeeCOPvZuZ9Q95JYqfAvtKmgtMyV4jqUnS2dk6hwMfBo6RdF/22KWSQRZ6Z7udwsxqWZ9VPXUmIl4G9ikxvwU4Npu+ALigwqG1Ueh0t3AhjB6dZyRmZvlxz+xOuERhZuZE0aniEoWZWa1youiESxRmZk4UnRo6FNZZxyUKM6ttThSdkFL1k0sUZlbLnCi64PGezKzWOVF0weM9mVmtc6LogksUZlbrnCi64BKFmdU6J4ouNDbC4sWwcmXekZiZ5cOJoguFvhSLF+cbh5lZXpwoulDonX3KKdDcnG8sZmZ5cKLowkvZnTLOOgv22cfJwsxqjxNFF+bNS8+rV8Py5XDzzbmGY2ZWcU4UXZg2LT1L0NAAkyfnGo6ZWcU5UXRh8mTYZBPYbTeYMwcmTco7IjOzysrlxkUDzXvek0oTThJmVotcoijDmDHwr3/lHYWZWT6cKMowZgw8+yysWJF3JGZmledEUYaxY9NVT888k3ckZmaV50RRhjFj0rOrn8ysFuWWKCRtLGmWpLnZ80adrDtU0nxJv6xkjAVOFGZWy/IsUZwIzImI8cCc7HVHTgZurUhUJWy5JQwa5ERhZrUpz0QxDTg3mz4XOKTUSpImAJsBN1YmrDXV18OoUU4UZlab8kwUm0XEgmz6BVIyaENSHXA68I1KBlbK2LGtw3mYmdWSshKFpNMl7dDdjUuaLemhEo9pxetFRABRYhMnANdGxPwy9nWcpBZJLQv74JZ07kthZrWq3J7ZjwIzJA0Cfg9cFBGvdfWmiJjS0TJJL0oaGRELJI0EXiqx2iTgQ5JOANYHGiQtjYg12jMiYgYwA6CpqalU0umRMWPSLVGXLoX11+/trZuZ9V9llSgi4uyI+ADwaWA08ICkP0raqwf7nglMz6anA1eW2O8nI2JURIwmVT+dVypJVELhyqennspj72Zm+Sm7jUJSPbBt9lgE3A98TdLFa7nvnwL7SpoLTMleI6lJ0tlruc0+40tkzaxWlVX1JOkXwFTSZaynRMTfs0U/k/T42uw4Il4G9ikxvwU4tsT8PwB/WJt99YaxY9OzG7TNrNaU20bxAPC9iHijxLKJvRhPv9XYCOut5xKFmdWechPF/cB7JBXPew14upxG7Wog+conM6tN5SaK/x/YjVSyEPBe4GFgmKTjIyK3znCV5ERhZrWo3Mbs54FdI6IpIiYAuwLzgH2Bn/dVcP1NIVFEr198a2bWf5WbKLaJiIcLLyLiEWDbiKippt2xY1M/ikWL8o7EzKxyyq16ekTSr4DCpbBHZPMGAzVzO5/iS2SHD883FjOzSim3RDEdeBL4SvaYBxxDShI96XQ3oLgvhZnVoi5LFFlHu2sjYi/SAH3tLe31qPopJwozq0VdligiYhWwWtKwCsTTr62/fupP4URhZrWk3DaKpcCDkmYB73S6i4gv9UlU/djYsU4UZlZbyk0Uf8keNW/MGGhpyTsKM7PKKStRRMS5ktYFRkXEWo3tVC3GjIG//AVWrUp3vjMzq3bl3rhoKnAfcH32ehdJM/swrn5rzBhYsQKeey7vSMzMKqPcy2N/SBr871WAiLgPGNsnEfVzvvLJzGpNuYliRYnB/1b3djADQWG4cScKM6sV5TZmPyzpE0C9pPHAl4A7+i6s/mvUKKir830pzKx2lFui+CKwA/A2cBHwOqmHds1ZZx3YckuXKMysdpR71dObwEnZo+Z5uHEzqyXl3gp1G+AbwOji90TE3n0TVv82ZgzcWBN34DAzK7+N4lLg18DZwKq+C2dgGDMGnn8eli2DIUPyjsbMrG+VmyhWRsSv+jSSAaRw5dNTT8G22+YaiplZnyu3MfsqSSdIGilp48KjTyPrx9yXwsxqSbkliunZ8zeL5gVr2ekuSzJ/IrV5PAUcHhGvlFhvFKm6a6tsfwdGxFNrs8/e5ERhZrWkrBJFRIwp8ehJz+wTgTkRMR6Yk70u5TzgtIjYjtQz/KUe7LPXjBgBgwc7UZhZbeg0UUj6VtH0Ye2WndKD/U4Dzs2mzwUOKbHv7YFBETELICKWZpfp5q6uDkaPdqIws9rQVYniyKLp77Rbtn8P9rtZRCzIpl8ANiuxzjbAq5L+IuleSadld9srSdJxkloktSxcuLAHoZVno43gjjugubnPd2VmlquuEoU6mC71uu1Cabakh0o8phWvFxFBan9obxDwIVL/jfeR2kOO6Wh/ETEjIpoiomn48OGdhdZjzc3pnhQLFsA++zhZmFl166oxOzqYLvW67cKIKR0tk/SipJERsUDSSEq3PcwH7ouIedl7rgB2B37XRcx97uab0/0oAJYvT68nTcozIjOzvtNViWJnSa9LWgLslE0XXu/Yg/3OpPVKqunAlSXWuRvYUFKheLA38EgP9tlrJk+GhoY0XV+fXpuZVatOE0VE1EfE0IjYICIGZdOF1+v0YL8/BfaVNBeYkr1GUpOks7N9ryJVO82R9CCpquu3Pdhnr5k0Ca6+Ok1Pn+7ShJlVt3L7UfSqiHgZ2KfE/Bbg2KLXs4CdKhha2aZMgW22gZf6xQW7ZmZ9p9ye2VbChAlwzz15R2Fm1recKHpgwgSYP9+lCjOrbk4UPTBhQnp2qcLMqpkTRQ/stlt6dqIws2rmRNEDQ4emBm0nCjOrZk4UPeQGbTOrdk4UPTRhAjz7rBu0zax6OVH0kBu0zazaOVH00K67pmcnCjOrVk4UPTRsGIwf70RhZtXLiaIXNDU5UZhZ9XKi6AWFBu0K3C/JzKzinCh6gRu0zayaOVH0gkKDdktLvnGYmfUFJ4pe4AZtM6tmThS9xD20zaxaOVH0Ejdom1m1cqLoJU1N6dmlCjOrNk4UvcQ9tM2sWjlR9BI3aJtZtXKi6EUTJvgSWTOrPk4UvcgN2mZWjXJLFJI2ljRL0tzseaMO1vu5pIclPSrpTEmqdKzlcg9tM6tGeZYoTgTmRMR4YE72ug1JewAfAHYC3gu8D9izkkF2R+Ee2mecAc3N+cZiZtZb8kwU04Bzs+lzgUNKrBPAEKABGAysA7xYieDWxiOPgASzZsE++zhZmFl1yDNRbBYRC7LpF4DN2q8QEc3ATcCC7HFDRDxaamOSjpPUIqllYU6NBDffDBFpevny9NrMbKAb1JcblzQbGFFi0UnFLyIiJEWJ948DtgO2zGbNkvShiPhb+3UjYgYwA6CpqWmNbVXC5MnQ0JCSxKBB6bWZ2UDXp4kiIqZ0tEzSi5JGRsQCSSOBl0qs9m/AnRGxNHvPdcAkYI1E0R9MmgTXXAP77w+HHppem5kNdHlWPc0EpmfT04ErS6zzDLCnpEGS1iE1ZJeseuovpkxJ7RO+8snMqkWeieKnwL6S5gJTstdIapJ0drbOZcA/gQeB+4H7I+KqPILtjqlT4Ykn0sPMbKDLLVFExMsRsU9EjI+IKRGxOJvfEhHHZtOrIuI/ImK7iNg+Ir6WV7zdMXVqer6q36c0M7OuuWd2H9h6a9hxR7j66rwjMTPrOSeKPjJ1Kvztb/DKK3lHYmbWM04UfWTqVFi1Cq6/Pu9IzMx6xomij0ycCJtu6nYKMxv4nCj6SF0dfPSjcN11sGJF3tGYma09J4o+dNBB8OqrcPvteUdiZrb2nCj60H77pSE9XP1kZgOZE0UfWn992GsvJwozG9icKPrY1Kkwdy48/njekZiZrR0nij520EHp2aUKMxuonCj62NZbw047uZe2mQ1cThQVUOil/f3v+653ZjbwOFFUwOjRsHo1/Pd/+xapZjbwOFFUwEvZLZlWr/YtUs1s4HGiqIC99oJ11knTvkWqWeU1N8Opp7YtzZea11vz+9O2e0Of3grVkkmTUmP21KkpSfgWqVbLmptTqbr9/0J35hfmffjDMGECLFuWHnfcAbfdBrvtBtttl0rw994LX/taGkpn0KDUVrhiRTqoFuadcAJsuSX8859w9tlpQM/6ejj88DRm27PPwhVXpFqBurp0u+NNNoEXX4TZs1vX/8AHICKNxlBYt6kJhg5NI0nfe2/r/B12gA02gNdeg0cfTfMlGDsWhgyBpUvhmWfS9iTYfPP02Z9/vnXeZpvB4MHps7/0Upq/7rowZ07vHmecKCpkv/3g+OPh//4PnnsOttgi74jMek9HB/O//jUdKLffHpYsSfM+//nWA/SXvwzDh6cD5fnnpwNuXR186EPwrnfBggVw//2tB9FNN00H/7Udvn/5cvje99rOW7EC/vd/11x35Uq49NJ04F2xIsUG6fm222DDDeH119vOf/zxFOfq1Wne6tXpMwwaBIsWtZ3/xhvpQP/SS63zI9JoDu95T7pDZkRrPJtskrb93HOt80aMSFdVPvRQaxV3oXq7V09II6LqHhMmTIj+aN68iLq6iG9/O+9IzDp3xx0Rp5ySnlevjnj99fT3e/bZEcccE/GDH0SceWZ6/tjHIurrIyD9fY8eHdHYmF6v7WPTTSOamtK2CvOkiN12i5g4MU0X5n3kIxG/+EXEtGmt8+vqIj71qYjrr48466yIwYNTjIMHR5x/fsTFF0cMGZLmDRmS1luyJOLmmyPWXTfNX3fd9PkL30e587uzbl9vuzuAlujgmKooTllVoqmpKVpaWvIOo6TDDktF1WefTUN8mFVK+7P+pUtTleicOanaZejQdPb74INw442tZ/GDBnU+AvKQIanqo2CHHdJZ+D33tFaRHHJIqsaZPz+d0a9cmdrtLrkkteHdfz/su286G25oaK06aW5OVwoWz4c153W0bvuqqlLVVz2pAhsI2y6XpHsioqnkMieKyrrzzvQjnnkmfPGLeUdj1ai5OR3ot9kmVVc880yquz/vvFQ9IqUD+ZtvrvnewYPTsldfTa+lVA100EFw111w+eUpgdTXw4knwg9/CHffXf7BvBBffz1Y1jInin5mjz1SI9gTT6R/OLPOlDr4rV4NV14J11yT6vglmDcPHngg1fd3ZdKkVIKYNav1wP/d78KPfpROZvryjN36p84SRS5tCMBhwMPAaqCpk/X2Bx4HngROLHf7/bWNouCyy1I96p//nHck1t8Utw1ERNx0U6pXr6uLGDQoYu+9I3beOaKhoW2dfn19xLhx6VFcT3/ccRFPPRVx663l13eXiqOr+Tbw0d/aKCRtlyWJ3wDfiIg1Tv8l1QNPAPsC84G7gaMi4pGutt/fSxSrVsH48elyt9tuyzsay0P7s+3CFTbHHJPaA+rqYOTIdIVL8b/oxhvD7runSyrvuCMtq69PJYGTTvJZv629zkoUuVweGxGPAkjqbLWJwJMRMS9b92JgGtBloujv6uvhK19JlwbedRe8//15R2SVNHt2qvNfvjwlhHHj4Omn2zYIr1oFw4aly6ovuCC9bmhIjc+lqoH23ju9b9KklBxKHfwnTVozGZSaZ9Zef+5HsQXwbNHr+UDVHFI/85nU8ee734UpU3xGV61uugn+9KfUQLxoEbS0wGOPtS5ftSqVJk44AdZbD37+8/S6oQF++9v0N3HssWse+LubEMx6os8ShaTZwIgSi06KiCv7YH/HAccBjBo1qrc33+s22CCdVV54YfpnHzy493tTWuU0N6ekMG4cvP12ahCePTtdsFCwySap5+4HP9h6BVJDQ+poVvjdDzigdFIo9XfhhGCV0meJIiKm9HATzwFbFb3eMpvX0f5mADMgtVH0cN8VsVX26YoHC/Q/fv9XqNffY4/Ux+DCC+E3v2ntXQupj8ymm6arkQrtCF//OnznO2n5v/+7SwM2cPTnqqe7gfGSxpASxJHAJ/INqXcdfDCcfnpr46UHC+zflixJ4wB961upeqiUurrUP+b00+Hvf2/bjlD8+zoh2ECSy+ixkv5N0nxgEnCNpBuy+ZtLuhYgIlYCXwBuAB4FLomIh/OIt69MmpTOKseNS2ecI0pV1FluZs9ObUmf+lS60mijjdLgcoUkIcHRR6e+DOuum37DwYPhiCPSdKEd4eSTXa1oA5s73PUDzzwD731vGjxt9ux0VmqVU6hK+uAH0wF+9mz4859T57WCHXdMJcBNN009kkt1RvNlpjaQ9bvLY62tUaNSVcVxx8GMGfCf/5l3RLXj0kvhk59sO5ZRYUjn4vaFo45qbV943/vKb3A2qwYuUfQTEema+TvvTIOyjR6dd0TVp7kZbrghXYb69NNp+sknW5dLcOSRcNZZ6WqljjqumVUjj/U0QDz9dKrimDgxjcHTeX9E60yhKmjPPVPbwq9+le4FUrgyafDg1H9lm23SshUryh+8zqwaueppgNh6a/if/4H/+A849NB0dY0PUN13883wkY+0Vie1Pxeqq0vDXfzXf6XXhx3mS1XNOuNE0c+8973pQHbFFXDddakTlw9WHSuc9W+/PbzwQhri4vrr216+Om0afPrT6QqlQlXSlKJePk4IZp1zouhnbrmltcrp7bfhnHN8ECtl9Wr4/e9Tw39xUhgzJt0k56qrWofC+Pa3Ox/ywsw650TRz0yenA5uy5eng+F556UG1n32yTuyfDU3p8tW3/UumDs3JYLnn29dLqVBFs84I02Xal9wycFs7ThR9DPFZ7477ZQuyTzooHSTmv32yzu6ynvxxXQ3wJ/9rPUm9kOGwEc/mqqbTjuttSH68MNbS2NOCma9x4miHyo+yL3//ak+/eCD4dRT01DU1Vx1cscdcPHF6XM+8EAaBqO4MbquLo24W2iILjWInpn1Ll8eOwC8/HIagO6JJ9KBslpGmi1UD02cCEuXpvaYq65qTQzbbQef+EQaPPH4492nwawv+fLYAW6TTdL4QSefnNot3noLZs4cuAfLiFRqmD69bY/ohobWJFFfn8ZYKvSG3mYblxzM8uJEMUAccEDqY7FsWTqYnnkmbLFFOtOur887us41N6dLfQcPhqeeSj2iny26JZUEn/1sSgz77+/RVs36G1c9DSCFqppx49Ldz2bNSuMOnXACLFiQ/9l28ZVGO+yQ7gf+xz/CRRe19oheb73UGW7cuJTs2veIdm9os3x4CI8qVKi++fzn4ZVX0ryGBrjxxjRsRaXNnJl6OBdXJUWkNpVCkqirgx//OPWKBicFs/7EbRRVSEojmj76KPzkJ+mgvHx5qro5+mjYZRd47TXYa6+eHYRLHcxvuCENw93QkHpD33UXzJ/f9n17750SgpQuZS1UJ+29d+s6rk4yGxhcohjgmptbRzkdNCglhltuSQ3ekM7ijzwyXWK73XbpLm0tLWuexRcnhJ13TldazZmTej4vX57aQXbcMbUxFEowkIbj3nPPdJ+GX/+6tTe0B9czG1hc9VTl2h+If/SjVMVTqPKpr2/trFassTH1dF65MrVxdPWnsNVWKSH84x+t92k4+eTWK5OcEMwGLieKGlNcyii0W4wYkZLHBRekg7wEEyakRuf77oP770/vlVIP8I9/HBYtgh/+sG0pAXyfBrNq5ERRg0qd3bdPIMVXGnV08O9oOy45mFUXJwp7R0cHeR/8zWqbE4WZmXWqs0RRV+lgzMxsYMklUUg6TNLDklZLKl3UkbaSdJOkR7J1v1zpOM3MLL8SxUPAocCtnayzEvh6RGwP7A58XtL2lQjOzMxa5dIzOyIeBVDhLjOl11kALMiml0h6FNgCeKQSMZqZWTIg2igkjQZ2Be7qZJ3jJLVIalm4cGHFYjMzq3Z9VqKQNBsYUWLRSRFxZTe2sz7wZ+ArEfF6R+tFxAxgBqSrnroZrpmZdaDPEkVETOnpNiStQ0oSF0bEX8p93z333LNI0tM93X/OGoFFeQdRAbXwOWvhM0JtfM5q/oxbd7Sg344eq9SA8Tvg0Yg4ozvvjYjhfRNV5Uhq6eia5mpSC5+zFj4j1MbnrIXPWEpel8f+m6T5wCTgGkk3ZPM3l3RtttoHgE8Be0u6L3scmEe8Zma1LK+rni4HLi8x/3ngwGz6NqDjy6LMzKwiBsRVTzVqRt4BVEgtfM5a+IxQG5+zFj7jGqpyrCczM+s9LlGYmVmnnCjMzKxTThQ5k7S/pMclPSnpxBLLj5G0sOjKr2PziLMnJJ0j6SVJD3WwXJLOzL6DByTtVukYe6qMzzhZ0mtFv+P3Kx1jT5UzUGeV/JblfM4B/3t2S0T4kdMDqAf+CYwFGoD7ge3brXMM8Mu8Y+3h5/wwsBvwUAfLDwSuI13ltjtwV94x98FnnAxcnXecPfyMI4HdsukNgCdK/L1Ww29Zzucc8L9ndx4uUeRrIvBkRMyLiOXAxcC0nGPqdRFxK7C4k1WmAedFciewoaSRlYmud5TxGQe8iFgQEf/IppcAhYE6i1XDb1nO56wpThT52gJ4tuj1fEr/QX4sK8ZfJmmryoRWUeV+DwPdJEn3S7pO0g55B9MTnQzUWVW/ZRcDklbN79kVJ4r+7ypgdETsBMwCzs05Hls7/wC2joidgbOAK/INZ+2VO1DnQNfF56ya37McThT5eg4oLiFsmc17R0S8HBFvZy/PBiZUKLZK6vJ7GOgi4vWIWJpNXwusI6kx57C6rYyBOqvit+zqc1bL71kuJ4p83Q2MlzRGUgNwJDCzeIV29bsHk+pLq81M4NPZFTO7A69FunFV1ZA0IhvoEkkTSf97L+cbVfeUOVDngP8ty/mc1fB7dke/HT22FkTESklfAG4gXQF1TkQ8LOnHQEtEzAS+JOlg0q1hF5OughpQJF1EukqkMRsM8gfAOgAR8WvgWtLVMk8CbwKfySfStVfGZ/w4cLyklcBbwJGRXT4zgBQG6nxQ0n3ZvO8Co6B6fkvK+5zV8HuWzUN4mJlZp1z1ZGZmnXKiMDOzTjlRmJlZp5wozMysU04UZmbWKScKqzmSVmUjft4v6R+S9uil7U6WdHW583uLpA0lnVCp/VntcaKwWvRWROySDb/wHeDUvAPqoQ2BE7payWxtOVFYrRsKvALv3EvhNEkPSXpQ0hHZ/MmSbs4GZXxM0oVFvXL3z+b9Azi0OzuWtJ+k5qxUc2k2thCSnpL0o2z+g5K2zeYPlzQru0fC2ZKezoaN+Cnw7qyUdFq2+fVLxWu2NpworBatmx1UHyONn3VyNv9QYBdgZ2AKcFrRECq7Al8BtifdP+QDkoYAvwWmksbgGlFuANkB/nvAlIjYDWgBvla0yqJs/q+Ab2TzfgD8NSJ2AC4j6ykMnAj8MyslfbOjeMuNzaw9JwqrRYWqp22B/YHzsjPuDwIXRcSqiHgRuAV4X/aev0fE/IhYDdwHjAa2Bf4VEXOz4Rsu6EYMu5MO4rdnw0RMB7YuWl4YiO6ebF9k8V0MEBHXk5WEOlAqXrO14rGerKZFRHN2dj+8i1XfLppeRc//dwTMioijutjf2u6rt+O1GuYShdW0rP6/njTy59+AIyTVSxpOur3p3zt5+2PAaEnvzl53dNAv5U5S9dW4LI71JG3TxXtuBw7P1t8P2Cibv4R0y06zPuGzDKtF6xaNCipgekSsknQ5MIl07/IAvhURLxQak9uLiGWSjgOukfQmKdF0dMDeJxtVtuAw0kjAF0kanM37Hun+zB35Ubb+p4Bm4AVgSUS8Lel2SQ+R7ld9TWcf3qy7PHqs2QCRJZRV2fD0k4BfRcQuOYdlNcAlCrOBYxRwiaQ6YDnwuZzjsRrhEoWZmXXKjdlmZtYpJwozM+uUE4WZmXXKicLMzDrlRGFmZp36fxPyk/5eFcwgAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "import sys\n", "import numpy as np\n", "# you can fix the path in you pc\n", "sys.path.insert(0, r'~/quingo-runtime/src/examples/H2_VQE')\n", - "import host\n" + "import host" ] } ], -- Gitee