diff --git a/B_rework.ipynb b/B_rework.ipynb
index 73fe9d4..900c609 100644
--- a/B_rework.ipynb
+++ b/B_rework.ipynb
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
- "execution_count": 106,
+ "execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
@@ -22,7 +22,7 @@
},
{
"cell_type": "code",
- "execution_count": 107,
+ "execution_count": 2,
"metadata": {},
"outputs": [
{
@@ -31,7 +31,7 @@
"10522"
]
},
- "execution_count": 107,
+ "execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
@@ -50,7 +50,7 @@
},
{
"cell_type": "code",
- "execution_count": 108,
+ "execution_count": 3,
"metadata": {},
"outputs": [
{
@@ -78,195 +78,177 @@
},
{
"cell_type": "code",
- "execution_count": 115,
+ "execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
+ "text/html": [
+ "
{energy: 4.62e+04,\n",
+ " photon_length: 10,\n",
+ " brem_photons_pe: [3.26e+03, 4.45e+03, 178, ..., 825, 8.99e+03, 3.48e+03],\n",
+ " brem_vtx_z: [162, 187, 387, 487, ..., 9.49e+03, 1.21e+04, 1.21e+04, 1.21e+04]}\n",
+ "-------------------------------------------------------------------------------\n",
+ "type: {\n",
+ " energy: float64,\n",
+ " photon_length: int64,\n",
+ " brem_photons_pe: var * float64,\n",
+ " brem_vtx_z: var * float64\n",
+ "}
"
+ ],
"text/plain": [
- "{'energy': 46180.704276008204,\n",
- " 'brem_photons_pe': [3264.454345703125,\n",
- " 4453.86376953125,\n",
- " 178.029052734375,\n",
- " 14471.001953125,\n",
- " 1095.5640869140625,\n",
- " 3793.752685546875,\n",
- " 357.2669982910156,\n",
- " 825.275634765625,\n",
- " 8990.57421875,\n",
- " 3479.052490234375],\n",
- " 'brem_vtx_z': [161.9427032470703,\n",
- " 186.9705047607422,\n",
- " 387.3406982421875,\n",
- " 486.6791076660156,\n",
- " 1340.39501953125,\n",
- " 2322.552490234375,\n",
- " 9494.216796875,\n",
- " 12068.0263671875,\n",
- " 12118.072265625,\n",
- " 12129.564453125]}"
+ ""
]
},
- "execution_count": 115,
+ "execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#try excluding all photons that originate from a vtx @ z>9500mm\n",
+ "#ignore all brem vertices @ z>9500mm \n",
+ "\n",
+ "#found\n",
"\n",
"brem_e_f = found[\"brem_photons_pe\"]\n",
"brem_z_f = found[\"brem_vtx_z\"]\n",
"e_f = found[\"energy\"]\n",
- "\n",
- "\n",
+ "length_f = found[\"brem_vtx_z_length\"]\n",
"\n",
"brem_f = ak.ArrayBuilder()\n",
"\n",
- "for itr in range(4):#range(ak.num(found,axis=0)):\n",
+ "for itr in range(ak.num(found,axis=0)):\n",
" brem_f.begin_record()\n",
- " #[:,0] energy\n",
+ " #[:,\"energy\"] energy\n",
" brem_f.field(\"energy\").append(e_f[itr])\n",
- " #[:,1] photon energy \n",
+ " #[:,\"photon_length\"] number of vertices\n",
+ " brem_f.field(\"photon_length\").integer(length_f[itr])\n",
+ " #[:,\"brem_photons_pe\",:] photon energy \n",
" brem_f.field(\"brem_photons_pe\").append(brem_e_f[itr])\n",
- " #[:,2] brem vtx z\n",
+ " #[:,\"brem_vtx_z\",:] brem vtx z\n",
" brem_f.field(\"brem_vtx_z\").append(brem_z_f[itr])\n",
" brem_f.end_record()\n",
"\n",
"brem_f = ak.Array(brem_f)\n",
- "#this is a event cut! not suitable\n",
- "cut = (brem_f[\"brem_vtx_z\"]<9500)\n",
- "brem_f[0].tolist()"
+ "\n",
+ "#lost\n",
+ "\n",
+ "brem_e_l = lost[\"brem_photons_pe\"]\n",
+ "brem_z_l = lost[\"brem_vtx_z\"]\n",
+ "e_l = lost[\"energy\"]\n",
+ "length_l = lost[\"brem_vtx_z_length\"]\n",
+ "\n",
+ "brem_l = ak.ArrayBuilder()\n",
+ "\n",
+ "for itr in range(ak.num(lost,axis=0)):\n",
+ " brem_l.begin_record()\n",
+ " #[:,\"energy\"] energy\n",
+ " brem_l.field(\"energy\").append(e_l[itr])\n",
+ " #[:,\"photon_length\"] number of vertices\n",
+ " brem_l.field(\"photon_length\").integer(length_l[itr])\n",
+ " #[:,\"brem_photons_pe\",:] photon energy \n",
+ " brem_l.field(\"brem_photons_pe\").append(brem_e_l[itr])\n",
+ " #[:,\"brem_vtx_z\",:] brem vtx z\n",
+ " brem_l.field(\"brem_vtx_z\").append(brem_z_l[itr])\n",
+ " brem_l.end_record()\n",
+ "\n",
+ "brem_l = ak.Array(brem_l)\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "brem_f[0]"
]
},
{
"cell_type": "code",
- "execution_count": 116,
+ "execution_count": 37,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "acc_brem_found = ak.ArrayBuilder()\n",
+ "\n",
+ "for itr in range(ak.num(brem_f, axis=0)):\n",
+ " acc_brem_found.begin_record()\n",
+ " acc_brem_found.field(\"energy\").real(brem_f[itr,\"energy\"])\n",
+ " \n",
+ " acc_brem_found.field(\"brem_photons_pe\")\n",
+ " acc_brem_found.begin_list()\n",
+ " for jentry in range(brem_f[itr, \"photon_length\"]):\n",
+ " if brem_f[itr, \"brem_vtx_z\", jentry]>9500:\n",
+ " continue\n",
+ " else:\n",
+ " acc_brem_found.real(brem_f[itr,\"brem_photons_pe\", jentry])\n",
+ " \n",
+ " #acc_brem_found.field(\"brem_vtx_z\").real(brem_f[itr, \"brem_vtx_z\",jentry])\n",
+ " acc_brem_found.end_list()\n",
+ " \n",
+ " acc_brem_found.field(\"brem_vtx_z\")\n",
+ " acc_brem_found.begin_list()\n",
+ " for jentry in range(brem_f[itr, \"photon_length\"]):\n",
+ " if brem_f[itr, \"brem_vtx_z\", jentry]>9500:\n",
+ " continue\n",
+ " else:\n",
+ " acc_brem_found.real(brem_f[itr, \"brem_vtx_z\",jentry])\n",
+ " acc_brem_found.end_list()\n",
+ " \n",
+ " \n",
+ " acc_brem_found.end_record()\n",
+ "\n",
+ "acc_brem_found = ak.Array(acc_brem_found)\n",
+ "\n",
+ "\n",
+ "\n",
+ "acc_brem_lost = ak.ArrayBuilder()\n",
+ "\n",
+ "for itr in range(ak.num(brem_l, axis=0)):\n",
+ " acc_brem_lost.begin_record()\n",
+ " acc_brem_lost.field(\"energy\").real(brem_l[itr,\"energy\"])\n",
+ " \n",
+ " acc_brem_lost.field(\"brem_photons_pe\")\n",
+ " acc_brem_lost.begin_list()\n",
+ " for jentry in range(brem_l[itr, \"photon_length\"]):\n",
+ " if brem_l[itr, \"brem_vtx_z\", jentry]>9500:\n",
+ " continue\n",
+ " else:\n",
+ " acc_brem_lost.real(brem_l[itr,\"brem_photons_pe\", jentry])\n",
+ " \n",
+ " #acc_brem_found.field(\"brem_vtx_z\").real(brem_f[itr, \"brem_vtx_z\",jentry])\n",
+ " acc_brem_lost.end_list()\n",
+ " \n",
+ " acc_brem_lost.field(\"brem_vtx_z\")\n",
+ " acc_brem_lost.begin_list()\n",
+ " for jentry in range(brem_l[itr, \"photon_length\"]):\n",
+ " if brem_l[itr, \"brem_vtx_z\", jentry]>9500:\n",
+ " continue\n",
+ " else:\n",
+ " acc_brem_lost.real(brem_l[itr, \"brem_vtx_z\",jentry])\n",
+ " acc_brem_lost.end_list()\n",
+ " \n",
+ " acc_brem_lost.end_record()\n",
+ "\n",
+ "acc_brem_lost = ak.Array(acc_brem_lost)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "[{'energy': 134321.90632702777,\n",
- " 'brem_photons_pe': [1881.1756591796875,\n",
- " 17914.712890625,\n",
- " 479.9449768066406,\n",
- " 3987.47119140625,\n",
- " 4792.82421875,\n",
- " 19725.302734375,\n",
- " 2376.974853515625,\n",
- " 6870.6201171875,\n",
- " 19237.05859375,\n",
- " 3409.642822265625],\n",
- " 'brem_vtx_z': [184.35940551757812,\n",
- " 190.19970703125,\n",
- " 929.2517700195312,\n",
- " 5855.25390625,\n",
- " 8506.958984375,\n",
- " 11310.3232421875,\n",
- " 12051.8232421875,\n",
- " 12121.9033203125,\n",
- " 12132.9287109375,\n",
- " 12201.8427734375]},\n",
- " {'energy': 134321.90632702777,\n",
- " 'brem_photons_pe': [1881.1756591796875,\n",
- " 17914.712890625,\n",
- " 479.9449768066406,\n",
- " 3987.47119140625,\n",
- " 4792.82421875,\n",
- " 19725.302734375,\n",
- " 2376.974853515625,\n",
- " 6870.6201171875,\n",
- " 19237.05859375,\n",
- " 3409.642822265625],\n",
- " 'brem_vtx_z': [184.35940551757812,\n",
- " 190.19970703125,\n",
- " 929.2517700195312,\n",
- " 5855.25390625,\n",
- " 8506.958984375,\n",
- " 11310.3232421875,\n",
- " 12051.8232421875,\n",
- " 12121.9033203125,\n",
- " 12132.9287109375,\n",
- " 12201.8427734375]},\n",
- " {'energy': 134321.90632702777,\n",
- " 'brem_photons_pe': [1881.1756591796875,\n",
- " 17914.712890625,\n",
- " 479.9449768066406,\n",
- " 3987.47119140625,\n",
- " 4792.82421875,\n",
- " 19725.302734375,\n",
- " 2376.974853515625,\n",
- " 6870.6201171875,\n",
- " 19237.05859375,\n",
- " 3409.642822265625],\n",
- " 'brem_vtx_z': [184.35940551757812,\n",
- " 190.19970703125,\n",
- " 929.2517700195312,\n",
- " 5855.25390625,\n",
- " 8506.958984375,\n",
- " 11310.3232421875,\n",
- " 12051.8232421875,\n",
- " 12121.9033203125,\n",
- " 12132.9287109375,\n",
- " 12201.8427734375]},\n",
- " {'energy': 134321.90632702777,\n",
- " 'brem_photons_pe': [1881.1756591796875,\n",
- " 17914.712890625,\n",
- " 479.9449768066406,\n",
- " 3987.47119140625,\n",
- " 4792.82421875,\n",
- " 19725.302734375,\n",
- " 2376.974853515625,\n",
- " 6870.6201171875,\n",
- " 19237.05859375,\n",
- " 3409.642822265625],\n",
- " 'brem_vtx_z': [184.35940551757812,\n",
- " 190.19970703125,\n",
- " 929.2517700195312,\n",
- " 5855.25390625,\n",
- " 8506.958984375,\n",
- " 11310.3232421875,\n",
- " 12051.8232421875,\n",
- " 12121.9033203125,\n",
- " 12132.9287109375,\n",
- " 12201.8427734375]},\n",
- " {'energy': 134321.90632702777,\n",
- " 'brem_photons_pe': [1881.1756591796875,\n",
- " 17914.712890625,\n",
- " 479.9449768066406,\n",
- " 3987.47119140625,\n",
- " 4792.82421875,\n",
- " 19725.302734375,\n",
- " 2376.974853515625,\n",
- " 6870.6201171875,\n",
- " 19237.05859375,\n",
- " 3409.642822265625],\n",
- " 'brem_vtx_z': [184.35940551757812,\n",
- " 190.19970703125,\n",
- " 929.2517700195312,\n",
- " 5855.25390625,\n",
- " 8506.958984375,\n",
- " 11310.3232421875,\n",
- " 12051.8232421875,\n",
- " 12121.9033203125,\n",
- " 12132.9287109375,\n",
- " 12201.8427734375]},\n",
- " None,\n",
- " None,\n",
- " None,\n",
- " None,\n",
- " None]"
+ "9056"
]
},
- "execution_count": 116,
+ "execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "msa = ak.mask(brem_f,cut)\n",
- "msa[2].tolist()"
+ "ak.num(acc_brem_found,axis=0)"
]
},
{
@@ -276,25 +258,26 @@
"outputs": [],
"source": []
},
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
- "#ignore all brem vertices @ z>9500mm \n",
"\n",
"\"\"\"\n",
"ph_e = found[\"brem_photons_pe\"]\n",
"event_cut = ak.all(ph_e cutoff_energy are not included\n",
"\"\"\"\n",
- "ph_e = found[\"brem_photons_pe\"]\n",
+ "ph_e = acc_brem_found[\"brem_photons_pe\"]\n",
"event_cut = ak.all(ph_e[{energy: 2.58e+04, brem_photons_pe: [9.97e+03, ...], brem_vtx_z: [...]},\n",
+ " {energy: 8.03e+04, brem_photons_pe: [4.91e+03, ...], brem_vtx_z: [...]},\n",
+ " {energy: 5.6e+03, brem_photons_pe: [320, ..., 392], brem_vtx_z: [...]},\n",
+ " {energy: 6.36e+03, brem_photons_pe: [273, ...], brem_vtx_z: [...]},\n",
+ " {energy: 4.67e+04, brem_photons_pe: [8.96e+03, ...], brem_vtx_z: [...]},\n",
+ " {energy: 7.16e+04, brem_photons_pe: [544, ..., 142], brem_vtx_z: [...]},\n",
+ " {energy: 5.15e+04, brem_photons_pe: [384, ...], brem_vtx_z: [...]},\n",
+ " {energy: 4.07e+04, brem_photons_pe: [2.7e+04, ...], brem_vtx_z: [...]},\n",
+ " {energy: 2.77e+04, brem_photons_pe: [2.24e+03, ...], brem_vtx_z: [...]},\n",
+ " {energy: 6.4e+04, brem_photons_pe: [686, ..., 796], brem_vtx_z: [...]},\n",
+ " ...,\n",
+ " {energy: 5.59e+03, brem_photons_pe: [901, ...], brem_vtx_z: [...]},\n",
+ " {energy: 2.13e+04, brem_photons_pe: [787, ...], brem_vtx_z: [...]},\n",
+ " {energy: 9.34e+03, brem_photons_pe: [762, ...], brem_vtx_z: [...]},\n",
+ " {energy: 5.08e+04, brem_photons_pe: [711, ...], brem_vtx_z: [...]},\n",
+ " {energy: 6.41e+04, brem_photons_pe: [4.17e+03, ...], brem_vtx_z: [...]},\n",
+ " {energy: 1.01e+04, brem_photons_pe: [220, ..., 156], brem_vtx_z: [...]},\n",
+ " {energy: 1.96e+04, brem_photons_pe: [1.66e+03, ...], brem_vtx_z: [...]},\n",
+ " {energy: 2.98e+04, brem_photons_pe: [8.32e+03, ...], brem_vtx_z: [...]},\n",
+ " {energy: 3.97e+04, brem_photons_pe: [9.36e+03, ...], brem_vtx_z: [...]}]\n",
+ "-------------------------------------------------------------------------\n",
+ "type: 1418 * {\n",
+ " energy: float64,\n",
+ " brem_photons_pe: var * float64,\n",
+ " brem_vtx_z: var * float64\n",
+ "}"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 41,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"#wie viel energie relativ zur anfangsenergie verlieren die elektronen durch bremstrahlung und hat das einen einfluss darauf ob wir sie finden oder nicht?\n",
"#if any photon of an electron has an energy higher the cutoff then it is included\n",
"cutoff_energy=350\n",
"\n",
- "brem_found = found[ak.any(found[\"brem_photons_pe\"]>=cutoff_energy,axis=1)]\n",
+ "brem_found = acc_brem_found[ak.any(acc_brem_found[\"brem_photons_pe\"]>=cutoff_energy,axis=1)]\n",
"energy_found = ak.to_numpy(brem_found[\"energy\"])\n",
"eph_found = ak.to_numpy(ak.sum(brem_found[\"brem_photons_pe\"], axis=-1, keepdims=False))\n",
"residual_found = energy_found - eph_found\n",
"energyloss_found = eph_found/energy_found\n",
"\n",
- "brem_lost = lost[ak.any(lost[\"brem_photons_pe\"]>=cutoff_energy,axis=1)]\n",
+ "brem_lost = acc_brem_lost[ak.any(acc_brem_lost[\"brem_photons_pe\"]>=cutoff_energy,axis=1)]\n",
"energy_lost = ak.to_numpy(brem_lost[\"energy\"])\n",
"eph_lost = ak.to_numpy(ak.sum(brem_lost[\"brem_photons_pe\"], axis=-1, keepdims=False))\n",
"residual_lost = energy_lost - eph_lost\n",
@@ -388,9 +469,18 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 42,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "mean energyloss relative to initial energy (found): 0.4107345449771658\n",
+ "mean energyloss relative to initial energy (lost): 0.7300783757368142\n"
+ ]
+ }
+ ],
"source": [
"mean_energyloss_found = ak.mean(energyloss_found)\n",
"mean_energyloss_lost = ak.mean(energyloss_lost)\n",
@@ -400,9 +490,20 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 43,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAioAAAHMCAYAAAD7xYOxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/vklEQVR4nO3deXxTZdr/8W/aphulBQqFApV9kUUYQbG4gWNBUNFnHFxQRHAd+YmIjyButC6D6OO4jaKigqMy4sgioyhUpQVEFgs6siiIKMUBS1naQqVNm/P7AxtJ0yVJk5zT9vN+vfKiuc997nOdq4Fc3GezGYZhCAAAwILCzA4AAACgOhQqAADAsihUAACAZVGoAAAAy6JQAQAAlkWhAgAALItCBQAAWBaFCgAAsCwKFQAAYFkUKgAAwLIoVAAAgGVRqACos2XLlslms1X7eu211wKynfLyciUlJenpp58O+bYBmCPC7AAA1H+bNm2SJL3//vtKSkryWN6rV6+AbGfVqlU6cOCA/vSnP4V82wDMQaECoM42bdqk+Ph4XXrppbLZbEHbznvvvaeBAweqQ4cOId82AHNw6AdAneXk5Khfv35BLRQMw9DixYt1xRVXhHzbAMxDoQKgTg4ePKg9e/aob9++Kisr83gZhhGQ7axdu1b79u1zK1RCtW0A5qFQAVAnFeeIvPjii7Lb7R6vbdu21TqGYRiKj49Xfn5+tX3ee+899e3bV926dfN52wcOHNDFF1+sJk2aqHv37srMzKzLLgMIIc5RAVAnOTk5kqRFixYpJSXFY7k3J7Pu3LlTrVq1UsuWLavts2jRIk2YMMGvbU+cOFFt2rTRgQMH9Mknn+jKK6/U999/r8TExFpjA2AuChUAdbJp0yZFR0dr1KhRCg8Pr7bfyy+/rH/961+y2+1av3692rZtq3fffVe9evXSpk2b1L9/f916661asGCB2rZtq6VLl6pr166SpA0bNmjPnj0e56d4s+2jR49qyZIl2rVrl2JjYzVq1Cj169dP77//vkfhA8B6OPQDoE42bdqkPn361FikSNKWLVu0ceNGTZ48Wb/88osGDRqkBx54QJK0efNmffnllxo/frwOHTqk008/XXPmzHGtu3DhQnXv3l19+vTxeds7d+5UXFyc24xL3759tXXrVn92F0CIUagA8FtBQYF++OEH9evXr9a+W7Zs0QMPPKDhw4fLbrfr2muv1Y4dOySdKFQyMjJ01llnKSwsTF26dHE7EXbhwoUesynebvvo0aOKj493a4uPj9fRo0e93U0AJuLQDwC/bdq0SYZhqEmTJlq3bp3H8nbt2rlmMrZu3ep2l9i8vDzXOSmbN2/WW2+95Vq2detWjRw5UpL01VdfadeuXVUe9vFm23FxcSosLHRbVlhYqLi4OD/3GkAoMaMCwG8VV90899xzSk1N9XitWLFC0omi5MCBA253jl28eLFGjBih3NxcRUREuC37z3/+o9NOO03SidmUDh06aMCAAX5tu1u3bjp69Kj27t3rWnfLli3q3bt3EDICINBsBjcaABBkn376qYYPH66XXnpJ48aN0z/+8Q898sgj+vrrr5Wdna0XXnhBy5cvlyQVFxerWbNmKigoUExMjHr16qURI0boqaee8nv7o0ePVkJCgp5//nl9+umnGjt2rHbu3FnjVUYArIFDPwCCbsuWLZowYYLeeecdTZkyRQMGDFBmZqYSEhK0efNm1+yJdOKwT5cuXRQTEyNJXt2HpTYvvviixo0bp8TERLVr104LFiygSAHqCWZUAATdzTffrIEDB+rWW281OxQA9QznqAAIui1btqhnz55mhwGgHmJGBUDQJSQkaMeOHWrdurXZoQCoZ0ydUSkqKtLkyZPVoUMHxcTEaPDgwdq4caOZIQEIgoKCAooUAH4xtVC56aablJmZqTfffFPffPONhg0bpgsvvFA///yzmWEBAACLMO3Qz6+//qqmTZvq/fff18UXX+xq79+/vy655BI9+uijZoQFAAAsxLTLk8vKylReXq7o6Gi39piYGK1Zs6bKdUpKSlRSUuJ673Q6dejQISUmJspmswU1XgAAEBiGYaioqEht27ZVWFgtB3cME6Wmphrnn3++8fPPPxtlZWXGm2++adhsNqN79+5V9p8xY4YhiRcvXrx48eLVAF65ubm11gqmXvWza9cuTZgwQatWrVJ4eLhOP/10de/eXZs2baryJk+VZ1QKCgp0yimnaPfu3WratGnA4nI4HFq5cqWGDh0qu90esHHhjjyHDrkODfIcOuQ6NIKV56KiInXq1ElHjhxRQkJCjX1NvTNtly5dlJ2drWPHjqmwsFDJycm66qqr1KlTpyr7R0VFKSoqyqO9RYsWHk9HrQuHw6HY2FglJibyFyCIyHPokOvQIM+hQ65DI1h5rhjLm9M2LHHDtyZNmig5OVmHDx/W8uXLddlll5kdEgAAsABTZ1SWL18uwzDUo0cPff/997rnnnvUo0cPjR8/3sywAACARZg6o1JQUKCJEyeqZ8+euv7663XOOedoxYoVTOMBAABJJs+oXHnllbryyivNDAEA0IiVl5fL4XCYHYZlORwORURE6Pjx4yovL/d6PbvdrvDw8IDEYGqhAgCAGQzD0P79+3XkyBGzQ7E0wzDUpk0b5ebm+ny/smbNmqlNmzZ1vs8ZhQoAoNGpKFKSkpIUGxvLTUOr4XQ6dfToUcXFxdV+Y7bfGIah4uJi5eXlSZKSk5PrFAOFCgCgUSkvL3cVKYmJiWaHY2lOp1OlpaWKjo72ulCRTtxlXpLy8vKUlJRUp8NAlrg8GQCAUKk4JyU2NtbkSBq2ivzW9RwgChUAQKPE4Z7gClR+KVQAAIBlUagAAFBPDBkyRJMnTzY7jJDiZFoAACqsTQ/t9gaHeHu/ycrK0tChQ3X48GE1a9bMlBi8xYwKAACwLAoVAADqocOHD+v6669X8+bNFRsbqxEjRmjnzp2u5T/99JMuvfRSNW/eXE2aNFHv3r21bNky/fjjjxo6dKgkqXnz5rLZbLrhhhtM2ovacegHAIB66IYbbtDOnTu1dOlSxcfHa9q0aRo5cqS2bdsmu92uiRMnqrS0VKtWrVKTJk20bds2xcXFKSUlRQsXLtQVV1yh7777TvHx8a77nlgRhQoAAPVMRYHy+eefa/DgwZKkt99+WykpKVqyZIlGjx6tPXv26IorrlDfvn0lSZ07d3at36JFC0lSUlIS56gAAIDA2r59uyIiIjRo0CBXW2Jionr06KHt27dLkiZNmqRHH31UZ599tmbMmKH//Oc/ZoVbJxQqAADUM4ZhVNtecaO1m266ST/88IPGjh2rb775RgMHDtTzzz8fyjADgkIFAIB6plevXiorK9P69etdbQcPHtSOHTt06qmnutpSUlJ02223adGiRbr77rs1Z84cSVJkZKSkE889sjoKFQAA6plu3brpsssu080336w1a9bo66+/1nXXXad27drpsssukyRNnjxZy5cv1+7du7Vp0yZ99tlnriKmQ4cOstls+uCDD3TgwAEdPXrUzN2pESfTAgBQwaQbsPlj7ty5uvPOO3XJJZeotLRU5513npYtWya73S7pxGzJxIkTtXfvXsXHx+uiiy7S008/LUlq166dMjIydO+992r8+PG6/vrrNW/ePBP3pnoUKgAA1BNZWVmun5s3b65//OMf1fat7XyUBx98UA8++GCgQgsaDv0AAADLolABAACWRaECAAAsi0IFAABYFoUKAACwLAoVAABgWRQqAADAsihUAACAZVGoAAAAy6JQAQCgnjAMQ7fccotatGghm82mr776yrRYhgwZosmTJwd9O9xCHwCA36SnW3t7H3/8sebNm6esrCx17txZLVu2DEpcVkKhAgBAPbFr1y4lJydr8ODBZocSMqYe+ikrK9MDDzygTp06KSYmRp07d9bDDz8sp9NpZlgAAFjODTfcoDvuuEN79uyRzWZTx44dVVJSokmTJikpKUnR0dE655xztHHjRtc68+bNU7NmzdzGWbJkiWw2m+t9enq6+vfvrzfffFMdO3ZUQkKCrr76ahUVFbn6HDt2TNdff73i4uKUnJysp556Kuj7W8HUQmXWrFl66aWX9Pe//13bt2/XE088oSeffLLWJz4CANDYPPvss3r44YfVvn177du3Txs3btTUqVO1cOFCvfHGG9q0aZO6du2q4cOH69ChQz6NvWvXLi1ZskQffPCBPvjgA2VnZ+vxxx93LZ86dapWrlypxYsXa8WKFcrKylJOTk6gd7FKphYqX3zxhS677DJdfPHF6tixo/785z9r2LBh+vLLL80MCwAAy0lISFDTpk0VHh6uNm3aKDY2VrNnz9aTTz6pESNGqFevXpozZ45iYmL02muv+TS20+nUvHnz1KdPH5177rkaO3asPv30U0nS0aNH9frrr+v//u//lJaWpr59++qNN95QeXl5MHbTg6nnqJxzzjl66aWXtGPHDnXv3l1ff/211qxZo2eeeabK/iUlJSopKXG9LywslCQ5HA45HI6AxVUxViDHhCfyHDrkOjTIc+jUJdcOh0OGYcjpdHqcamAYtmrWCg6n0/Cpv2EYv63n1M6dO+VwOJSamuraj/DwcJ1xxhnatm2b2/6dvJ+V2wzDUMeOHdWkSRNXW5s2bZSXlyfDMLR7926VlpZq0KBBruXNmjVTjx49XHmset+cMgxDDodD4eHhbst8+b2ZWqhMmzZNBQUF6tmzp8LDw1VeXq7HHntM11xzTZX9Z86cqYyMDI/2FStWKDY2NuDxZWZmBnxM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jISEBOPgwYOhCK/B8DXPTz75pNG5c2e3tueee85o37590GJsiLwpVMz4TmxUh35KS0uVk5OjYcOGubUPGzZMa9eurXKdL774wqP/8OHD9eWXX8rhcAQt1vrOn1xX5nQ6VVRUpBYtWgQjxAbB3zzPnTtXu3bt0owZM4IdYoPhT66XLl2qgQMH6oknnlC7du3UvXt3/e///q9+/fXXUIRcL/mT58GDB2vv3r1atmyZDMPQL7/8ovfee08XX3xxKEJuVMz4TjT1Fvqhlp+fr/Lyco+nM7du3drjKc4V9u/fX2X/srIy5efnKzk5OWjx1mf+5Lqyp556SseOHdOVV14ZjBAbBH/yvHPnTt17771avXq1IiIa1T8BdeJPrn/44QetWbNG0dHRWrx4sfLz83X77bfr0KFDnKdSDX/yPHjwYL399tu66qqrdPz4cZWVlWnUqFF6/vnnQxFyo2LGd2KjmlGpYLPZ3N4bhuHRVlv/qtrhyddcV/jnP/+p9PR0LViwQElJScEKr8HwNs/l5eUaM2aMMjIy1L1791CF16D48pl2Op2y2Wx6++23deaZZ2rkyJH629/+pnnz5jGrUgtf8rxt2zZNmjRJDz30kHJycvTxxx9r9+7duu2220IRaqMT6u/ERvXfqZYtWyo8PNyjKs/Ly/OoECu0adOmyv4RERFKTEwMWqz1nT+5rrBgwQLdeOON+te//qULL7wwmGHWe77muaioSF9++aU2b96s//f//p+kE1+mhmEoIiJCK1as0AUXXBCS2Osbfz7TycnJateunRISElxtp556qgzD0N69e9WtW7egxlwf+ZPnmTNn6uyzz9Y999wjSTrttNPUpEkTnXvuuXr00UeZ+Q4gM74TG9WMSmRkpAYMGKDMzEy39szMTA0ePLjKdVJTUz36r1ixQgMHDpTdbg9arPWdP7mWTsyk3HDDDZo/fz7Hl73ga57j4+P1zTff6KuvvnK9brvtNvXo0UNfffWVBg0aFKrQ6x1/PtNnn322/vvf/+ro0aOuth07digsLEzt27cParz1lT95Li4uVliY+9dZeHi4pN//t4/AMOU7MWin6VpUxWVvr732mrFt2zZj8uTJRpMmTYwff/zRMAzDuPfee42xY8e6+ldcinXXXXcZ27ZtM1577TUuT/aSr7meP3++ERERYbzwwgvGvn37XK8jR46YtQv1gq95royrfrzna66LioqM9u3bG3/+85+NrVu3GtnZ2Ua3bt2Mm266yaxdqBd8zfPcuXONiIgI48UXXzR27dplrFmzxhg4cKBx5plnmrUL9UZRUZGxefNmY/PmzYYk429/+5uxefNm16XgVvhObHSFimEYxgsvvGB06NDBiIyMNE4//XQjOzvbtWzcuHHG+eef79Y/KyvL+MMf/mBERkYaHTt2NGbPnh3iiOsvX3J9/vnnG5I8XuPGjQt94PWMr5/pk1Go+MbXXG/fvt248MILjZiYGKN9+/bGlClTjOLi4hBHXf/4mufnnnvO6NWrlxETE2MkJycb1157rbF3794QR13/rFy5ssZ/d63wnWgzDObFAACANTWqc1QAAED9QqECAAAsi0IFAABYFoUKAACwLAoVAABgWRQqAADAsihUAACAZVGoAAAAy6JQARBU5513nmw2m8fr2muvrXXdG264Qffee29AxgJQP3FnWgBBYxiGEhISNGPGDI9iIi4uTnFxcdWu63Q61bp1ay1dulSpqal1GgtA/RVhdgAAGq6dO3eqqKhI5513ntq0aePTup9//rnCwsJcT3Suy1gA6i8O/QAImpycHEVEROi0007zed2lS5fq0ksvVVhYWJ3HAlB/UagACJpNmzapvLxciYmJrsMzcXFxuvnmm2tdd+nSpbrssst8GuuDDz5Qjx491K1bN7366qtB2ScAocU5KgCC5oILLlCrVq302GOPubU3b95ciYmJ1a63fft2DRw4UPn5+YqJifFqrLKyMvXq1UsrV65UfHy8Tj/9dK1fv14tWrQI/I4BCBlmVAAEzebNm3XOOeeoa9eubq/ExERt2bJFXbp00f79+yVJ+fn56t+/v0pLS7V06VKlpaW5ipTaxpKkDRs2qHfv3mrXrp2aNm2qkSNHavny5absN4DAoVABEBQ//PCDjhw5oj/84Q9VLu/Tp4+uvvpqffbZZ5KkjIwMTZs2TZGRkXr//fc1atQor8eSpP/+979q166d63379u31888/B2hvAJiFq34ABEVOTo4kqXXr1q5ZkwpJSUkKCwtT7969tWPHDn3//ffKycnRc889p7y8PG3cuFFLlizxaayqjmLbbLYA7xWAUKNQARAUmzZtkiR1797drd1ut6uoqEhRUVHq1q2bPvjgA91333167LHHZLPZ9O9//1uDBg1SUlKST2O1a9fObQZl7969rkubAdRfnEwLwDRHjhxRt27dNGjQIH3wwQeSpFGjRumcc87R1KlTfRqrrKxMp556qrKyslwn065bt67Gk3YBWB8zKgBM06xZM0nS448/7mo755xzdM011/g8VkREhJ566ikNHTpUTqdTU6dOpUgBGgBmVACYxuFwqE+fPvruu+/MDgWARXHVDwDTfPvtt+rRo4fZYQCwMGZUAACAZTGjAgAALItCBQAAWBaFCgAAsCwKFQAAYFkUKgAAwLIoVAAAgGVRqAAAAMuiUAEAAJZFoQIAACyLQgUAAFgWhQoAALAsChUAAGBZ/x8NpWlB1kdT5gAAAABJRU5ErkJggg==",
+ "text/plain": [
+ "