diff --git a/.gitignore b/.gitignore
index b6e4761..af48cb0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -127,3 +127,6 @@ dmypy.json
# Pyre type checker
.pyre/
+
+./DS_Store
+**/.DS_Store
\ No newline at end of file
diff --git a/qbraid_lab/quantum_jobs/aws_iqm_quantum_jobs.ipynb b/qbraid_lab/quantum_jobs/aws_iqm_quantum_jobs.ipynb
index 0d30558..57f31cd 100644
--- a/qbraid_lab/quantum_jobs/aws_iqm_quantum_jobs.ipynb
+++ b/qbraid_lab/quantum_jobs/aws_iqm_quantum_jobs.ipynb
@@ -20,15 +20,17 @@
"source": [
"
qBraid instructions
\n",
"\n",
- "If you are not planning to submit jobs to quantum computers, this notebook should work well with the `Python [Default]` kernel. If you want to submit jobs to quantum computers, make sure that you have installed the amazon braket environment on qBraid ([installation instructions](https://qbraid-qbraid.readthedocs-hosted.com/en/latest/lab/environments.html#install-environment)) and have selected the `Python [Braket]` kernel. (You can switch kernels by going to the Menu Bar → Kernel → Change Kernel).\n",
+ "If you are not planning to submit jobs to quantum computers, this notebook should work well with the `Python [Default]` kernel. If you want to submit jobs to quantum computers, make sure that you have installed the amazon braket environment on qBraid ([installation instructions](https://qbraid-qbraid.readthedocs-hosted.com/en/latest/lab/environments.html#install-environment)) and have selected the `Python [Braket]` kernel. (You can switch kernels by going to the Menu Bar → Kernel → Change Kernel). You would want to use the amazon-braket-sdk latest release for it. Check our environments.\n",
"\n",
"If you do not have AWS credentials for submitting your quantum jobs, you will need qBraid Credits. If you have qBraid Credits, you can run the following line of code to submit quantum jobs through qBraid:"
]
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {},
+ "execution_count": 1,
+ "metadata": {
+ "tags": []
+ },
"outputs": [],
"source": [
"#!qbraid jobs enable amazon_braket #You only need to run this line once after you install the environment"
@@ -87,52 +89,9 @@
"Gate set supported by SDK:\n",
" ['CCNot', 'CNot', 'CPhaseShift', 'CPhaseShift00', 'CPhaseShift01', 'CPhaseShift10', 'CSwap', 'CV', 'CY', 'CZ', 'ECR', 'GPhase', 'GPi', 'GPi2', 'H', 'I', 'ISwap', 'MS', 'PRx', 'PSwap', 'PhaseShift', 'PulseGate', 'Rx', 'Ry', 'Rz', 'S', 'Si', 'Swap', 'T', 'Ti', 'U', 'Unitary', 'V', 'Vi', 'X', 'XX', 'XY', 'Y', 'YY', 'Z', 'ZZ']\n",
"\n",
- "\n"
- ]
- },
- {
- "ename": "ClientError",
- "evalue": "An error occurred (UnrecognizedClientException) when calling the GetDevice operation: The security token included in the request is invalid.",
- "output_type": "error",
- "traceback": [
- "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
- "\u001b[0;31mClientError\u001b[0m Traceback (most recent call last)",
- " \u001b[0;31m[... skipping hidden 1 frame]\u001b[0m\n",
- "Cell \u001b[0;32mIn[3], line 8\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;66;03m# the IQM Garnet device\u001b[39;00m\n\u001b[0;32m----> 8\u001b[0m device \u001b[38;5;241m=\u001b[39m \u001b[43mAwsDevice\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43marn:aws:braket:eu-north-1::device/qpu/iqm/Garnet\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 9\u001b[0m supported_gates \u001b[38;5;241m=\u001b[39m device\u001b[38;5;241m.\u001b[39mproperties\u001b[38;5;241m.\u001b[39maction[\n\u001b[1;32m 10\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mbraket.ir.openqasm.program\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 11\u001b[0m ]\u001b[38;5;241m.\u001b[39msupportedOperations\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/braket/aws/aws_device.py:113\u001b[0m, in \u001b[0;36mAwsDevice.__init__\u001b[0;34m(self, arn, aws_session, noise_model)\u001b[0m\n\u001b[1;32m 112\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_type \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m--> 113\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_aws_session \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_session_and_initialize\u001b[49m\u001b[43m(\u001b[49m\u001b[43maws_session\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mAwsSession\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 114\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_ports \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/braket/aws/aws_device.py:337\u001b[0m, in \u001b[0;36mAwsDevice._get_session_and_initialize\u001b[0;34m(self, session)\u001b[0m\n\u001b[1;32m 335\u001b[0m device_region \u001b[38;5;241m=\u001b[39m AwsDevice\u001b[38;5;241m.\u001b[39mget_device_region(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_arn)\n\u001b[1;32m 336\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m (\n\u001b[0;32m--> 337\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_regional_device_session\u001b[49m\u001b[43m(\u001b[49m\u001b[43msession\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 338\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m device_region\n\u001b[1;32m 339\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_non_regional_device_session(session)\n\u001b[1;32m 340\u001b[0m )\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/braket/aws/aws_device.py:353\u001b[0m, in \u001b[0;36mAwsDevice._get_regional_device_session\u001b[0;34m(self, session)\u001b[0m\n\u001b[1;32m 352\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m ClientError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m--> 353\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m (\n\u001b[1;32m 354\u001b[0m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_arn\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m not found\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 355\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m e\u001b[38;5;241m.\u001b[39mresponse[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mError\u001b[39m\u001b[38;5;124m\"\u001b[39m][\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCode\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mResourceNotFoundException\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 356\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m e\n\u001b[1;32m 357\u001b[0m ) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01me\u001b[39;00m\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/braket/aws/aws_device.py:350\u001b[0m, in \u001b[0;36mAwsDevice._get_regional_device_session\u001b[0;34m(self, session)\u001b[0m\n\u001b[1;32m 349\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 350\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_populate_properties\u001b[49m\u001b[43m(\u001b[49m\u001b[43mregion_session\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 351\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m region_session\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/braket/aws/aws_device.py:381\u001b[0m, in \u001b[0;36mAwsDevice._populate_properties\u001b[0;34m(self, session)\u001b[0m\n\u001b[1;32m 380\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_populate_properties\u001b[39m(\u001b[38;5;28mself\u001b[39m, session: AwsSession) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 381\u001b[0m metadata \u001b[38;5;241m=\u001b[39m \u001b[43msession\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_device\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_arn\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 382\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_name \u001b[38;5;241m=\u001b[39m metadata\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdeviceName\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/braket/aws/aws_session.py:634\u001b[0m, in \u001b[0;36mAwsSession.get_device\u001b[0;34m(self, arn)\u001b[0m\n\u001b[1;32m 626\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Calls the Amazon Braket `get_device` API to retrieve device metadata.\u001b[39;00m\n\u001b[1;32m 627\u001b[0m \n\u001b[1;32m 628\u001b[0m \u001b[38;5;124;03mArgs:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 632\u001b[0m \u001b[38;5;124;03m dict[str, Any]: The response from the Amazon Braket `GetDevice` operation.\u001b[39;00m\n\u001b[1;32m 633\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m--> 634\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbraket_client\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_device\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdeviceArn\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43marn\u001b[49m\u001b[43m)\u001b[49m\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/botocore/client.py:565\u001b[0m, in \u001b[0;36mClientCreator._create_api_method.._api_call\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 564\u001b[0m \u001b[38;5;66;03m# The \"self\" in this scope is referring to the BaseClient.\u001b[39;00m\n\u001b[0;32m--> 565\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_make_api_call\u001b[49m\u001b[43m(\u001b[49m\u001b[43moperation_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/botocore/client.py:1021\u001b[0m, in \u001b[0;36mBaseClient._make_api_call\u001b[0;34m(self, operation_name, api_params)\u001b[0m\n\u001b[1;32m 1020\u001b[0m error_class \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mexceptions\u001b[38;5;241m.\u001b[39mfrom_code(error_code)\n\u001b[0;32m-> 1021\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m error_class(parsed_response, operation_name)\n\u001b[1;32m 1022\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n",
- "\u001b[0;31mClientError\u001b[0m: An error occurred (UnrecognizedClientException) when calling the GetDevice operation: The security token included in the request is invalid.",
- "\nThe above exception was the direct cause of the following exception:\n",
- "\u001b[0;31mClientError\u001b[0m Traceback (most recent call last)",
- " \u001b[0;31m[... skipping hidden 1 frame]\u001b[0m\n",
- "Cell \u001b[0;32mIn[3], line 8\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;66;03m# the IQM Garnet device\u001b[39;00m\n\u001b[0;32m----> 8\u001b[0m device \u001b[38;5;241m=\u001b[39m \u001b[43mAwsDevice\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43marn:aws:braket:eu-north-1::device/qpu/iqm/Garnet\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 9\u001b[0m supported_gates \u001b[38;5;241m=\u001b[39m device\u001b[38;5;241m.\u001b[39mproperties\u001b[38;5;241m.\u001b[39maction[\n\u001b[1;32m 10\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mbraket.ir.openqasm.program\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 11\u001b[0m ]\u001b[38;5;241m.\u001b[39msupportedOperations\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/braket/aws/aws_device.py:113\u001b[0m, in \u001b[0;36mAwsDevice.__init__\u001b[0;34m(self, arn, aws_session, noise_model)\u001b[0m\n\u001b[1;32m 112\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_type \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m--> 113\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_aws_session \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_session_and_initialize\u001b[49m\u001b[43m(\u001b[49m\u001b[43maws_session\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mAwsSession\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 114\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_ports \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/braket/aws/aws_device.py:337\u001b[0m, in \u001b[0;36mAwsDevice._get_session_and_initialize\u001b[0;34m(self, session)\u001b[0m\n\u001b[1;32m 335\u001b[0m device_region \u001b[38;5;241m=\u001b[39m AwsDevice\u001b[38;5;241m.\u001b[39mget_device_region(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_arn)\n\u001b[1;32m 336\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m (\n\u001b[0;32m--> 337\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_regional_device_session\u001b[49m\u001b[43m(\u001b[49m\u001b[43msession\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 338\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m device_region\n\u001b[1;32m 339\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_non_regional_device_session(session)\n\u001b[1;32m 340\u001b[0m )\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/braket/aws/aws_device.py:353\u001b[0m, in \u001b[0;36mAwsDevice._get_regional_device_session\u001b[0;34m(self, session)\u001b[0m\n\u001b[1;32m 352\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m ClientError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m--> 353\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m (\n\u001b[1;32m 354\u001b[0m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_arn\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m not found\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 355\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m e\u001b[38;5;241m.\u001b[39mresponse[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mError\u001b[39m\u001b[38;5;124m\"\u001b[39m][\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCode\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mResourceNotFoundException\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 356\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m e\n\u001b[1;32m 357\u001b[0m ) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01me\u001b[39;00m\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/braket/aws/aws_device.py:350\u001b[0m, in \u001b[0;36mAwsDevice._get_regional_device_session\u001b[0;34m(self, session)\u001b[0m\n\u001b[1;32m 349\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 350\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_populate_properties\u001b[49m\u001b[43m(\u001b[49m\u001b[43mregion_session\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 351\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m region_session\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/braket/aws/aws_device.py:381\u001b[0m, in \u001b[0;36mAwsDevice._populate_properties\u001b[0;34m(self, session)\u001b[0m\n\u001b[1;32m 380\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_populate_properties\u001b[39m(\u001b[38;5;28mself\u001b[39m, session: AwsSession) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 381\u001b[0m metadata \u001b[38;5;241m=\u001b[39m \u001b[43msession\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_device\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_arn\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 382\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_name \u001b[38;5;241m=\u001b[39m metadata\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdeviceName\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/braket/aws/aws_session.py:634\u001b[0m, in \u001b[0;36mAwsSession.get_device\u001b[0;34m(self, arn)\u001b[0m\n\u001b[1;32m 626\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Calls the Amazon Braket `get_device` API to retrieve device metadata.\u001b[39;00m\n\u001b[1;32m 627\u001b[0m \n\u001b[1;32m 628\u001b[0m \u001b[38;5;124;03mArgs:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 632\u001b[0m \u001b[38;5;124;03m dict[str, Any]: The response from the Amazon Braket `GetDevice` operation.\u001b[39;00m\n\u001b[1;32m 633\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m--> 634\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbraket_client\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_device\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdeviceArn\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43marn\u001b[49m\u001b[43m)\u001b[49m\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/botocore/client.py:565\u001b[0m, in \u001b[0;36mClientCreator._create_api_method.._api_call\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 564\u001b[0m \u001b[38;5;66;03m# The \"self\" in this scope is referring to the BaseClient.\u001b[39;00m\n\u001b[0;32m--> 565\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_make_api_call\u001b[49m\u001b[43m(\u001b[49m\u001b[43moperation_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/botocore/client.py:1021\u001b[0m, in \u001b[0;36mBaseClient._make_api_call\u001b[0;34m(self, operation_name, api_params)\u001b[0m\n\u001b[1;32m 1020\u001b[0m error_class \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mexceptions\u001b[38;5;241m.\u001b[39mfrom_code(error_code)\n\u001b[0;32m-> 1021\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m error_class(parsed_response, operation_name)\n\u001b[1;32m 1022\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n",
- "\u001b[0;31mClientError\u001b[0m: An error occurred (UnrecognizedClientException) when calling the GetDevice operation: The security token included in the request is invalid.",
- "\nThe above exception was the direct cause of the following exception:\n",
- "\u001b[0;31mClientError\u001b[0m Traceback (most recent call last)",
- "Cell \u001b[0;32mIn[3], line 8\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 7\u001b[0m \u001b[38;5;66;03m# the IQM Garnet device\u001b[39;00m\n\u001b[0;32m----> 8\u001b[0m device \u001b[38;5;241m=\u001b[39m \u001b[43mAwsDevice\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43marn:aws:braket:eu-north-1::device/qpu/iqm/Garnet\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 9\u001b[0m supported_gates \u001b[38;5;241m=\u001b[39m device\u001b[38;5;241m.\u001b[39mproperties\u001b[38;5;241m.\u001b[39maction[\n\u001b[1;32m 10\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mbraket.ir.openqasm.program\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 11\u001b[0m ]\u001b[38;5;241m.\u001b[39msupportedOperations\n\u001b[1;32m 12\u001b[0m \u001b[38;5;66;03m# print the supported gate set\u001b[39;00m\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/braket/aws/aws_device.py:113\u001b[0m, in \u001b[0;36mAwsDevice.__init__\u001b[0;34m(self, arn, aws_session, noise_model)\u001b[0m\n\u001b[1;32m 111\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_poll_interval_seconds \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 112\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_type \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m--> 113\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_aws_session \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_session_and_initialize\u001b[49m\u001b[43m(\u001b[49m\u001b[43maws_session\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mAwsSession\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 114\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_ports \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 115\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_frames \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/braket/aws/aws_device.py:337\u001b[0m, in \u001b[0;36mAwsDevice._get_session_and_initialize\u001b[0;34m(self, session)\u001b[0m\n\u001b[1;32m 334\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_get_session_and_initialize\u001b[39m(\u001b[38;5;28mself\u001b[39m, session: AwsSession) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m AwsSession:\n\u001b[1;32m 335\u001b[0m device_region \u001b[38;5;241m=\u001b[39m AwsDevice\u001b[38;5;241m.\u001b[39mget_device_region(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_arn)\n\u001b[1;32m 336\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m (\n\u001b[0;32m--> 337\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_regional_device_session\u001b[49m\u001b[43m(\u001b[49m\u001b[43msession\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 338\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m device_region\n\u001b[1;32m 339\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_non_regional_device_session(session)\n\u001b[1;32m 340\u001b[0m )\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/braket/aws/aws_device.py:353\u001b[0m, in \u001b[0;36mAwsDevice._get_regional_device_session\u001b[0;34m(self, session)\u001b[0m\n\u001b[1;32m 351\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m region_session\n\u001b[1;32m 352\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m ClientError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m--> 353\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m (\n\u001b[1;32m 354\u001b[0m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_arn\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m not found\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 355\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m e\u001b[38;5;241m.\u001b[39mresponse[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mError\u001b[39m\u001b[38;5;124m\"\u001b[39m][\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCode\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mResourceNotFoundException\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 356\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m e\n\u001b[1;32m 357\u001b[0m ) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01me\u001b[39;00m\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/braket/aws/aws_device.py:350\u001b[0m, in \u001b[0;36mAwsDevice._get_regional_device_session\u001b[0;34m(self, session)\u001b[0m\n\u001b[1;32m 344\u001b[0m region_session \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 345\u001b[0m session\n\u001b[1;32m 346\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m session\u001b[38;5;241m.\u001b[39mregion \u001b[38;5;241m==\u001b[39m device_region\n\u001b[1;32m 347\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m AwsSession\u001b[38;5;241m.\u001b[39mcopy_session(session, device_region)\n\u001b[1;32m 348\u001b[0m )\n\u001b[1;32m 349\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 350\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_populate_properties\u001b[49m\u001b[43m(\u001b[49m\u001b[43mregion_session\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 351\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m region_session\n\u001b[1;32m 352\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m ClientError \u001b[38;5;28;01mas\u001b[39;00m e:\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/braket/aws/aws_device.py:381\u001b[0m, in \u001b[0;36mAwsDevice._populate_properties\u001b[0;34m(self, session)\u001b[0m\n\u001b[1;32m 380\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_populate_properties\u001b[39m(\u001b[38;5;28mself\u001b[39m, session: AwsSession) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 381\u001b[0m metadata \u001b[38;5;241m=\u001b[39m \u001b[43msession\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_device\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_arn\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 382\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_name \u001b[38;5;241m=\u001b[39m metadata\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdeviceName\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 383\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_status \u001b[38;5;241m=\u001b[39m metadata\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdeviceStatus\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/braket/aws/aws_session.py:634\u001b[0m, in \u001b[0;36mAwsSession.get_device\u001b[0;34m(self, arn)\u001b[0m\n\u001b[1;32m 625\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mget_device\u001b[39m(\u001b[38;5;28mself\u001b[39m, arn: \u001b[38;5;28mstr\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any]:\n\u001b[1;32m 626\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Calls the Amazon Braket `get_device` API to retrieve device metadata.\u001b[39;00m\n\u001b[1;32m 627\u001b[0m \n\u001b[1;32m 628\u001b[0m \u001b[38;5;124;03m Args:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 632\u001b[0m \u001b[38;5;124;03m dict[str, Any]: The response from the Amazon Braket `GetDevice` operation.\u001b[39;00m\n\u001b[1;32m 633\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 634\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbraket_client\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_device\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdeviceArn\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43marn\u001b[49m\u001b[43m)\u001b[49m\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/botocore/client.py:565\u001b[0m, in \u001b[0;36mClientCreator._create_api_method.._api_call\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 561\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\n\u001b[1;32m 562\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mpy_operation_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m() only accepts keyword arguments.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 563\u001b[0m )\n\u001b[1;32m 564\u001b[0m \u001b[38;5;66;03m# The \"self\" in this scope is referring to the BaseClient.\u001b[39;00m\n\u001b[0;32m--> 565\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_make_api_call\u001b[49m\u001b[43m(\u001b[49m\u001b[43moperation_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
- "File \u001b[0;32m/opt/.qbraid/environments/qbraid_000000/pyenv/lib/python3.11/site-packages/botocore/client.py:1021\u001b[0m, in \u001b[0;36mBaseClient._make_api_call\u001b[0;34m(self, operation_name, api_params)\u001b[0m\n\u001b[1;32m 1017\u001b[0m error_code \u001b[38;5;241m=\u001b[39m error_info\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mQueryErrorCode\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;129;01mor\u001b[39;00m error_info\u001b[38;5;241m.\u001b[39mget(\n\u001b[1;32m 1018\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCode\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 1019\u001b[0m )\n\u001b[1;32m 1020\u001b[0m error_class \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mexceptions\u001b[38;5;241m.\u001b[39mfrom_code(error_code)\n\u001b[0;32m-> 1021\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m error_class(parsed_response, operation_name)\n\u001b[1;32m 1022\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1023\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m parsed_response\n",
- "\u001b[0;31mClientError\u001b[0m: An error occurred (UnrecognizedClientException) when calling the GetDevice operation: The security token included in the request is invalid."
+ "\n",
+ "Gate set supported by the IQM device:\n",
+ " ['ccnot', 'cnot', 'cphaseshift', 'cphaseshift00', 'cphaseshift01', 'cphaseshift10', 'cswap', 'swap', 'iswap', 'pswap', 'ecr', 'cy', 'cz', 'xy', 'xx', 'yy', 'zz', 'h', 'i', 'phaseshift', 'rx', 'ry', 'rz', 's', 'si', 't', 'ti', 'v', 'vi', 'x', 'y', 'z', 'start_verbatim_box', 'end_verbatim_box']\n"
]
}
],
@@ -187,7 +146,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 4,
"metadata": {
"pycharm": {
"name": "#%%\n"
@@ -202,7 +161,7 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 5,
"metadata": {
"tags": []
},
@@ -247,7 +206,7 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": 6,
"metadata": {
"pycharm": {
"name": "#%%\n"
@@ -262,7 +221,7 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": 7,
"metadata": {
"tags": []
},
@@ -271,7 +230,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "Counter({'11': 509, '00': 491})\n"
+ "Counter({'11': 515, '00': 485})\n"
]
}
],
@@ -286,7 +245,7 @@
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": 8,
"metadata": {
"tags": []
},
@@ -297,13 +256,13 @@
"Text(0, 0.5, 'counts')"
]
},
- "execution_count": 10,
+ "execution_count": 8,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAGwCAYAAABPSaTdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAlWUlEQVR4nO3de3TU9Z3/8dfkDoGZGEhmSEnAtgpEbrtByFjXUhpJaaS1xNZajkSksNLAClMp5JSL1w2yVVA2gnUV6K60lu5iCyoFI8QWBsEoFbFk0QVDTzIJoslwy4Vkfn948v05DShOJpnh4/NxzpzD9zIz7y/njDyd73dmbIFAICAAAABDxUR6AAAAgO5E7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaHGRHiAatLe3q6amRn379pXNZov0OAAA4BIEAgGdOnVKGRkZiom5+Ps3xI6kmpoaZWZmRnoMAAAQguPHj2vgwIEX3U7sSOrbt6+kj/+y7HZ7hKcBAACXwu/3KzMz0/p3/GKIHck6dWW324kdAAAuM591CQoXKAMAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMFpcpAcw3eBFL0R6BCCqHVteEOkRABiOd3YAAIDRIho79957r2w2W9Bt6NCh1vampiYVFxerX79+6tOnjwoLC1VXVxf0GNXV1SooKFDv3r2Vnp6uBQsW6Pz58z19KAAAIEpF/DTWNddco5dfftlajov7/yPNnz9fL7zwgjZt2iSHw6E5c+ZoypQp2r17tySpra1NBQUFcrlc2rNnj2prazVt2jTFx8frX//1X3v8WAAAQPSJeOzExcXJ5XJ1Wt/Y2Kinn35aGzdu1IQJEyRJ69at07Bhw7R3717l5uZq+/bteuedd/Tyyy/L6XRq9OjReuCBB7Rw4ULde++9SkhI6OnDAQAAUSbi1+wcOXJEGRkZ+vKXv6ypU6equrpaklRZWanW1lbl5eVZ+w4dOlRZWVnyer2SJK/XqxEjRsjpdFr75Ofny+/369ChQxd9zubmZvn9/qAbAAAwU0RjZ9y4cVq/fr22bdumNWvW6OjRo/qnf/onnTp1Sj6fTwkJCUpJSQm6j9PplM/nkyT5fL6g0OnY3rHtYkpLS+VwOKxbZmZmeA8MAABEjYiexpo0aZL155EjR2rcuHEaNGiQfvvb36pXr17d9rwlJSXyeDzWst/vJ3gAADBUxE9jfVJKSoquvvpqvfvuu3K5XGppaVFDQ0PQPnV1ddY1Pi6Xq9OnszqWL3QdUIfExETZ7fagGwAAMFNUxc7p06f13nvvacCAAcrJyVF8fLzKy8ut7VVVVaqurpbb7ZYkud1uHTx4UPX19dY+O3bskN1uV3Z2do/PDwAAok9ET2Pdc889mjx5sgYNGqSamhotW7ZMsbGxuu222+RwODRjxgx5PB6lpqbKbrdr7ty5crvdys3NlSRNnDhR2dnZuv3227VixQr5fD4tXrxYxcXFSkxMjOShAQCAKBHR2Pnb3/6m2267TSdPnlRaWpquv/567d27V2lpaZKklStXKiYmRoWFhWpublZ+fr6eeOIJ6/6xsbHaunWrZs+eLbfbreTkZBUVFen++++P1CEBAIAoYwsEAoFIDxFpfr9fDodDjY2NYb9+h9/GAj6dKb+NxWsduLjuep1f6r/fUXXNDgAAQLgROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoURM7y5cvl81m07x586x1TU1NKi4uVr9+/dSnTx8VFhaqrq4u6H7V1dUqKChQ7969lZ6ergULFuj8+fM9PD0AAIhWURE7+/fv15NPPqmRI0cGrZ8/f762bNmiTZs2qaKiQjU1NZoyZYq1va2tTQUFBWppadGePXu0YcMGrV+/XkuXLu3pQwAAAFEq4rFz+vRpTZ06VU899ZSuuOIKa31jY6OefvppPfroo5owYYJycnK0bt067dmzR3v37pUkbd++Xe+8847+67/+S6NHj9akSZP0wAMPqKysTC0tLZE6JAAAEEUiHjvFxcUqKChQXl5e0PrKykq1trYGrR86dKiysrLk9XolSV6vVyNGjJDT6bT2yc/Pl9/v16FDhy76nM3NzfL7/UE3AABgprhIPvlvfvMbvfHGG9q/f3+nbT6fTwkJCUpJSQla73Q65fP5rH0+GTod2zu2XUxpaanuu+++Lk4PAAAuBxF7Z+f48eO6++679eyzzyopKalHn7ukpESNjY3W7fjx4z36/AAAoOdELHYqKytVX1+vf/zHf1RcXJzi4uJUUVGhxx9/XHFxcXI6nWppaVFDQ0PQ/erq6uRyuSRJLper06ezOpY79rmQxMRE2e32oBsAADBTxGLnm9/8pg4ePKgDBw5YtzFjxmjq1KnWn+Pj41VeXm7dp6qqStXV1XK73ZIkt9utgwcPqr6+3tpnx44dstvtys7O7vFjAgAA0Sdi1+z07dtXw4cPD1qXnJysfv36WetnzJghj8ej1NRU2e12zZ07V263W7m5uZKkiRMnKjs7W7fffrtWrFghn8+nxYsXq7i4WImJiT1+TAAAIPpE9ALlz7Jy5UrFxMSosLBQzc3Nys/P1xNPPGFtj42N1datWzV79my53W4lJyerqKhI999/fwSnBgAA0SSqYmfXrl1By0lJSSorK1NZWdlF7zNo0CC9+OKL3TwZAAC4XEX8e3YAAAC6E7EDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAo0U0dtasWaORI0fKbrfLbrfL7XbrpZdesrY3NTWpuLhY/fr1U58+fVRYWKi6urqgx6iurlZBQYF69+6t9PR0LViwQOfPn+/pQwEAAFEqorEzcOBALV++XJWVlXr99dc1YcIEffe739WhQ4ckSfPnz9eWLVu0adMmVVRUqKamRlOmTLHu39bWpoKCArW0tGjPnj3asGGD1q9fr6VLl0bqkAAAQJSxBQKBQKSH+KTU1FT927/9m2655RalpaVp48aNuuWWWyRJhw8f1rBhw+T1epWbm6uXXnpJN910k2pqauR0OiVJa9eu1cKFC3XixAklJCRc8Dmam5vV3NxsLfv9fmVmZqqxsVF2uz2sxzN40QthfTzANMeWF0R6hLDgtQ5cXHe9zv1+vxwOx2f++x011+y0tbXpN7/5jc6cOSO3263Kykq1trYqLy/P2mfo0KHKysqS1+uVJHm9Xo0YMcIKHUnKz8+X3++33h26kNLSUjkcDuuWmZnZfQcGAAAiKuKxc/DgQfXp00eJiYm66667tHnzZmVnZ8vn8ykhIUEpKSlB+zudTvl8PkmSz+cLCp2O7R3bLqakpESNjY3W7fjx4+E9KAAAEDXiIj3AkCFDdODAATU2Nup3v/udioqKVFFR0a3PmZiYqMTExG59DgAAEB1Cemfn+PHj+tvf/mYt79u3T/PmzdMvf/nLz/1YCQkJ+upXv6qcnByVlpZq1KhReuyxx+RyudTS0qKGhoag/evq6uRyuSRJLper06ezOpY79gEAAF9sIcXOj370I+3cuVPSx6eLbrzxRu3bt08///nPdf/993dpoPb2djU3NysnJ0fx8fEqLy+3tlVVVam6ulput1uS5Ha7dfDgQdXX11v77NixQ3a7XdnZ2V2aAwAAmCGk01hvv/22xo4dK0n67W9/q+HDh2v37t3avn277rrrrkv+6HdJSYkmTZqkrKwsnTp1Shs3btSuXbv0xz/+UQ6HQzNmzJDH41Fqaqrsdrvmzp0rt9ut3NxcSdLEiROVnZ2t22+/XStWrJDP59PixYtVXFzMaSoAACApxNhpbW21YuLll1/Wd77zHUkff1qqtrb2kh+nvr5e06ZNU21trRwOh0aOHKk//vGPuvHGGyVJK1euVExMjAoLC9Xc3Kz8/Hw98cQT1v1jY2O1detWzZ49W263W8nJySoqKuryu0sAAMAcIcXONddco7Vr16qgoEA7duzQAw88IEmqqalRv379Lvlxnn766U/dnpSUpLKyMpWVlV10n0GDBunFF1+85OcEAABfLCFds/Pwww/rySef1Pjx43Xbbbdp1KhRkqQ//OEP1uktAACAaBDSOzvjx4/XBx98IL/fryuuuMJaP2vWLCUnJ4dtOAAAgK4K6Z2dCRMm6NSpU0GhI338Uw+33nprWAYDAAAIh5BiZ9euXWppaem0vqmpSX/605+6PBQAAEC4fK7TWG+99Zb153feeSfoJxna2tq0bds2felLXwrfdAAAAF30uWJn9OjRstlsstlsmjBhQqftvXr10urVq8M2HAAAQFd9rtg5evSoAoGAvvzlL2vfvn1KS0uztiUkJCg9PV2xsbFhHxIAACBUnyt2Bg0aJOnjn3QAAAC4HIT8q+dHjhzRzp07VV9f3yl+LvXnIgAAALpbSLHz1FNPafbs2erfv79cLpdsNpu1zWazETsAACBqhBQ7Dz74oB566CEtXLgw3PMAAACEVUjfs/PRRx/p+9//frhnAQAACLuQYuf73/++tm/fHu5ZAAAAwi6k01hf/epXtWTJEu3du1cjRoxQfHx80PZ/+Zd/CctwAAAAXRVS7Pzyl79Unz59VFFRoYqKiqBtNpuN2AEAAFEjpNg5evRouOcAAADoFiFdswMAAHC5COmdnTvvvPNTtz/zzDMhDQMAABBuIcXORx99FLTc2tqqt99+Ww0NDRf8gVAAAIBICSl2Nm/e3Glde3u7Zs+era985StdHgoAACBcwnbNTkxMjDwej1auXBmuhwQAAOiysF6g/N577+n8+fPhfEgAAIAuCek0lsfjCVoOBAKqra3VCy+8oKKiorAMBgAAEA4hxc6bb74ZtBwTE6O0tDQ98sgjn/lJLQAAgJ4UUuzs3Lkz3HMAAAB0i5Bip8OJEydUVVUlSRoyZIjS0tLCMhQAAEC4hHSB8pkzZ3TnnXdqwIABuuGGG3TDDTcoIyNDM2bM0NmzZ8M9IwAAQMhCih2Px6OKigpt2bJFDQ0Namho0O9//3tVVFTopz/9abhnBAAACFlIp7H++7//W7/73e80fvx4a923v/1t9erVSz/4wQ+0Zs2acM0HAADQJSG9s3P27Fk5nc5O69PT0zmNBQAAokpIseN2u7Vs2TI1NTVZ686dO6f77rtPbrc7bMMBAAB0VUinsVatWqVvfetbGjhwoEaNGiVJ+stf/qLExERt3749rAMCAAB0RUixM2LECB05ckTPPvusDh8+LEm67bbbNHXqVPXq1SusAwIAAHRFSLFTWloqp9OpmTNnBq1/5plndOLECS1cuDAswwEAAHRVSNfsPPnkkxo6dGin9ddcc43Wrl3b5aEAAADCJaTY8fl8GjBgQKf1aWlpqq2t7fJQAAAA4RJS7GRmZmr37t2d1u/evVsZGRldHgoAACBcQrpmZ+bMmZo3b55aW1s1YcIESVJ5ebl+9rOf8Q3KAAAgqoQUOwsWLNDJkyf1k5/8RC0tLZKkpKQkLVy4UCUlJWEdEAAAoCtCih2bzaaHH35YS5Ys0V//+lf16tVLV111lRITE8M9HwAAQJeEFDsd+vTpo2uvvTZcswAAAIRdSBcoAwAAXC6IHQAAYDRiBwAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGI3YAAIDRiB0AAGA0YgcAABiN2AEAAEYjdgAAgNGIHQAAYDRiBwAAGI3YAQAARiN2AACA0SIaO6Wlpbr22mvVt29fpaen6+abb1ZVVVXQPk1NTSouLla/fv3Up08fFRYWqq6uLmif6upqFRQUqHfv3kpPT9eCBQt0/vz5njwUAAAQpSIaOxUVFSouLtbevXu1Y8cOtba2auLEiTpz5oy1z/z587VlyxZt2rRJFRUVqqmp0ZQpU6ztbW1tKigoUEtLi/bs2aMNGzZo/fr1Wrp0aSQOCQAARBlbIBAIRHqIDidOnFB6eroqKip0ww03qLGxUWlpadq4caNuueUWSdLhw4c1bNgweb1e5ebm6qWXXtJNN92kmpoaOZ1OSdLatWu1cOFCnThxQgkJCZ2ep7m5Wc3Nzday3+9XZmamGhsbZbfbw3pMgxe9ENbHA0xzbHlBpEcIC17rwMV11+vc7/fL4XB85r/fUXXNTmNjoyQpNTVVklRZWanW1lbl5eVZ+wwdOlRZWVnyer2SJK/XqxEjRlihI0n5+fny+/06dOjQBZ+ntLRUDofDumVmZnbXIQEAgAiLmthpb2/XvHnz9LWvfU3Dhw+XJPl8PiUkJCglJSVoX6fTKZ/PZ+3zydDp2N6x7UJKSkrU2Nho3Y4fPx7mowEAANEiLtIDdCguLtbbb7+tP//5z93+XImJiUpMTOz25wEAAJEXFe/szJkzR1u3btXOnTs1cOBAa73L5VJLS4saGhqC9q+rq5PL5bL2+ftPZ3Usd+wDAAC+uCIaO4FAQHPmzNHmzZv1yiuv6MorrwzanpOTo/j4eJWXl1vrqqqqVF1dLbfbLUlyu906ePCg6uvrrX127Nghu92u7OzsnjkQAAAQtSJ6Gqu4uFgbN27U73//e/Xt29e6xsbhcKhXr15yOByaMWOGPB6PUlNTZbfbNXfuXLndbuXm5kqSJk6cqOzsbN1+++1asWKFfD6fFi9erOLiYk5VAQCAyMbOmjVrJEnjx48PWr9u3TrdcccdkqSVK1cqJiZGhYWFam5uVn5+vp544glr39jYWG3dulWzZ8+W2+1WcnKyioqKdP/99/fUYQAAgCgW0di5lK/4SUpKUllZmcrKyi66z6BBg/Tiiy+GczQAAGCIqLhAGQAAoLsQOwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoEY2dV199VZMnT1ZGRoZsNpuef/75oO2BQEBLly7VgAED1KtXL+Xl5enIkSNB+3z44YeaOnWq7Ha7UlJSNGPGDJ0+fboHjwIAAESziMbOmTNnNGrUKJWVlV1w+4oVK/T4449r7dq1eu2115ScnKz8/Hw1NTVZ+0ydOlWHDh3Sjh07tHXrVr366quaNWtWTx0CAACIcnGRfPJJkyZp0qRJF9wWCAS0atUqLV68WN/97nclSb/61a/kdDr1/PPP64c//KH++te/atu2bdq/f7/GjBkjSVq9erW+/e1v6xe/+IUyMjJ67FgAAEB0itprdo4ePSqfz6e8vDxrncPh0Lhx4+T1eiVJXq9XKSkpVuhIUl5enmJiYvTaa69d9LGbm5vl9/uDbgAAwExRGzs+n0+S5HQ6g9Y7nU5rm8/nU3p6etD2uLg4paamWvtcSGlpqRwOh3XLzMwM8/QAACBaRG3sdKeSkhI1NjZat+PHj0d6JAAA0E2iNnZcLpckqa6uLmh9XV2dtc3lcqm+vj5o+/nz5/Xhhx9a+1xIYmKi7HZ70A0AAJgpamPnyiuvlMvlUnl5ubXO7/frtddek9vtliS53W41NDSosrLS2ueVV15Re3u7xo0b1+MzAwCA6BPRT2OdPn1a7777rrV89OhRHThwQKmpqcrKytK8efP04IMP6qqrrtKVV16pJUuWKCMjQzfffLMkadiwYfrWt76lmTNnau3atWptbdWcOXP0wx/+kE9iAQAASRGOnddff13f+MY3rGWPxyNJKioq0vr16/Wzn/1MZ86c0axZs9TQ0KDrr79e27ZtU1JSknWfZ599VnPmzNE3v/lNxcTEqLCwUI8//niPHwsAAIhOtkAgEIj0EJHm9/vlcDjU2NgY9ut3Bi96IayPB5jm2PKCSI8QFrzWgYvrrtf5pf77HbXX7AAAAIQDsQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMZkzslJWVafDgwUpKStK4ceO0b9++SI8EAACigBGx89xzz8nj8WjZsmV64403NGrUKOXn56u+vj7SowEAgAgzInYeffRRzZw5U9OnT1d2drbWrl2r3r1765lnnon0aAAAIMLiIj1AV7W0tKiyslIlJSXWupiYGOXl5cnr9V7wPs3NzWpubraWGxsbJUl+vz/s87U3nw37YwIm6Y7XXSTwWgcurrte5x2PGwgEPnW/yz52PvjgA7W1tcnpdAatdzqdOnz48AXvU1paqvvuu6/T+szMzG6ZEcDFOVZFegIA3a27X+enTp2Sw+G46PbLPnZCUVJSIo/HYy23t7frww8/VL9+/WSz2SI4GbqT3+9XZmamjh8/LrvdHulxAHQTXutfHIFAQKdOnVJGRsan7nfZx07//v0VGxururq6oPV1dXVyuVwXvE9iYqISExOD1qWkpHTXiIgydrud/wACXwC81r8YPu0dnQ6X/QXKCQkJysnJUXl5ubWuvb1d5eXlcrvdEZwMAABEg8v+nR1J8ng8Kioq0pgxYzR27FitWrVKZ86c0fTp0yM9GgAAiDAjYufWW2/ViRMntHTpUvl8Po0ePVrbtm3rdNEyvtgSExO1bNmyTqcwAZiF1zr+ni3wWZ/XAgAAuIxd9tfsAAAAfBpiBwAAGI3YAQAARiN2AACA0YgdGOfVV1/V5MmTlZGRIZvNpueffz5o+//8z/9o4sSJ1jdmHzhwICJzAui6srIyDR48WElJSRo3bpz27dtnbWtqalJxcbH69eunPn36qLCwsNMX0OKLgdiBcc6cOaNRo0aprKzsotuvv/56Pfzwwz08GYBweu655+TxeLRs2TK98cYbGjVqlPLz81VfXy9Jmj9/vrZs2aJNmzapoqJCNTU1mjJlSoSnRiTw0XMYzWazafPmzbr55ps7bTt27JiuvPJKvfnmmxo9enSPzwaga8aNG6drr71W//7v/y7p42/Pz8zM1Ny5czV79mylpaVp48aNuuWWWyRJhw8f1rBhw+T1epWbmxvJ0dHDeGcHAHDZaWlpUWVlpfLy8qx1MTExysvLk9frVWVlpVpbW4O2Dx06VFlZWfJ6vZEYGRFE7AAALjsffPCB2traOn1TvtPplM/nk8/nU0JCQqcfee7Yji8WYgcAABiN2AEAXHb69++v2NjYTp+uqqurk8vlksvlUktLixoaGi64HV8sxA4A4LKTkJCgnJwclZeXW+va29tVXl4ut9utnJwcxcfHB22vqqpSdXW13G53JEZGBBnxq+fAJ50+fVrvvvuutXz06FEdOHBAqampysrK0ocffqjq6mrV1NRI+vg/gJKs/xsEcHnweDwqKirSmDFjNHbsWK1atUpnzpzR9OnT5XA4NGPGDHk8HqWmpsput2vu3Llyu918EuuLKAAYZufOnQFJnW5FRUWBQCAQWLdu3QW3L1u2LKJzA/j8Vq9eHcjKygokJCQExo4dG9i7d6+17dy5c4Gf/OQngSuuuCLQu3fvwPe+971AbW1tBKdFpPA9OwAAwGhcswMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDoNuNHz9e8+bNu+j2wYMHa9WqVT0yy7Fjx2Sz2XTgwIEeeT4AkUfsAIi4/fv3a9asWdayzWbT888/f8n3X79+vVJSUi5p38zMTNXW1mr48OGfc0oAlyt+CBRAxKWlpfXI87S0tCghIYEffAW+YHhnB0CPOH/+vObMmSOHw6H+/ftryZIl6vhpvk+exho8eLAk6Xvf+55sNpu1/Je//EXf+MY31LdvX9ntduXk5Oj111/Xrl27NH36dDU2Nspms8lms+nee++1HuuBBx7QtGnTZLfbNWvWrE6nsXbt2iWbzaby8nKNGTNGvXv31nXXXaeqqqqg+R988EGlp6erb9+++vGPf6xFixZp9OjR1vZdu3Zp7NixSk5OVkpKir72ta/p/fff766/TgCfA7EDoEds2LBBcXFx2rdvnx577DE9+uij+o//+I9O++3fv1+StG7dOtXW1lrLU6dO1cCBA7V//35VVlZq0aJFio+P13XXXadVq1bJbrertrZWtbW1uueee6zH+8UvfqFRo0bpzTff1JIlSy46389//nM98sgjev311xUXF6c777zT2vbss8/qoYce0sMPP6zKykplZWVpzZo11vbz58/r5ptv1te//nW99dZb8nq9mjVrlmw2W5f/3gB0HaexAPSIzMxMrVy5UjabTUOGDNHBgwe1cuVKzZw5M2i/jlNaKSkpQaebqqurtWDBAg0dOlSSdNVVV1nbHA6HbDbbBU9PTZgwQT/96U+t5WPHjl1wvoceekhf//rXJUmLFi1SQUGBmpqalJSUpNWrV2vGjBmaPn26JGnp0qXavn27Tp8+LUny+/1qbGzUTTfdpK985SuSpGHDhn2uvx8A3Yd3dgD0iNzc3KB3Otxut44cOaK2trZLur/H49GPf/xj5eXlafny5Xrvvfcu6X5jxoy5pP1Gjhxp/XnAgAGSpPr6eklSVVWVxo4dG7T/J5dTU1N1xx13KD8/X5MnT9Zjjz2m2traS3peAN2P2AFwWbj33nt16NAhFRQU6JVXXlF2drY2b978mfdLTk6+pMePj4+3/twRZe3t7Zc837p16+T1enXdddfpueee09VXX629e/de8v0BdB9iB0CPeO2114KW9+7dq6uuukqxsbGd9o2Pj7/gOz5XX3215s+fr+3bt2vKlClat26dJCkhIeGS3yEKxZAhQ6xrhzr8/bIk/cM//INKSkq0Z88eDR8+XBs3buy2mQBcOmIHQI+orq6Wx+NRVVWVfv3rX2v16tW6++67L7jv4MGDVV5eLp/Pp48++kjnzp3TnDlztGvXLr3//vvavXu39u/fb10XM3jwYJ0+fVrl5eX64IMPdPbs2bDOPnfuXD399NPasGGDjhw5ogcffFBvvfWW9Q7Q0aNHVVJSIq/Xq/fff1/bt2/XkSNHuG4HiBJcoAygR0ybNk3nzp3T2LFjFRsbq7vvvjvoiwQ/6ZFHHpHH49FTTz2lL33pS/rf//1fnTx5UtOmTVNdXZ369++vKVOm6L777pMkXXfddbrrrrt066236uTJk1q2bJn18fNwmDp1qv7v//5P99xzj5qamvSDH/xAd9xxh/bt2ydJ6t27tw4fPqwNGzbo5MmTGjBggIqLi/XP//zPYZsBQOhsgY4vugAAXLIbb7xRLpdL//mf/xnpUQB8Bt7ZAYDPcPbsWa1du1b5+fmKjY3Vr3/9a7388svasWNHpEcDcAl4ZwcAPsO5c+c0efJkvfnmm2pqatKQIUO0ePFiTZkyJdKjAbgExA4AADAan8YCAABGI3YAAIDRiB0AAGA0YgcAABiN2AEAAEYjdgAAgNGIHQAAYDRiBwAAGO3/ATRFZcOagdimAAAAAElFTkSuQmCC",
+ "image/png": "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pM/+AyjJ+r9BAJcHj8ejwsJCjR8/XhMmTNCaNWt05swZzZw5Uw6HQ7NmzZLH41FKSorsdrvmz58vt9vNJ7GuRAHAMK+//npAUqdbYWFhIBAIBDZs2HDB7StWrIjo3AAu3dq1awOZmZmBhISEwIQJEwJ79uyxtp07dy7w4x//OHDVVVcF+vXrF7j99tsDtbW1EZwWkcL37AAAAKNxzQ4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOgB538803a8GCBRfdPmzYMK1Zs6ZXZjl27JhsNpsOHDjQK88HIPKIHQARt3//fs2ZM8dattlseumll7p8/40bNyo5OblL+2ZkZKi2tlajRo26xCkBXK74Q6AAIi41NbVXnqelpUUJCQn8wVfgCsOZHQC94vz585o3b54cDocGDRqkZcuWqeNP833+baxhw4ZJkm6//XbZbDZr+c9//rO+8Y1vaMCAAbLb7crOztZbb72lXbt2aebMmWpsbJTNZpPNZtMDDzxgPdbDDz+sGTNmyG63a86cOZ3extq1a5dsNpvKy8s1fvx49evXTzfccIOqqqqC5n/kkUeUlpamAQMG6Ic//KGWLFmicePGWdt37dqlCRMmKCkpScnJyfra176mjz76qKf+OQFcAmIHQK/YtGmT4uLitG/fPj355JN64okn9G//9m+d9tu/f78kacOGDaqtrbWWp0+friFDhmj//v2qrKzUkiVLFB8frxtuuEFr1qyR3W5XbW2tamtrdf/991uP94tf/EJjx47VO++8o2XLll10vp/97Gd6/PHH9dZbbykuLk733nuvte3555/Xo48+qscee0yVlZXKzMzUunXrrO3nz5/Xbbfdpq9//et699135fV6NWfOHNlstm7/uwHoPt7GAtArMjIytHr1atlsNg0fPlwHDx7U6tWrNXv27KD9Ot7SSk5ODnq7qbq6WosWLdKIESMkSddcc421zeFwyGazXfDtqUmTJuknP/mJtXzs2LELzvfoo4/q61//uiRpyZIlys/PV1NTk/r06aO1a9dq1qxZmjlzpiRp+fLl2rlzp06fPi1J8vv9amxs1K233qqvfOUrkqSRI0de0r8PgJ7DmR0AvSInJyfoTIfb7daRI0fU1tbWpft7PB798Ic/VG5urlauXKkPP/ywS/cbP358l/YbM2aM9fPgwYMlSfX19ZKkqqoqTZgwIWj/zy+npKTonnvuUV5enqZOnaonn3xStbW1XXpeAD2P2AFwWXjggQd06NAh5efn67XXXlNWVpa2bt36hfdLSkrq0uPHx8dbP3dEWXt7e5fn27Bhg7xer2644Qa9+OKLuvbaa7Vnz54u3x9AzyF2APSKvXv3Bi3v2bNH11xzjWJjYzvtGx8ff8EzPtdee60WLlyonTt3atq0adqwYYMkKSEhoctniEIxfPhw69qhDv93WZL+7u/+TsXFxdq9e7dGjRqlzZs399hMALqO2AHQK6qrq+XxeFRVVaVf//rXWrt2re67774L7jts2DCVl5fL5/Pp008/1blz5zRv3jzt2rVLH330kd58803t37/fui5m2LBhOn36tMrLy/Xxxx/r7NmzYZ19/vz5evbZZ7Vp0yYdOXJEjzzyiN59913rDNDRo0dVXFwsr9erjz76SDt37tSRI0e4bgeIElygDKBXzJgxQ+fOndOECRMUGxur++67L+iLBD/v8ccfl8fj0TPPPKMvfelL+p//+R+dPHlSM2bMUF1dnQYNGqRp06bpwQcflCTdcMMN+tGPfqQ777xTJ0+e1IoVK6yPn4fD9OnT9b//+7+6//771dTUpO9973u65557tG/fPklSv379dPjwYW3atEknT57U4MGDVVRUpH/6p38K2wwAQmcLdHzRBQCgy2655Ra5XC79x3/8R6RHAfAFOLMDAF/g7NmzWr9+vfLy8hQbG6tf//rXevXVV1VWVhbp0QB0AWd2AOALnDt3TlOnTtU777yjpqYmDR8+XEuXLtW0adMiPRqALiB2AACA0fg0FgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBo/w85rHuw159HHgAAAABJRU5ErkJggg==",
"text/plain": [
"