diff --git a/docs/guides/algorithmiq-tem.ipynb b/docs/guides/algorithmiq-tem.ipynb index 515f2166068..eb62b8af808 100644 --- a/docs/guides/algorithmiq-tem.ipynb +++ b/docs/guides/algorithmiq-tem.ipynb @@ -160,16 +160,24 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "cc0a8093", "metadata": {}, "outputs": [], "source": [ + "import os\n", "from qiskit_ibm_catalog import QiskitFunctionsCatalog\n", "\n", "tem_function_name = \"algorithmiq/tem\"\n", "\n", - "catalog = QiskitFunctionsCatalog(channel=\"ibm_quantum_platform\")\n", + "# Set IBM Quantum credentials and backend configuration\n", + "personal_token = os.environ.get(\n", + " \"QISKIT_IBM_TOKEN\", \"\"\n", + ") # Replace with your personal token or set the environment variable\n", + "channel = \"ibm_quantum_platform\"\n", + "crn = \"your_crn\" # Replace with the Cloud Resource Name (CRN)\n", + "\n", + "catalog = QiskitFunctionsCatalog(channel=channel, instance=crn, token=personal_token)\n", "\n", "# Load your function\n", "tem = catalog.load(tem_function_name)" @@ -188,7 +196,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "ab05b87f", "metadata": {}, "outputs": [], @@ -220,6 +228,7 @@ "# Define backend to use. TEM will choose the least-busy device reported by IBM if not specified\n", "backend_name = \"ibm_marrakesh\"\n", "\n", + "# Run the TEM function (uses around 3 minutes of QPU time)\n", "job = tem.run(pubs=[pub], backend_name=backend_name, options=options)" ] }, @@ -233,7 +242,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "47b0db71", "metadata": {}, "outputs": [ @@ -259,13 +268,22 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "id": "ad5b9a53", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.10229839785546409\n" + ] + } + ], "source": [ "result = job.result()\n", - "evs = result[0].data.evs" + "evs = result[0].data.evs\n", + "print(evs[0])" ] }, { @@ -373,7 +391,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "id": "0433171c", "metadata": {}, "outputs": [ @@ -381,7 +399,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "PrimitiveResult([PubResult(data=DataBin(evs=np.ndarray(), stds=np.ndarray()), metadata={'evs_non_mitigated': array([0.06979321]), 'stds_non_mitigated': array([0.05510763]), 'evs_mitigated_no_readout_mitigation': array([0.07031416]), 'stds_mitigated_no_readout_mitigation': array([0.05566318]), 'evs_non_mitigated_with_readout_mitigation': array([0.08313754]), 'stds_non_mitigated_with_readout_mitigation': array([0.05702442])})], metadata={'resource_usage': {'RUNNING: OPTIMIZING_FOR_HARDWARE': {'CPU_TIME': 0.966265}, 'RUNNING: WAITING_FOR_QPU': {'CPU_TIME': 11.436938}, 'RUNNING: POST_PROCESSING': {'CPU_TIME': 10.379288999999998}, 'RUNNING: EXECUTING_QPU': {'QPU_TIME': 171.0}}})\n" + "PrimitiveResult([PubResult(data=DataBin(evs=np.ndarray(), stds=np.ndarray()), metadata={'evs_non_mitigated': array([0.09305761]), 'stds_non_mitigated': array([0.05499456]), 'evs_mitigated_no_readout_mitigation': array([0.09371257]), 'stds_mitigated_no_readout_mitigation': array([0.05546237]), 'evs_non_mitigated_with_readout_mitigation': array([0.10156985]), 'stds_non_mitigated_with_readout_mitigation': array([0.05788876])})], metadata={'resource_usage': {'RUNNING: OPTIMIZING_FOR_HARDWARE': {'CPU_TIME': 1.018068}, 'RUNNING: WAITING_FOR_QPU': {'CPU_TIME': 411.145994}, 'RUNNING: POST_PROCESSING': {'CPU_TIME': 10.018932999999997}, 'RUNNING: EXECUTING_QPU': {'QPU_TIME': 187.0}}})\n" ] } ], @@ -423,7 +441,7 @@ "metadata": { "description": "Introduction to TEM, a Qiskit Function by Algorithmiq, to compute estimations with software post-processing error mitigation using tensor networks.", "kernelspec": { - "display_name": "Python 3", + "display_name": ".venv", "language": "python", "name": "python3" }, @@ -437,7 +455,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3" + "version": "3.12.3" }, "title": "Tensor-network error mitigation (TEM) - A Qiskit Function by Algorithmiq" }, diff --git a/docs/tutorials/ki_12q.qasm b/docs/tutorials/ki_12q.qasm new file mode 100644 index 00000000000..e9c296f01de --- /dev/null +++ b/docs/tutorials/ki_12q.qasm @@ -0,0 +1,455 @@ +OPENQASM 3.0; +include "stdgates.inc"; +qubit[12] q; +h q[0]; +h q[1]; +x q[2]; +cx q[1], q[2]; +h q[3]; +x q[4]; +cx q[3], q[4]; +h q[5]; +x q[6]; +cx q[5], q[6]; +h q[7]; +x q[8]; +cx q[7], q[8]; +h q[9]; +x q[10]; +cx q[9], q[10]; +barrier q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11]; +sdg q[0]; +sdg q[1]; +cx q[0], q[1]; +sdg q[0]; +h q[0]; +h q[1]; +s q[1]; +cx q[0], q[1]; +s q[0]; +h q[0]; +sdg q[0]; +y q[1]; +h q[1]; +sdg q[2]; +sdg q[3]; +cx q[2], q[3]; +sdg q[2]; +h q[2]; +h q[3]; +s q[3]; +cx q[2], q[3]; +s q[2]; +h q[2]; +sdg q[2]; +y q[3]; +h q[3]; +sdg q[4]; +sdg q[5]; +cx q[4], q[5]; +sdg q[4]; +h q[4]; +h q[5]; +s q[5]; +cx q[4], q[5]; +s q[4]; +h q[4]; +sdg q[4]; +y q[5]; +h q[5]; +sdg q[6]; +sdg q[7]; +cx q[6], q[7]; +sdg q[6]; +h q[6]; +h q[7]; +s q[7]; +cx q[6], q[7]; +s q[6]; +h q[6]; +sdg q[6]; +y q[7]; +h q[7]; +sdg q[8]; +sdg q[9]; +cx q[8], q[9]; +sdg q[8]; +h q[8]; +h q[9]; +s q[9]; +cx q[8], q[9]; +s q[8]; +h q[8]; +sdg q[8]; +y q[9]; +h q[9]; +sdg q[10]; +sdg q[11]; +cx q[10], q[11]; +sdg q[10]; +h q[10]; +h q[11]; +s q[11]; +cx q[10], q[11]; +s q[10]; +h q[10]; +sdg q[10]; +y q[11]; +h q[11]; +barrier q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11]; +sdg q[1]; +sdg q[2]; +cx q[1], q[2]; +sdg q[1]; +h q[1]; +h q[2]; +s q[2]; +cx q[1], q[2]; +s q[1]; +h q[1]; +sdg q[1]; +y q[2]; +h q[2]; +sdg q[3]; +sdg q[4]; +cx q[3], q[4]; +sdg q[3]; +h q[3]; +h q[4]; +s q[4]; +cx q[3], q[4]; +s q[3]; +h q[3]; +sdg q[3]; +y q[4]; +h q[4]; +sdg q[5]; +sdg q[6]; +cx q[5], q[6]; +sdg q[5]; +h q[5]; +h q[6]; +s q[6]; +cx q[5], q[6]; +s q[5]; +h q[5]; +sdg q[5]; +y q[6]; +h q[6]; +sdg q[7]; +sdg q[8]; +cx q[7], q[8]; +sdg q[7]; +h q[7]; +h q[8]; +s q[8]; +cx q[7], q[8]; +s q[7]; +h q[7]; +sdg q[7]; +y q[8]; +h q[8]; +sdg q[9]; +sdg q[10]; +cx q[9], q[10]; +sdg q[9]; +h q[9]; +h q[10]; +s q[10]; +cx q[9], q[10]; +s q[9]; +h q[9]; +sdg q[9]; +y q[10]; +h q[10]; +barrier q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11]; +sdg q[0]; +sdg q[1]; +cx q[0], q[1]; +sdg q[0]; +h q[0]; +h q[1]; +s q[1]; +cx q[0], q[1]; +s q[0]; +h q[0]; +sdg q[0]; +y q[1]; +h q[1]; +sdg q[2]; +sdg q[3]; +cx q[2], q[3]; +sdg q[2]; +h q[2]; +h q[3]; +s q[3]; +cx q[2], q[3]; +s q[2]; +h q[2]; +sdg q[2]; +y q[3]; +h q[3]; +sdg q[4]; +sdg q[5]; +cx q[4], q[5]; +sdg q[4]; +h q[4]; +h q[5]; +s q[5]; +cx q[4], q[5]; +s q[4]; +h q[4]; +sdg q[4]; +y q[5]; +h q[5]; +sdg q[6]; +sdg q[7]; +cx q[6], q[7]; +sdg q[6]; +h q[6]; +h q[7]; +s q[7]; +cx q[6], q[7]; +s q[6]; +h q[6]; +sdg q[6]; +y q[7]; +h q[7]; +sdg q[8]; +sdg q[9]; +cx q[8], q[9]; +sdg q[8]; +h q[8]; +h q[9]; +s q[9]; +cx q[8], q[9]; +s q[8]; +h q[8]; +sdg q[8]; +y q[9]; +h q[9]; +sdg q[10]; +sdg q[11]; +cx q[10], q[11]; +sdg q[10]; +h q[10]; +h q[11]; +s q[11]; +cx q[10], q[11]; +s q[10]; +h q[10]; +sdg q[10]; +y q[11]; +h q[11]; +barrier q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11]; +sdg q[1]; +sdg q[2]; +cx q[1], q[2]; +sdg q[1]; +h q[1]; +h q[2]; +s q[2]; +cx q[1], q[2]; +s q[1]; +h q[1]; +sdg q[1]; +y q[2]; +h q[2]; +sdg q[3]; +sdg q[4]; +cx q[3], q[4]; +sdg q[3]; +h q[3]; +h q[4]; +s q[4]; +cx q[3], q[4]; +s q[3]; +h q[3]; +sdg q[3]; +y q[4]; +h q[4]; +sdg q[5]; +sdg q[6]; +cx q[5], q[6]; +sdg q[5]; +h q[5]; +h q[6]; +s q[6]; +cx q[5], q[6]; +s q[5]; +h q[5]; +sdg q[5]; +y q[6]; +h q[6]; +sdg q[7]; +sdg q[8]; +cx q[7], q[8]; +sdg q[7]; +h q[7]; +h q[8]; +s q[8]; +cx q[7], q[8]; +s q[7]; +h q[7]; +sdg q[7]; +y q[8]; +h q[8]; +sdg q[9]; +sdg q[10]; +cx q[9], q[10]; +sdg q[9]; +h q[9]; +h q[10]; +s q[10]; +cx q[9], q[10]; +s q[9]; +h q[9]; +sdg q[9]; +y q[10]; +h q[10]; +barrier q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11]; +sdg q[0]; +sdg q[1]; +cx q[0], q[1]; +sdg q[0]; +h q[0]; +h q[1]; +s q[1]; +cx q[0], q[1]; +s q[0]; +h q[0]; +sdg q[0]; +y q[1]; +h q[1]; +sdg q[2]; +sdg q[3]; +cx q[2], q[3]; +sdg q[2]; +h q[2]; +h q[3]; +s q[3]; +cx q[2], q[3]; +s q[2]; +h q[2]; +sdg q[2]; +y q[3]; +h q[3]; +sdg q[4]; +sdg q[5]; +cx q[4], q[5]; +sdg q[4]; +h q[4]; +h q[5]; +s q[5]; +cx q[4], q[5]; +s q[4]; +h q[4]; +sdg q[4]; +y q[5]; +h q[5]; +sdg q[6]; +sdg q[7]; +cx q[6], q[7]; +sdg q[6]; +h q[6]; +h q[7]; +s q[7]; +cx q[6], q[7]; +s q[6]; +h q[6]; +sdg q[6]; +y q[7]; +h q[7]; +sdg q[8]; +sdg q[9]; +cx q[8], q[9]; +sdg q[8]; +h q[8]; +h q[9]; +s q[9]; +cx q[8], q[9]; +s q[8]; +h q[8]; +sdg q[8]; +y q[9]; +h q[9]; +sdg q[10]; +sdg q[11]; +cx q[10], q[11]; +sdg q[10]; +h q[10]; +h q[11]; +s q[11]; +cx q[10], q[11]; +s q[10]; +h q[10]; +sdg q[10]; +y q[11]; +h q[11]; +barrier q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11]; +sdg q[1]; +sdg q[2]; +cx q[1], q[2]; +sdg q[1]; +h q[1]; +h q[2]; +s q[2]; +cx q[1], q[2]; +s q[1]; +h q[1]; +sdg q[1]; +y q[2]; +h q[2]; +sdg q[3]; +sdg q[4]; +cx q[3], q[4]; +sdg q[3]; +h q[3]; +h q[4]; +s q[4]; +cx q[3], q[4]; +s q[3]; +h q[3]; +sdg q[3]; +y q[4]; +h q[4]; +sdg q[5]; +sdg q[6]; +cx q[5], q[6]; +sdg q[5]; +h q[5]; +h q[6]; +s q[6]; +cx q[5], q[6]; +s q[5]; +h q[5]; +sdg q[5]; +y q[6]; +h q[6]; +sdg q[7]; +sdg q[8]; +cx q[7], q[8]; +sdg q[7]; +h q[7]; +h q[8]; +s q[8]; +cx q[7], q[8]; +s q[7]; +h q[7]; +sdg q[7]; +y q[8]; +h q[8]; +sdg q[9]; +sdg q[10]; +cx q[9], q[10]; +sdg q[9]; +h q[9]; +h q[10]; +s q[10]; +cx q[9], q[10]; +s q[9]; +h q[9]; +sdg q[9]; +y q[10]; +h q[10]; +barrier q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11]; diff --git a/docs/tutorials/ki_12q.qpy b/docs/tutorials/ki_12q.qpy deleted file mode 100644 index 55fe4b14e65..00000000000 Binary files a/docs/tutorials/ki_12q.qpy and /dev/null differ diff --git a/docs/tutorials/ki_30q.qasm b/docs/tutorials/ki_30q.qasm new file mode 100644 index 00000000000..65f5d17394c --- /dev/null +++ b/docs/tutorials/ki_30q.qasm @@ -0,0 +1,2896 @@ +OPENQASM 3.0; +include "stdgates.inc"; +qubit[30] q; +h q[0]; +h q[1]; +x q[2]; +cx q[1], q[2]; +h q[3]; +x q[4]; +cx q[3], q[4]; +h q[5]; +x q[6]; +cx q[5], q[6]; +h q[7]; +x q[8]; +cx q[7], q[8]; +h q[9]; +x q[10]; +cx q[9], q[10]; +h q[11]; +x q[12]; +cx q[11], q[12]; +h q[13]; +x q[14]; +cx q[13], q[14]; +h q[15]; +x q[16]; +cx q[15], q[16]; +h q[17]; +x q[18]; +cx q[17], q[18]; +h q[19]; +x q[20]; +cx q[19], q[20]; +h q[21]; +x q[22]; +cx q[21], q[22]; +h q[23]; +x q[24]; +cx q[23], q[24]; +h q[25]; +x q[26]; +cx q[25], q[26]; +h q[27]; +x q[28]; +cx q[27], q[28]; +barrier q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11], q[12], q[13], q[14], q[15], q[16], q[17], q[18], q[19], q[20], q[21], q[22], q[23], q[24], q[25], q[26], q[27], q[28], q[29]; +sdg q[0]; +sdg q[1]; +cx q[0], q[1]; +sdg q[0]; +h q[0]; +h q[1]; +s q[1]; +cx q[0], q[1]; +s q[0]; +h q[0]; +sdg q[0]; +y q[1]; +h q[1]; +sdg q[2]; +sdg q[3]; +cx q[2], q[3]; +sdg q[2]; +h q[2]; +h q[3]; +s q[3]; +cx q[2], q[3]; +s q[2]; +h q[2]; +sdg q[2]; +y q[3]; +h q[3]; +sdg q[4]; +sdg q[5]; +cx q[4], q[5]; +sdg q[4]; +h q[4]; +h q[5]; +s q[5]; +cx q[4], q[5]; +s q[4]; +h q[4]; +sdg q[4]; +y q[5]; +h q[5]; +sdg q[6]; +sdg q[7]; +cx q[6], q[7]; +sdg q[6]; +h q[6]; +h q[7]; +s q[7]; +cx q[6], q[7]; +s q[6]; +h q[6]; +sdg q[6]; +y q[7]; +h q[7]; +sdg q[8]; +sdg q[9]; +cx q[8], q[9]; +sdg q[8]; +h q[8]; +h q[9]; +s q[9]; +cx q[8], q[9]; +s q[8]; +h q[8]; +sdg q[8]; +y q[9]; +h q[9]; +sdg q[10]; +sdg q[11]; +cx q[10], q[11]; +sdg q[10]; +h q[10]; +h q[11]; +s q[11]; +cx q[10], q[11]; +s q[10]; +h q[10]; +sdg q[10]; +y q[11]; +h q[11]; +sdg q[12]; +sdg q[13]; +cx q[12], q[13]; +sdg q[12]; +h q[12]; +h q[13]; +s q[13]; +cx q[12], q[13]; +s q[12]; +h q[12]; +sdg q[12]; +y q[13]; +h q[13]; +sdg q[14]; +sdg q[15]; +cx q[14], q[15]; +sdg q[14]; +h q[14]; +h q[15]; +s q[15]; +cx q[14], q[15]; +s q[14]; +h q[14]; +sdg q[14]; +y q[15]; +h q[15]; +sdg q[16]; +sdg q[17]; +cx q[16], q[17]; +sdg q[16]; +h q[16]; +h q[17]; +s q[17]; +cx q[16], q[17]; +s q[16]; +h q[16]; +sdg q[16]; +y q[17]; +h q[17]; +sdg q[18]; +sdg q[19]; +cx q[18], q[19]; +sdg q[18]; +h q[18]; +h q[19]; +s q[19]; +cx q[18], q[19]; +s q[18]; +h q[18]; +sdg q[18]; +y q[19]; +h q[19]; +sdg q[20]; +sdg q[21]; +cx q[20], q[21]; +sdg q[20]; +h q[20]; +h q[21]; +s q[21]; +cx q[20], q[21]; +s q[20]; +h q[20]; +sdg q[20]; +y q[21]; +h q[21]; +sdg q[22]; +sdg q[23]; +cx q[22], q[23]; +sdg q[22]; +h q[22]; +h q[23]; +s q[23]; +cx q[22], q[23]; +s q[22]; +h q[22]; +sdg q[22]; +y q[23]; +h q[23]; +sdg q[24]; +sdg q[25]; +cx q[24], q[25]; +sdg q[24]; +h q[24]; +h q[25]; +s q[25]; +cx q[24], q[25]; +s q[24]; +h q[24]; +sdg q[24]; +y q[25]; +h q[25]; +sdg q[26]; +sdg q[27]; +cx q[26], q[27]; +sdg q[26]; +h q[26]; +h q[27]; +s q[27]; +cx q[26], q[27]; +s q[26]; +h q[26]; +sdg q[26]; +y q[27]; +h q[27]; +sdg q[28]; +sdg q[29]; +cx q[28], q[29]; +sdg q[28]; +h q[28]; +h q[29]; +s q[29]; +cx q[28], q[29]; +s q[28]; +h q[28]; +sdg q[28]; +y q[29]; +h q[29]; +barrier q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11], q[12], q[13], q[14], q[15], q[16], q[17], q[18], q[19], q[20], q[21], q[22], q[23], q[24], q[25], q[26], q[27], q[28], q[29]; +sdg q[1]; +sdg q[2]; +cx q[1], q[2]; +sdg q[1]; +h q[1]; +h q[2]; +s q[2]; +cx q[1], q[2]; +s q[1]; +h q[1]; +sdg q[1]; +y q[2]; +h q[2]; +sdg q[3]; +sdg q[4]; +cx q[3], q[4]; +sdg q[3]; +h q[3]; +h q[4]; +s q[4]; +cx q[3], q[4]; +s q[3]; +h q[3]; +sdg q[3]; +y q[4]; +h q[4]; +sdg q[5]; +sdg q[6]; +cx q[5], q[6]; +sdg q[5]; +h q[5]; +h q[6]; +s q[6]; +cx q[5], q[6]; +s q[5]; +h q[5]; +sdg q[5]; +y q[6]; +h q[6]; +sdg q[7]; +sdg q[8]; +cx q[7], q[8]; +sdg q[7]; +h q[7]; +h q[8]; +s q[8]; +cx q[7], q[8]; +s q[7]; +h q[7]; +sdg q[7]; +y q[8]; +h q[8]; +sdg q[9]; +sdg q[10]; +cx q[9], q[10]; +sdg q[9]; +h q[9]; +h q[10]; +s q[10]; +cx q[9], q[10]; +s q[9]; +h q[9]; +sdg q[9]; +y q[10]; +h q[10]; +sdg q[11]; +sdg q[12]; +cx q[11], q[12]; +sdg q[11]; +h q[11]; +h q[12]; +s q[12]; +cx q[11], q[12]; +s q[11]; +h q[11]; +sdg q[11]; +y q[12]; +h q[12]; +sdg q[13]; +sdg q[14]; +cx q[13], q[14]; +sdg q[13]; +h q[13]; +h q[14]; +s q[14]; +cx q[13], q[14]; +s q[13]; +h q[13]; +sdg q[13]; +y q[14]; +h q[14]; +sdg q[15]; +sdg q[16]; +cx q[15], q[16]; +sdg q[15]; +h q[15]; +h q[16]; +s q[16]; +cx q[15], q[16]; +s q[15]; +h q[15]; +sdg q[15]; +y q[16]; +h q[16]; +sdg q[17]; +sdg q[18]; +cx q[17], q[18]; +sdg q[17]; +h q[17]; +h q[18]; +s q[18]; +cx q[17], q[18]; +s q[17]; +h q[17]; +sdg q[17]; +y q[18]; +h q[18]; +sdg q[19]; +sdg q[20]; +cx q[19], q[20]; +sdg q[19]; +h q[19]; +h q[20]; +s q[20]; +cx q[19], q[20]; +s q[19]; +h q[19]; +sdg q[19]; +y q[20]; +h q[20]; +sdg q[21]; +sdg q[22]; +cx q[21], q[22]; +sdg q[21]; +h q[21]; +h q[22]; +s q[22]; +cx q[21], q[22]; +s q[21]; +h q[21]; +sdg q[21]; +y q[22]; +h q[22]; +sdg q[23]; +sdg q[24]; +cx q[23], q[24]; +sdg q[23]; +h q[23]; +h q[24]; +s q[24]; +cx q[23], q[24]; +s q[23]; +h q[23]; +sdg q[23]; +y q[24]; +h q[24]; +sdg q[25]; +sdg q[26]; +cx q[25], q[26]; +sdg q[25]; +h q[25]; +h q[26]; +s q[26]; +cx q[25], q[26]; +s q[25]; +h q[25]; +sdg q[25]; +y q[26]; +h q[26]; +sdg q[27]; +sdg q[28]; +cx q[27], q[28]; +sdg q[27]; +h q[27]; +h q[28]; +s q[28]; +cx q[27], q[28]; +s q[27]; +h q[27]; +sdg q[27]; +y q[28]; +h q[28]; +barrier q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11], q[12], q[13], q[14], q[15], q[16], q[17], q[18], q[19], q[20], q[21], q[22], q[23], q[24], q[25], q[26], q[27], q[28], q[29]; +sdg q[0]; +sdg q[1]; +cx q[0], q[1]; +sdg q[0]; +h q[0]; +h q[1]; +s q[1]; +cx q[0], q[1]; +s q[0]; +h q[0]; +sdg q[0]; +y q[1]; +h q[1]; +sdg q[2]; +sdg q[3]; +cx q[2], q[3]; +sdg q[2]; +h q[2]; +h q[3]; +s q[3]; +cx q[2], q[3]; +s q[2]; +h q[2]; +sdg q[2]; +y q[3]; +h q[3]; +sdg q[4]; +sdg q[5]; +cx q[4], q[5]; +sdg q[4]; +h q[4]; +h q[5]; +s q[5]; +cx q[4], q[5]; +s q[4]; +h q[4]; +sdg q[4]; +y q[5]; +h q[5]; +sdg q[6]; +sdg q[7]; +cx q[6], q[7]; +sdg q[6]; +h q[6]; +h q[7]; +s q[7]; +cx q[6], q[7]; +s q[6]; +h q[6]; +sdg q[6]; +y q[7]; +h q[7]; +sdg q[8]; +sdg q[9]; +cx q[8], q[9]; +sdg q[8]; +h q[8]; +h q[9]; +s q[9]; +cx q[8], q[9]; +s q[8]; +h q[8]; +sdg q[8]; +y q[9]; +h q[9]; +sdg q[10]; +sdg q[11]; +cx q[10], q[11]; +sdg q[10]; +h q[10]; +h q[11]; +s q[11]; +cx q[10], q[11]; +s q[10]; +h q[10]; +sdg q[10]; +y q[11]; +h q[11]; +sdg q[12]; +sdg q[13]; +cx q[12], q[13]; +sdg q[12]; +h q[12]; +h q[13]; +s q[13]; +cx q[12], q[13]; +s q[12]; +h q[12]; +sdg q[12]; +y q[13]; +h q[13]; +sdg q[14]; +sdg q[15]; +cx q[14], q[15]; +sdg q[14]; +h q[14]; +h q[15]; +s q[15]; +cx q[14], q[15]; +s q[14]; +h q[14]; +sdg q[14]; +y q[15]; +h q[15]; +sdg q[16]; +sdg q[17]; +cx q[16], q[17]; +sdg q[16]; +h q[16]; +h q[17]; +s q[17]; +cx q[16], q[17]; +s q[16]; +h q[16]; +sdg q[16]; +y q[17]; +h q[17]; +sdg q[18]; +sdg q[19]; +cx q[18], q[19]; +sdg q[18]; +h q[18]; +h q[19]; +s q[19]; +cx q[18], q[19]; +s q[18]; +h q[18]; +sdg q[18]; +y q[19]; +h q[19]; +sdg q[20]; +sdg q[21]; +cx q[20], q[21]; +sdg q[20]; +h q[20]; +h q[21]; +s q[21]; +cx q[20], q[21]; +s q[20]; +h q[20]; +sdg q[20]; +y q[21]; +h q[21]; +sdg q[22]; +sdg q[23]; +cx q[22], q[23]; +sdg q[22]; +h q[22]; +h q[23]; +s q[23]; +cx q[22], q[23]; +s q[22]; +h q[22]; +sdg q[22]; +y q[23]; +h q[23]; +sdg q[24]; +sdg q[25]; +cx q[24], q[25]; +sdg q[24]; +h q[24]; +h q[25]; +s q[25]; +cx q[24], q[25]; +s q[24]; +h q[24]; +sdg q[24]; +y q[25]; +h q[25]; +sdg q[26]; +sdg q[27]; +cx q[26], q[27]; +sdg q[26]; +h q[26]; +h q[27]; +s q[27]; +cx q[26], q[27]; +s q[26]; +h q[26]; +sdg q[26]; +y q[27]; +h q[27]; +sdg q[28]; +sdg q[29]; +cx q[28], q[29]; +sdg q[28]; +h q[28]; +h q[29]; +s q[29]; +cx q[28], q[29]; +s q[28]; +h q[28]; +sdg q[28]; +y q[29]; +h q[29]; +barrier q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11], q[12], q[13], q[14], q[15], q[16], q[17], q[18], q[19], q[20], q[21], q[22], q[23], q[24], q[25], q[26], q[27], q[28], q[29]; +sdg q[1]; +sdg q[2]; +cx q[1], q[2]; +sdg q[1]; +h q[1]; +h q[2]; +s q[2]; +cx q[1], q[2]; +s q[1]; +h q[1]; +sdg q[1]; +y q[2]; +h q[2]; +sdg q[3]; +sdg q[4]; +cx q[3], q[4]; +sdg q[3]; +h q[3]; +h q[4]; +s q[4]; +cx q[3], q[4]; +s q[3]; +h q[3]; +sdg q[3]; +y q[4]; +h q[4]; +sdg q[5]; +sdg q[6]; +cx q[5], q[6]; +sdg q[5]; +h q[5]; +h q[6]; +s q[6]; +cx q[5], q[6]; +s q[5]; +h q[5]; +sdg q[5]; +y q[6]; +h q[6]; +sdg q[7]; +sdg q[8]; +cx q[7], q[8]; +sdg q[7]; +h q[7]; +h q[8]; +s q[8]; +cx q[7], q[8]; +s q[7]; +h q[7]; +sdg q[7]; +y q[8]; +h q[8]; +sdg q[9]; +sdg q[10]; +cx q[9], q[10]; +sdg q[9]; +h q[9]; +h q[10]; +s q[10]; +cx q[9], q[10]; +s q[9]; +h q[9]; +sdg q[9]; +y q[10]; +h q[10]; +sdg q[11]; +sdg q[12]; +cx q[11], q[12]; +sdg q[11]; +h q[11]; +h q[12]; +s q[12]; +cx q[11], q[12]; +s q[11]; +h q[11]; +sdg q[11]; +y q[12]; +h q[12]; +sdg q[13]; +sdg q[14]; +cx q[13], q[14]; +sdg q[13]; +h q[13]; +h q[14]; +s q[14]; +cx q[13], q[14]; +s q[13]; +h q[13]; +sdg q[13]; +y q[14]; +h q[14]; +sdg q[15]; +sdg q[16]; +cx q[15], q[16]; +sdg q[15]; +h q[15]; +h q[16]; +s q[16]; +cx q[15], q[16]; +s q[15]; +h q[15]; +sdg q[15]; +y q[16]; +h q[16]; +sdg q[17]; +sdg q[18]; +cx q[17], q[18]; +sdg q[17]; +h q[17]; +h q[18]; +s q[18]; +cx q[17], q[18]; +s q[17]; +h q[17]; +sdg q[17]; +y q[18]; +h q[18]; +sdg q[19]; +sdg q[20]; +cx q[19], q[20]; +sdg q[19]; +h q[19]; +h q[20]; +s q[20]; +cx q[19], q[20]; +s q[19]; +h q[19]; +sdg q[19]; +y q[20]; +h q[20]; +sdg q[21]; +sdg q[22]; +cx q[21], q[22]; +sdg q[21]; +h q[21]; +h q[22]; +s q[22]; +cx q[21], q[22]; +s q[21]; +h q[21]; +sdg q[21]; +y q[22]; +h q[22]; +sdg q[23]; +sdg q[24]; +cx q[23], q[24]; +sdg q[23]; +h q[23]; +h q[24]; +s q[24]; +cx q[23], q[24]; +s q[23]; +h q[23]; +sdg q[23]; +y q[24]; +h q[24]; +sdg q[25]; +sdg q[26]; +cx q[25], q[26]; +sdg q[25]; +h q[25]; +h q[26]; +s q[26]; +cx q[25], q[26]; +s q[25]; +h q[25]; +sdg q[25]; +y q[26]; +h q[26]; +sdg q[27]; +sdg q[28]; +cx q[27], q[28]; +sdg q[27]; +h q[27]; +h q[28]; +s q[28]; +cx q[27], q[28]; +s q[27]; +h q[27]; +sdg q[27]; +y q[28]; +h q[28]; +barrier q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11], q[12], q[13], q[14], q[15], q[16], q[17], q[18], q[19], q[20], q[21], q[22], q[23], q[24], q[25], q[26], q[27], q[28], q[29]; +sdg q[0]; +sdg q[1]; +cx q[0], q[1]; +sdg q[0]; +h q[0]; +h q[1]; +s q[1]; +cx q[0], q[1]; +s q[0]; +h q[0]; +sdg q[0]; +y q[1]; +h q[1]; +sdg q[2]; +sdg q[3]; +cx q[2], q[3]; +sdg q[2]; +h q[2]; +h q[3]; +s q[3]; +cx q[2], q[3]; +s q[2]; +h q[2]; +sdg q[2]; +y q[3]; +h q[3]; +sdg q[4]; +sdg q[5]; +cx q[4], q[5]; +sdg q[4]; +h q[4]; +h q[5]; +s q[5]; +cx q[4], q[5]; +s q[4]; +h q[4]; +sdg q[4]; +y q[5]; +h q[5]; +sdg q[6]; +sdg q[7]; +cx q[6], q[7]; +sdg q[6]; +h q[6]; +h q[7]; +s q[7]; +cx q[6], q[7]; +s q[6]; +h q[6]; +sdg q[6]; +y q[7]; +h q[7]; +sdg q[8]; +sdg q[9]; +cx q[8], q[9]; +sdg q[8]; +h q[8]; +h q[9]; +s q[9]; +cx q[8], q[9]; +s q[8]; +h q[8]; +sdg q[8]; +y q[9]; +h q[9]; +sdg q[10]; +sdg q[11]; +cx q[10], q[11]; +sdg q[10]; +h q[10]; +h q[11]; +s q[11]; +cx q[10], q[11]; +s q[10]; +h q[10]; +sdg q[10]; +y q[11]; +h q[11]; +sdg q[12]; +sdg q[13]; +cx q[12], q[13]; +sdg q[12]; +h q[12]; +h q[13]; +s q[13]; +cx q[12], q[13]; +s q[12]; +h q[12]; +sdg q[12]; +y q[13]; +h q[13]; +sdg q[14]; +sdg q[15]; +cx q[14], q[15]; +sdg q[14]; +h q[14]; +h q[15]; +s q[15]; +cx q[14], q[15]; +s q[14]; +h q[14]; +sdg q[14]; +y q[15]; +h q[15]; +sdg q[16]; +sdg q[17]; +cx q[16], q[17]; +sdg q[16]; +h q[16]; +h q[17]; +s q[17]; +cx q[16], q[17]; +s q[16]; +h q[16]; +sdg q[16]; +y q[17]; +h q[17]; +sdg q[18]; +sdg q[19]; +cx q[18], q[19]; +sdg q[18]; +h q[18]; +h q[19]; +s q[19]; +cx q[18], q[19]; +s q[18]; +h q[18]; +sdg q[18]; +y q[19]; +h q[19]; +sdg q[20]; +sdg q[21]; +cx q[20], q[21]; +sdg q[20]; +h q[20]; +h q[21]; +s q[21]; +cx q[20], q[21]; +s q[20]; +h q[20]; +sdg q[20]; +y q[21]; +h q[21]; +sdg q[22]; +sdg q[23]; +cx q[22], q[23]; +sdg q[22]; +h q[22]; +h q[23]; +s q[23]; +cx q[22], q[23]; +s q[22]; +h q[22]; +sdg q[22]; +y q[23]; +h q[23]; +sdg q[24]; +sdg q[25]; +cx q[24], q[25]; +sdg q[24]; +h q[24]; +h q[25]; +s q[25]; +cx q[24], q[25]; +s q[24]; +h q[24]; +sdg q[24]; +y q[25]; +h q[25]; +sdg q[26]; +sdg q[27]; +cx q[26], q[27]; +sdg q[26]; +h q[26]; +h q[27]; +s q[27]; +cx q[26], q[27]; +s q[26]; +h q[26]; +sdg q[26]; +y q[27]; +h q[27]; +sdg q[28]; +sdg q[29]; +cx q[28], q[29]; +sdg q[28]; +h q[28]; +h q[29]; +s q[29]; +cx q[28], q[29]; +s q[28]; +h q[28]; +sdg q[28]; +y q[29]; +h q[29]; +barrier q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11], q[12], q[13], q[14], q[15], q[16], q[17], q[18], q[19], q[20], q[21], q[22], q[23], q[24], q[25], q[26], q[27], q[28], q[29]; +sdg q[1]; +sdg q[2]; +cx q[1], q[2]; +sdg q[1]; +h q[1]; +h q[2]; +s q[2]; +cx q[1], q[2]; +s q[1]; +h q[1]; +sdg q[1]; +y q[2]; +h q[2]; +sdg q[3]; +sdg q[4]; +cx q[3], q[4]; +sdg q[3]; +h q[3]; +h q[4]; +s q[4]; +cx q[3], q[4]; +s q[3]; +h q[3]; +sdg q[3]; +y q[4]; +h q[4]; +sdg q[5]; +sdg q[6]; +cx q[5], q[6]; +sdg q[5]; +h q[5]; +h q[6]; +s q[6]; +cx q[5], q[6]; +s q[5]; +h q[5]; +sdg q[5]; +y q[6]; +h q[6]; +sdg q[7]; +sdg q[8]; +cx q[7], q[8]; +sdg q[7]; +h q[7]; +h q[8]; +s q[8]; +cx q[7], q[8]; +s q[7]; +h q[7]; +sdg q[7]; +y q[8]; +h q[8]; +sdg q[9]; +sdg q[10]; +cx q[9], q[10]; +sdg q[9]; +h q[9]; +h q[10]; +s q[10]; +cx q[9], q[10]; +s q[9]; +h q[9]; +sdg q[9]; +y q[10]; +h q[10]; +sdg q[11]; +sdg q[12]; +cx q[11], q[12]; +sdg q[11]; +h q[11]; +h q[12]; +s q[12]; +cx q[11], q[12]; +s q[11]; +h q[11]; +sdg q[11]; +y q[12]; +h q[12]; +sdg q[13]; +sdg q[14]; +cx q[13], q[14]; +sdg q[13]; +h q[13]; +h q[14]; +s q[14]; +cx q[13], q[14]; +s q[13]; +h q[13]; +sdg q[13]; +y q[14]; +h q[14]; +sdg q[15]; +sdg q[16]; +cx q[15], q[16]; +sdg q[15]; +h q[15]; +h q[16]; +s q[16]; +cx q[15], q[16]; +s q[15]; +h q[15]; +sdg q[15]; +y q[16]; +h q[16]; +sdg q[17]; +sdg q[18]; +cx q[17], q[18]; +sdg q[17]; +h q[17]; +h q[18]; +s q[18]; +cx q[17], q[18]; +s q[17]; +h q[17]; +sdg q[17]; +y q[18]; +h q[18]; +sdg q[19]; +sdg q[20]; +cx q[19], q[20]; +sdg q[19]; +h q[19]; +h q[20]; +s q[20]; +cx q[19], q[20]; +s q[19]; +h q[19]; +sdg q[19]; +y q[20]; +h q[20]; +sdg q[21]; +sdg q[22]; +cx q[21], q[22]; +sdg q[21]; +h q[21]; +h q[22]; +s q[22]; +cx q[21], q[22]; +s q[21]; +h q[21]; +sdg q[21]; +y q[22]; +h q[22]; +sdg q[23]; +sdg q[24]; +cx q[23], q[24]; +sdg q[23]; +h q[23]; +h q[24]; +s q[24]; +cx q[23], q[24]; +s q[23]; +h q[23]; +sdg q[23]; +y q[24]; +h q[24]; +sdg q[25]; +sdg q[26]; +cx q[25], q[26]; +sdg q[25]; +h q[25]; +h q[26]; +s q[26]; +cx q[25], q[26]; +s q[25]; +h q[25]; +sdg q[25]; +y q[26]; +h q[26]; +sdg q[27]; +sdg q[28]; +cx q[27], q[28]; +sdg q[27]; +h q[27]; +h q[28]; +s q[28]; +cx q[27], q[28]; +s q[27]; +h q[27]; +sdg q[27]; +y q[28]; +h q[28]; +barrier q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11], q[12], q[13], q[14], q[15], q[16], q[17], q[18], q[19], q[20], q[21], q[22], q[23], q[24], q[25], q[26], q[27], q[28], q[29]; +sdg q[0]; +sdg q[1]; +cx q[0], q[1]; +sdg q[0]; +h q[0]; +h q[1]; +s q[1]; +cx q[0], q[1]; +s q[0]; +h q[0]; +sdg q[0]; +y q[1]; +h q[1]; +sdg q[2]; +sdg q[3]; +cx q[2], q[3]; +sdg q[2]; +h q[2]; +h q[3]; +s q[3]; +cx q[2], q[3]; +s q[2]; +h q[2]; +sdg q[2]; +y q[3]; +h q[3]; +sdg q[4]; +sdg q[5]; +cx q[4], q[5]; +sdg q[4]; +h q[4]; +h q[5]; +s q[5]; +cx q[4], q[5]; +s q[4]; +h q[4]; +sdg q[4]; +y q[5]; +h q[5]; +sdg q[6]; +sdg q[7]; +cx q[6], q[7]; +sdg q[6]; +h q[6]; +h q[7]; +s q[7]; +cx q[6], q[7]; +s q[6]; +h q[6]; +sdg q[6]; +y q[7]; +h q[7]; +sdg q[8]; +sdg q[9]; +cx q[8], q[9]; +sdg q[8]; +h q[8]; +h q[9]; +s q[9]; +cx q[8], q[9]; +s q[8]; +h q[8]; +sdg q[8]; +y q[9]; +h q[9]; +sdg q[10]; +sdg q[11]; +cx q[10], q[11]; +sdg q[10]; +h q[10]; +h q[11]; +s q[11]; +cx q[10], q[11]; +s q[10]; +h q[10]; +sdg q[10]; +y q[11]; +h q[11]; +sdg q[12]; +sdg q[13]; +cx q[12], q[13]; +sdg q[12]; +h q[12]; +h q[13]; +s q[13]; +cx q[12], q[13]; +s q[12]; +h q[12]; +sdg q[12]; +y q[13]; +h q[13]; +sdg q[14]; +sdg q[15]; +cx q[14], q[15]; +sdg q[14]; +h q[14]; +h q[15]; +s q[15]; +cx q[14], q[15]; +s q[14]; +h q[14]; +sdg q[14]; +y q[15]; +h q[15]; +sdg q[16]; +sdg q[17]; +cx q[16], q[17]; +sdg q[16]; +h q[16]; +h q[17]; +s q[17]; +cx q[16], q[17]; +s q[16]; +h q[16]; +sdg q[16]; +y q[17]; +h q[17]; +sdg q[18]; +sdg q[19]; +cx q[18], q[19]; +sdg q[18]; +h q[18]; +h q[19]; +s q[19]; +cx q[18], q[19]; +s q[18]; +h q[18]; +sdg q[18]; +y q[19]; +h q[19]; +sdg q[20]; +sdg q[21]; +cx q[20], q[21]; +sdg q[20]; +h q[20]; +h q[21]; +s q[21]; +cx q[20], q[21]; +s q[20]; +h q[20]; +sdg q[20]; +y q[21]; +h q[21]; +sdg q[22]; +sdg q[23]; +cx q[22], q[23]; +sdg q[22]; +h q[22]; +h q[23]; +s q[23]; +cx q[22], q[23]; +s q[22]; +h q[22]; +sdg q[22]; +y q[23]; +h q[23]; +sdg q[24]; +sdg q[25]; +cx q[24], q[25]; +sdg q[24]; +h q[24]; +h q[25]; +s q[25]; +cx q[24], q[25]; +s q[24]; +h q[24]; +sdg q[24]; +y q[25]; +h q[25]; +sdg q[26]; +sdg q[27]; +cx q[26], q[27]; +sdg q[26]; +h q[26]; +h q[27]; +s q[27]; +cx q[26], q[27]; +s q[26]; +h q[26]; +sdg q[26]; +y q[27]; +h q[27]; +sdg q[28]; +sdg q[29]; +cx q[28], q[29]; +sdg q[28]; +h q[28]; +h q[29]; +s q[29]; +cx q[28], q[29]; +s q[28]; +h q[28]; +sdg q[28]; +y q[29]; +h q[29]; +barrier q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11], q[12], q[13], q[14], q[15], q[16], q[17], q[18], q[19], q[20], q[21], q[22], q[23], q[24], q[25], q[26], q[27], q[28], q[29]; +sdg q[1]; +sdg q[2]; +cx q[1], q[2]; +sdg q[1]; +h q[1]; +h q[2]; +s q[2]; +cx q[1], q[2]; +s q[1]; +h q[1]; +sdg q[1]; +y q[2]; +h q[2]; +sdg q[3]; +sdg q[4]; +cx q[3], q[4]; +sdg q[3]; +h q[3]; +h q[4]; +s q[4]; +cx q[3], q[4]; +s q[3]; +h q[3]; +sdg q[3]; +y q[4]; +h q[4]; +sdg q[5]; +sdg q[6]; +cx q[5], q[6]; +sdg q[5]; +h q[5]; +h q[6]; +s q[6]; +cx q[5], q[6]; +s q[5]; +h q[5]; +sdg q[5]; +y q[6]; +h q[6]; +sdg q[7]; +sdg q[8]; +cx q[7], q[8]; +sdg q[7]; +h q[7]; +h q[8]; +s q[8]; +cx q[7], q[8]; +s q[7]; +h q[7]; +sdg q[7]; +y q[8]; +h q[8]; +sdg q[9]; +sdg q[10]; +cx q[9], q[10]; +sdg q[9]; +h q[9]; +h q[10]; +s q[10]; +cx q[9], q[10]; +s q[9]; +h q[9]; +sdg q[9]; +y q[10]; +h q[10]; +sdg q[11]; +sdg q[12]; +cx q[11], q[12]; +sdg q[11]; +h q[11]; +h q[12]; +s q[12]; +cx q[11], q[12]; +s q[11]; +h q[11]; +sdg q[11]; +y q[12]; +h q[12]; +sdg q[13]; +sdg q[14]; +cx q[13], q[14]; +sdg q[13]; +h q[13]; +h q[14]; +s q[14]; +cx q[13], q[14]; +s q[13]; +h q[13]; +sdg q[13]; +y q[14]; +h q[14]; +sdg q[15]; +sdg q[16]; +cx q[15], q[16]; +sdg q[15]; +h q[15]; +h q[16]; +s q[16]; +cx q[15], q[16]; +s q[15]; +h q[15]; +sdg q[15]; +y q[16]; +h q[16]; +sdg q[17]; +sdg q[18]; +cx q[17], q[18]; +sdg q[17]; +h q[17]; +h q[18]; +s q[18]; +cx q[17], q[18]; +s q[17]; +h q[17]; +sdg q[17]; +y q[18]; +h q[18]; +sdg q[19]; +sdg q[20]; +cx q[19], q[20]; +sdg q[19]; +h q[19]; +h q[20]; +s q[20]; +cx q[19], q[20]; +s q[19]; +h q[19]; +sdg q[19]; +y q[20]; +h q[20]; +sdg q[21]; +sdg q[22]; +cx q[21], q[22]; +sdg q[21]; +h q[21]; +h q[22]; +s q[22]; +cx q[21], q[22]; +s q[21]; +h q[21]; +sdg q[21]; +y q[22]; +h q[22]; +sdg q[23]; +sdg q[24]; +cx q[23], q[24]; +sdg q[23]; +h q[23]; +h q[24]; +s q[24]; +cx q[23], q[24]; +s q[23]; +h q[23]; +sdg q[23]; +y q[24]; +h q[24]; +sdg q[25]; +sdg q[26]; +cx q[25], q[26]; +sdg q[25]; +h q[25]; +h q[26]; +s q[26]; +cx q[25], q[26]; +s q[25]; +h q[25]; +sdg q[25]; +y q[26]; +h q[26]; +sdg q[27]; +sdg q[28]; +cx q[27], q[28]; +sdg q[27]; +h q[27]; +h q[28]; +s q[28]; +cx q[27], q[28]; +s q[27]; +h q[27]; +sdg q[27]; +y q[28]; +h q[28]; +barrier q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11], q[12], q[13], q[14], q[15], q[16], q[17], q[18], q[19], q[20], q[21], q[22], q[23], q[24], q[25], q[26], q[27], q[28], q[29]; +sdg q[0]; +sdg q[1]; +cx q[0], q[1]; +sdg q[0]; +h q[0]; +h q[1]; +s q[1]; +cx q[0], q[1]; +s q[0]; +h q[0]; +sdg q[0]; +y q[1]; +h q[1]; +sdg q[2]; +sdg q[3]; +cx q[2], q[3]; +sdg q[2]; +h q[2]; +h q[3]; +s q[3]; +cx q[2], q[3]; +s q[2]; +h q[2]; +sdg q[2]; +y q[3]; +h q[3]; +sdg q[4]; +sdg q[5]; +cx q[4], q[5]; +sdg q[4]; +h q[4]; +h q[5]; +s q[5]; +cx q[4], q[5]; +s q[4]; +h q[4]; +sdg q[4]; +y q[5]; +h q[5]; +sdg q[6]; +sdg q[7]; +cx q[6], q[7]; +sdg q[6]; +h q[6]; +h q[7]; +s q[7]; +cx q[6], q[7]; +s q[6]; +h q[6]; +sdg q[6]; +y q[7]; +h q[7]; +sdg q[8]; +sdg q[9]; +cx q[8], q[9]; +sdg q[8]; +h q[8]; +h q[9]; +s q[9]; +cx q[8], q[9]; +s q[8]; +h q[8]; +sdg q[8]; +y q[9]; +h q[9]; +sdg q[10]; +sdg q[11]; +cx q[10], q[11]; +sdg q[10]; +h q[10]; +h q[11]; +s q[11]; +cx q[10], q[11]; +s q[10]; +h q[10]; +sdg q[10]; +y q[11]; +h q[11]; +sdg q[12]; +sdg q[13]; +cx q[12], q[13]; +sdg q[12]; +h q[12]; +h q[13]; +s q[13]; +cx q[12], q[13]; +s q[12]; +h q[12]; +sdg q[12]; +y q[13]; +h q[13]; +sdg q[14]; +sdg q[15]; +cx q[14], q[15]; +sdg q[14]; +h q[14]; +h q[15]; +s q[15]; +cx q[14], q[15]; +s q[14]; +h q[14]; +sdg q[14]; +y q[15]; +h q[15]; +sdg q[16]; +sdg q[17]; +cx q[16], q[17]; +sdg q[16]; +h q[16]; +h q[17]; +s q[17]; +cx q[16], q[17]; +s q[16]; +h q[16]; +sdg q[16]; +y q[17]; +h q[17]; +sdg q[18]; +sdg q[19]; +cx q[18], q[19]; +sdg q[18]; +h q[18]; +h q[19]; +s q[19]; +cx q[18], q[19]; +s q[18]; +h q[18]; +sdg q[18]; +y q[19]; +h q[19]; +sdg q[20]; +sdg q[21]; +cx q[20], q[21]; +sdg q[20]; +h q[20]; +h q[21]; +s q[21]; +cx q[20], q[21]; +s q[20]; +h q[20]; +sdg q[20]; +y q[21]; +h q[21]; +sdg q[22]; +sdg q[23]; +cx q[22], q[23]; +sdg q[22]; +h q[22]; +h q[23]; +s q[23]; +cx q[22], q[23]; +s q[22]; +h q[22]; +sdg q[22]; +y q[23]; +h q[23]; +sdg q[24]; +sdg q[25]; +cx q[24], q[25]; +sdg q[24]; +h q[24]; +h q[25]; +s q[25]; +cx q[24], q[25]; +s q[24]; +h q[24]; +sdg q[24]; +y q[25]; +h q[25]; +sdg q[26]; +sdg q[27]; +cx q[26], q[27]; +sdg q[26]; +h q[26]; +h q[27]; +s q[27]; +cx q[26], q[27]; +s q[26]; +h q[26]; +sdg q[26]; +y q[27]; +h q[27]; +sdg q[28]; +sdg q[29]; +cx q[28], q[29]; +sdg q[28]; +h q[28]; +h q[29]; +s q[29]; +cx q[28], q[29]; +s q[28]; +h q[28]; +sdg q[28]; +y q[29]; +h q[29]; +barrier q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11], q[12], q[13], q[14], q[15], q[16], q[17], q[18], q[19], q[20], q[21], q[22], q[23], q[24], q[25], q[26], q[27], q[28], q[29]; +sdg q[1]; +sdg q[2]; +cx q[1], q[2]; +sdg q[1]; +h q[1]; +h q[2]; +s q[2]; +cx q[1], q[2]; +s q[1]; +h q[1]; +sdg q[1]; +y q[2]; +h q[2]; +sdg q[3]; +sdg q[4]; +cx q[3], q[4]; +sdg q[3]; +h q[3]; +h q[4]; +s q[4]; +cx q[3], q[4]; +s q[3]; +h q[3]; +sdg q[3]; +y q[4]; +h q[4]; +sdg q[5]; +sdg q[6]; +cx q[5], q[6]; +sdg q[5]; +h q[5]; +h q[6]; +s q[6]; +cx q[5], q[6]; +s q[5]; +h q[5]; +sdg q[5]; +y q[6]; +h q[6]; +sdg q[7]; +sdg q[8]; +cx q[7], q[8]; +sdg q[7]; +h q[7]; +h q[8]; +s q[8]; +cx q[7], q[8]; +s q[7]; +h q[7]; +sdg q[7]; +y q[8]; +h q[8]; +sdg q[9]; +sdg q[10]; +cx q[9], q[10]; +sdg q[9]; +h q[9]; +h q[10]; +s q[10]; +cx q[9], q[10]; +s q[9]; +h q[9]; +sdg q[9]; +y q[10]; +h q[10]; +sdg q[11]; +sdg q[12]; +cx q[11], q[12]; +sdg q[11]; +h q[11]; +h q[12]; +s q[12]; +cx q[11], q[12]; +s q[11]; +h q[11]; +sdg q[11]; +y q[12]; +h q[12]; +sdg q[13]; +sdg q[14]; +cx q[13], q[14]; +sdg q[13]; +h q[13]; +h q[14]; +s q[14]; +cx q[13], q[14]; +s q[13]; +h q[13]; +sdg q[13]; +y q[14]; +h q[14]; +sdg q[15]; +sdg q[16]; +cx q[15], q[16]; +sdg q[15]; +h q[15]; +h q[16]; +s q[16]; +cx q[15], q[16]; +s q[15]; +h q[15]; +sdg q[15]; +y q[16]; +h q[16]; +sdg q[17]; +sdg q[18]; +cx q[17], q[18]; +sdg q[17]; +h q[17]; +h q[18]; +s q[18]; +cx q[17], q[18]; +s q[17]; +h q[17]; +sdg q[17]; +y q[18]; +h q[18]; +sdg q[19]; +sdg q[20]; +cx q[19], q[20]; +sdg q[19]; +h q[19]; +h q[20]; +s q[20]; +cx q[19], q[20]; +s q[19]; +h q[19]; +sdg q[19]; +y q[20]; +h q[20]; +sdg q[21]; +sdg q[22]; +cx q[21], q[22]; +sdg q[21]; +h q[21]; +h q[22]; +s q[22]; +cx q[21], q[22]; +s q[21]; +h q[21]; +sdg q[21]; +y q[22]; +h q[22]; +sdg q[23]; +sdg q[24]; +cx q[23], q[24]; +sdg q[23]; +h q[23]; +h q[24]; +s q[24]; +cx q[23], q[24]; +s q[23]; +h q[23]; +sdg q[23]; +y q[24]; +h q[24]; +sdg q[25]; +sdg q[26]; +cx q[25], q[26]; +sdg q[25]; +h q[25]; +h q[26]; +s q[26]; +cx q[25], q[26]; +s q[25]; +h q[25]; +sdg q[25]; +y q[26]; +h q[26]; +sdg q[27]; +sdg q[28]; +cx q[27], q[28]; +sdg q[27]; +h q[27]; +h q[28]; +s q[28]; +cx q[27], q[28]; +s q[27]; +h q[27]; +sdg q[27]; +y q[28]; +h q[28]; +barrier q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11], q[12], q[13], q[14], q[15], q[16], q[17], q[18], q[19], q[20], q[21], q[22], q[23], q[24], q[25], q[26], q[27], q[28], q[29]; +sdg q[0]; +sdg q[1]; +cx q[0], q[1]; +sdg q[0]; +h q[0]; +h q[1]; +s q[1]; +cx q[0], q[1]; +s q[0]; +h q[0]; +sdg q[0]; +y q[1]; +h q[1]; +sdg q[2]; +sdg q[3]; +cx q[2], q[3]; +sdg q[2]; +h q[2]; +h q[3]; +s q[3]; +cx q[2], q[3]; +s q[2]; +h q[2]; +sdg q[2]; +y q[3]; +h q[3]; +sdg q[4]; +sdg q[5]; +cx q[4], q[5]; +sdg q[4]; +h q[4]; +h q[5]; +s q[5]; +cx q[4], q[5]; +s q[4]; +h q[4]; +sdg q[4]; +y q[5]; +h q[5]; +sdg q[6]; +sdg q[7]; +cx q[6], q[7]; +sdg q[6]; +h q[6]; +h q[7]; +s q[7]; +cx q[6], q[7]; +s q[6]; +h q[6]; +sdg q[6]; +y q[7]; +h q[7]; +sdg q[8]; +sdg q[9]; +cx q[8], q[9]; +sdg q[8]; +h q[8]; +h q[9]; +s q[9]; +cx q[8], q[9]; +s q[8]; +h q[8]; +sdg q[8]; +y q[9]; +h q[9]; +sdg q[10]; +sdg q[11]; +cx q[10], q[11]; +sdg q[10]; +h q[10]; +h q[11]; +s q[11]; +cx q[10], q[11]; +s q[10]; +h q[10]; +sdg q[10]; +y q[11]; +h q[11]; +sdg q[12]; +sdg q[13]; +cx q[12], q[13]; +sdg q[12]; +h q[12]; +h q[13]; +s q[13]; +cx q[12], q[13]; +s q[12]; +h q[12]; +sdg q[12]; +y q[13]; +h q[13]; +sdg q[14]; +sdg q[15]; +cx q[14], q[15]; +sdg q[14]; +h q[14]; +h q[15]; +s q[15]; +cx q[14], q[15]; +s q[14]; +h q[14]; +sdg q[14]; +y q[15]; +h q[15]; +sdg q[16]; +sdg q[17]; +cx q[16], q[17]; +sdg q[16]; +h q[16]; +h q[17]; +s q[17]; +cx q[16], q[17]; +s q[16]; +h q[16]; +sdg q[16]; +y q[17]; +h q[17]; +sdg q[18]; +sdg q[19]; +cx q[18], q[19]; +sdg q[18]; +h q[18]; +h q[19]; +s q[19]; +cx q[18], q[19]; +s q[18]; +h q[18]; +sdg q[18]; +y q[19]; +h q[19]; +sdg q[20]; +sdg q[21]; +cx q[20], q[21]; +sdg q[20]; +h q[20]; +h q[21]; +s q[21]; +cx q[20], q[21]; +s q[20]; +h q[20]; +sdg q[20]; +y q[21]; +h q[21]; +sdg q[22]; +sdg q[23]; +cx q[22], q[23]; +sdg q[22]; +h q[22]; +h q[23]; +s q[23]; +cx q[22], q[23]; +s q[22]; +h q[22]; +sdg q[22]; +y q[23]; +h q[23]; +sdg q[24]; +sdg q[25]; +cx q[24], q[25]; +sdg q[24]; +h q[24]; +h q[25]; +s q[25]; +cx q[24], q[25]; +s q[24]; +h q[24]; +sdg q[24]; +y q[25]; +h q[25]; +sdg q[26]; +sdg q[27]; +cx q[26], q[27]; +sdg q[26]; +h q[26]; +h q[27]; +s q[27]; +cx q[26], q[27]; +s q[26]; +h q[26]; +sdg q[26]; +y q[27]; +h q[27]; +sdg q[28]; +sdg q[29]; +cx q[28], q[29]; +sdg q[28]; +h q[28]; +h q[29]; +s q[29]; +cx q[28], q[29]; +s q[28]; +h q[28]; +sdg q[28]; +y q[29]; +h q[29]; +barrier q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11], q[12], q[13], q[14], q[15], q[16], q[17], q[18], q[19], q[20], q[21], q[22], q[23], q[24], q[25], q[26], q[27], q[28], q[29]; +sdg q[1]; +sdg q[2]; +cx q[1], q[2]; +sdg q[1]; +h q[1]; +h q[2]; +s q[2]; +cx q[1], q[2]; +s q[1]; +h q[1]; +sdg q[1]; +y q[2]; +h q[2]; +sdg q[3]; +sdg q[4]; +cx q[3], q[4]; +sdg q[3]; +h q[3]; +h q[4]; +s q[4]; +cx q[3], q[4]; +s q[3]; +h q[3]; +sdg q[3]; +y q[4]; +h q[4]; +sdg q[5]; +sdg q[6]; +cx q[5], q[6]; +sdg q[5]; +h q[5]; +h q[6]; +s q[6]; +cx q[5], q[6]; +s q[5]; +h q[5]; +sdg q[5]; +y q[6]; +h q[6]; +sdg q[7]; +sdg q[8]; +cx q[7], q[8]; +sdg q[7]; +h q[7]; +h q[8]; +s q[8]; +cx q[7], q[8]; +s q[7]; +h q[7]; +sdg q[7]; +y q[8]; +h q[8]; +sdg q[9]; +sdg q[10]; +cx q[9], q[10]; +sdg q[9]; +h q[9]; +h q[10]; +s q[10]; +cx q[9], q[10]; +s q[9]; +h q[9]; +sdg q[9]; +y q[10]; +h q[10]; +sdg q[11]; +sdg q[12]; +cx q[11], q[12]; +sdg q[11]; +h q[11]; +h q[12]; +s q[12]; +cx q[11], q[12]; +s q[11]; +h q[11]; +sdg q[11]; +y q[12]; +h q[12]; +sdg q[13]; +sdg q[14]; +cx q[13], q[14]; +sdg q[13]; +h q[13]; +h q[14]; +s q[14]; +cx q[13], q[14]; +s q[13]; +h q[13]; +sdg q[13]; +y q[14]; +h q[14]; +sdg q[15]; +sdg q[16]; +cx q[15], q[16]; +sdg q[15]; +h q[15]; +h q[16]; +s q[16]; +cx q[15], q[16]; +s q[15]; +h q[15]; +sdg q[15]; +y q[16]; +h q[16]; +sdg q[17]; +sdg q[18]; +cx q[17], q[18]; +sdg q[17]; +h q[17]; +h q[18]; +s q[18]; +cx q[17], q[18]; +s q[17]; +h q[17]; +sdg q[17]; +y q[18]; +h q[18]; +sdg q[19]; +sdg q[20]; +cx q[19], q[20]; +sdg q[19]; +h q[19]; +h q[20]; +s q[20]; +cx q[19], q[20]; +s q[19]; +h q[19]; +sdg q[19]; +y q[20]; +h q[20]; +sdg q[21]; +sdg q[22]; +cx q[21], q[22]; +sdg q[21]; +h q[21]; +h q[22]; +s q[22]; +cx q[21], q[22]; +s q[21]; +h q[21]; +sdg q[21]; +y q[22]; +h q[22]; +sdg q[23]; +sdg q[24]; +cx q[23], q[24]; +sdg q[23]; +h q[23]; +h q[24]; +s q[24]; +cx q[23], q[24]; +s q[23]; +h q[23]; +sdg q[23]; +y q[24]; +h q[24]; +sdg q[25]; +sdg q[26]; +cx q[25], q[26]; +sdg q[25]; +h q[25]; +h q[26]; +s q[26]; +cx q[25], q[26]; +s q[25]; +h q[25]; +sdg q[25]; +y q[26]; +h q[26]; +sdg q[27]; +sdg q[28]; +cx q[27], q[28]; +sdg q[27]; +h q[27]; +h q[28]; +s q[28]; +cx q[27], q[28]; +s q[27]; +h q[27]; +sdg q[27]; +y q[28]; +h q[28]; +barrier q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11], q[12], q[13], q[14], q[15], q[16], q[17], q[18], q[19], q[20], q[21], q[22], q[23], q[24], q[25], q[26], q[27], q[28], q[29]; +sdg q[0]; +sdg q[1]; +cx q[0], q[1]; +sdg q[0]; +h q[0]; +h q[1]; +s q[1]; +cx q[0], q[1]; +s q[0]; +h q[0]; +sdg q[0]; +y q[1]; +h q[1]; +sdg q[2]; +sdg q[3]; +cx q[2], q[3]; +sdg q[2]; +h q[2]; +h q[3]; +s q[3]; +cx q[2], q[3]; +s q[2]; +h q[2]; +sdg q[2]; +y q[3]; +h q[3]; +sdg q[4]; +sdg q[5]; +cx q[4], q[5]; +sdg q[4]; +h q[4]; +h q[5]; +s q[5]; +cx q[4], q[5]; +s q[4]; +h q[4]; +sdg q[4]; +y q[5]; +h q[5]; +sdg q[6]; +sdg q[7]; +cx q[6], q[7]; +sdg q[6]; +h q[6]; +h q[7]; +s q[7]; +cx q[6], q[7]; +s q[6]; +h q[6]; +sdg q[6]; +y q[7]; +h q[7]; +sdg q[8]; +sdg q[9]; +cx q[8], q[9]; +sdg q[8]; +h q[8]; +h q[9]; +s q[9]; +cx q[8], q[9]; +s q[8]; +h q[8]; +sdg q[8]; +y q[9]; +h q[9]; +sdg q[10]; +sdg q[11]; +cx q[10], q[11]; +sdg q[10]; +h q[10]; +h q[11]; +s q[11]; +cx q[10], q[11]; +s q[10]; +h q[10]; +sdg q[10]; +y q[11]; +h q[11]; +sdg q[12]; +sdg q[13]; +cx q[12], q[13]; +sdg q[12]; +h q[12]; +h q[13]; +s q[13]; +cx q[12], q[13]; +s q[12]; +h q[12]; +sdg q[12]; +y q[13]; +h q[13]; +sdg q[14]; +sdg q[15]; +cx q[14], q[15]; +sdg q[14]; +h q[14]; +h q[15]; +s q[15]; +cx q[14], q[15]; +s q[14]; +h q[14]; +sdg q[14]; +y q[15]; +h q[15]; +sdg q[16]; +sdg q[17]; +cx q[16], q[17]; +sdg q[16]; +h q[16]; +h q[17]; +s q[17]; +cx q[16], q[17]; +s q[16]; +h q[16]; +sdg q[16]; +y q[17]; +h q[17]; +sdg q[18]; +sdg q[19]; +cx q[18], q[19]; +sdg q[18]; +h q[18]; +h q[19]; +s q[19]; +cx q[18], q[19]; +s q[18]; +h q[18]; +sdg q[18]; +y q[19]; +h q[19]; +sdg q[20]; +sdg q[21]; +cx q[20], q[21]; +sdg q[20]; +h q[20]; +h q[21]; +s q[21]; +cx q[20], q[21]; +s q[20]; +h q[20]; +sdg q[20]; +y q[21]; +h q[21]; +sdg q[22]; +sdg q[23]; +cx q[22], q[23]; +sdg q[22]; +h q[22]; +h q[23]; +s q[23]; +cx q[22], q[23]; +s q[22]; +h q[22]; +sdg q[22]; +y q[23]; +h q[23]; +sdg q[24]; +sdg q[25]; +cx q[24], q[25]; +sdg q[24]; +h q[24]; +h q[25]; +s q[25]; +cx q[24], q[25]; +s q[24]; +h q[24]; +sdg q[24]; +y q[25]; +h q[25]; +sdg q[26]; +sdg q[27]; +cx q[26], q[27]; +sdg q[26]; +h q[26]; +h q[27]; +s q[27]; +cx q[26], q[27]; +s q[26]; +h q[26]; +sdg q[26]; +y q[27]; +h q[27]; +sdg q[28]; +sdg q[29]; +cx q[28], q[29]; +sdg q[28]; +h q[28]; +h q[29]; +s q[29]; +cx q[28], q[29]; +s q[28]; +h q[28]; +sdg q[28]; +y q[29]; +h q[29]; +barrier q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11], q[12], q[13], q[14], q[15], q[16], q[17], q[18], q[19], q[20], q[21], q[22], q[23], q[24], q[25], q[26], q[27], q[28], q[29]; +sdg q[1]; +sdg q[2]; +cx q[1], q[2]; +sdg q[1]; +h q[1]; +h q[2]; +s q[2]; +cx q[1], q[2]; +s q[1]; +h q[1]; +sdg q[1]; +y q[2]; +h q[2]; +sdg q[3]; +sdg q[4]; +cx q[3], q[4]; +sdg q[3]; +h q[3]; +h q[4]; +s q[4]; +cx q[3], q[4]; +s q[3]; +h q[3]; +sdg q[3]; +y q[4]; +h q[4]; +sdg q[5]; +sdg q[6]; +cx q[5], q[6]; +sdg q[5]; +h q[5]; +h q[6]; +s q[6]; +cx q[5], q[6]; +s q[5]; +h q[5]; +sdg q[5]; +y q[6]; +h q[6]; +sdg q[7]; +sdg q[8]; +cx q[7], q[8]; +sdg q[7]; +h q[7]; +h q[8]; +s q[8]; +cx q[7], q[8]; +s q[7]; +h q[7]; +sdg q[7]; +y q[8]; +h q[8]; +sdg q[9]; +sdg q[10]; +cx q[9], q[10]; +sdg q[9]; +h q[9]; +h q[10]; +s q[10]; +cx q[9], q[10]; +s q[9]; +h q[9]; +sdg q[9]; +y q[10]; +h q[10]; +sdg q[11]; +sdg q[12]; +cx q[11], q[12]; +sdg q[11]; +h q[11]; +h q[12]; +s q[12]; +cx q[11], q[12]; +s q[11]; +h q[11]; +sdg q[11]; +y q[12]; +h q[12]; +sdg q[13]; +sdg q[14]; +cx q[13], q[14]; +sdg q[13]; +h q[13]; +h q[14]; +s q[14]; +cx q[13], q[14]; +s q[13]; +h q[13]; +sdg q[13]; +y q[14]; +h q[14]; +sdg q[15]; +sdg q[16]; +cx q[15], q[16]; +sdg q[15]; +h q[15]; +h q[16]; +s q[16]; +cx q[15], q[16]; +s q[15]; +h q[15]; +sdg q[15]; +y q[16]; +h q[16]; +sdg q[17]; +sdg q[18]; +cx q[17], q[18]; +sdg q[17]; +h q[17]; +h q[18]; +s q[18]; +cx q[17], q[18]; +s q[17]; +h q[17]; +sdg q[17]; +y q[18]; +h q[18]; +sdg q[19]; +sdg q[20]; +cx q[19], q[20]; +sdg q[19]; +h q[19]; +h q[20]; +s q[20]; +cx q[19], q[20]; +s q[19]; +h q[19]; +sdg q[19]; +y q[20]; +h q[20]; +sdg q[21]; +sdg q[22]; +cx q[21], q[22]; +sdg q[21]; +h q[21]; +h q[22]; +s q[22]; +cx q[21], q[22]; +s q[21]; +h q[21]; +sdg q[21]; +y q[22]; +h q[22]; +sdg q[23]; +sdg q[24]; +cx q[23], q[24]; +sdg q[23]; +h q[23]; +h q[24]; +s q[24]; +cx q[23], q[24]; +s q[23]; +h q[23]; +sdg q[23]; +y q[24]; +h q[24]; +sdg q[25]; +sdg q[26]; +cx q[25], q[26]; +sdg q[25]; +h q[25]; +h q[26]; +s q[26]; +cx q[25], q[26]; +s q[25]; +h q[25]; +sdg q[25]; +y q[26]; +h q[26]; +sdg q[27]; +sdg q[28]; +cx q[27], q[28]; +sdg q[27]; +h q[27]; +h q[28]; +s q[28]; +cx q[27], q[28]; +s q[27]; +h q[27]; +sdg q[27]; +y q[28]; +h q[28]; +barrier q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11], q[12], q[13], q[14], q[15], q[16], q[17], q[18], q[19], q[20], q[21], q[22], q[23], q[24], q[25], q[26], q[27], q[28], q[29]; +sdg q[0]; +sdg q[1]; +cx q[0], q[1]; +sdg q[0]; +h q[0]; +h q[1]; +s q[1]; +cx q[0], q[1]; +s q[0]; +h q[0]; +sdg q[0]; +y q[1]; +h q[1]; +sdg q[2]; +sdg q[3]; +cx q[2], q[3]; +sdg q[2]; +h q[2]; +h q[3]; +s q[3]; +cx q[2], q[3]; +s q[2]; +h q[2]; +sdg q[2]; +y q[3]; +h q[3]; +sdg q[4]; +sdg q[5]; +cx q[4], q[5]; +sdg q[4]; +h q[4]; +h q[5]; +s q[5]; +cx q[4], q[5]; +s q[4]; +h q[4]; +sdg q[4]; +y q[5]; +h q[5]; +sdg q[6]; +sdg q[7]; +cx q[6], q[7]; +sdg q[6]; +h q[6]; +h q[7]; +s q[7]; +cx q[6], q[7]; +s q[6]; +h q[6]; +sdg q[6]; +y q[7]; +h q[7]; +sdg q[8]; +sdg q[9]; +cx q[8], q[9]; +sdg q[8]; +h q[8]; +h q[9]; +s q[9]; +cx q[8], q[9]; +s q[8]; +h q[8]; +sdg q[8]; +y q[9]; +h q[9]; +sdg q[10]; +sdg q[11]; +cx q[10], q[11]; +sdg q[10]; +h q[10]; +h q[11]; +s q[11]; +cx q[10], q[11]; +s q[10]; +h q[10]; +sdg q[10]; +y q[11]; +h q[11]; +sdg q[12]; +sdg q[13]; +cx q[12], q[13]; +sdg q[12]; +h q[12]; +h q[13]; +s q[13]; +cx q[12], q[13]; +s q[12]; +h q[12]; +sdg q[12]; +y q[13]; +h q[13]; +sdg q[14]; +sdg q[15]; +cx q[14], q[15]; +sdg q[14]; +h q[14]; +h q[15]; +s q[15]; +cx q[14], q[15]; +s q[14]; +h q[14]; +sdg q[14]; +y q[15]; +h q[15]; +sdg q[16]; +sdg q[17]; +cx q[16], q[17]; +sdg q[16]; +h q[16]; +h q[17]; +s q[17]; +cx q[16], q[17]; +s q[16]; +h q[16]; +sdg q[16]; +y q[17]; +h q[17]; +sdg q[18]; +sdg q[19]; +cx q[18], q[19]; +sdg q[18]; +h q[18]; +h q[19]; +s q[19]; +cx q[18], q[19]; +s q[18]; +h q[18]; +sdg q[18]; +y q[19]; +h q[19]; +sdg q[20]; +sdg q[21]; +cx q[20], q[21]; +sdg q[20]; +h q[20]; +h q[21]; +s q[21]; +cx q[20], q[21]; +s q[20]; +h q[20]; +sdg q[20]; +y q[21]; +h q[21]; +sdg q[22]; +sdg q[23]; +cx q[22], q[23]; +sdg q[22]; +h q[22]; +h q[23]; +s q[23]; +cx q[22], q[23]; +s q[22]; +h q[22]; +sdg q[22]; +y q[23]; +h q[23]; +sdg q[24]; +sdg q[25]; +cx q[24], q[25]; +sdg q[24]; +h q[24]; +h q[25]; +s q[25]; +cx q[24], q[25]; +s q[24]; +h q[24]; +sdg q[24]; +y q[25]; +h q[25]; +sdg q[26]; +sdg q[27]; +cx q[26], q[27]; +sdg q[26]; +h q[26]; +h q[27]; +s q[27]; +cx q[26], q[27]; +s q[26]; +h q[26]; +sdg q[26]; +y q[27]; +h q[27]; +sdg q[28]; +sdg q[29]; +cx q[28], q[29]; +sdg q[28]; +h q[28]; +h q[29]; +s q[29]; +cx q[28], q[29]; +s q[28]; +h q[28]; +sdg q[28]; +y q[29]; +h q[29]; +barrier q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], q[8], q[9], q[10], q[11], q[12], q[13], q[14], q[15], q[16], q[17], q[18], q[19], q[20], q[21], q[22], q[23], q[24], q[25], q[26], q[27], q[28], q[29]; diff --git a/docs/tutorials/ki_30q.qpy b/docs/tutorials/ki_30q.qpy deleted file mode 100644 index 5a79f5339a3..00000000000 Binary files a/docs/tutorials/ki_30q.qpy and /dev/null differ diff --git a/docs/tutorials/simulate-kicked-ising-tem.ipynb b/docs/tutorials/simulate-kicked-ising-tem.ipynb index 4071457efae..e0c95d34bf5 100644 --- a/docs/tutorials/simulate-kicked-ising-tem.ipynb +++ b/docs/tutorials/simulate-kicked-ising-tem.ipynb @@ -15,7 +15,9 @@ "\n", "Algorithmiq's Tensor-network Error Mitigation (TEM) method is a hybrid quantum-classical algorithm designed for performing noise mitigation entirely at the classical post-processing stage. With TEM, the user can compute the expectation values of observables mitigating the inevitable noise-induced errors that occur on quantum hardware with increased accuracy and cost efficiency, making it a highly attractive option for quantum researchers and industry practitioners alike.\n", "\n", - "In this tutorial, we will showcase how TEM allows to obtain meaningful results for the dynamics of a quantum system, which would be inaccessible without error mitigation and require substantially more quantum resources if other error mitigation methods such as PEC and ZNE are used." + "In this tutorial, we will showcase how TEM allows to obtain meaningful results for the dynamics of a quantum system, which would be inaccessible without error mitigation and require substantially more quantum resources if other error mitigation methods such as PEC and ZNE are used.\n", + "\n", + "*Usage estimate: this notebook uses around 10 QPU minutes on heron r3 devices. The run time can depend substantially on the chosen device. Per-section usage estimates can be found below.*" ] }, { @@ -68,12 +70,12 @@ "metadata": {}, "outputs": [], "source": [ - "%pip install numpy matplotlib qiskit qiskit-ibm-catalog qiskit-ibm-runtime" + "%pip install numpy matplotlib qiskit qiskit-ibm-catalog qiskit-ibm-runtime pylatexenc qiskit_qasm3_import" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "ad0002b7-dbff-4699-af52-ba0df72ed200", "metadata": {}, "outputs": [], @@ -83,7 +85,7 @@ "import numpy as np\n", "\n", "from qiskit.quantum_info import SparsePauliOp\n", - "from qiskit import qpy\n", + "from qiskit.qasm3 import load\n", "\n", "from qiskit_ibm_catalog import QiskitFunctionsCatalog" ] @@ -120,8 +122,9 @@ "outputs": [ { "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA8QAAADbCAYAAACrxFgkAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAm1NJREFUeJztnWdgFMX/h5+EJIQEAgktJARBUCFgBxQQULGDYO/+raiAgB3FgIgYRFQUMdix/OwU6Si9a0ILvQcI6b33u/+LeCHlyu7OXvYumecN5pzZ73dmP/PZ2TbrYTabzUgkEolEIpFIJBKJRNLI8DQ6AYlEIpFIJBKJRCKRSIxAnhBLJBKJRCKRSCQSiaRRIk+IJRKJRCKRSCQSiUTSKJEnxBKJRCKRSCQSiUQiaZTIE2KJRCKRSCQSiUQikTRK5AmxRCKRSCQSiUQikUgaJfKEWCKRSCQSiUQikUgkjRJ5QiyRSCQSiUQikUgkkkaJPCGWSCQSiUQikUgkEkmjRJ4QSyQSiUQikUgkEomkUSJPiCUSiUQikUgkEolE0iiRJ8QSiUQikUgkEolEImmUyBNiiUQikUgkEolEIpE0SryMTsCViYmJAeDEiRMAdO3aFYA+ffoYlpPEvZAakogiNSQRRWpIIorUkEQEi35AakiiDVseBPpoSJ4QK6B169ZGpyBxc6SGJKJIDUlEkRqSiCI1JBFFakgigrP0I0+IFZCRkQFAq1atjE1E4rZIDUlEkRqSiCI1JBFFakgiitSQRARn6cclT4jLP4nCnJjssJxHSDBe40c7PR+1VyPe3g3xBcrKhvnDW5drSMqJ8ZX2PzhvHyhtg63+E9WQaPzayCuiElGc5UPO8CA18W3lYLQPuUL+0ockrkZD9SFnzSVEMdqHnDGflT4kEaFR3SE2JybDoSOOy9VDLqD+akR8AezJdGJCTo6vtP/BefugvtpgK3+996G8IioRRfqQnbLaw9jEFfKXPiRxNaQP2SinPYRdjPYhZ+w/6UMSERrVHWJXIzAw0OgUJG6O1JBEFKkhiShSQxJRpIYkokgNSURwln7c4rNLUXHHavxb3xQUFFBQoPCZETtkxyzTVO+vrfE8EbGJjTFJhsQX7f/45HxGTtnMpz8fwGzWdh01delskhfOpOjUPk319dKQ1j7US0OSxouRPmQymfnw+308+/YWUjKK6j0+iI9hUR91dw8C6UMScfTQkFYNZ+eWMG76Nt7+fDfl5aZ6jw9i47jKR6dq91HpQ5LGjrP049Q7xLGxsSxfvpy4uDhuuOEGsrOzuf/++1Xf5i42VTD75FG2ZqYzussFzknWDj4+Pprrpi6djamshJZX3ELxmQOUdOpF0/adFdffdzST/3tzE6mZxfy9PYHN3w/l/I4B9RYfxPrfZDIzdMzf7DuWRTPfJhSXVPDqE5eo2gZARXE+fl0uwzcsXHVdEGuDHn0ooiGJBIz1obeidjHzu32UlFaw81AGO34dUa/xQWwM1/DRfxLY8t0wunRsoWob7u5BIH1IIo5WDemh4TtfXMOGmGS8mniQmFrAF5Ovqdf4IDaOa/joQfU+CtKHJBJn6cepJ8QLFixg6tSpTJ8+nZKSEq6//noOHTpEv379apQbNWoUCQkJVX+/gw/hNKn629ezCaO7XICXh0eNegcPHWTS8OFOy79v374A5OTkANCyZcvK/N55x269tGHTIbgnUNO8StJO1zGPAwcPMPz9N2xu62x+R1IzrwQgMa2Ahx5/kXZ+aU6Nr7T/wfE+qDB5cixhCOBHUXEFs774k82LIuzmX7sNAMF3v07e3nWkrfqcdkPH2M1fTRts5a+0Dx3tP60akkgsONuHHGkYIDqlLyWlHQA4ePQ0t98+HCt2oCm+rRz09KEaPpqaz4OPv6DKR8G2Bzkzf0sOoscR6UMSUUR9SFTDADsSrgMCKK8ws3DZZpJ2vO8wb9H4es5Hq/voIQ0+CvXvQ3rNZy36AelDEm3Y8iCwrqHQ0FDmzp2rePseZq3PsCogMjKSVq1asXHjRu6++24yMzO5//77HT7/XTZhco1FAKLijjG6ywVV/1bR4yK8Z0x1VvpVH4GOj48HICwsDHD8Aeint5xbhMBsMpG3dx3FCUcIGng/XgFtapS9LAi+tnORM6+glBtGriT2SCZX9mzD2q9uxbep/esYovEV9z8o2gdPRGzir21nyS0oY8v3w7isu+MV4qq3ASBz48+UpJzENyycwH532c1fVRts5K+0Dx3tP60akkgsONuHHGkYYMuuZB6ftImzKQU8fddFzJnY32HeruRDeQWlDHl6JXuPavNRsO1BzszfkoPocUT6kEQUUR8S1TDAlKidfL3wKJm5Jfw0/VruHNLZYd6i8fWcj4r6KNS/D+k1n7XoB6QPSbRhy4NAHw059Q7xxIkTAUhNTeW+++7TvB3LoDXicWkAf39/zXWzNv9aZV61zUMJLfx92Pbj7dw66m9Wzr2JJk3UvfYtGh/E+3/etEGkZhTxxOTNik6GrRE0+CFN9SyItEGPPhTRkEQCxvrQNVcEs3f+Xdz5whpFkzi944PYGLb46G2jtfkouL8HgfQhiThaNaSHhqeMvpJxD/fikTc2KDoZ1js+iI1jUR8F6UMSibP0Uy+rTE+ZMqU+wjiNrKwsAIKCglTXFTUvgCZNPPFt2sSQSZxetGvdjCaeDp4NclH06EMRDUkkYLwP+TXzoqlPE8cFnRRfFC8v7T5qNHr1n/QhiShaNaSXhoNaNsXLjedCIj5qNNKHJK6As/QjP7ukAPkRcYkoUkMSUaSGJKJIDUlEkRqSiCI1JBHBWfqRJ8QKkB8Rl4giNSQRRWpIIorUkEQUqSGJKFJDEhGcpR+XPCH2CAlGyUpfHiHBTs8F1F+NCFPxeLuasvUVX2n/W8o6A6VtsFVOVEOi8Wsjr4hKRHGWDznDg9Ru1xV9yBXylz4kcTUaqg85ay4hitE+5Iz5rPQhiQiN6g6x1/jRRqdQA7VXI9663InJ1EN8V+h/o9ug9z6UV0Qlokgfql9cIX/pQxJXQ/pQ/WJ0/s7Yf9KHJCI4Sz/ut7qIRCKRSCQSiUQikUgkOuCSd4hdDfl4h0QUqSGJKFJDElGkhiSiSA1JRJEakojQqB6ZdjXk4x0SUaSGJKJIDUlEkRqSiCI1JBFFakgiQqNaVKv8kyjMickOy3mEBNfL+x1qr0a8vRviC5SVDfPX/x0Npf0H1vvQ6PwBNr8wh7w4x21o0SWYgR8/X+f3xqIhZ/W/qAZENSiKHhoW1ZDe+9DdNOTuPqTUg8C6Dxk9BqzhbhoSjW/0ccBoH3XGGHI3Dbmaj6ulsfuQ0ccBNTm4uw8ZPReyl0N1GtUdYnNiMhw64rhcPeQC6q9GxBfAnkx9YiemFvDx/w7w775U3py9g3EP96R962Z26yjtP7Deh3rmX1RczneLj7Jyy1l2H85k79FMLrnQ8ce08+KSSY0+rDmu1JAYovFFNSiKHv0nqiG996GRGtp5MJ1P/neA6H2pfLvoKA8P7UpTnyZ267iSD2nx0fryIJA+5Kz4Rh8HjPZRZ+w/ozRUXm5i4dpT/LziBDsPprFpZxIDrwjGw8PDbj1X8nEtPtrYfchoD9Ijh8biQ646F1KKS54QuxqBgYGGxP191UnGv/8PKRlFmM3w3rexzPvzKF9NuYahgzoZkpMaTifmMeTplSSkFlJcWgHAkKdXcP8t5zNnYn+Ds6tfjNKQpOFghIbMZjNPRGxi2aZ4MnJKAHg+chszvo1lw7dD6dDWr95zUostH/16yjXc5gY+qifShySiGKGh7NwSBj2xnJNn8ygoKgfgjvFr6H9pexbPvoEmTVx7fViz2czjEZtY7sY+qifShyQiOEs/ru0i/xEVd6zGv2pZuOYUM76JJa+gVFP9goICCgoU3u+3Q3bMMsVlM3NKeGHmvySnV07ioiL6YzJBUnoRz07dSkFhmeJtifZf6tLZJC+cSdGpfarq3f3SOk6czas6GY6K6E96dgk/LT/B6u0JqrbVa8wd+LYOoNsD16uqZ0G0D0QxQkPV2RCdyNTPd5OcXmhIfNH+P5OUx9uf72bbnhRN9UG7ji3ooSGt/QfGaGj+6jgWrjtdNYmLiuhPUUkFR0/ncv+r61TFNcKHMrKLeeH9f6z76DvqfBTEfMhoDwJ9NKRVwyaTma8XHObTnw9QVmYyJAfRfbAhOpF3vtDuo67gQWC8D6mN/+Tkzew/nlV1MhwV0Z+s3FLWRScy+6cDqrZlhA/NXx3HIp18FKQPgXYNZ+WWEPnVHpZtPG1IfBDbB3r4qLv7kF5zodo49YQ4NjaWyMhIRo4cyYwZM5gzZ46m7RSbKph98igbM9JU1/3wu308PmkTr3+yg1tH/aUpvo+PDz4+PprqVhde8ZkDlKScUlTvm0VHSM0oqvo7tN25K4hpWcX8vPKk4hxE+g+gojifZp164hsWrrjOybO5nE2pKVhLG7LzSpn+dayqHJK27KP3pEc5MX+jqnoWRPtAFCM0ZGHl5njufXUdb0XtYsjIlRQVl9drfBDr/9z8Um56dhVTonZx14tr2LJL2ftQtdGi4+pobYMe/QfGaOjD7/eTV3DupLG6Dx2PzyWlmkc5wggf+mbhEVIzi6v+rp5/aqY6HwUxHzLag0C7hvTQ8KhpWxkduZ0XZ/7DgxPWG5KDyD6w+Ojkz3Zxw8iVFJeo81EwzoPAeB/SGr+4pJyYA2mYqz2PaRnHRSUVfL3wqKo8jPAhPX0UpA9p1bDZbObGZ1bx5qc7eWTiJr5eoO5RdL3GkMg+qO6jD7+u3kfB/X1IZC5kDw+z2ey01wYmT57M1KlTmT59OmPGjGHhwoU8/vjjdcqNGjWKhIRzdwzfwYdwzr1XERV3jNFdLqj618JBKpiE/bu+0Sl9SSnqAECzJgUM6bgGB6+cVNG3b18AcnJyAGjZsmXlNqOj7dZLGzadsuCeACT9EYlfl8sIuPxmcnatpFWfYTXKeicfoO2yN+psIzb9Us7kdyYqoj+h7fzo26st0fsrxZeQWsiHs78jPOiQ1fhK+w+s92H1/AHMJhN5e9dRnHCEdkPHKMo/oziI6JSrKDf71GlDQmohE2as5NrQDVbzBxh0yIs2+TWv13R/8lYOf7uyxm/pzU1s6lF3YqKnhkRwtoZs9X919mVczKm88yvLe5YwqMMm/Lzt3+EQ1bCoBquTUxrA1qRrqDB7A3Bhy8NcFGj/fZbaGgbbOrbVh6IasuSg1QMsGKmh9QnXkV8WYHUMj49cT//gbQT45Fqt6wo+JOKj1jwIlPuQnmNAFFENiWoYYGvSADJL2lTG98liUMgmh3mLaljP40BNHy3+z0ftn8iIaljPMWS0D2mNX1zelE1JgympaGbVh15572+GdFxrM75ePm5B7XEE7PvoC5Hr6WfHRxuKD1n0A+o0pKeGy01NWJ9wPcUVlRckOvgl0LvdDoe5i2pYTx+q7qMBPtkMDnF8UURUw3qOIZF9aMuDwLqGQkNDmTt3rtVtWcOpJ8SRkZG0atWKjRs3MnXqVD7//HOmTZuGv7+/3XplEybXeIHb5gDucRHeM6ba3dbSDWcY/e5WktOLuOfGLvzy/nWK84+JiQEgPj4egLCwMAD69Oljt97TW869QF5deEED78croE2NspcFwdfX1N3G94uPMmraNopKKh83Xjz7BkaMWwNACz8vvn93MHcO6Ww1vuL+A6t9WD1/gMyNP1OSchLfsHAC+92lKP/UjCIuv/9PElPPnXhVb8M9N3bmjw+HWM0fYMWIiDoLSXR/4hYOz1tV47d2fbtz2+JpderrqSERnK0hW/1fnQPHsxg+bjWnE/MZeEV71nx1q8N3rkQ1LKrB6pSWVXDtkyvYdywTsxn2LbiLLh1bKM7fgi0d2+pDUQ1ZctDqARaM1NDNz67i72qvN1Qfwx3b+3Ng0V0ENLd+pdYVfGjen0cZ865tH/3h3cHcYcNHrXkQKPchPceAKKIaEtUwwEff7+P9eXvJzC3lpf/rxXsv2I9dPT5o07CexwFRHwX1GtZzDBntQ1rjl5eb6Db0d04nnXvirPo47h3ehphfR9iMr5ePW1B7HAFHPurHgUV32/TRhuJDFv2AOg3pqWGA4eNWsyEmifJyEyujbmZwnw4OcxfVsJ4+JOqjYNxcCMT2oS0PAsc+pASnLqo1ceJEAFJTU7nooouYNWuWpu1YOrzO4FXA7dd2onfPNjz42np+nnGtpviOTuDtkbX51yrh1d7x9njg1q5M+Xw3pxLygcq7GRbat/Fj+LXKF4MR6T+AoMEPqa7TrnUzruzRmpT0IipMlddcLG1oF+TLlFFXqN5mbfNXg2gfiGKEhiz07BZIzC8juPOFNfz9heNJnN7xQaz/fbybsOHb2zhwPIuJs3c6PBm2hRYdV0drG/ToPzBGQ1PHXMGuQ+mkZ1e++2YZw95engy8or3NSZw1jPChB289n6mf7+ZUYl0fDW7jx+0qfNSCVh8y2oNAu4b00PBLj13MnUM689RbmxVN4pyRg8g+EPVRMM6DwHgf0hrfy8uTu2/swtzfD1FUXHlhyzKOWwX4EPHsZaryMMKH7PtosCoftSB9SJuG//z4BvYfz+LVD6MVnQzrHR/E9oGoj4L7+5DIXMge9bLK9JQpU+ojjE06tPUjoLmPw+X5bZGVlQVAUJDjzwXVRqvwmvo0Yfmcm7hj/BpSM4sYPW0brVr4ENymGcvm3OTyqyoC/DLjOoaPW83+41mkZhbz4vv/0LG9P++/2Iee3RrXKoNGaKjGNlo2pWVzH7y9638Spwc+3k24vEcbvL1cX/e10av/jNDQVZe0I3Jcb97+fDdpWcWMnraN9q19uaJHG76dOlDTNusT36ZeLP/MvX1UT7RqSC8Nd+nYguZ+3prquoIPifio0RjtQyLx33+xDwmpBWzakUxSehHjpm8ntJ0fo+/vwYjrztO83friqkva8e643rzzxW5SM93PR/XGSB/y9PTgkguDHH7uylnx9UDER41Gjz4UmQvZQ352SQHO+gi0I8K7BnJ4yT1siEni6Okcws9vxcArHX93z1Xw9/Nm7de3cehkNpt2JtG6lS9DB4bRzLfxyc4oDUkaDkZpaOQ93Xnotq4s3xxPdl4p1/XpwAXntXRc0UVwdx/VE+lDElGM0FCTJp78+v71xCfn8/e2BJr6NGHYoDBaBTSt91y08sw93XnYjX1UT6QPSURwln4a35mJBpz1EWgleHp6cP1VIVx/VUi9x9aLHue3osf5rYxOw1CM1JCkYWCkhvz9vLnv5vPrPa5eNAQf1QPpQxJRjNRQWHBznrrronqPqxfu7qN6IX1IIoKz9OOSJ8QeIcEoWenLIyTY6bmA+qsRYSoeb1dTVilK+89StjZG5w/QoouyfWurXGPRkLP6X1QDohoURQ8Ni2pI733obhpydx9S6kG2yho9BqzhbhoSjW/0ccBoH3XGGHI3Dbmaj6ulsfuQ0ccBNdt1dx8yei6ktKyz7hA7dZVpV2L42NUs+fRGVXUsK5qdOHECgK5duwL6rGYmaRy4koa0jAFXoyG0QS2upCGJe+JKGnL3Mezu+WvFlTQkcT+qrzLtChpy93Hs7vlrwZYHgT4acr+VISQSiUQikUgkEolEItEBl3xk2tWQCwBIRJEakogiNSQRRWpIIorUkEQUqSGJCHJRLQORCwBIRJEakogiNSQRRWpIIorUkEQUqSGJCI1qUa0nJm3i+Jlch+W6dQpg3juDnJ6P2qsRb++G+AJlZcP84a3LNSTlxPjln0RhTkxWVN8jJBiv8aNVZugYpW2w1X9K22Arf9H4tXGWhpyhHxDXgNFjYPMLc8iLU5Z/iy7BDPz4+Tq/i2pIb9xNQ+7uQ66Qv/Qh1/JxtYj6kNFjwBrupiGj5xKiGO1DzjiWq9GQ0XMJaDw+1FDnQkpxyRPi42dy2bI7RZdtnUnK55uFR9h3LJPV2xO44eoQ1d+fVHs1Ir4A9mSqzVQ/ROObE5Ph0BFlZbWHsUt9tcFW/nrvQyM1lJ5VzDeLjrL3WCZ//HWSO4d0xsvL/vIBohrQM//Ssgp+/yuObXtSOBGfS1ZuCYEOvj+ZF5dMavRhobiiGtIb6UN2ymoPYxNXyL8h+dD+Y5n8sPQY+49nseNAGr17tnVYx5V8PD2rmG8WHlHlo6I+ZPQYsIb0IRvltIewi9E+5Iz9p0ZDesY3mcys2BzPyi1nOXoqh8TUAkLaOV7W2JV8SIuP1pcPuaoHKcUlT4j1YuLsGL5ddIyUjCIA7ntlHV1Cm7P269scTqirExgY6KwUJY0EozT07aIjRMzZSUpGESYTPDF5M29+upO/v7iFzqEtDMlJDUfisrl19N+kZBRRWFyOB9DrzgXMevVq7rulcX3PUfqQRBQjNGQymXnwtfWsj0kiLasYgFtG/cUV3Vuz/LOb8fZ2/bU9v110hIhPd5KS6Z4+qifShySiGKGh1IwihoxcyZnkfHLzywC48oHFjH+4J68/dWm956MWk8nMA6+tZ4Mb+6heOEs/DbYH/952ls9/P1x1MhwV0Z/svFL2HMnkwdfWq9pWQUEBBQUKn9mwQ3bMMk31ElIK+GXlCZLTCw2JL0pxSTl//HWS2CMZhsTXE619aISGjp/JZeInO0hKq5zERUX0p6ConGNnchk+bjWu/sU1k8nM8HGriUvIo7C4HIDPIvqTmFbE+Pf/ITFVvD/dCaN9aMeBNBasjqO0rMKQ+KJYfNRyTHBXRPpPDw2pjf/h9/tYtjm+ahIXFdGfjOwSNu1M5tWP/hXKpT44djqHibN3kJTunj6qN0ZoyEJFhYkl60+zeaeyR4D1jq8Hevmo0bibD9390lr2H8+qOhmOiuhPcnoRH3y/j3/3pgrlUh98+P0+ltv00WiDs6tf9JoL1capJ8SxsbFERkYycuRI3n33XT788EPy8/NVb+epuy4ktL0frzx+seI6077cQ1ZuadXfoe38ADCbYd+xLNL/E5USfHx88PHxUZ5wNVKXziZ54UyKTu2j+MwBSlJOqap/NrmAQU8s56EJGxj8xHLSMtVN5kTjA0TFHavxrxrMZjM3P/cX97+2nhueWcXvf51UvQ2o2Q4tiLRBjz40QkPTv4klJfOczi1jACAxrZDdh5RfoBDpP9C2/zbtTK6RP5xrQ0pGEbN+3K8qh15j7sC3dQDdHrheVT0Lon0gipE+9M3CI9z87Crue3Udtz+/ut7jg1j/V/fRQY8vU+2j4P4eBNo1JBL/64VHKCwqr/rbMoZLykwsWnda1QmlET703rd7ScnQx0dBzIeM9iAwRkMWHn59A3e/vI6hz//Fu1/uqff4ILYPvl5wzkeHj1XvoyB9SEv8M0n5HI+vuS6RZRxnZJcwZe5uVXkY4UP2ffSU6gtz7uxDInMhe3iYnXh5c/LkyUydOpXp06czZswYvv32W55//nm8vGo+qT1q1CgSEhKq/t6aNIDMkjZVf3t7ebJg1hCefmszqdUmyEFN0xnQYavV2OsTriO/LICoiP6EtvOjb6+2RO9PIyG1kPGR6+kXvI2WPvYX7urbty8AOTk5ALRs2RKA6Gj7V2PShk2nLLgnAEl/ROLX5TICLr+ZnF0radVnWI2y3skHaLvsDZvbis/vyJ70K//7y0zfdttp75fm1Pjv4EM4Tar+/ujEYbw8PNmamc5vvfvXKHuQCiZRii3KTU1Yn3A9xRWVg7eDXwK92+2wm3/tNtRuh0eTc7nZ6j+lbbCVv9I+dLT/nK0he/G3JF1DVklrq2NgzLQtXNF2ByH+SVbrimpA6f6z14ZTeeexL+MyAKtteOuDRVwd/I/V/Acd8qJNfs3rfa0v7UqPJ25h6yufYy4/d3U+vbmJTT3Ka29CWEN6YaSGLESn9CWlqAMAzZoUMKTjGhwtxeBKPlTbR69qt512Kny0dhuUaFiP/C05iB5HRDUkEn91/I0UV/hZHcMvTl/L9aFr8fK0frdMTx8H9ccRgC2J15BVqs1HRX1IzzEgipEasrAh4TryygIAaOObSr/g7Q7zFo2v53FA1Eeh/n1Ir/msRT+gTkN6xM8oDiI65WrKzd5Wx/GEGSu5NnSDzRxcwYfs+ehL09dyfegamniarNZV6kPuOhcC6xoKDQ1l7ty5irfv1BPiyMhIWrVqxcaNG+nXrx/NmzfnoYcews/Pz269gY8tq7GoVtsgX2ZP6EfEnB2ciM+r+v2ay9uz+fth1jbBtU8sZ2O1x2oWz76BEePWABDS1o+9C+6kdStfu3nExMQAEB8fD0BYWBgAffr0sVvv6S3nXqA3m0zk7V1HccIRggbej1dAmxplLwuCr6+xva3E1AIGP7GC4/G5XNS5JVu+H0abQPt5i8YvmzC5xgv0UXHHGN3lgqp/a9DjIrxnTLWZi9lsZsjTK9m4MwmvJp78+v513Dmks938a7ehdjvaDR1jN39VbbCRv9I+dLT/nK0he/GfnbqFL+ef64PqY6BNq6as/vJWLutufbU+UQ0o3X/22rB5ZzLDx60mO++cwVra4OEBrz5+MTNe7Fu3IrBiRITVRSS6P3krh79dWeO3dn27c9viaXXKimpIL4zUkIXvFx/jlQ//JT27hFuv6ciKqJsd5u1KPpSYWnmH+ER8Ht07t2TLD8Mc+r+ohvXI35KD6HFEVEMi8bsPn8+RUzlVf1f3ofM6NCdu1X02F7rU08dB/XEE4Jm3t/DVAm0+KupDeo4BUYzUkIWHX9/A/NVxmExm3h3bm9eevMRh3qLx9TwOfL/4GC9/+C+Z2SXcosFHof59SK/5rEU/oE5DesQ/m1xA34cWk5R+7smg6uN46MCOLPvM9r5wBR8S8VGlPuSucyFw7ENKcOoj0xMnTmT06NH06NGDF154gaefftrhybA1HhnajcciNnLXDZ0V15n83OUEBdS9pe7pCZd1b+1wMlQdf39//P0dr0RnjazNv1Jw9B+8gzrUGbxKCGnnz5YfhtGnZxtFJ8N6xxfFw8ODlXNvZunsm+h/WXtFJ8PWqN6O+kaPPjRCQxOevIT2rZtZ/X8d2/vbnMQ5Ay3775or2hPcxnr+wa2b8eKjvdQn4sbv+xnpQ4+NuIAN3w6l78VtWTL7xnqPL0pIO3+2/nA7fXq2YfP3jk+GreHuHgTaNSQS/7l7u9O8Wd31O32bNuGeGzur/uqDCFr2oT0fDdXqo43Qh/TQ8I+Rg1k+5yb6XdJO0cmw3vFFeWzEBWz8dih9NPooSB/SEr9jsD8XdW5p9f+1adWUKaOvUJ2LCFr2oT0fvfcmjT7qpj4kMheyR72sMj1lyhSh+pZ3BWfOU/68/fVXhTD+kZ7M/W9hrYTUQgIDfOjWKYBfZlyrKn5WVhYAQUFBquoBBA1+SHWd2rRv3YzgNn6qT4b1im+5AlTnaqJCmvo04bZBYXz+h/Zl30XbIdIGPfrQCA2d3zGAD1/py2sfxZCaWTkGWvh7E9LWjyWfqjsYi2pASxs8PDxYNucmbnluFckZReQXlpOUXkhoOz8+e7M/wW3UX1w7PG+V6joWRPtAFKN9qGe3QNoHNXP4qRlnxRftfxEfBff3INCuIZH44x/pyc5D6fy9LYHUzGISUgtpG+hLn15teO8FdVf1jfChrmGVPvrqR9Gk/Ze/xUeXqvRRC1p9yGgPAmM0ZMHT04Mb+oUy++eDquvqNYZE94GIj4L0Ia3M/2gIQ0au5HRiPtl5pSSmFhLcphmvPXGJok8XVccIHxr/SE92Hkzn7+11fXT6eG13R93Vh0TmQvZo0J9dmvzcFYy8uzvfLzlG3NlcFn9yA9dcEaz6SoqzPgItaTwYpaGHh3Zj6MAwflh6nBNncvlp+mBuGxhGkybuscB817AADi2+h8XrT7M9NhWTCQ4tvpsW/vovqODqSB+SiGKEhjw8PPgx8lqOnc7hp+XHiU8qYO1Xt3LxhfpOZpyJu/uonkgfkohihIZat/Jl9+93sC46iVVb4skvLGPv/DtpG2T96Q9Xw8PDgx+nu7eP6oWz9NOgT4gBOrT1E/7GmLM+Ai1pPBipoVYBTRn3cE/HBV0ULy9P7r6xC3ff2MXoVAxF+pBEFCM1dMF5LZky+krHBV0Ud/dRvZA+JBHFKA15eHgw5KoQhlwVUq9x9cTdfVQPnKUflzwh7tYpQNdyoqi9GhGm4tF2NWXrK75HSDBK3yzwCAlWHkwFSttgq5zSNtjKXzR+bZylIWfoB8Q1YPQYaNFFuS5tlRXVkN64m4bc3YdcIX/pQ67l42oR9SGjx4A13E1DRs8lRDHah5xxLFejIaPnEtB4fKihzoWU4tRVpt0dy4pmJ06cAKBr166APquZqWX42NWq3/t0NRpCG9TiShqSuCeupCF3H8Punr9WXElDEvfElTTk7uPY3fPXQvVVpl1BQxL3w5YHgT4acsk7xK6GfGdGIorUkEQUqSGJKFJDElGkhiSiSA1JRJDvEBuIfGdGIorUkEQUqSGJKFJDElGkhiSiSA1JRGhU7xC7GvJqlkQUqSGJKFJDElGkhiSiSA1JRJEakojQqO4Ql38ShTkx2WE5j5BgvMaPdno+aq9GvL0b4guUbTvMH966XGNiNlDaf2C9D43OH2DzC3PIi3PchhZdghn48fN1fm8sGnJW/4tqQFSDouihYVEN6b0P3U1D7u5DSj0IrPuQ0WPAGu6mIdH4Rh8HjPZRZ4whd9OQq/m4Whq7Dxl9HFCTg7v7kNFzIXs5VKdR3SE2JybDoSOOy9VDLqD+akR8AezJ1Cd2RYWJVVvPciI+l1VbznJT/1A8Pe1/R1lp/4H1PtQzf4A9hzNYF51IfHI++YVlNPfzdlgnLy6Z1OjDmmNKDYkhGl9Ug6Lo0X+iGtJ7HxqpoZy8UhauPcXJ+FwOHM+iZ7dAh3VcyYeq++hfW89yYz/HPlpfHgTSh5wV3+jjgNE+6oz9Z6SGTsTnsnxzPKeT8knPKqZNoK/DOq7k41p8tLH7kNEepEcOjcWHXHUupBSXPCF2NYx63yH2SAZ3vbiW1Mwi8gvLuf/VdbRv3Yyln97IRV3qNxct5BWUctvovzlyKoe0rGI8PKD78PlMG3slj4+40Oj06hX5zoxEFKM0NOeXg7z3TSwpGUWUV5i57ukVXHJBIEs/vYlmvq5/CKnto/e9Uumjy+bcxIWdWxqdXr0ifUgiihEaKi83cd+r69i+J5XkjCIALrlnIU/deRHvPO8e32T99OeDzPjWfX1UT6QPSURwln48dd2ai3ImKZ8dB9IwmbRdfwkMDCQw0PGVPEdkxyxTXLa4pJwR49dw8mwe+YXlREX0J7egjGNnchn6/N+Ul5uE83E2D7y2nm2xKaRlFQPw2Zv9SUgt5LWPYth71OBLfvWMERqqTmpGEf/uTaW0rMKQ+KIUl5TzT2wq6f9pyV0R6T8jNLRtTwpT5u4iIbWQ8gozURH9ScssZuOOZB6P2CSci7MpLilnxLjVVn30tjF/uYWP6okeGhLR8JG4bPYfE/d+o3xILx81GqN9SG38Vz78l5VbzladDEdF9CcprYg5vxxk4ZpTQrnUB9v2pPD25+7ro3pjpA9VVJiI2Z9GQorCZ3h1jq8Hevmo0WjtQ73mQrVx6glxbGwskZGRjBw5klmzZjFr1ixSUlJUbycq7liNf9WwcO0p+j2yhGufXM59r6xTXR+goKCAggJtgyd16WySF86k6NQ+is8coCTllKJ6P684Scp/5g8Q2s6v6r9TMopYvP604hxE+g9qtkEpyemF7DmcianafNPShrSsYqZE7VKVQ68xd+DbOoBuD1yvqp4F0T4QxQgNWYg9kslVDy/h2idXMOTplapPAkTjg1j/l5RWMPiJFVz31AqufmQJx8/kqN4GaNNxdbS2QY/+A2M0NPmzXWRkl1T9bRnD5RVmtsWmkpNXqjgHI3zop2UnSMk8dxFFxEdBzIeM9iDQriE9NPzeN7Fc89gyBj6+nJdn/mtIDiL7QNRHwTgPqh3bCB/SGr+szMSidacpLjl3EcIyjrPzSnn3qz2q8jDCh+z7aIoqHwXpQyIavn3sagY/uZyrH1nCmn8S6j0+iO2D6V/HMkDAR8H9fUhkLmQPp54QL1iwgIkTJ3L++efz1FNPkZubi4+Pj+rtFJsqmH3yKBsz0lTX/X7xMRLTiigoqmDXoXRNd4l9fHw05Q1QUZxPs0498Q0Lx7dTT5q276yo3j97U2scAKqTX1hOzIF0xTmI9B/UbINSjp/JpaCozPb/j89VlUPSln30nvQoJ+ZvVFXPgmgfiGKEhix8teAwpxLzKS6t4FBcNmeS8+s1Poj1/+G4bA7FZVNcWsGJ+Dx+WHJc9TZAm46ro7UNevQfGKOhxLRCm/+vuKSc00nKtWSED/27z76P7lDhoyDmQ0Z7EGjXkB4aXrE5nvTsErLzStmwI8mQHET2QXUfPRyXTXyy+gmZUR5UO7YRPqQ1fkZOMWVlti8+qD2ZNMKH7PtohSofBelDWjVcUFjGvmOZFBVXcDalkC/nK3u3Wq/4FkT2wYrN8WQI+Ci4vw+JzIXs4WE2m532Hn1kZCStWrVi48aNvPLKK2zfvp0RI0Zw3nnn1Sg3atQoEhLOXal5Bx/CaVL1d1TcMUZ3uaDqXwsHqWAS9s3wZG4XjmR1p9zsTVDTDAZ02Ko4/759+wKQk1N5R6ply8r3zaKjo+3WSxs2nbLgngCYTSby9q6jOOEIQQPvxyugTY2y3skHaLvsjTrbOJ7TlcNZPfgsYiCh7fzo26st0fsrxZeYWsDcuVGc1+KM1fhK+w+s92H1/Gu3od3QMYryLyzzY0vSQEpMvkRF9K/RhoTUQiZ98Cf9g7dbzR9g0CEv2uTXvF7T/clbOfztyhq/pTc3salHueY+UKIhEZytIVv9X53UwjbsTu9NqakpLbxzGNhhE0087d/dENWwqAarU27yYnPiIPLLW+BJOf2CtxHkm6U4fwu2dGyrD0U1ZMlBqwdYMFJDmxMHkl0aZHUMvzh9LYNDNtC0ifV95wo+5MhHP5/7GZ1axFvN35oHgXIf0nMMiCKqIVENA+zLuJgzeedhwpMQvwSubLfTYd6iGtbzOFDHR0M20cRDuY/WboMSDes5hoz2Ia3xK0yerEsYQnGFn1Ufem3GKq4LXW8zvl4+bkHtcQTEfLSh+JBFP6BOQ3pq2GyGLUmDyC4NxIMKLm29h7AWZx3mLqphPX1oX/rFnMnX7qNg3Fyodmy1+9CWB4F1DYWGhjJ37lyr27KGU9/knzhxIgCpqan06dOHPn36WC1XO+GyCZMVrWgW3iOcJTOmOiy3YnM8r30Uw78/PYa/3wQFmVcSExMDQHx85YQpLCwMgIiICLv1nt5ybkW1rM2/UpJyEt+w8Do7HqBneE++fmZJnd+zc0voeedCRk/bBsDi2TcwYtwaADq29+PIio/xa2Z99yntP7Deh9Xzr90GpfkDXPXQYqL3p9dpQ2CAD/M/fYzrr7JtXCtGRNRdWdHKtZvw8HBeWTytzu96a0grztaQvf6vzvbYFJ5+awsbvn2ItkEvOSwvqmFRDdYmMbWAn1ecYMmGM2z67ntV+VuwpWNbfSiqIUsOWj3AgpEaWrT2FI9P2mTVh67t3YW/vq37yTMLruBDWQ599BObPmrVg0CxD+k9BkQQ1ZCohgHMZjO/rDjBjHl72fnrk3h5OX5ATVTDeh8Htu1JYeQUbT5auw21cYaP6jEXsWCkhu57ZS0L1pyqM479mjXhvZduYuzDL9qMr5ePW1B7HAExH20oPmTRD6jTkJ4ahsonCuYtPspvK0+y/acoRbmLalhPH6ruo7t+e5ImTdT5KBg3F6odW+0+tOVB4NiHlFAvS9tNmTJFqL7lCkTtq1lKuW1gGJ//fhh/BZ/7sYa/v7+megBBgx/SVK9VQFM+e7Mfo6dtIyWziITUQpp4etC+dTO+nTrQ5iTOGqL9p7UN8z8awpCnV5KQWkBhcQUJqYW0DfTl0du7cf1VIaq3d3jeKk15gHgfiGKEhqrT79L2dA0LoG1QM0Pii/Z/SDt/Xnn8EjbtVL8GgQXRdmhtgx79B8Zo6I7rz+OBLeezcN0p0rNKSEgtxL+ZF2HB/vw2U937a0b4UGBAU6J08lELWn3IaA8C7RrSQ8MeHh48NLQbv66KU3Qy7IwcRPdB/8u0+ygY50F6xLZghIa+njKQ42fyOB6fS15BGQmphQS19GHwlR0Y86C6xz6N8KE7rj+P+7ecz6JaPtpJg49akD6kjZYtfHjhkV6s+1f948Z6jSGRfVDdR5WcDFvD3X1IZC5kj8a11rtGsrIqH88MCgqq17h3XN+ZAZe157NfD7Lu30TeHn05o+4PJ6hl03rNQythwc3Zt/Aufl15gmWb4tl/LJNN3w2luxt8MkpvjNKQpOFghIY8PDz44q1rGPtQOHN+Ocj66CS+eusa7rmxC97e7vGRAnf3UT2RPiQRxQgNBTT3IeaX4azYHM/PK04SvS+NVXNvoU+vtvWWgwgeHh58+dY1jHNjH9UT6UMSEZylH3lCrABnfQRaCW2DmjFltHt8Z88aTX2a8NiIC3mskX13uDZGakjSMDBSQ70uCOLzydcYFl8Ud/dRvZA+JBHFKA01aeLJ7deex+3Xnue4sIvi7j6qF9KHJCI4Sz8ueULsERKMkpW+PEKCnZ4LqP8IdJiKu/lqyipFaf9ZytbG6PwBWnRRtm9tlWssGnJW/4tqQFSDouihYVEN6b0P3U1D7u5DSj3IVlmjx4A13E1DovGNPg4Y7aPOGEPupiFX83G1NHYfMvo4oGa77u5DRs+FlJZV60FKceoq067E8LGrWfLpjarqWF7gzs7OBs51vq3FwSSS2riShrSMAVejIbRBLa6kIYl74koacvcx7O75a8WVNCRxP6ovquUKGnL3cezu+WvBlgeBPhpyyTvEroazrkZIGg9SQxJRpIYkokgNSUSRGpKIIjUkEcFZ+ml8b/NLJBKJRCKRSCQSiUSCvEOsCLkAgEQUqSGJKFJDElGkhiSiSA1JRJEakojQqBbVemLSJo6fyXVYrlunAOa9M8jp+ai9Pf/2bogvULbtMH9463KNiTkpfvknUZgTkxXV9wgJxmv8aJUZOkZpG2z1n9I22MpfNH5tnKUhZ+gHxDVg9BjY/MIc8uKU5d+iSzADP36+zu+iGtIbd9OQu/uQK+Qvfci1fFwtoj5k9BiwhrtpyOi5hChG+5AzjuVqNGT0XAIajw811LmQUlzyhPj4mVy27E7RZVtlZSY27UwmKb2Q5PRCgtv4qd6G2qsR8QWwJ1N1GN0QjW9OTIZDR5SV1R7GLvXVBlv5670PjdSQyWRme2wqSemFnDyby/kdAxzWEdWA3v139FQOB05kkZVbgtlsxsPDw275vLhkUqMPC8UU1ZDeSB+yU1Z7GJu4Qv4NyYcKCsvYuDOZ5PRCcvJKadnCx2EdV/JxLT4q6kNGjwFrSB+yUU57CLsY7UPO2H9qNKR3/LPJBew4mEZ6djEVFSaaNHH85qgr+ZAWH60vH3JVD1KKS54Q68WC1XG8/EE0mbkl5BeWceX9ixl0ZTA/Rg7Gy0v569NyAQCJKEZpKHpfGg+/vp707BJy8ksZ8OgyenYLZNHHQ2jh79hIjSYzp4QR41Zz9HQOmbkleADdhy/gjw+v45ILG9djV9KHJKIYpaEP5u3lk58PkJFdQklpBT3vXMBDt3Vlxot9HF7ccgWi96Xx0OvryXBTH9UT6UMSUYzQUElpBQ+8uo5/91WeDJvN0G3oH8yd1J9bBoTVWx4izJy3l9lu7KN6IRfVUsneo5mMfncbp5PyySsow2yGxLRCFq07zahpW1VtKzAwkMDAQOGcsmOWaapXVmbiVEIe5eUmQ+KLYjabiU/OJ7+wzJD4eqK1D43QUGpGEXe9uIbj8Xlk55ViNkNyRhHrYxK5Y/wa4Vzqg6Fj/mLL7hRSM4spLzdTVm7m6Okcbn9+Nbn5pUanV68Y7UO5+aUkpCh8ds0J8UXRy0eNRqT/9NCQ2vjzV8cR+U0sZ1MKKSqpwGSGhNRCvvjjMLN/OiCUS31g8dETbuyjemKEhqqTnF5IVm6JYfFF0ctHjcbdfOj/Jm5k+eazJKUXUVZuprzCzKnEfJ6I2KzoFU2j+ePvk0y34aOf/nzQ6PTqFb3mQrVx6glxbGwskZGRjBw5ktWrV/PII49o2s5Td11IaHs/Xnn8YsV1Ij7dQWpmcdXfURH9gcqrRKu2Jqg6OSsoKKCgQJuBpS6dTfLCmRSd2kfxmQOUpJxSVT83v5SrH1lC34eWcM1jyygsKq/X+ABRccdq/KuWRydupPcDi7ns3kXsOJCmaRvV26EFkTbo0YdGaGjW//aTlF5Y9bdlDJhMcOBEtqqDgKgGtOy/2CMZnIjPq5nHf21ISi/k898Pqcqh15g78G0dQLcHrldVryq2YB+IYqQPbYxJ4rJ7F3HlA3/yzNtb6j0+iPV/Tp6Yj4L7exBo15BI/He+2ENW7rmLV5YxnFtQxqc/H8RsVv6gnRE+NOtH+z56Il7dZFrEh4z2IDBGQxYmfhLDFff/yWX3LuL3v07We3wQ2wcbopO47N4/ufKBP3l2qnofBelDWuJnZBezdU8KZdUuhlrGcXJGEW/P3aUqDyN8aNqXsXZ89IAqHwX39iGRuZA9nHpCvGDBAiZOnMj5559PYWEhAwYM0LSdH5YcZ27EAH5Yorzzj9eaSIe2O/fucHFJuaqDmI+PDz4+2h6LqijOp1mnnviGhePbqSdN23dWVX/JhjPsOpRBWlYx0fvT2LgzqV7jAxSbKph98igbM9SfzBYWlbNxRxKpmcWciM/j/XnaTLx6O7Qg0gY9+tAIDW3amYyp2s2w6mMgI7uY2CMZinMQ6T/Qtv+i96eRllVc4zdLG8rKzWzYoWyhEAtJW/bRe9KjnJi/UVU9C6J9IIqRPvTRj/uJS8gnJaOYNf8kqj74Gu1DSzfW9NFNu9T5KLi/B4F2DYnEz86reTevxrG4tIKi4grF2zLChzbtsu+jew4r91EQ8yGjPQiM0ZCFJRvOkJRWxJmkAr6cr+6dSL3GkMg+mPW/fcQl5JGSUczq7ep9FKQPaYl/8ER2nZtg1cfx3qPqXvA1wofs+WhRSQXFJcp9FNzbh0TmQvbwMGsZkQqJjIykVatWbNy4kTvuuIMdO3bw+uuv07Zt2xrlRo0aRUJCQtXfW5MGkFnSpurvtkG+zJ7Qj4g5O2rcMQpqms6ADtYff96UOIic0kCiIvoT2s6Pvr3aEr0/jYTUQl6MXMvAkE008yq2WtdC3759AcjJyQGgZcuWAERHR9utlzZsOmXBPQEwm0zk7V1HccIRggbej1dAmxplvZMP0HbZGza3lVvanH+SB1Bi8sW3SREDgjfj513k1Pjv4EM4Tar+joo7xuguF1T9W52DVDAJ24+ums2wKfFacsta4kEFPQIP0rWl4yu71dtQux3tho6xm7+aNtjKX2kfOtp/ztaQvfg7UnuTVBhqdQyMi9xA33bRtPa1PpkT1YDS/WevDckF7dmZ3huT2ctqG977+GcubRNrNf9Bh7xok1/3el/3J2/l8Lcra/yW3tzEph517xiKakgvjNSQhSPZF3I8+wJMeNHKJ4uBIZsc5u1KPlTTRwsZ0GELfl7KfbR2G5RoWI/8LTmIHkdENSQSf+3ZGygs97c6hl+avoYbOq7G1utvevo4qD+OgBIf/ZfWvtYn1KI+pOcYEMVIDVnYntyP9OJ2gInOLU5xcWvHF9hF4+t5HDiSfdF/PtqEVj6ZDAzZrDh/C/XtQ3rNZy36AXUa0iN+fllztiYNoNTka3UcR8xcYvNcAlzDh+z76Fpu6Pi3TR9V6kPuOhcC6xoKDQ1l7ty5irfv1EW1Jk6cCEBqaioPPvggDz74oNVytRMe+NiyGqtMPzK0G49FbGT8Iz2ZWe0OY3h4T5Z8P8HqNn9ceoxR07Yxeto2ABbPvoER4yrf9+nTK4zVP//uMP+YmBgA4uPjAQgLq3zxPiIiwm69p7ecW1Eua/OvlKScxDcsvM7gBegZ3pOvn1lid3sbY5J4LGITv7w/jH6X1l0SXe/4ZRMmK16VMLxHOEtmTLVbJimtkOlfx7JpZzK7/5il6OX/6m2o3Q5H+atpg638lfaho/3nbA3Zi7/jQBq3PPeX1THQtWNrNi/7Fk9P6/tCVANK95+9NpSVmeg27HfOJBXUaUPbIF82/fQy3bu0sprTihER1ldVtHL9Lzw8nFcWT6sbX1BDemGkhiyYzWbm/n6ID77bR/TPD9Mm8BWHebuaD22ITuLxSRYfHasq/9ptqK/8LTmIHkdENSQS/6WZ//DpL4fqjGEPD7j3pp78NtP2vtDTx0H9cQQgZn8at4627qPnd2zN5mXzbPqoqA/pPQZEMFJDFvIKSnnniz0s2xjPvoVPKVohWDS+nseBuj76quL8LdS3D+k1n7XoB9RpSK/4l9y9kH3HsuqM44Dm3vxv5gPcfq31cwlwDR+y56P33RTOrzNtnxso9SF3nQuBYx9SQr2sMj1lyhSh+rN+3A9Q42TYEQ8P7caCNafYEJNETn4ZCamFeHt50rG9H7+9r+6ZeX9/f1XlqxM0+CHNdS0M7tOBSy4Mot+l7Q2Jb7kCVPtqolI6tPVj9hv9GD52teaV8ETbIdIGPfrQCA317tmWx0ZcwPdLjpGRXUJCaiGentChjR8/RA62OYmzhqgGtLTB29uTr6dcw+MRm0lKL8T83yISbVo1Zcz9PWyeDNvj8LxVqutYEO0DUYz0IQ8PD0bfH86qLQm0CfSt9/gg3v/X9tXuo+D+HgTaNSQS/92xvdmyO4WDJ7IpKConIbWQZk2bcH7HFnwxSd1rVEb4UJ9ebfm/27vxw9LjdXz0R5U+akGrDxntQWCMhiy08Pfh/Zf6cjguR9HJsN7xQWwfiPooSB/Sym8zr+eWUatITC2kvMJMQmohgQE+3HZNGMMGd1K1LSN8yJaPdg0L4HOVPmrBXX1IZC5kjwb72SVPTw8WfXwDq7cn8PH/DvC/Zcd5Z8wVjLq/BwHN1T17npWVBUBQUJAzUpU0AozS0IevXMWDt57Pe9/s5celx3nlsYt56f8upn3rZvWah1Zu7NeR6J+HM/O7fZXv0O9IYs1Xt3LpRY3rk0sgfUgijhEaaubrxbYfbmf+6ji+nH+EX1ec4NPX+/HI7d1o6tPE8QZcgI9evZoHb+3KjG/d00f1RPqQRBQjNNTj/Fbs+eNOPv35IKu2nmXl5ngWfXwDg64MdotPFjUEH9ULZ+mnwZ4QQ+XVuJv6d+Sm/h2FtuOsj0BLGg9Gaqh3z7bM/2iIYfFFCW3vz8cTrjY6DcORPiQRxSgNeXl58sCtXXng1q6GxNeDPr3c20f1QvqQRBSjNBQY0JTJz13O5OcuNyS+KA3BR/XAWfpxyRPibp0CdC0nitqPQIepuJuvpqwztmmtrEdIMEpXWvMICVYeTAVK22CrnNI22MpfNH5tnKUhZ+gHxDVg9Bho0UW5Lm2VFdWQ3ribhtzdh1whf+lDruXjahH1IaPHgDXcTUNGzyVEMdqHnHEsV6Mho+cS0Hh8qKHOhZTi1FWm3R3LC9zZ2dnAuc7v06dPvecyfOxqlnx6Y73H1ZOG0Aa1uJKGJO6JK2nI3cewu+evFVfSkMQ9cSUNufs4dvf8tVB9US1X0JDE/bDlQaCPhlzyDrGr4ayrEZLGg9SQRBSpIYkoUkMSUaSGJKJIDUlEcJZ+1C3TJ5FIJBKJRCKRSCQSSQNB3iFWgFxEQiKK1JBEFKkhiShSQxJRpIYkokgNSURoVItquRry8Q6JKFJDElGkhiSiSA1JRJEakogiNSQRwVn6cckT4vJPojAnJjss5xESjNf40U7PR+3ViLd3Q3yBsrJh/vCWgxXgE1IKyMwpISmtkA5t/RxuU2n/gfU+1Dv/vIJSDhzPJq+gDLPZrOibb5tfmENenOM2tOgSzMCPn6/ze2PRkJL+14KoBkQ1KIoeGhbVkN770EgNmc1mDp7IJiu3hILCMvz9vB1u19V86GyyOh9V6kFg3YeMHgPWaKg+5KwxLIrRPqr3GAJjNVRSWkHskUxy8ksxmcx4ejqeS7iSj2vx0cbuQ87QsFoaiw8ZPReyl0N1GtUdYnNiMhw64rhcPeQC6q9GxBfAnkzxuGmZRdzz0jqOxeeQllVM7wf+pMf5gfzx4fUEBjS1WU9p/4H1PtQr/4oKE89P386yjWfILyynsLicnncu5Id3B9G7Z1u7dfPikkmNPqw5ttSQGKLxRTUoih79J6ohvfehURratDOJkVO2kJVbSnZeKT3uWMC9N3Xhg5f72r245So+VOWjZ3JIyy7mygf+pOf5gfzuwEfry4NA+pCz4ht9HDDaR52x/4zSUORXe/jij8PkF5WTX1jGBcP+YNarVzH8uvPs1nMVH6/joyMWcN/NXZjpwEcbuw8Z7UF65NBYfMhV50JKaRSLaplMZkrLKjTXDwwMJDAwUDiP7JhlistWVJi4/umVbNqVTFJaEeXlZhLTilgXnciNI1fiDl/Lej5yOz8sOcbZlEKy80opLTNx6GQ2d4xfQ3xyvtHp1StGaKg6ZrOZklLtY0A0vh6UlFa4he7tIdJ/Rmjo2OkcHnh1PUdP55KWVUxZuYn45AK+nH+Y1z+OcbwBg6moMHHdUysqfTS90keT0opYG53Ijc+4h4/qiR4aEtFwRYWJ8nKTUHzRHETQy0eNxmgfUht/9k8HeH/ePs7895RHaZmJk2fzeHrKFqL3pQrlUh9Y9dGUAr5wEx/VG6N9SI+5hJFzIb181Gi09qFec6HaOPWEODY2lsjISEaOHMmsWbNYs2aNpu1ExR2r8a+qHI5k0vPOBVw47A/e/GSHpvgFBQUUFCi831+L1KWzSV44k6JT+yg+c4CSlFOK6q3YHM/ppHMnjVER/QEwm+FkQh6bdyl7BAbE+g9qtkEpufmlLNsUT2HxucmDpQ0JqYW8++UeVTn0GnMHvq0D6PbA9arqVcUW7ANRjNBQVf2MIq68/08uGPYHj7yxQfWBQDQ+iPW/2Wzm7hfXcuGwP+j70BKycktUbwO06bg6WtugR/+BMRp689OdJKUXVf1tGcP5heX8uvIkxSXlinMwwoeWb4rnTPK5Pqvho2fV+SiI+ZDRHgTaNaSHhv9cd4ruwxdw4e1/8NV89Xe8jPahFEEfBeM8qHZsI3xIa3yTycwnPx0gJ7+06jfLOE7LKua1WepOKI3woYg5tn30F5U+CtKHRDQ8/r3tXHj7H1x810KOn8mp9/ggtg/+XHeKi4bP58Lb/+DrBdqeHHB3HxKZC9nDqSfECxYsYOLEiZx//vkEBQWRlZVFRYX6q6vFpgpmnzzKxow01XXfitrJ4bgcTicV8MuqE5hM6g9iPj4++Pj4qK4HUFGcT7NOPfENC8e3U0+atu+sqN7yzWfJKyir+ju03bl33rJyS1m55aziHET6D2q2QSn7jmWRX1hW47fqbdgWq+6qbtKWffSe9Cgn5m9UVc+CaB+IYoSGLEz/JpbdhzOJTy7g720JnElSd3deND6I9f+B41msjU7kTHIBOw6k89kvB1VvA7TpuDpa26BH/4ExGtp/PKvG39XHcGFJBcdO5yrOwQgfWr453q6P/rU1QVUOIj5ktAeBdg3poeEPv9/P8fhc4hLy+fwP9RM5o33ovWo+unp7AvHJ6idkRnlQ7dhG+JDW+GlZxRQV1zxhrD6Oz6rcD0bNh6pTPf+iYnU+CtKHtGq4qLicRWtPcyapgAMnspk0Z1e9xrcgsg8+/H4/J+LziEvIZ+7v2k6I3d2HROZC9vAwO/GZscjISFq1asXGjRsZO3YsW7Zs4fnnn6d58+Y1yo0aNYqEhHMTk3fwIZwmVX9HxR1jdJcLqv61cJAKJlGKPQ5mhnMityvgSYB3DoNDNyjOv2/fvgDk5FReRWrZsiUA0dHRduulDZtOWXBPAMwmE3l711GccISggffjFdCmRlnv5AO0XfZGnW0czrqIYzkXERUxgNB2fvTt1Zbo/ZXiS0gtYM5nX9K15Umr8ZX2H1jvw+r5125Du6FjFOWfW9qC7cn9KTX5EhXRv0YbElILmfj+MgaGbLaaP8CgQ160ya95vab7k7dy+NuVNX5Lb25iU4+6V1f11JAIztaQrf6vzpm8MPZnXkyF2Rs/r3wGhWzE29P+FWlRDYtqsDolFT5sThxMUYUfHlRwZdsddPC3f2evtoZrt6O6jm31oaiGLDlo9QALRmpoY8K15Ja1tDqGX4xcxzUhm/DzKrJa1xV86HBWd47lXKjJR615ECj3IT3HgCiiGhLVMMCO1N4kFYYC0MY3lX7B2x3mLaphPY8DtX10cMhGvFT4aO02KNGwnmPIaB/SGr/c1IT1CUMormhm1Ydefe9vru+41mZ8vXzcgtrjCIj5aEPxIYt+QJ2G9NSw2QwbEq8jvywAMHFRqyNc2Oqow9xFNaynD8Wk9iG5MATQ5qNg3Fyodmy1+9CWB4F1DYWGhjJ37lyr27KGUxfVmjhxIgCpqalcc801XHPNNVbL1U64bMJkRS9wh/cIZ8mMqXbLlJebmPzZTr5fcpzN393L+WEvKcweYmIqH8WJj48HICwsDICIiAi79Z7ecu4F8qzNv1KSchLfsPA6Ox6gZ3hPvn5mSZ3f45Pz6fPgEkZP2wbA4tk3MGJc5SPnHdo0Y++f79Em0NdqfKX9B9b7sHr+tdugNH+z2UyPEQs4ciqnThv8m3nx+ZQ7eWTYqzbzWjEiou5CElau3YSHh/PK4ml1ftdTQyI4W0O2+r86ZrOZWT/u54Pv9rHw49u5+pLxDvMW1bCoBmuzPjqRz349xJFTOcQs/FJV/hZs6dhWH4pqyJKDVg+wYKSG5vxygFc+jLbqQ5deGMKa+b/ZjO8KPnQmKZ++D9nw0bb2fdSqB4FiH9J7DIggqiFRDQMUFJbx6kfRLNsYz575LxHU0vaCZrXjgzYN63kcMJvNfPTDfj78fh+LPr6dq1T6aO021MYZPqrHXMSCkRq69onlbNyZXGccN/H04OXH+jHjRdv7Qi8ft6D2OAIWH42x6kOXXNjBro82FB+y6AfUaUhPDQMcPJHF23N3s+dIBgcXz1S0UrmohvX0ofzCMl4T8FEwbi5UO7bafWjLg8CxDymhXlaZnjJlilB9yxWI2lezlODl5Unk+D7sP57N+WEBmuL7+/trqgcQNPghTfXCgpsz6r7uzP75IJk5JSSkFgLQulVTXn38EpuTOGuI9B9oa4OHhwfz3hnIPS+tIzGtMveE1EL8mnnR/7J2PHjr+aq3eXjeKtV1LIj2gShGaMiCh4cHL/3fxWyISebqS9rVe3wQ7//r+oZwXd8Qho9drTkH0XZobYMe/QfGaOjZe3rw+19x7DiQTlFJRZUPdWzvxw+Rg1Rtywgf6tRBPx+1oNWHjPYg0K4hPTTs7+dNVMQAzqasVjSJc0YOIvvAw8ODlx+7mI07krlKg4+CcR6kR2wLRmjou2mDuPapFcQn52MyVc4lfLw9Ce/aisnPqvvOjhE+9Ow9Pfjtrzh21vFRf36MHKwpD+lD2gjvGshvH1zP8LGrFZ0M6x0fxPZBc0EfBff3IZG5kD0axSrTomRlZZGVleW4oM68NeoK/vx4CDdcHULUr4e4ZUAoKz67mRf/r1e956KFfpe2Z9uPw3jijgvo1S2Q7/48xtw3+7My6maaNGlc0jNKQ5KGgxEa8vb2ZO1XtzH79avpHd6GqF8P8dy93fnnf8O55ELnfAtQb6r76Nzfqvnoo+7ho3oifUgiihEa6hzagh2/jOClRy/m4gsC+Wr+EWa80IdtP9yu6Fu+RuPt7ck6qz56u9v4qJ5IH5KI4Cz9uOR3iF0NZ30EWgkDr+zA6i87GBZflPNCWvDtVHV3khoiRmpI0jAwSkPe3p48fXd3nr67uyHx9cDdfVQvpA9JRDFKQ20CfZn5cl9mvtzXcWEXpCH4qF5IH5KI4Cz9uOQJsUdIsKIPVHuEBDs9F1D/EegwFXfz1ZRVitL+s5StjdH5A7Toomzf2irXWDTkrP4X1YCoBkXRQ8OiGtJ7H7qbhtzdh5R6kK2yRo8Ba7ibhkTjG30cMNpHnTGG3E1DrubjamnsPmT0cUDNdt3dh4yeCyktq9aDlOLUVaZdieFjV7Pk0xtV1bG8wJ2dnQ2c6/w+ffromZqkAeNKGtIyBlyNhtAGtbiShiTuiStpyN3HsLvnrxVX0pDE/ai+qJYraMjdx7G7568FWx4E+mjIJe8QuxrOuhohaTxIDUlEkRqSiCI1JBFFakgiitSQRARn6adxrWwkkUgkEolEIpFIJBLJf8g7xAqQCwBIRJEakogiNSQRRWpIIorUkEQUqSGJCI1qUS1XQz7eIRFFakgiitSQRBSpIYkoUkMSUaSGJCI4Sz8ueUL8xKRNHD+T67Bct04BzHvH8Sd90rOKKSwup6LCpOn7t2qvRry9G+ILlJUN84e31H1X3unxyz+JwpyYrKi+R0gwXuNHq8zQMUrbYKv/lLbBVv6i8WvjLA0pjZ+dW0JhUTmlZRX4eDdxWF5UA3qPgZLSChJTCykrNyna5uYX5pAXpyz/Fl2CGfjx83V+F9WQ3hitIbW4uw+5Qv4NzYeS0gopKinHbDbj4eHhsLyr+Xh2bgmFxcp9VNSHjB4D1jBaQ2oxei4hitE+5Iz5rBoN6R2/vNzE2ZQCSssqFOfgaj6k1keV+lBDnQspxSVPiI+fyWXL7hTh7Rw8kcXjEZs4m1pAZnYJFwz7g7EP9eTFR3up2o7aqxHxBbAnU222+iEa35yYDIeOKCurPYxd6qsNtvLXex8apaGktEIefmMDR0/lkJ5VzAXD/uDeG7vw/kt98fS0baSiGtAr//JyE+NnbGfpxnjKykxk55Vy66hV/Bh5LW0CfW3Wy4tLJjX6sFBsUQ3pjfQhO2W1h7GJK+TfUHxo3b+JjJ2+nczcErJySrho+Hymj+vN3Td2sVvPVXw8Ka2Qh1/fwJFTOWRkK/dRUR8yegxYQ/qQjXLaQ9jFaB9yxv5ToyG94pvNZiK/iuWrhUcoKa0gK7eU/o8u4cfIa+kaFmC/rov40Np/Ehk3YztZOSVk5pTQffh8po/rw103drZbr758yFU9SCkNdlGts8kF3PzcX8QcSCcprYiSMhNxCfm8PXc3M+ftVbWtwMBAAgMDhXPKjlkmvA13jt8Q0NqHRmiooLCMwU8sZ310EgmphZSUmTiTVMDc3w/x1FubhXOpDx6csJ5v/zxGfHIByRlFFJdWsGprAoOeWK7qCm9DQPqQBMT6Tw8NqY0fvS+NByes5+DJbJLTK4/Fx07n8tw7W1m28bRQLvVBlY/GJJGYVtNHn3YTH9UTIzSkN0bHbwi4mw9FfLqT9+ft5XRifqUPlVawPTaNIU+vJC2zSCiX+uDfvak89Pp6Dp7IJuk/Hz16Opdn39niFj6qJ3rNhWrj1BPi2NhYIiMjGTlyJH/88QcLFiygtLRU9XaeuutCQtv78crjFyuu8/bnuzibcu4ZhaiI/gDk5Jfy2W+HKCtT9uglQEFBAQUFCp/ZqEXq0tkkL5xJ0al9FJ85QEnKKVX1y8tNjBi3mu7D53Pvy2sxmdRdgxGNDxAVd6zGv2qZ9sVuug+fz1UPLSYprVDTNqq3QwsibdCjD43Q0LeLjnI6Kb/qb8sYKCyuYPX2BFUHAVENaNl/pxPz2LI7heKScye+ljacTszn97/iVOXQa8wd+LYOoNsD16uqVxVbsA9EMdKH4s7m0fuBxfQYMZ+Pf9xf7/FBrP/Ly00MH/s33Yf/wf2vrFPto+D+HgTaNSQS/6UP/iU1s7jqb8sYTs8uYeLsnaryMMKHvll0lDM2fPSvbep8FMR8yGgPAmM0ZOF/y44TfscCLrtnEbsPpdd7fBDbByfjc+n9wGK6D9fmoyB9SEv8wqJyflx2nNyCsqrfLOM4PiWfD75X15dG+NDLH0br5qPg3j4kMheyh1NPiBcsWMDEiRM5//zz2b59O97e3pSUlKjezg9LjjM3YgA/LFHe+Vv3pNb4O7SdX9V/FxaVcTguW/G2fHx88PHxUVy+OhXF+TTr1BPfsHB8O/WkafvOqur/ue40yzfFc+RUDks2nGF9TGK9xgcoNlUw++RRNmakqa5bUlrB1wuPcuRUDtH703nto2jV24Ca7dCCSBv06EMjNDR/dRyl1S78VB8DqZlFql5LEOk/0Lb/1kUnkZxec7JpaUNhcTm/rjqpKoekLfvoPelRTszfqKqeBdE+EMVIH3r1o2h2HkzncFwOc349iNms7oTSaB/6c91pVmw+y5FTufy5/jQbdySp3oa7exBo15BI/LPJ+TX+ru5DGdklFJeUK96WET40f3UcJTZ8NC1LnY+CmA8Z7UFgjIYsvD9vL4dOZhN7NJMJs2LqPT6I7YPXZsWw82A6R05p81GQPqQl/p4jGeRVOxmGc+PYZIJVW86qysMIH4p34KMlpeqemHNnHxKZC9nDw6xlRCokMjKSVq1asXHjRoYNG0ZFRQUDBw6ka9euNcqNGjWKhISEqr+3Jg0gs6RN1d9tg3yZPaEfEXN2cCI+r+r3oKbpDOiw1WrsDQnXklfWkqiI/oS286Nvr7ZE708jIbWQFyPXMaDDFvy97V9h6Nu3LwA5OTkAtGzZEoDoaPsndWnDplMW3BMAs8lE3t51FCccIWjg/XgFtKlR1jv5AG2XvWFzWxnFQUSnXE252RtvzxL6B28lwCfPZnk94r+DD+GcWzAkKu4Yo7tcUPVvdQ5SwSRs3/U3m2F9whAKypsDZs4POE7PoIN286/dhtrtaDd0jN381bTBVv5K+9DR/nO2huzF/yf5atKK21sdA2Pf3UTvtjG080u1WldUA0r3n702JOSHsDv9Csw0sdqGaR/9zpXtrF8ZHXTIizb5da/3dX/yVg5/u7LGb+nNTWzqUXdSLqohvTBSQxb2ZlzC6bzOgAfNvXO5LnS9w7xdyYdEfbR2G5RoWI/8LTmIHkdENSQSf038DRRV+Fsdwy9NX8uQjqvx9LA+DdHTx0H9cQTEfFTUh/QcA6IYqSELmxIHkVNa+ahkB78Eerfb4TBv0fh6Hgf2pl/C6fzOaPVRqH8f0ms+a9EPqNOQHvGzS1ryT0o/ykxNrY7jN95fzqCQTTZzcAUfWhN/I0UVfpp8VKkPuetcCKxrKDQ0lLlz5yrevlMX1Zo4cSIAqampPProozbL1U544GPLalx1fWRoNx6L2Mj4R3oyc965RwzCw3uy5PsJVrc545tYJn22k9HTtgGwePYNjBi3BoDuXdqz5s+fHa7OFhNTeQUyPj4egLCwMAAiIiLs1nt6y7kX6LM2/0pJykl8w8LrDF6AnuE9+fqZJXa3N/O7vcyct4/Jz13N8w86XsFNNH7ZhMmKF2EI7xHOkhlT7ZbZvCuZd7/cw6G4HA4te1fR6pzV21C7HY7yV9MGW/kr7UNH+8/ZGrIXf/mmMzw0YYPVMRAW3JKNy76gqY/1fSGqAaX7z14b8gpK6TFiAQmphXXaEBjgw9K5zzLg8mCrOa0YEWF9EQkr1//Cw8N5ZfG0Or+LakgvjNSQhaLicsZEbmPZxnhWzh3OleEvOszb1XzI4qNvPdePMSp9tHYb6it/Sw6ixxFRDYnEf/C1dfy6Ks6qD13X53yWfbPYZnw9fRzUH0cAlm08w8Ova/NRUR/SewyIYKSGLBw9lc1LH/zL7kOZHPzzdVq2cHyXSDS+nscBUR+F+vchveazFv2AOg3pEd9kMnPhsD84cTavzjj2berJJ68P45l7XrGZgyv4kD0fvb7v+Sz72raPKvUhd50LgWMfUkK9rDI9ZcoUofqz/nvXovrJsCPGPtSTX1edZP/xLMorzCSkVr672r51M+ZGDFC0VLkFf39/dQlXI2jwQ5rrWnj18UvYvDOF5x/s6biwE+JbrgDVvpqolIFXBLPq81sYPna1opNha4i2Q6QNevShERq69ZowrrqkLZt3Vb6HaxkDbVo1Zcqoy21O4qwhqgEtbWjh78PLj13MtC/3kJlT+apFQmoh/s28GHRlMP0va696m4fnrVJdx4JoH4hipA818/Xi26mDGD52NVeGt633+CDe/xYfHfOgtkcN3d2DQLuGROLPeu1qovenc/Js5R15iw+FBfvz1ZRrVG3LCB+6baB+PmpBqw8Z7UFgjIYsXNi5Fcvm3MzwsasVnQzrHR/E9oGoj4L0IS14enrw8etX89TkzVXv4SakFuLt7cElF7Tm8RHq+sIIH7Lno1++pc5HLbirD4nMhezRYFeZ9mvmxZbvh/H6U5fSvUtLZv2wn6GDwlj39a1c26eDqm1lZWWRlZXlpEwljQEjNOTp6cHKqJuZ8UIfenULZNYP+xl8ZTCLPr6BJ++8qF5z0cqLj/bi9w+uY8Bl7bigUwCf/36ID1+5ioWzblB1UashIH1IIooRGgpu48c//7udUfd158LzApj1437+7/ZubPvhdoefO3EFPD09WPHZzbw3vrfb+qieSB+SiGKEhoYN6sRfn9/CTf1CuaBTAJ/+fJC3nr2cjfNu03yjpj5xdx/VE2fpxyW/Q6wX/n7evPP8lbzz/JVC23HWR6AljQejNNSkiSfjHu7JuIfVP13gKgy5KpQhV4UanYbhSB+SiGKUhtoGNSMqYoAhsfXAy8uT8Y/0YvwjvYxOxXCkD0lEMUpDl3VvzV9f3GJIbD1wdx/VC2fpxyVPiLt1Una1Q2k5UdR+BDpMxd18NWWdsU1rZT1CghV/YNsjxPo7nKIobYOtckrbYCt/0fi1cZaGnKEfENeA0WOgRRflurRVVlRDeuNuGnJ3H3KF/KUPuZaPq0XUh4weA9ZwNw0ZPZcQxWgfcsaxXI2GjJ5LQOPxoYY6F1KKU1eZdncsL3BnZ2cD5zq/T58+9Z7L8LGrWfLpjfUeV08aQhvU4koakrgnrqQhdx/D7p6/VlxJQxL3xJU05O7j2N3z10L1RbVcQUMS98OWB4E+GnLJO8SuhrOuRkgaD1JDElGkhiSiSA1JRJEakogiNSQRwVn6abCLakkkEolEIpFIJBKJRGIPeYdYAXIRCYkoUkMSUaSGJKJIDUlEkRqSiCI1JBGhUS2q5WrIxzskokgNSUSRGpKIIjUkEUVqSCKK1JBEBGfpxyVPiMs/icKcmOywnEdIMF7jRzs9H7VXI97eDfEFysqG+cNbl9svYzabqTCZMZvNir69qrT/wHof6p0/QElpBWrWb9v8whzy4hy3oUWXYAZ+/Hyd3xuLhpT2v1pENSCqQVH00LCohvTeh0ZrqKLCRIVJ+Rh2NR9S66NKPQis+5DRY8AaRmtILaLxjT4OGO2jzjiWG62h0rIKTCrmEq7m42p9tLH7kDM0rJbG4kNGz4Xs5VCdRnWH2JyYDIeOOC5XD7mA+qsR8QWwJ1M8bmlZBa99FM2idadJzSimy62/c//NXXh3bG+8vGy//q20/8B6H+qVP8CPS48R+VUsuQVlZOaUMHzc33z11kDat25mt15eXDKp0Yc1x5UaEkM0vqgGRdGj/0Q1pPc+NEpDZ5MLGPn2ZvYdyyIju5iedyzg7dFXcM9NXezWcxUfKi2r4NUPo/lz/WlSMoqqfDRyXG+aNLHto/XlQSB9yFnxjT4OGO2jzth/Rmlo9fazvPpRDGmZxWTkFDP4ieV89dY1XNi5pd16ruLj8cn5PPP2FvYdyyL9Px+dOuYK7r7Rvo82dh8y2oP0yKGx+JCrzoWUIhfVUkBgYCCBgYHC28mOWaaq/NAxfzP398OcSSqguLSC04n5zP75IHe/tFY4l/rg4//tZ/yMfzh8KofEtEKKSytYuiGeax5bRk5eqdHp1StGaUhvjI7v7oj0nxEaSsssYtATy1i1NYGE1EKKS00cPJnNc+9sZd6io8K5OBuz2cxto//i8z8qfbSk1OR2PqonemjIFTzAFXJwZ4z2IbXxV26J5+HXNxJ7JJPEtEJKSk1s2pnM9U+vIO5snlAu9UFaZhGDn1he5aMl//nos1O38t2fru+jetMQfMjo+A0BrX2o11yoNm5xQhwVd6zGv2pIyyzi+qdX0PuBP/nfsuOa4hcUFFBQoPB+fy1Sl84meeFMik7to/jMAUpSTimqF7M/jd2HMigtMwEQFdEfgOKSCv7Zm8qhk9mKcxDpP6jZBqWUllUw68f9ZOWeO/G1tOFUQh6f/HRAVQ69xtyBb+sAuj1wvap6VbEF+0AUIzRkobiknBHjVtP7/j9598s99R4fxPs/4tMd9H7gT+59eS1l/40JtWjRcXW0tkGP/gNjNPTuV7GcSsyv+tsyhjNySpj21R5MKh79M8KHYvans/twplUf3R6rzkdBzIeM9iDQriE9NLz/WBb9H13KVQ8tZssuZY9w6p2DyD4oKj7no5Ff7VFdH4zzoNqxjfAhkfivfBhNWlZx1d+WcZyQWshrs6JV5WGED9nz0alfqPNRkD4kouEv/jhM7wf+5OZnV5GdW1Lv8UFsH+w/lkX/R5bQ96HFbN2Voim+u/uQyFzIHk49IY6NjSUyMpKRI0fyySefMGHCBE6fPq16O8WmCmafPMrGjDTVdce99w/ro5PYeTCDqZ/vVvUeqwUfHx98fHxU1wOoKM6nWaee+IaF49upJ03bd1ZU78elx8nIOTdYQ9v5Vf13amYxv648oTgHkf6Dmm1Qyu5DGeQVlNX4zdKG8gozC9ecUpVD0pZ99J70KCfmb1RVz4JoH4hihIYsTP96L0s3nmHnoQw+++0gyemF9RofxPr/RHwuX84/ws6DGSxad4rPfjuoehugTcfV0doGPfoPjNHQ6u0JVLfM6j6UV1jG4bhsxTkY4UM/LjtGph0f/W2Vch8FMR8y2oNAu4b00PC497azPTaV6P3pvPTBv4bkILIPpn8Ty5IN//nor4dIyShSvQ2jPKh2bCN8SGv8jOxismqduFQfx7sPZajKwwgfsuej+YVlHDmVoyoH6UPaNFxSWsGMb2PZeTCDv7cn8OpH6i6m6DWGRPbB2Onb2L43jZj96bw48x9N8d3dh0TmQvbwMGs5Q1TI5MmTmTp1KtOnT2fMmDH89NNPjBo1qk65UaNGkZCQUPX3O/gQTpOqv6PijjG6ywVV/1o4SAWTsP/o7e60yzlb0AkAf688rgtdh4L1VADo27cvADk5lWbVsmXluyrR0fYHUdqw6ZQF9wTAbDKRt3cdxQlHCBp4P14BbWqU9U4+QNtlb9TZxoGMnpzM60ZURH9C2/nRt1dbovdXii8htZBP5nzDha2sP2qjtP/Aeh9Wz792G9oNHaMo/+ySVvyTfDVl5qZ12pCQWsjr769gcIhtMx90yIs2+TWv13R/8lYOf7uyxm/pzU1s6lGuuQ+UaEgEZ2vIVv9X51h2Nw5n9wA88W1SyKCQjTRtYr/NohoW1WB1CsubsTlxIKWmZoCJi1vvpXML+xfWamu4djuq69hWH4pqyJKDVg+wYKSG1idcR35ZgNUx/ELkOgZ02Epz73yrdV3Bh/Zn9CIur6smH7XmQaDch/QcA6KIakhUwwDbk/uRXtwOgFY+mQwM2ewwb1EN63kcEPXR2m1QomE9x5DRPqQ1fmmFNxsSr6OkoplVH3rlvb8Z0tH26w96+bgFtccRgA0J15Gn0Ucbig9Z9APqNKSnhk1mD9YnDKGw3B8w07lFHBe3dnyXVFTDevqQqI+CcXOh2rHV7kNbHgTWNRQaGsrcuXOtbssaTl1Uy9fXl6ioKPbs2YPJZCIoKMhqudoJl02YrOgF7vAe4SyZMdVumZy8Uv7vzY1s3pXMT9Pv5taBLyjOPyYmBoD4+HgAwsLCAIiIiLBb7+kt514gz9r8KyUpJ/ENC6+z4wF6hvfk62eW1Pl979FMbhi5ktHTtgGwePYNjBi3BoD2rX3Z+tNkuoYFWI2vtP/Aeh9Wz792G5TmX1FhotvQPziVmF+nDd7eHkSOvYlXHn/ZZl4rRkTUXUjCyrWb8PBwXlk8rc7vempIBGdryFb/V6eszMRTb21m+aYzRI7rz7P3jXWYt6iGRTVYm49+2Meitac5nZTPnlWz8fS0f1WrtoZrt8NR/mraYCt/Sw5aPcCCkRqa+MkOZsyLtepD3Tq1Y+3Sn2yu2OwKPhR7JIMbnrHlo83s+qhVDwLFPqT3GBBBVEOiGobKV2WenrKF3YczWP/NU1xy4asO8xbVsJ7HAVEfrd2G2jjDR/WYi1gwUkOX3buI2COZVsfx/91+Gd+/O95mfL183ILa4wiI+WhD8SGLfkCdhvTUMMD8v+P45KcDnIjPZf+yKfj7eTvMXVTDevpQdR/d8M1TXKzSR8G4uVDt2Gr3oS0PAsc+pASnnhBPnDgRgNTUVFq1asX999+vaTuWKxC1r2YpoWULHxbPvpHhY1dz68AwxxWs4O/vr6keQNDghzTVu+TCIK65oj1/bT1LYXEFCamVj7k2b+bFzf072pzEWUOk/0BbG5o08WTK6Ct4+YN/yciufNwpIbUQT0+4sFNLRt3XXfU2D89bpbqOBdE+EMUIDVnw9vbkh8jBDB+7mmfv61Hv8UG8/1/6v4t56f8uZvjY1Q5Phm0h2g6tbdCj/8AYDb32xMUsWHuKo/890mfxobaBvrz/Yh9Fny+yYIQPXXpRawZeEVzXR/28uLl/qCoftaDVh4z2INCuIT003Dm0BWu+upXhY1dzyYXWL447OweRfSDqo2CcB+kR24IRGvr09X7c+8paUjIq3yO2jOPOIc2ZPr63qm0Z4UOvPXExC9bEcfR0LiDmoxakD2njnpu6cM9NXRg+drWik2G944PYPqjuoxdr8FFwfx8SmQvZo14W1ZoyZUp9hHEaWVlZZGVl1Xvc+R8OYdIzl3HheQG893UsF3VuyTvPX8l30wbVey5aeGz4Bfxv+mCuDG9Np2B/3v92L0/ecSFbf7hdtRG5O0ZpSNJwMEJDrQKasu2HYTw6rCudQ5rz3jexXHVxW37/4HruHNK5XnPRilUfHeM+Pqon0ockohihoYFXBrP8s5sZdGUwnYL9mfHtXu4ach6bvxtGSDvnTI71pFVAU7b+cHsNH+3by718VE+kD0lEcJZ+XPI7xK6Gsz4C7QhPTw9ef/oyXn/6MkPi68EtA8K4ZYC2O/MNCaM0JGk4GKWh1q18+SHyWkNi60FD8FG9kD4kEcUoDV0Z3oaN84YaElsP2gS6t4/qifQhiQjO0o9LnhB7hAQr+kC1R0iw03MB9R+BDlNxwVJNWaUo7T9L2doYnT9Aiy7K9q2tco1FQ87qf1ENiGpQFD00LKohvfehu2nI3X1IqQfZKmv0GLCGu2lINL7RxwGjfdQZY8jdNORqPq6Wxu5DRh8H1GzX3X3I6LmQ0rJqPUgpTl1l2pUYPnY1Sz69UVUdywvc2dnZwLnO79Onj56pSRowrqQhLWPA1WgIbVCLK2lI4p64kobcfQy7e/5acSUNSdyP6otquYKG3H0cu3v+WrDlQaCPhlzyDrGr4ayrEZLGg9SQRBSpIYkoUkMSUaSGJKJIDUlEcJZ+6mVRLYlEIpFIJBKJRCKRSFwNeYdYAXIBAIkoUkMSUaSGJKJIDUlEkRqSiCI1JBGhUS2q5WrIxzskokgNSUSRGpKIIjUkEUVqSCKK1JBEBGfpxyVPiJ+YtInjZ3IdluvWKYB57zj/W5Jqr0a8vRviC5SVDfOHty7XkJQT45d/EoU5MVlRfY+QYLzGj1aZoWOUtsFW/yltg638RePXxlkacoZ+QFwDRo+BzS/MIS9OWf4tugQz8OPn6/wuqiG9cTcNubsPuUL+0odcy8fVIupDRo8Ba7ibhoyeS4hitA8541iuRkNGzyWg8fhQQ50LKcUlT4iPn8lly+4U4e1k5Zbw2kfRrP03keT0Igb831Lef7EPAy5Xt7S52qsR8QWwJ1NttvohGt+cmAyHjigrqz2MXeqrDbby13sfGqWhktIKpkTtYv7qOBJSC7n8vkVMfvZy7hzS2W49UQ3o2X+/rDjB9G9iyS0oIz2rmClRO3lz5OV4e9teAiEvLpnU6MNCcUU1pDfSh+yU1R7GJq6Qf0PxodOJebz4/r/sPpJBSnoRtzy3io8nXE33LvbzcBUfLy4pZ0rUbhasUeejoj5k9BiwhvQhG+W0h7CL0T7kjP2nRkN6xl/7TyITZ+8gJbOItMwixkZuI3J8b1r4+9it5yo+ZM1HP5lwNRc58NH68iFX9SClNNhFtXLzS+n/6FK+WXSUuIR8ikoq2LYnlTtfWMuS9adVbSswMJDAwEDhnLJjlglvw53jNwS09qERGiovN3HdUyv48If9HI/Po6ikgj2HM3nqrc188N1e4Vzqg0lzdjLq3a3sO5bF6cR8CorKee/bfdz83CoayRfjqpA+JAGx/tNDQ2rjn07MY+Djy1m07jSn/jsW/7UtgeufXsneoxlCudQH5eUmrn96JR/96L4+qidGaEhvjI7fEHA3H/pp2XEeeG0d0fvTOJ2YT2FxBVG/H2LA/y2jsKhcKJf6wN19VE/0mgvVxi1OiJ+660JC2/vxyuMXK67zwff7OHY6F8ucOSqiPwBpWcW88mG0qsl0QUEBBQUKn9moRerS2SQvnEnRqX0UnzlAScopVfXNZjOvfxzD4CeW8/bcXfUeHyAq7liNf9WyZP1pBj2+jAdeW6fZeKq3QwsibdCjD43Q0KJ1p9h3NJOychNwbgxk5ZbyyU8HKCgsU5yDqAa07L+s3BLm/XmUnLxzeUZF9KektIJdh9JZ+2+iqhx6jbkD39YBdHvgelX1qmIL9oEoRvpQbn4pd7+4hsFPLGfNPwn1Hh/E+t9sNjNhVqWPTv1cvY+C+3sQaNeQSPzxM/4hPvlcTIsPJaUVMmraNlV5GOFDi9bq56Mg5kNGexAYoyELOw+mc92Tyxk65i9SM4rqPT6I7QNRHwXpQ1riV1SYmPTZTtKzS6p+i4roj8kER07l8OV8dXdPjfAhWz6amFbI6He3q87BnX1IZC5kD6eeEMfGxhIZGcnIkSP56quvmDt3Likp6h+F/mHJceZGDOCHJco7f+GaU1SYzp30hrbzq/rvnPxSjp7KUbwtHx8ffHzsP1Jhi4rifJp16olvWDi+nXrStH1nVfXX/JPInF8OsGlnMrN+PMCOA2n1Gh+g2FTB7JNH2ZihLjZAWZmJl2b+y+ZdKfy2Ko7XZkWr3gbUbIcWRNqgRx8aoaEv/jhCfrULENXHQEZ2CRt2JCnOQaT/QNv+W7EpnuRakx5LG3Lyy/j8d3UHsaQt++g96VFOzN+oqp4F0T4QxUgfemHGPyxce5pNO5N5PnK76rvzRvvQmn8S+ezXSh/96IcD7Dwo5gNaMNqDQLuGROLvOVzzWcHqPnQ6MZ+yMpPibRnhQ1/M189HQcyHjPYgMEZDFkZO2cKGHcms2HyWZ6Zuqff4ILYPxlfz0bHT1fsoSB/SEn/XoQxy8mteuLKM49IyEz8uO64qDyN8yJ6PxiXkqfJRcG8fEpkL2cPD7MTnDidPnszUqVOZPn06/v7+5OTkMG7cOFq2bFmj3KhRo0hIOHe1bGvSADJL2lT93TbIl9kT+hExZwcn4vOqfg9qms6ADlutxl6fcB35ZQFERfQntJ0ffXu1JXp/GgmphbwQuZ7+wVtp4ZNnta6Fvn37ApCTU3nybMk7Otr+SV3asOmUBfcEwGwykbd3HcUJRwgaeD9eAW1qlPVOPkDbZW/Y3FZyQXt2pPXBTBM8Kefq9ttp3cz+ywii8d/Bh3CaVP0dFXeM0V0uqPq3OgepYBKlNnMxmT1YlzCEonJ/ADr6n+bytnvs5l+7DbXb0W7oGLv5q2mDrfyV9qGj/edsDdmLvy2pPxklba2OgTHTNtO73Q6C/awvlCCqAaX7z14bzuSFEZtxOeBhtQ1vf7iAvu2t9+OgQ160ya97va/7k7dy+NuVNX5Lb25iU4+6Ty6IakgvjNSQhZ2pV5JY2BEAf698rgtdi4eH/bxdyYdEfbR2G5RoWI/8LTmIHkdENSQSf038jRRV+Fkdwy9OX8uQjmto4mF9Mqenj4P64wicm49o8VFRH9JzDIhipIYsbEi4lryyyrhtfVO4Ovgfh3mLxtfzOLAj9UqSBHwU6t+H9JrPWvQD6jSkR/ys4kD+Tb2aMpOP1XH8+oyVDA7dYDMHV/AhER9V6kPuOhcC6xoKDQ1l7ty5irfv1EW1fH19iYqKYs+ePVx33XV06NCB9PT0OifEtRMe+NiyGotqPTK0G49FbGT8Iz2ZOe/cIwbh4T1Z8v0Eq7HHv7edT385yOj/HslaPPsGRoxbA0CX0NasWfYjTZrYv0EeExMDQHx8PABhYWEARERE2K339JZzL9Bnbf6VkpST+IaF1xm8AD3De/L1M0tsbstkMvN4xCYWrz/N/TdfyBdvPYOHAwcVjV82YbLiRRjCe4SzZMZUu2U++/UgXy88wtnkAmKXvklQy6YOt1u9DbXb4Sh/NW2wlb/SPnS0/5ytIXvxv1lwhLHvbbc6BkLbteDvhZ/SKsD6vhDVgNL9Z68NSWmFXPnAnySlFdVpQ3M/L75/9xHuusF6P64YEWF9EQkr1//Cw8N5ZfG0Or+LakgvjNSQheT0Qh54dT27j2Tw6eu38X/DxzvM25V8qIaP3nIRX0xW56O121Bf+VtyED2OiGpIJP4NI1ew9t8kqz50RY+OLP/tT5vx9fRxUH8cAfh6wWHGvfePJh8V9SG9j8UiGKkhC8s3xTP5s52cTMhj609juOC8iQ7zFo2v53FA1Eeh/n1Ir/msRT+gTkN6xC8preDC2//gTFJBnXHcxNODSc9ey1ujXrKZgyv4kIiPKvUhd50LgWMfUoJTT4gnTqw0q9TUVJ577jnN25n1436AGifDjnhz5GUs2XCGU4n5ACSkFgIQ1NKH15+61OHJcHX8/f1VZFuToMEPaa4L4OnpwQ+Rgxk+djVfThlY7/GBqitAta8mKmXMA+GMeSCc4WNXKzoZtoZoO0TaoEcfGqGhR27vxqz/7efgyWzM5nNjoIW/N/fe1MXmJM4aohrQ0oYObf24dUAYv/11koL/HllMSC3E0xMu6NSS4dd2Ur3Nw/NWqa5jQbQPRDHSh4Lb+LFh3lCGj13N/w03ZgyJ9H8NH33rGk3x3d2DQLuGROJ//NrV3PjsKpLTK19/sPhQuyBfPnrlKlXbMsKHHhnWjY//d8Cqj96n0kctaPUhoz0IjNGQhaGDwhg6KIzhY1dzwXktHVfQOT6I7QNRHwXpQ1po6tOEsQ+E8+43sWTnVt7BtIzjzqHNGf9wT3vV62CED+npoxbc1YdE5kL2qJdFtaZMmVIfYWrQrnUzNnx7GzdcHUJoOz+mfbGH7l1a8ukb/Xnmnu6qtpWVlUVWVpaTMpU0BozQUFOfJmz+fhj33NiZju39ePfLPZzfsQWTn72Mj17VZqD1zddvX8NrT1xM55DmhLT1Y/rXsTx4a1c2zrsNLy+3WBNQN6QPSUQxQkO9Lghi+Zyb6HtxW0LaVh6LL7soiN/ev57BfTrUay5a8G3qxebvh3H3DXV99EM38VE9kT4kEcUIDb3yxCV88FJfLugUQEhbPyK/2sNt13Rk83fDNF3Uqm96XRDEMjf2UT1xln5c8jvEenFeSAtWf3krZWUmSsoqaO7nrWk7zvoItKTxYJSGAgOa8vsHQygvN1FUUk5zP2+Hj4q6Eh4eHkx+7gomPXs5+YVl+Pl6qXq6oyEhfUgiilEauiK8Df/+NJziknLMZmjm615Tj8CApvzxofv6qJ5IH5KIYpSGnrrrIp6880IKispp6t0Eb2/3mktc6eY+qhfO0o9L9ma3TgG6lvP29hQSvtqPQIepuJuvpqwztmmtrEdIsOIPbHuEBCsPpgKlbbBVTmkbbOUvGr82ztKQ0nJeXp608FK+Kp+oBvQeAx4eHrTwV55/iy7KdWmrrKiG9MZoDanF3X3IFfJvaD7k21TdlMPVfFytj4r6kNFjwBpGa0gtRs8lRDHah5wxn1WjIWfMJdTeHHM1H1Lro0p9qKHOhZTi1FWm3R3LC9zZ2dnAuc7v06dPvecyfOxqlnx6Y73H1ZOG0Aa1uJKGJO6JK2nI3cewu+evFVfSkMQ9cSUNufs4dvf8tVB9US1X0JDE/bDlQaCPhlzyDrGr4ayrEZLGg9SQRBSpIYkoUkMSUaSGJKJIDUlEcJZ+3OsBeolEIpFIJBKJRCKRSHRC3iFWgFxEQiKK1JBEFKkhiShSQxJRpIYkokgNSURoVItquRry8Q6JKFJDElGkhiSiSA1JRJEakogiNSQRwVn6cckT4vJPojAnJjss5xESjNf40U7PR+3ViLd3Q3yBsrJh/vDW5RqSsoPS/gPrfWh0/gCbX5hDXpzjNrToEszAj5+v83tj0ZCz+l9UA6IaFEUPDYtqSO996G4acncfUupBYN2HjB4D1nA3DYnGN/o4YLSPOmMMuZuGXM3H1dLYfcjo44CaHNzdh4yeC9nLoTqN6g6xOTEZDh1xXK4ecgH1VyPiC2BPpj6xF6yOY8a3ezl4Mpt+jyzhzZGXMWxwJ7t1lPYfWO9DPfPffyyT1z/ewbEzOSSlFfL+t7GMf6QXTX2a2K2XF5dMavRhzXGlhsQQjS+qQVH06D9RDem9D43SUFFxOR98v49fV57kdFI+d72whunje3NRF/t5uJIPzf87jvfnVfro1Q8vIeIZxz5aXx4E0oecFd/o44DRPuqM/WeUhk4n5hHx6U5iDqRzNqWACbOimfj0ZbRsYf8zWK7i44VF5Xz4wzkfvfOFNbynwEcbuw8Z7UF65NBYfMhV50JKkYtqKSAwMJDAwEDh7WTHLFNVfuz07Tz11mZiDqRTUFTOP3vTeHTiRibOjnFc2QX4a+tZbnhmJcs3x3P0dC55heVM+mwX1z21gtKyCqPTq1eM0pDeGB3f3RHpPyM0VFRczjWPLWPq57s5eDKbgqJyFq07zXVPrWDrbmV3HYxmbOQ2np5yzkf/3VfpoxGzdxidWr2jh4ZcwQNcIQd3xmgfUhv/0MlsrnlsGf9bfoIjp3IoKKq8SHf1I0vIzi0RyqU+sOajf7qZj+pJQ/Aho+M3BLT2oV5zodq4xQlxVNyxGv+qoaS0gmenbmHY83+x53CGpvgFBQUUFCi831+L1KWzSV44k6JT+yg+c4CSlFOK6p2Iz+WPv+PIyS8DICqiPwDZeaXM+/MYianK8xHpP6jZBqWYzWaej9xOSkbxuTwi+lNaZmL34Qx+WKIul15j7sC3dQDdHrheVb2q2IJ9IIoRGrJgNpt545MYbhv9Fys2x9d7fBDv//l/x3Hb6L94O2oXWj+drkXH1dHaBj36D4zR0Kc/H2Df8UzKKyr73OJDSelFPPP2VlU5GOFDx8/k8sdq6z767Z9HVfkoiPmQ0R4E2jWkh4Yzc0p44LV13P3iGtX9rlcOIvvAbDbzxsfafRSM86DasY3wIZH4T07exNmUwqq/oyL6YzLBkVM5TPpsl6o8jPChT38+wP4T+vgoSB8S0fD22BSGjv6LcdO3UVZmqvf4ILYPRH0U3N+HROZC9nDqCXFsbCyRkZGMHDmSb775hqioqKoPKquh2FTB7JNH2ZiRprruyx/8y1cLjrB801kefmOD6voAPj4++PjYfyzHFhXF+TTr1BPfsHB8O/WkafvOiup9veAIKRlFVX+HtvOr+u+UjCJ+XHZCcQ4i/Qc126CUvUczyc6reeXW0obikgq+mK/sER4LSVv20XvSo5yYv1FVPQuifSCKERqy8NmvB5n1w35WbjnL6He3qb6iLhofxPo/Ka2QF2f+w8otZ3n/u338slK59qujRcfV0doGPfoPjNHQ/5afoKzs3AWI6j6UkVPCybO5inMwwoe+WnC4xkW56vknZxTx03J1WhLxIaM9CLRrSA8NPxaxkd9WxbFw7WkenLDekBxE9sFnvx5k1o//+eg09T4KxnlQ7dhG+JDW+Ln5pZxJrjn5tYxjsxlWbT2rKg8jfEhPHwXpQ1o1XFFh4rE3N7Fiy1mifj/EpM921mt8CyL74LE3xXwU3N+HROZC9vAwa73dooDJkyczdepUpk+fTv/+/dm3bx+9e/fm6quvrlFu1KhRJCQkVP39Dj6Ec+4d06i4Y4zuckHVvxYOUsEkSu3mEJPSh+SiEAD8vPK5PnQtHh7K8u/bty8AOTk5ALRs2RKA6Ohou/XShk2nLLgnAGaTiby96yhOOELQwPvxCmhTo6x38gHaLnujzjb2pl/C6fwuREX0J7SdH317tSV6f6X4ElIL+ejTefQItP5eidL+A+t9WD3/2m1oN3SMovwziwP5N/Vqyk0+ddqQkFrIhBkruTZ0g9X8AQYd8qJNfs3rNd2fvJXD366s8Vt6cxObepRr7gMlGhLB2Rqy1f/VOZgZzoncyjb7eBYzKGQjzbyK7dYR1bCoBquTV9qcLUnXUG5uCkD3Vge4oNVxxflbsKVjW30oqiFLDlo9wIKRGlqfcB35ZQFWx/ALkevoF7yNAJ88q3VdwYdEfNSaB4FyH9JzDIgiqiFRDQNsTRpAZkllvZY+2QwKcTyZF9WwnseBA5nhnBTw0dptUKJhPceQ0T6kNX5JhQ8bE6+lpKKZVR965b3VDOm4xmZ8vXzcgtrjCDjy0fX0C95q00cbig9Z9APqNKSnhitMnqxPGEJRReUFiVD/eK5o6/gJA1EN6+lDNX00i0EhmxTnb8GouVDt2Gr3oS0PAusaCg0NZe7cuVa3ZQ2nLqrl6+tLVFQUe/bs4bbbbqO8vJxevXrVKVc74bIJkxW9wB3eI5wlM6baLXMiPpd7X17H0dM5vPXcdbz6xHjF+cfEVL6rGx9f+XhUWFgYABEREXbrPb3l3AvkWZt/pSTlJL5h4XV2PEDP8J58/cySOr+v/TeRe15ay+hp2wBYPPsGRoyrNP3WrZqycu6r9OnV1mp8pf0H1vuwev6126A0/8KicrqPmE98ckGdNnh4wAuP9OejV1+ymdeKERF1F5Kwcu0mPDycVxZPq/O7nhoSwdkastX/1cnOLeH2sX+z+1Amj99xOXMmjrFbXk18WzmIarA6ZrOZp97azJZdKWTmlLBj1Qz8/bwV52/Blo5t9aGohiw5aPUAC0Zq6IlJm/hu8TGrPnRehzasXvoj3t7WHzRyBR9a808C9768zmr+bVo1ZYUdH7XqQaDYh/QcA6KIakhUwwAbohN5fvp2Tifm8/U7d3HPTS87zFtUw3oeB0R9tHYbauMMH9VjLmLBKA2ZzWYuGj6fY6dzrY7jm/tfyJLPx9mMr5ePW1B7HAH7PtqpQ5BdH20oPmTRD6jTkJ4aBnjrs538suokqRnFRP/5KiHt/B3mLqphPX1ofXQiY6t89G7uuekVxflbMGouVDu22n1oy4PAsQ8pwaknxBMnTgQgNTWVSy+9lEsvvVTTdixXIGpfzVJC17AAdv1+B8PHrubVJy7RFN/f3/GAsUXQ4Ic01bu+bwe6hgWw+3A6JlPl3QyAJp4e9OjSyuYkzhoi/Qfa2uDXzIuHbutK1G+HyCuofH/P0oaw9v5MeFK9Fg7PW6W6jgXRPhDFCA1ZaBXQlM3f387wsauZM7F/vccHsf738PDg26mDABg+drXDk2FbiLZDaxv06D8wRkNvj76C1dsTqsau5d+Wzb159t6LbE7irGGEDw25KsSqj3o18aD7+ep81IJWHzLag0C7hvTQ8LV9Q9i/6G6Gj13NPTd1MSQHkX0g6qNgnAfpEdtCfWvIw8ODN0dexkvv/0vmf4+pW8Zx+9bN+ODlvvaq18EIH7Lno6Pu66HKRy1IH9LG22Ou5O0xVzJ87GpFJ8N6xwexfXCdoI+C+/uQyFzIHvWyqNaUKVPqI4zTyMrKIisrq15jenh4sO7rW7l9cCdC2/nx9txddGzvx903dOavz2+p11y0Mn18b156tBedOvjTvrUv73yxhz692vD3F7fQvnUzo9OrV4zQkKRhYYSGOnVozoqom7i8e2s6tGnG23N30zmkOW+OvIzXn9J2gbM+qfLRQed8NLSdH3cN6cxfc93DR/VE+pBEFCM09NjwC3j/pT6c37EF7Vv7MvXz3fTs2orfP7iOXhcE1WsuWujUoTnLP6vpo+eFNCdi5GVMeFLbjRp3RvqQRARn6cclv0PsajjrI9COCGjuw5+f3EhufikpGUV0aOtHc413x4zAw8ODKaOv4M2Rl3EqMY+WzX1o18hOhC0YpSFJw8EoDV1yYWt2/X4HyemF5BeW0zmkOV5ebvGBAuA/H53tvj6qJ9KHJKIYpaGn7rqIJ+64kFOJefh4NaFjsHPuEjmLSy9ybx/VE+lDEhGcpR+XPCH2CAlW9IFqj5Bgp+cC6j8CHabCp5WUDWjuQ0Bz5SuqKe0/S1ktOakp6+3tyQXntXRcsBotuijbt7bKNRYNqdlXahDVgKgGRdFDw6Ia0nsfGq2h4DZ+jgtVw9V8SK2PKvUgW2WNHgPWMFpDahGNb/RxwGgf1XsMgbEa8vT04PyOAco2+B+u5uNqfbSx+5AzNKyWxuJDRs+FlJZV60FKceoq067E8LGrWfLpjarqWF7gtnwqytL5ffr00TM1SQPGlTSkZQy4Gg2hDWpxJQ1J3BNX0pC7j2F3z18rrqQhiftRfVEtV9CQu49jd89fC7Y8CPTRkEveIXY1nHU1QtJ4kBqSiCI1JBFFakgiitSQRBSpIYkIztJP43yBQSKRSCQSiUQikUgkjR55h1gBcgEAiShSQxJRpIYkokgNSUSRGpKIIjUkEaFRLarlasjHOySiSA1JRJEakogiNSQRRWpIIorUkEQEZ+nHJU+In5i0ieNnch2W69YpgHnvDHJ6PmqvRry9G+ILlJUN84e3LteQlBPjl38ShTkxWVF9j5BgvMaPVpmhY5S2wVb/KW2DrfxF49fGWRpyhn5AXANGj4HNL8whL05Z/i26BDPw4+fr/C6qIb1xNw25uw+5Qv7Sh1zLx9Ui6kNGjwFruJuGjJ5LiGK0DznjWK5GQ0bPJaDx+FBDnQspxSVPiI+fyWXL7hTh7ZSXm/h5xQmifjvEoZPZjH9vO68/dSkd2qpb9l7t1Yj4AtiTqTZb/RCNb05MhkNHlJXVHsYu9dUGW/nrvQ+N0pDZbGbFpnhmfrePXYczeHTiBt567gq6dbL/6QpRDejZf4dOZjNl7i4On8wmIa2QNf8kcMPVoXbr5MUlkxp9WCiuqIb0RvqQnbLaw9jEFfJvKD5UWFTO538c4qflJzh+Jpepn+9m/MM9adnC/mewXMXHzWYzy//z0d0qfFTUh4weA9aQPmSjnPYQdjHah5yx/9RoSM/48cn5vPvlHrbvTSU+uYDfVp3k3pu64OnpYbeeq/iQVh+tLx9yVQ9SSoNdVKu83MSNz6xk1LSt/LsvjdyCMj795SB9H1rMgeNZqrYVGBhIYGCgcE7ZMcuEt+HO8RsCWvvQCA2ZzWYej9jEw29sYOPOZPIKyvjfshMMfGwZK7fEC+dSH8z/O47rnlzO73/FsfdYFhnZJdz78jrGRm4zOrV6R/qQBMT6Tw8NqY2fm1/KVQ8v4fVPYth1KIPcgjLe+WI3fR5cTEpGkVAu9YHFRx95YwObavnoqq3u4aN6YoSG9Mbo+A0Bd/OhmP1pXP3IUr6Yf4S9R7PIyi3l6Smbuf35vzGZXP/rs+7uo3qi11yoNm5xQvzUXRcS2t6PVx6/WHGdrxce4Z99aRQWVwAQFdEfsxnOphTy8BsbVMUvKCigoEDhMxu1SF06m+SFMyk6tY/iMwcoSTmlehvz/47jvlfWsXTDGUPiR8Udq/GvWo6dzuGhCet598s9mo2neju0INIGPfrQCA1t2ZXM0o1nyMkvAyrHAEByRhGjp22jvNykOAdRDWjZf8Ul5bw4819SMovP5RHRn+y8Un5ddZLYIxmqcug15g58WwfQ7YHrVdWrii3YB6IY6UMVFSbe+mwnj7yxgdOJefUeH8T7/w8BHwX39yDQriGR+K99FM3Bk1mUlVV6f1REf8orzBw7k8vIKZtV5WGED22246Oj3lHnoyDmQ0Z7EBijIQtpmUU8MWkTL8/8l5LSinqPD2L7oKLCxOQ5lT56Jkm9j4L0IS3xzWYz//fmRhJTC6t+i4roT35hOZt2JfP7XydV5WGED9n10bfV+Si4tw+JzIXs4ZQT4tjYWCIjIxk5ciQzZsxgzpw5APz+++988cUXVR9VVsoPS44zN2IAPyxR3vlfzj9Ccck5wwxtd+4x6eT0IlWTOh8fH3x87D+SYIuK4nyadeqJb1g4vp160rR9Z1X1dx1MZ9S0bfzxdxwj397CsdM59RofoNhUweyTR9mYkaa6rslk5o4X1vDLypO88+Ue3v1qj+ptQM12aEGkDXr0oREa+uD7/WTlllb9XX0MZOSUsGmnsveKQKz/QNv+W7nlLOlZNa98WtqQnl3CrB/3q8ohacs+ek96lBPzN6qqZ0G0D0Qx0ofe+GQHkV/H8tPyE9wxfk29xwex/t91MJ3R//noM1PV+yi4vweBdg2JxP97ewKmaueM1X1o16EMKiqUn1Aa4UMf6uijIOZDRnsQGKMhC3e/tJbvFh9j1v/2M3ra1nqPD2L74I1PdjD9m0ofHTFOvY+C9CEt8Q8cr3y6rDqWcZxfWM7snw+qysMIH7Lno7sPqvNRcG8fEpkL2cPDbDbr/qzA5MmTmTp1KtOnT2fMmDEsXLiQxx9/nB9++IF+/fqRnp5Ov379qsqPGjWKhISEqr+3Jg0gs6RN1d9tg3yZPaEfEXN2cCL+3IlsUNN0BnSwborrE64jvyyAqIj+hLbzo2+vtkTvTyMhtZAXItdzdfA2WvrYX7irb9++AOTkVE6eWrZsCUB0dLTdemnDplMW3BMAs8lE3t51FCccIWjg/XgFtKlR1jv5AG2XvWFzW2fzQ9mdfiXgAZi4qt0/tPOzL0LR+O/gQzhNqv6OijvG6C4XVP1bnYNUMIlSbFFh8mRdwhCKKyoHb4jfWa5st9Nu/rXbULsd7YaOsZu/mjbYyl9pHzraf87WkL34W5KuIauktdUxMGbaFq5ou4MQ/ySrdUU1oHT/2WvD6bxO7M2oXGHCWhumfLCIq4L/sZr/oENetMmve72v+5O3cvjblTV+S29uYlOPcs194GgMiGKkhixEp/QhpSgEAD+vfK4PXYuH/deuXMqHavvo1e2209YvXXH+tdugRMN65G/JQfQ4Iqohkfhr4m+kqMLP6hh+cfpahoSuoYmn9cmcnj4O6o8j4NhHr2y7gw42fFTUh/QcA6IYqSELGxKuJa+sMm4b3zT6BTt+dUY0vp7HgeiUvqQUdQDAz6uA60PXqPJRqH8f0ms+a9EPqNOQHvEzioOITrmKcrOP1XE8YcZKrg3dYDMHV/AhER9V6kPuOhcC6xoKDQ1l7ty5irfvlEW1fH19iYqKYs+ePSQlJREbG0tBQQG+vr6sXbuW+++/v0b52gkPfGxZjUW1HhnajcciNjL+kZ7MnHfuEYPw8J4s+X6C1Rzue3ktf6w+xehplYa5ePYNVVfkwtoHserP72jma7/5MTExAMTHV74nFBYWBkBERITdek9vOfcCfdbmXylJOYlvWHidwQvQM7wnXz+zxOa2CovKuem5Vew8kM7VlwTz1xdf4uPdxGZ5PeKXTZiseBGG8B7hLJkx1W6ZMe9uY8nGM2TnlLDm53H0ON/xs//V21C7HY7yV9MGW/kr7UNH+8/ZGrIXf+rnu3nni91Wx0BwG38W/u9DOnVobrWuqAaU7j97bTh0Mptrn1xOamZxnTb4eHvy4SsjeP7BiVZzWjEiwvoiElau/4WHh/PK4ml1fhfVkF4YqSELuw6m8+Dr6zmTVMCYB/vx/kvjHebtSj5U3Uf7XdqBVZ9/pcpHa7ehvvK35CB6HBHVkEj83g/8yc6DGVZ96MLz2rN86Z824+vp46D+OALw9txdTPtyj00fXWDHR0V9SO9jsQhGasjCzHl7+ezXQ6RlFfPTx49wU//XHeYtGl/P48DOg2k89PqG/3z0at5/aZzi/C3Utw/pNZ+16AfUaUiP+Dl5pfS8cwEJqYVWx/HIu/vy5Vsv2czBFXxIxEeV+pC7zoXAsQ8pwSknxBMnVk5SU1NTueiii5g1axYA9913n6btWR6NrH4y7IhpY3uzeXcKyemVj1wm/PfugH8zL+69qYvDk+Hq+Pv7q8i2JkGDH9JcF8CvmRebvxvK0DF/s/yzm/BwdDlR5/hA1RWg2lcTlfLZm/2Z+VJf7n91naKTYWuItkOkDXr0oREaGvtQON8sOsKZpMp3LSxjwNvLkz692ticxFlDVANa2tDj/Fb07BZIxo5kKv5799zShtB2fjwx4kLV2zw8b5XqOhZE+0AUI33oivA2HFx0N7ePXc37L/V1XEHn+CDW/6I+Cu7vQaBdQyLxp429kkfe2Fj1yKJlDAcG+PD6U5eq2pYRPjTu4Z58++dRXXzUglYfMtqDwBgNWXj1iUsY+1A497y8jpv6d6z3+CC2D64MbyvkoyB9SAstW/hwy4CO/LzyBEX/rStkGcch7fyIeOYyVdszwof09FEL7upDInMhezh1Ua0pU6Y4c/N2ubBzS35571ou6BRAm8CmvPFxDB3b+/PknRcy82V1RpSVlUVWlrqVqfXEw8MDryaemiZxroJfMy+3zl8UIzQUGNCUvz6/hYsvCKRdkC9vfBxDaDs/RlzXid9naltYqr5ZOvtGbh3YkZC2frRs7s3bc3dxeffWrPnqVvz9vI1Or14x2oeaNPHEq4lbrMNolYbgo6IYoaFbBoTxwct9OS+kOUEtfZj4yQ46Bfvz5sjLeOIO9Re16huLj/bqds5HQ9q6l4/qidE+5NvUC083HsPu7qN6YISGPp80gIdu7Upoez8Cmnvz1me7uKhzSxZ+NETTRa36xt19VE+cpR+X/A6xXlzbN4QjS+8h9kgmeQVlXNY9iBb+6l/EdtZHoCWNB6M01L1LK/YuuIvDcdmkZhTR4/xWtA1qZkguWvD382bppzeRklHEkbhsOrT144LzWjqu2ACRPiQRxSgNPT7iQh4Z2o1dhzIorzBxZXgbmvrYf2TdlejepRX7Frqvj+qJ9CGJKEZoyMvLk6/fHkh2bgn7jmXRqoUPvS4IdKsLpO7uo3rhLP245Amxo4/dqynn4eHBZd3FOk/tR6DDVNzNV1PWGdu0VtYjJFjxB7Y9QoKVB1OB0jbYKqe0DbbyF41fG2dpSGm57l1a0b2LstggrgG9x0D71s1o31r5BLRFF+W6tFVWVEN6Y7SG1OLuPuQK+TckH/Ly8qTvxW2VbfA/XM3H1fqoqA8ZPQas0VB9yFlzCVGM9iFnzGfVaEjv+K0CmjLwSnX7ypV8SIuPKvWhhjoXUopTVpluKFhe4LZ8JsrS+X369Kn3XIaPXc2ST2+s97h60hDaoBZX0pDEPXElDbn7GHb3/LXiShqSuCeupCF3H8funr8Wqi+q5QoakrgftjwI9NGQS94hdjWcdTVC0niQGpKIIjUkEUVqSCKK1JBEFKkhiQjO0k/jfrNfIpFIJBKJRCKRSCSNFnmHWAFyEQmJKFJDElGkhiSiSA1JRJEakogiNSQRoVEtquVqyMc7JKJIDUlEkRqSiCI1JBFFakgiitSQRARn6UeeECtA7dWIt3dDfIGysmH+8NblGpKyQ/knUZgTkxWV9QgJxmv86Bq/GZ0/wOYX5pAX57gNLboEM/Dj5+v8rrQPrLXfGcgrohJRnOVDzhrD7u5DSj0IrPuQaPudgfQhiSgN1YdsjUGj85c+JJHURN4hNhC1VyPiC2BPpj6xT8Tn8v68vWzdncyYd7fx2hMXc15IC7t1zInJcOiIou1bW2Jcz/xz8kr5/PdDrNhylqOncti2J4V+l7Zz+O23vLhkUqMPa46rtA/qa4l1eUVUIopRPmQ2m9m4I4lZPx5g254UZv2wj5H3dKe5n7f9ei7kQ9V99PnIbbz6uGMfrS8PAulDEvfBKB8qLinnx6XH+WXlSfYfz2LZxjPcNjAMT0/7cwnRuYDRPip9SCKpibxDbCCBgYGGxP120REmzt5BSkYxAFG/HWLh2lN88trV3HfL+YbkpIajp3K4+blVnE0tpLzcBMDtz69m2OAwvps2yK0+iC6KURqSNByM0JDZbObel9exNjqR7NxSAF7/ZAdzfj3Euq9vdXhS6QrU9tHPfj3EgtWnmP361dx7s+v7qJ5IH5KIYoSG0rOKGfj4Mk4l5lNcUgHAw69v4MrwNvz1+S14e7v2+rBms5l7XlrLupikOj66/pvb6NShucEZ1i/ShyQiOEs/ru0iLkJBQQEFBQqf3bNDdswyxWXTMouI+HTnuZPhiP4AJKcX8eLMf8nNL1W8rai4YzX+VUvq0tkkL5xJ0al9qurd9+o6TiXmV50MR0X0JzO3hMXrT7N8U7yqbfUacwe+rQPo9sD1qupZEO0DUfTSkKTxYoQP/bTsBH9tO1s1iYuK6E9pmYmTZ/N44LX1quIa4UOpGUW8ac1HM9T7KIj5kNEeBNKHJOLooSE1HgTw+KRNHI7LqToZjoroT25BGdtiU/nge3XzEiN86KdlJ/h7e4JVH73/1XWqc5A+JGnMOEs/Tjkhjo2NJTIykpEjRzJjxgzmzJkDwL///lv13+6Ej48PPj4+mupWN8/iMwcoSTmlqN5XC46QkllU9XdoO7+q/07LKuKnFScU51BsqmD2yaNszEhTXKc6FcX5NOvUE9+wcMV1jp3OISmtsMZvljbk5Jcxc95eVTkkbdlH70mPcmL+RlX1LIj2gSgiGpJIwBgf+uTnA+QXllf9Xd2HTifl1xnj9jDCh75eeIRUGz6amlXEzyp8FMR8yGgPAulDEnG0akirBxUWlbPnSEaN3yzjuKS0gh+WqjuxM8KH9PRRkD4kadw4Sz8eZrNZ99cGJk+ezNSpU5k+fTpjxoxh4cKFPP744wB89913Vf9tYdSoUSQkJOidhjB9+/YFICcnB4CWLVsCEB0dbbde2rDplAX3BCDpj0j8ulxGwOU3k7NrJa36DKtR1jv5AG2XvVFnG7Hpl3ImvzNREf0JbedH315tid5faWAJqYV8OPs7woMOWY3/Dj6E06Tq76i4Y4zuckHVv9U5SAWTqHmXpHr+AGaTiby96yhOOEK7oWMU5Z9RHER0ylWUm33qtCEhtZAJM1ZybegGq/kDDDrkRZv8mtdruj95K4e/XVnjt/TmJjb1KKc2SvvAWvv1RKuGJBILzvYhW2MYYH3CdeSXBVgdwy9Erqdf8DYCfHKt1nUFH3Lkox/N/o4eNnzUmgeBch8Sbb+eSB+SiCLqQ1rnQsXlTdmUNJiSimZWfeiV9/5mSMe1NuOLzgWU+pCzfLSh+JBFPyB9SKINWx4E1jUUGhrK3LlzFW/fKe8Q+/r6EhUVxZ49e0hKSiI2NpaCggLOnj1b9d/+/v5V5dUkXJ/ExMQAEB9f+XhvWFgYABEREXbrPb3l3CIMwXe/Tt7edaSt+pyggffXKdszvCdfP7Okzu8/LT/OM29vZfS0bQAsnn0DI8atASDA35uf3hvDsMGdrMYvmzBZ8SIK4T3CWTJjqs38AbI2/0pJykmrV0Rt5Z+eVcyl9ywiMa3QahsevPVyfp7xks28VoyIqLuQhJVrN+Hh4byyeFqd35X2gbX264lWDUkkFpztQ7bGMMDQ0X+xYstZq2O4Y/tAli2cZ3NRGFfwof8tO86zU2376M8zxjB0kHUftepBoNiHRNuvJ9KHJKKI+pDWuVBFhYmuQ//gdGK+1XHc9+IuLPnJun+B+FxAqQ85y0cbig9Z9APShyTasOVBoI+GnHJCPHHiRABSU1O56KKLmDVrFkCN/3Ynqp+8q6W6eXoFtFFc796buvBW1C5OxOcBlXczLHRo68dtA8NsVa2D5Spg7auBSgka/JDqOm0CfRlweTsWrTtT9Q6xpQ3tWzfjrefUf5/g8LxVqutYEO0DUUQ0JJGAMT40beyVxBxIJy2r8h1cyxhu6uPJjf1CHa6QWh0jfOi+myt99OTZuj4a0s6PW69R7qMWtPqQ0R4E0ock4mjVkFYPatLEk0eGduPj/+2noKjy7qdlHAe1bMrU0VeoysMIH9LTRy1IH5I0VpylH6euMj1lyhRnbr7eyMrKAiAoKEh1XS3mCeDj3YS/Pr+F4eNWk5xexJh3t9G6VVM6tvNn6ZwbHX5qwBX44d3B3PvyOnYcTCc1s4jXPormvA7N+fSNq7moSyuj06tXRDQkkYAxPnR5jzbMfv1qXpsVQ2ZOCWMjt9OhTTMGXN6eLyZdo2mb9YmPdxP+/uIWho9dTXKGe/qonkgfkoiiVUNaPQhg6pgrSMkoZMXms6RmFvHSzH/p2N6P1564hJsHdNS83fri8h5t+GTC1Uz4uKaPXnOFe/io3kgfkojgLP3Izy4pwKiPiHcNC2D/wruI2Z/OqcQ8uoUFcEW48iurRuPb1Iulc27idGIe/+5Lo1ULH67rE+Lyn0hwBvJD9BJRjNLQA7d25a4bOrPu3yTyCsvof2k7Qtu7zxX+rmEB7F/kvj6qJ9KHJKIYoSFPTw++mjKQtMwiNu1Mxse7CUOuCsGvmftMYR+8rSt33+i+Pqon0ockIjhLP+7jJgZi5EfEPTw86HtxW/pe3LbeY+vFeSEt3OJ7pc5EfoheIoqRGvLxbsIt17j+nRhbNAQf1QPpQxJRjNRQ26Bm3H1jl3qPqxfu7qN6IX1IIoKz9CNPiBWg9mpEmIqLfmrKKsUjJBilS4d7hATX+c3o/AFadKmbl5pySvvAWvudgbwiKhHFWT7krDHs7j6k1INslRVtvzOQPiQRpaH6kK0xaHT+0ockkpo4Sz9O+exSQ8GyotmJE5XfquzatSsAffr0MSwniXshNSQRRWpIIorUkEQUqSGJCNVXmZYakmjBlgeBPhqSJ8QSiUQikUgkEolEImmUNL7VjSQSiUQikUgkEolEIkGeEEskEolEIpFIJBKJpJEiT4glEolEIpFIJBKJRNIokSfEEolEIpFIJBKJRCJplMgTYolEIpFIJBKJRCKRNErkCbFEIpFIJBKJRCKRSBol8oRYIpFIJBKJRCKRSCSNEnlCLJFIJBKJRCKRSCSSRok8IZZIJBKJRCKRSCQSSaNEnhBLJBKJRCKRSCQSiaRRIk+IJRKJRCKRSCQSiUTSKPl/q9CiF8VyTC4AAAAASUVORK5CYII=", "text/plain": [ - "\"Output" + "
" ] }, "execution_count": 3, @@ -136,8 +139,7 @@ "t_steps = 6\n", "\n", "# Load the circuit for the kicked Ising model\n", - "with open(\"ki_12q.qpy\", \"rb\") as file:\n", - " small_circuit = qpy.load(file)[0]\n", + "small_circuit = load(\"ki_12q.qasm\")\n", "\n", "# Draw the circuit\n", "small_circuit.draw(\"mpl\", scale=0.25, fold=-1)" @@ -153,7 +155,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "a9a87f6c-176d-4c85-85e5-6751aea0c90b", "metadata": {}, "outputs": [], @@ -174,7 +176,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "b2608df1-b4e4-4143-bea5-a65ab8045fd4", "metadata": {}, "outputs": [ @@ -203,7 +205,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "id": "fc48eb54-148b-4b0d-8424-a135cb92039e", "metadata": {}, "outputs": [], @@ -222,22 +224,32 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "id": "6c9f80a8-4a65-4daa-94bb-a98edd6a1989", "metadata": {}, "outputs": [], "source": [ "# Set IBM Quantum credentials and backend configuration\n", "personal_token = os.environ.get(\n", - " \"QISKIT_IBM_TOKEN\", \"your_personal_token\"\n", + " \"QISKIT_IBM_TOKEN\", \"\"\n", ") # Replace with your personal token or set the environment variable\n", - "channel = \"ibm_cloud\"\n", + "channel = \"ibm_quantum_platform\"\n", "crn = \"your_crn\" # Replace with the Cloud Resource Name (CRN)\n", "\n", "# Select the QPU backend\n", "backend_name = \"ibm_qpu_name\" # Replace with your desired backend's name" ] }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "crn=\"crn:v1:bluemix:public:quantum-computing:us-east:a/1c9abec0265246a48a68050a382dba14:0e7a19c1-372c-42a8-8689-cc03f07a46dd::\"\n", + "backend_name = \"ibm_boston\"" + ] + }, { "cell_type": "markdown", "id": "10df1803-5245-42b2-8eea-c0773cd655b6", @@ -248,7 +260,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "id": "2473b284-108f-45fe-a8d8-3aed584137f6", "metadata": {}, "outputs": [], @@ -267,12 +279,12 @@ "id": "3c732819-4dca-421c-bc2b-45ff5a5912db", "metadata": {}, "source": [ - "We can now run an experiment on the kicked Ising circuit with error mitigation provided by TEM. Using default settings, TEM can be run in a simple way with an expected QPU run time of around 5 minutes depending on the chosen QPU:" + "We can now run an experiment on the kicked Ising circuit with error mitigation provided by TEM. Using default settings, TEM can be run in a simple way with an expected QPU run time of around 2.5 minutes depending on the chosen QPU:" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "id": "b826e025-f36b-4fb5-90bd-e1ef36f5c1b2", "metadata": {}, "outputs": [], @@ -298,7 +310,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "id": "05e202ff-5b86-4a93-a693-86fbb1cf3e02", "metadata": {}, "outputs": [ @@ -319,12 +331,12 @@ "id": "8e427c75-72fb-4a97-b723-97d695a692d3", "metadata": {}, "source": [ - "We can now check the raw results and the mitigated ones. The `tem_evs` defined below are the expectation values of the requested observables, in this case just one observable, $\\langle \\hat X_{n=t}\\rangle$, and `tem_std` are the corresponding standard deviations." + "When status is `DONE`, we can check the raw results and the mitigated ones. The `tem_evs` defined below are the expectation values of the requested observables, in this case just one observable, $\\langle \\hat X_{n=t}\\rangle$, and `tem_std` are the corresponding standard deviations." ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "id": "3ca34069-1363-4e37-9718-91639d817a82", "metadata": {}, "outputs": [ @@ -332,7 +344,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "TEM Result: 0.9233971005387331 ± 0.018229900759739535\n" + "TEM Result: 1.031 ± 0.046\n" ] } ], @@ -344,7 +356,7 @@ "tem_evs = tem_results.data.evs[0]\n", "tem_std = tem_results.data.stds[0]\n", "\n", - "print(f\"TEM Result: {tem_evs} ± {tem_std}\")" + "print(f\"TEM Result: {tem_evs:.3f} ± {tem_std:.3f}\")" ] }, { @@ -357,7 +369,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "id": "b05818d6-b680-483e-9084-f3fd2de067ab", "metadata": {}, "outputs": [ @@ -365,7 +377,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "TEM Runtime: 302.0 seconds\n" + "TEM Runtime: 155.0 seconds\n" ] } ], @@ -415,13 +427,13 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "id": "a2e9a032-91cb-4a18-9a00-00a149e60459", "metadata": {}, "outputs": [], "source": [ "options = {\n", - " \"default_shots\": 20_000,\n", + " \"default_shots\": 10_000,\n", " \"tem_max_bond_dimension\": 512,\n", " \"tem_compression_cutoff\": 1e-16,\n", " \"compute_shadows_bias_from_observable\": True, # This option helps optimizing the measurement\n", @@ -440,18 +452,19 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 29, "id": "30591014-3bc6-4548-ba0d-dc5cc22e9dcc", "metadata": {}, "outputs": [], "source": [ "nl_options = {\n", - " \"num_randomizations\": 64,\n", + " \"num_randomizations\": 32,\n", " \"max_layers_to_learn\": 2,\n", - " \"shots_per_randomization\": 256,\n", - " \"layer_pair_depths\": [0, 1, 2, 4, 16, 32, 64],\n", + " \"shots_per_randomization\": 128,\n", + " \"layer_pair_depths\": [0, 1, 2, 4, 16, 32],\n", "}\n", "\n", + "# add noise learning options to the overall options\n", "options |= nl_options" ] }, @@ -460,12 +473,12 @@ "id": "216ad12c-8c70-4073-8515-b07fd57f74d4", "metadata": {}, "source": [ - "Let's try re-running the experiment with these custom options specifically tuned to the circuit at hand. The expected runtime is around 15 QPU minutes." + "Let's try re-running the experiment with these custom options specifically tuned to the circuit at hand. The expected runtime is around 4 QPU minutes." ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 30, "id": "ebce8e14-433f-4858-96c6-9d90ff0353af", "metadata": {}, "outputs": [], @@ -480,12 +493,12 @@ "id": "bd8d2c12-c9da-4ac3-97c0-d53be1455091", "metadata": {}, "source": [ - "If the job is not set as private, we can save the job id and recover the result at a later point:" + "If the job is not set as private, we can recover the result at a later point. To do so, save the job ID printed here and use `tem_job_custom = catalog.get_job_by_id(\"your-job-id\")`." ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 31, "id": "0f99101b-9e72-45c8-8b00-9f3a257b8b3b", "metadata": {}, "outputs": [ @@ -493,7 +506,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Job ID: 01044411-d334-4d9e-9ea8-8e9b3cdc5c85\n" + "Job ID: 1ba10094-a541-457a-9287-dbd49306d12d\n" ] } ], @@ -504,18 +517,7 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "22729b9e-be9c-4ded-b214-49f2b202577c", - "metadata": {}, - "outputs": [], - "source": [ - "# precomputed run on ibm_marrakesh, TEM Result: 0.951 ± 0.013\n", - "# tem_job_custom = catalog.get_job_by_id(\"01044411-d334-4d9e-9ea8-8e9b3cdc5c85\")" - ] - }, - { - "cell_type": "code", - "execution_count": 19, + "execution_count": 33, "id": "0c751dac-e856-4371-aaed-f67aca31061f", "metadata": {}, "outputs": [ @@ -523,7 +525,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "TEM Result: 0.951 ± 0.013\n" + "TEM Result: 0.956 ± 0.018\n" ] } ], @@ -545,7 +547,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 34, "id": "dd189b2d-860b-4b9a-88c2-7e5c62b1f160", "metadata": {}, "outputs": [ @@ -553,7 +555,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Unmitigated Result: 0.896 ± 0.011\n", + "Unmitigated Result: 0.894 ± 0.015\n", "Exact Result: 1.0\n" ] } @@ -572,14 +574,15 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 35, "id": "c3a2168d-98df-491e-a1f8-05de5684ab96", "metadata": {}, "outputs": [ { "data": { + "image/png": "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ouHDh2vFihWqrq6WJD377LNq27atduzYoVGjRmnKlCmN1igAAIAjHA43o0ePVkBAgCZNmqQnnnhCt956qyRp3LhxGjduXKM1CAAAYITDu6WOHj2qKVOmaMOGDbr99ts1aNAg/fGPf9SFCxcasz8AAABDHA43QUFBSkxM1OHDh7V161YFBwfrmWeeUYcOHfT000/r22+/bcw+AQAAHNKgyy8MGTJE7777rvLz8/X6669r3759uvPOOxUaGurs/gAAAAxp0OUXrmjdurXuvfde/fjjjzpw4ID+9re/OasvAACABmnQzM2FCxf03nvvafDgwbrtttu0YcMGxcfH69ixY05uDwAAwBhDMzfffPON0tLSlJ6eroqKCo0dO1Zbt27VkCFDGqs/AAAAQxwON7169dLBgwfVt29fJScna/z48fLz82vM3gAAAAxzONxER0dr/fr1LBoGAADNmsPh5q233mrMPgAAAJyiQQuKAQAAmiuXh5vly5crODhY3t7eioiI0K5du+qtP3v2rJ599ll16NBBXl5euv3227Vp06Ym6hYAADR313Sem2u1ceNGxcfHKzU1VREREVq6dKmGDh2qgwcPqn379jXqKyoqdN9996l9+/b68MMP1alTJ/34449q06ZN0zcPAACaJZeGm5SUFE2ePFlxcXGSpNTUVH322WdKS0vTCy+8UKM+LS1NZ86c0Y4dO9SiRQtJUnBwcFO2DAAAmrkGhZuMjAxlZGTo1KlTqq6utnssLS3NoeeoqKjQ7t27lZCQYBtzc3NTdHS0srKyat3m008/VWRkpJ599ln96U9/Urt27TR+/HjNnj1b7u7uDXkrAADAZAyHm/nz52vBggUKDw9Xhw4dZLFYGvTCRUVFqqqqUkBAgN14QECADhw4UOs2R44c0X//93/rscce06ZNm/TDDz9o6tSpqqysVFJSUq3blJeXq7y83Ha/pKSkQf0CAIDrg+Fwk5qaqrVr12rChAmN0U+9qqur1b59e61YsULu7u7q37+/Tp48qddff73OcJOcnKz58+c3cacAAMBVDB8tVVFRoaioqGt+YX9/f7m7u6uwsNBuvLCwUIGBgbVu06FDB91+++12u6B69uypgoICVVRU1LpNQkKCiouLbbfjx49fc+8AAKD5MhxunnrqKa1bt+6aX9jT01P9+/dXRkaGbay6uloZGRmKjIys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u7u7CgsL7cYLCwsVGBhY77aLFy/WokWLtHXrVoWEhNRZ5+XlJS8vL6f0CwAAmj+Xztx4enqqf//+douBrywOjoyMrHO71157TQsXLtTmzZsVHh7eFK0CAIDrhEtnbiQpPj5eEydOVHh4uAYMGKClS5eqrKxMcXFxkqTY2Fh16tRJycnJkqR///d/V2JiotatW6fg4GDb2pxWrVqpVatWLnsfAACgeXB5uImJidHp06eVmJiogoIChYWFafPmzbZFxnl5eXJzuzrB9M4776iiokIPP/yw3fMkJSVp3rx5Tdk6AABohlwebiTpd7/7nX73u9/V+lhmZqbd/WPHjjV+QwAA4Lp1XR8tBQAA8M8INwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFQINwAAwFSaRbhZvny5goOD5e3trYiICO3atave+g8++EA9evSQt7e3+vTpo02bNjVRpwAAoLlzebjZuHGj4uPjlZSUpOzsbIWGhmro0KE6depUrfU7duzQo48+qieffFJ79uzR6NGjNXr0aO3fv7+JOwcAAM2Ry8NNSkqKJk+erLi4OPXq1Uupqalq2bKl0tLSaq1/8803NWzYMP3bv/2bevbsqYULF6pfv35atmxZE3cOAACaIw9XvnhFRYV2796thIQE25ibm5uio6OVlZVV6zZZWVmKj4+3Gxs6dKg++eSTWuvLy8tVXl5uu19cXCxJKikpucbum9bFixdd3QLgVNfb36AkqazM1R0ATnO9/Q1e6ddqtf5irUvDTVFRkaqqqhQQEGA3HhAQoAMHDtS6TUFB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qieeeMLV7aAZI9ygyTzzzDM6dOiQpk2bptzcXB08eFApKSlav369nn/++SbtJTg4WEePHlVOTo6KiorsAswV48ePV3V1tX7729/q73//uz7//HMtXrxY0tWZodtuu03fffedPv/8cx06dEhz586tEYCCg4Nt77eoqEiVlZV67LHH5O/vrwcffFBfffWVjh49qszMTE2bNk0nTpyQJE2fPl2LFi3SJ598ogMHDmjq1Kk6e/Zs4/5iABf46aefVFBQYHe7ePFirbVr165VUVGRevTo0cRd4npCuEGTueWWW/Tll1/qwIEDio6OVkREhNLT0/XBBx9o2LBhTdrLQw89pGHDhmnIkCFq166d1q9fX6PG19dXf/7zn5WTk6OwsDC99NJLSkxMlCTbOpwpU6Zo7NixiomJUUREhH766SdNnTrV7nkmT56s7t27Kzw8XO3atdP27dvVsmVLffnll+rcubPGjh2rnj176sknn9TFixfl6+srSXr++ec1YcIETZw40bbLa8yYMY38mwGaXnR0tDp06GB3q+tM4T4+PnbnwAFqY7GyOhFw2Pvvv6+4uDgVFxc7dFJAAEDTYzUWUI/33ntPt9xyizp16qS9e/dq9uzZeuSRRwg2ANCMEW6AehQUFCgxMVEFBQXq0KGDfvOb3+iVV15xdVsAgHqwWwoAAJgKC4oBAICpEG4AAICpEG4AAICpEG4AAICpEG4AAICpEG4AAICpEG4AAICpEG4AAICpEG4AAICp/B9L+rak2pXfTQAAAABJRU5ErkJggg==", "text/plain": [ - "\"Output" + "
" ] }, "metadata": {}, @@ -610,7 +613,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 27, "id": "09cf2226-c48c-483b-aa49-80186229ae95", "metadata": {}, "outputs": [ @@ -618,8 +621,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "QPU Runtime: 869.0 seconds\n", - "Classical Runtime: 448.875927 seconds\n" + "QPU Runtime: 342.0 seconds\n", + "Classical Runtime: 107.632604 seconds\n" ] } ], @@ -656,10 +659,22 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 4, "id": "f7ea1d3c-d745-48cc-8922-b070b2b5fd44", "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'xt_observable' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[4], line 11\u001b[0m\n\u001b[1;32m 7\u001b[0m circuit \u001b[38;5;241m=\u001b[39m load(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mki_30q.qasm\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 10\u001b[0m \u001b[38;5;66;03m# Build the observable for the kicked Ising model\u001b[39;00m\n\u001b[0;32m---> 11\u001b[0m observable \u001b[38;5;241m=\u001b[39m \u001b[43mxt_observable\u001b[49m(n_qubits\u001b[38;5;241m=\u001b[39mn_qubits, t_steps\u001b[38;5;241m=\u001b[39mt_steps)\n\u001b[1;32m 13\u001b[0m \u001b[38;5;66;03m# Collect the input PUBs, in this case composed of a single circuit and observable\u001b[39;00m\n\u001b[1;32m 14\u001b[0m pubs \u001b[38;5;241m=\u001b[39m [(circuit, [observable])]\n", + "\u001b[0;31mNameError\u001b[0m: name 'xt_observable' is not defined" + ] + } + ], "source": [ "# Kicked Ising model parameters\n", "n_qubits = 30\n", @@ -667,8 +682,8 @@ "h = 0.0\n", "\n", "# Load the circuit for the kicked Ising model\n", - "with open(\"ki_30q.qpy\", \"rb\") as file:\n", - " circuit = qpy.load(file)[0]\n", + "circuit = load(\"ki_30q.qasm\")\n", + "\n", "\n", "# Build the observable for the kicked Ising model\n", "observable = xt_observable(n_qubits=n_qubits, t_steps=t_steps)\n", @@ -687,7 +702,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 49, "id": "64882a71-3027-4e25-b714-9e9d6b13cd49", "metadata": {}, "outputs": [], @@ -710,12 +725,12 @@ "id": "4ba36257-1974-4274-b04c-6daf3afe9d72", "metadata": {}, "source": [ - "Finally, let's run the experiment, get the result and visualize it. This will take around 4 QPU minutes." + "Finally, let's run the experiment, get the result and visualize it. This will take around 3.5 QPU minutes." ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 50, "id": "6faf7f80-dec9-49d2-80e7-d4e6fdea5100", "metadata": {}, "outputs": [], @@ -725,7 +740,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 51, "id": "333b2335-b480-4bf9-854c-5155eedee900", "metadata": {}, "outputs": [ @@ -733,7 +748,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Job ID: acf56fc1-aa95-437c-929f-f5fac0746c33\n" + "Job ID: 9f3f190f-f4b0-4dcb-bb83-5f71f37d0d77\n" ] } ], @@ -744,18 +759,7 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "02115e11-4638-433a-b825-8891173b67ed", - "metadata": {}, - "outputs": [], - "source": [ - "# precomputed run on ibm_marrakesh, TEM result: 0.937 ± 0.032\n", - "# tem_job_large = catalog.get_job_by_id(\"acf56fc1-aa95-437c-929f-f5fac0746c33\")" - ] - }, - { - "cell_type": "code", - "execution_count": 28, + "execution_count": 53, "id": "a04dd421-a212-473c-a8a9-4c8edcfc3667", "metadata": {}, "outputs": [ @@ -763,9 +767,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "TEM Result: 0.937 ± 0.032\n", - "QPU Runtime: 244.0 seconds\n", - "Classical Runtime: 423.330046 seconds\n" + "TEM Result: 0.794 ± 0.026\n", + "QPU Runtime: 203.0 seconds\n", + "Classical Runtime: 251.71805499999996 seconds\n" ] } ], @@ -797,14 +801,15 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 54, "id": "24894c44-e399-4b9d-a3ff-38a28ff32ece", "metadata": {}, "outputs": [ { "data": { + "image/png": "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7nZQgxFuUG1efvllHT9+XJMmTdKhQ4d07NgxJSYmau3atXrttdeqtZeQkBCdOnVK6enpysnJsQswN40cOVKlpaX63e9+p7///e/asmWL5s+fL+nWzNCDDz6o77//Xlu2bNHx48c1c+bMMgEoJCTE9npzcnJUXFysUaNGKSAgQE899ZS+/fZbnTp1Sjt27NCkSZN09uxZSdLkyZM1b948bdy4UUePHtWECRN06dKlqn1jADf4+eeflZWVZbdcu3at3NrVq1crJydHbdu2reYucSch3KDaPPDAA/rmm2909OhRRUREqHv37kpOTtZnn32m/v37V2svTz/9tPr376++ffuqYcOGWrt2bZkaPz8//fnPf1Z6errCwsL05ptvKi4uTpJs++GMHz9ew4cPV2RkpLp3766ff/5ZEyZMsHuccePGqU2bNgoPD1fDhg21a9cu1alTR998842aNWum4cOHq127dnrhhRd07do1+fn5SZJee+01jR49WmPGjLFt8ho2bFgVvzNA9YuIiFDjxo3tlorOFO7r62t3DhygPBYreycCDvv0008VHR2t3Nxch04KCACofuyNBVTik08+0QMPPKCmTZvq4MGDmj59up555hmCDQDUYIQboBJZWVmKi4tTVlaWGjdurN/+9rd6++233d0WAKASbJYCAACmwg7FAADAVAg3AADAVAg3AADAVAg3AADAVAg3AADAVAg3AADAVAg3AADAVAg3AADAVAg3AADAVP4PWmu5KzcO84AAAAAASUVORK5CYII=", "text/plain": [ - "\"Output" + "
" ] }, "metadata": {}, @@ -834,7 +839,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": ".venv", "language": "python", "name": "python3" }, @@ -848,7 +853,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3" + "version": "3.12.3" } }, "nbformat": 4,