diff --git a/ViT_Face_Emotion_Recognition.ipynb b/ViT_Face_Emotion_Recognition.ipynb index 2785ef9..046befa 100644 --- a/ViT_Face_Emotion_Recognition.ipynb +++ b/ViT_Face_Emotion_Recognition.ipynb @@ -72,7 +72,7 @@ "base_uri": "https://localhost:8080/" }, "id": "TBLS3rKGcIUm", - "outputId": "7821da54-222a-4f20-84a9-f2367f714667" + "outputId": "6ead4dc4-da8a-4719-d0cc-1a66a14a1eb0" }, "outputs": [ { @@ -81,21 +81,21 @@ "text": [ "Requirement already satisfied: Pillow in /usr/local/lib/python3.7/dist-packages (7.1.2)\n", "Requirement already satisfied: pandas in /usr/local/lib/python3.7/dist-packages (1.3.5)\n", - "Requirement already satisfied: numpy>=1.17.3 in /usr/local/lib/python3.7/dist-packages (from pandas) (1.21.6)\n", - "Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.7/dist-packages (from pandas) (2.8.2)\n", "Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.7/dist-packages (from pandas) (2022.1)\n", + "Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.7/dist-packages (from pandas) (2.8.2)\n", + "Requirement already satisfied: numpy>=1.17.3 in /usr/local/lib/python3.7/dist-packages (from pandas) (1.21.6)\n", "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.7/dist-packages (from python-dateutil>=2.7.3->pandas) (1.15.0)\n", "Collecting timm\n", " Downloading timm-0.5.4-py3-none-any.whl (431 kB)\n", - "\u001b[K |████████████████████████████████| 431 kB 5.1 MB/s \n", - "\u001b[?25hRequirement already satisfied: torchvision in /usr/local/lib/python3.7/dist-packages (from timm) (0.12.0+cu113)\n", - "Requirement already satisfied: torch>=1.4 in /usr/local/lib/python3.7/dist-packages (from timm) (1.11.0+cu113)\n", + "\u001b[K |████████████████████████████████| 431 kB 8.1 MB/s \n", + "\u001b[?25hRequirement already satisfied: torch>=1.4 in /usr/local/lib/python3.7/dist-packages (from timm) (1.11.0+cu113)\n", + "Requirement already satisfied: torchvision in /usr/local/lib/python3.7/dist-packages (from timm) (0.12.0+cu113)\n", "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.7/dist-packages (from torch>=1.4->timm) (4.2.0)\n", "Requirement already satisfied: requests in /usr/local/lib/python3.7/dist-packages (from torchvision->timm) (2.23.0)\n", "Requirement already satisfied: pillow!=8.3.*,>=5.3.0 in /usr/local/lib/python3.7/dist-packages (from torchvision->timm) (7.1.2)\n", "Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from torchvision->timm) (1.21.6)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests->torchvision->timm) (2021.10.8)\n", "Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests->torchvision->timm) (2.10)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests->torchvision->timm) (2021.10.8)\n", "Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from requests->torchvision->timm) (3.0.4)\n", "Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from requests->torchvision->timm) (1.24.3)\n", "Installing collected packages: timm\n", @@ -119,7 +119,7 @@ "base_uri": "https://localhost:8080/" }, "id": "8wNJEIuURXEb", - "outputId": "30abb32b-84a1-479e-d2db-2e260e211327" + "outputId": "26b0c393-09d2-4c03-b4b0-66f12b1adec8" }, "execution_count": 2, "outputs": [ @@ -132,7 +132,7 @@ "remote: Counting objects: 100% (75/75), done.\u001b[K\n", "remote: Compressing objects: 100% (22/22), done.\u001b[K\n", "remote: Total 179 (delta 62), reused 53 (delta 53), pack-reused 104\u001b[K\n", - "Receiving objects: 100% (179/179), 650.16 KiB | 10.32 MiB/s, done.\n", + "Receiving objects: 100% (179/179), 650.16 KiB | 18.58 MiB/s, done.\n", "Resolving deltas: 100% (84/84), done.\n" ] } @@ -216,7 +216,7 @@ "base_uri": "https://localhost:8080/" }, "id": "0WafVw77sp2v", - "outputId": "e86a110e-1ecc-48ca-844f-433a64483431" + "outputId": "2970501b-00ae-42f1-9481-3b579ab3fe8c" }, "outputs": [ { @@ -4555,7 +4555,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 5, "metadata": { "id": "MfPgq1CyyuRW" }, @@ -5224,6 +5224,26 @@ "save_history(val_hist, val_history)" ] }, + { + "cell_type": "code", + "source": [ + "base_dir = \"/content/drive/MyDrive/Models/\"\n", + "\n", + "training_acc = [0.546881, 0.635938, 0.669750, 0.700075, 0.726281]\n", + "val_acc = [0.495588, 0.520588, 0.541544, 0.550919, 0.531985 ]\n", + "\n", + "for i in range(0, len(val_acc)):\n", + " training_acc[i] = round(training_acc[i], 2)\n", + " val_acc[i] = round(val_acc[i], 2)\n", + "save_history(filename=\"/content/drive/MyDrive/Models/\" + \"vfer_sam_5_history_train\", history=training_acc)\n", + "save_history(filename=\"/content/drive/MyDrive/Models/\" + \"vfer_sam_5_history_val\", history=val_acc)" + ], + "metadata": { + "id": "niNRv4DDFvMS" + }, + "execution_count": 14, + "outputs": [] + }, { "cell_type": "markdown", "metadata": { @@ -5244,7 +5264,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 72, "metadata": { "id": "7cHhjlB665Yq" }, @@ -5252,17 +5272,32 @@ "source": [ "# plot and data management functions\n", "\n", - "def plot_graphs(train, val, metric):\n", - " plt.plot(train)\n", - " plt.plot(val, '')\n", - " plt.xlabel(\"Epochs\")\n", - " plt.ylabel(metric)\n", - " plt.legend([metric, 'val_'+metric])\n", + "def plot_graphs(train, val, num_epochs, limity = None, stepx_size = 1):\n", + " ran = list(range(1, num_epochs + 1, stepx_size))\n", + " print(ran)\n", + " plt.figure(figsize=(16,5))\n", + " plt.subplot(1, 2, 1)\n", + " plt.xlim(1, num_epochs)\n", + " plt.ylim(0, limity)\n", + " plt.plot(ran, train, marker='o', linestyle='--', color='r', label='Training Accuracy') \n", + " plt.plot(ran, val, marker='o', linestyle='--', color='b', label='Validation Accuracy') \n", + " plt.xlabel('Epochs')\n", + " plt.ylabel('Accuracy %') \n", + " plt.title('Accuracy Plot')\n", + " plt.legend() \n", + " plt.show()\n", + "\n", "\n", "def tensor_to_list(tensor_list):\n", " l = []\n", - " for el in tensor_list:\n", - " l.append(el.item())\n", + " try:\n", + " # Tensor support\n", + " for el in tensor_list:\n", + " l.append(el.item())\n", + " except AttributeError:\n", + " # Case of simple list\n", + " for el in tensor_list:\n", + " l.append(el)\n", " return l" ] }, @@ -5288,14 +5323,14 @@ "cell_type": "code", "source": [ "# load history divided by steps\n", - "steps = [10,20,25]\n", + "steps = [5, 10, 15, 25]\n", "base_dir = \"/content/drive/MyDrive/Models/\"\n", "train_accuracy = []\n", "val_accuracy = []\n", "train_loss = []\n", "val_loss = []\n", "for step in steps:\n", - " name_model = \"vfer_grad_\" + str(step)\n", + " name_model = \"vfer_sam_\" + str(step)\n", " model_folder = base_dir + name_model + \"/\"\n", " train_accuracy += tensor_to_list(load_history(model_folder + name_model + \"_history_train\"))\n", " val_accuracy += tensor_to_list(load_history(model_folder + name_model + \"_history_val\"))\n", @@ -5306,7 +5341,7 @@ "metadata": { "id": "Q8m_WwwjRmGm" }, - "execution_count": null, + "execution_count": 73, "outputs": [] }, { @@ -5322,38 +5357,85 @@ "metadata": { "id": "Fc3SEJdNRtDL" }, - "execution_count": null, + "execution_count": 74, "outputs": [] }, { "cell_type": "code", "source": [ "# accuracy plot\n", - "plt.figure(figsize=(16,5))\n", - "plt.subplot(1, 2, 1)\n", - "plot_graphs(train_accuracy, val_accuracy, 'accuracy')\n", - "plt.ylim(0, 1)" + "print(train_accuracy)\n", + "print(val_accuracy)\n", + "plot_graphs(train_accuracy, val_accuracy, 25)" ], "metadata": { - "id": "IT7XOelQRuyO" + "colab": { + "base_uri": "https://localhost:8080/", + "height": 421 + }, + "id": "IT7XOelQRuyO", + "outputId": "3987610c-f2c7-4176-9aea-d3aacda621fc" }, - "execution_count": null, - "outputs": [] + "execution_count": 75, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[0.55, 0.64, 0.67, 0.7, 0.73, 0.74, 0.75, 0.76, 0.77, 0.78, 0.77, 0.77, 0.77, 0.77, 0.77, 0.77, 0.77, 0.77, 0.77, 0.77, 0.77, 0.77, 0.77, 0.77, 0.77]\n", + "[0.5, 0.52, 0.54, 0.55, 0.53, 0.55, 0.55, 0.56, 0.55, 0.54, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55]\n", + "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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gyOPPDJjeSeqar8bGtU8RUTGjYMuXaBRo/A+blzGN3Huuefyy1/+kv79+3Pdddfx3nvv8aMf/Yi+fftyyCGHsHDhQgCmT5/O8ccfD4TAe9555zFw4ED23ntvRo0aVZpfy5YtS9cfOHAgp556Kj169GDYsGHER8uaNGkSPXr0ID8/n8suu6w034qmT59Or169GDFiBM8880zp/OXLl3PSSSeRl5dHXl5eacAeM2YMBxxwAHl5efz85z8v3b8XXnghafkOP/xwTjjhBPbbbz8ATjzxRPLz8+nVqxejR48uTfPqq6/Sr18/8vLyGDRoECUlJXTv3p0VK1YAIch369atdLoubR8/AUREamrcOLjwQigqCtNLl4ZpgGHDMrqpwsJC3n77bRo3bszatWuZMWMGTZo0YcqUKdx44428+OKLldIsWLCAadOmsW7dOvbdd19GjBhR6VaLDz74gLlz59KhQwcOPfRQ3nrrLQoKCrjooot488036dq1K0OHpr71/plnnmHo0KEMGTKEG2+8kS1btrDTTjtx2WWXMWDAAF566SW2bt3K+vXrmTt3LnfccQdvv/027dq149tvqxo8K3j//feZM2dOaS/Xxx9/nDZt2rBhwwYOPPBATjnlFEpKShg+fHhpeb/99lsaNWrEWWedxbhx47jiiiuYMmUKeXl5tG8f6TG0WaHgKSLbv4EDK887/XT41a/ghhvKAmdcURFcfnkInitXwqmnll8+fXqNinHaaafRuHFjANasWcM555zDJ598gpmxZcuWpGmOO+44mjZtStOmTdl9991Zvnw5HTt2LLfOQQcdVDqvT58+LFmyhJYtW7L33nuXBqyhQ4eWq+XFbd68mUmTJnHPPffQqlUr+vfvz+TJkzn++OOZOnUqY8aMAaBx48bsuuuujBkzhtNOO4127doB0KZNm2r3+6CDDip3e8ioUaN46aWXAFi2bBmffPIJK1as4IgjjihdL57veeedx5AhQ7jiiit4/PHH+cUv6sfD6BQ8RWTHVliYfP6qVRnfVIsWLUo///a3v+XII4/kpZdeYsmSJQxMFuCBpk2bln5u3LgxxcXFNVonlcmTJ7N69Wp69+4NQFFREc2bN0/ZxJtKkyZNSjsblZSUlOsYlbjf06dPZ8qUKbzzzjvk5OQwcODAKm8f6dSpE3vssQdTp07lvffeY1wWmtRrQtc8RWT7N3165devfhWWde6cPE1ubnhv165y2gxYs2YNe+0VhjB+8sknM5Jnon333ZfPPvuMJUuWAPDss88mXe+ZZ57h0UcfZcmSJSxZsoTFixfz+uuvU1RUxKBBg3jooYcA2Lp1K2vWrOGoo47i+eefZ1Xsx0W82bZLly7Mnj0bgIkTJ6asSa9Zs4bWrVuTk5PDggULePfddwE4+OCDefPNN1m8eHG5fAEuuOACzjrrrHI197qm4CkiO7aRIyEnp/y8nJwwP4uuu+46brjhBvr27Rupppiu5s2b8+c//5nBgweTn59Pq1at2HXXXcutU1RUxKuvvspxxx1XOq9FixYcdthhvPzyy/zpT39i2rRp9O7dm/z8fObNm0evXr246aabGDBgAHl5eVx11VUADB8+nDfeeIO8vDzeeeedcrXNRIMHD6a4uJiePXty/fXXc/DBBwPQvn17Ro8ezcknn0xeXh5nnHFGaZoTTjiB9evX15smWwCL98pqKDSep4hUZ/78+fTs2TP9BOPGwU03weefh5royJEZ7yxUF9avX0/Lli1xdy6++GK6d+/OlVdeWdfFimzWrFlceeWVzJgxY5vzSnZumNlsd6/+/qAEuuYpIjJs2HYRLCt65JFHeOqpp9i8eTN9+/bloosuqusiRfb73/+ehx56qN5c64xTzVNEtjuRa56yw8hUzVPXPEVERCJS8BQREYlIwVNERCQiBU8REZGIFDxFRDLsyCOPZPLkyeXm3XfffYwYMSJlmoEDBxLvDHnssceyevXqSuvceuut3H333VVue8KECcybN690+uabb2bKlClRil8lDV0WKHiKiGTY0KFDGT9+fLl548ePr/Lh7IkmTZrEbrvtVqNtVwyet912G0cffXSN8qqo4tBl2ZKNh0ZkmoKniOzwMj0i2amnnso///nP0ue7LlmyhC+//JLDDz+cESNGUFBQQK9evbjllluSpu/SpQsrV64EYOTIkeyzzz4cdthhpcOWQbiH88ADDyQvL49TTjmFoqIi3n77bSZOnMi1115Lnz59+PTTT8sNFfavf/2Lvn370rt3b8477zw2bdpUur1bbrmFfv360bt3bxYsWJC0XBq6LIG7N6hXfn6+i4hUZd68eWmvO3ase06OO5S9cnLC/G1x3HHH+YQJE9zd/c477/Srr77a3d1XrVrl7u7FxcU+YMAA/+ij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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ] }, { "cell_type": "code", "source": [ - "# loss plot\n", - "plt.figure(figsize=(16, 5))\n", - "plt.subplot(1, 2, 1)\n", - "plot_graphs(train_loss, val_loss, 'loss')\n", - "plt.ylim(0, None)" + "plot_graphs(train_loss, val_loss, 25, limity= 1.5)" ], "metadata": { - "id": "yRcABRCARv9p" + "id": "dcfEqib6NRH4", + "outputId": "6a38fdaa-0a09-4aae-ce15-e602a0a642a8", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 367 + } }, - "execution_count": null, - "outputs": [] + "execution_count": 76, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAc8AAAFNCAYAAABmAOT4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deXxU1f3/8deHRSCCgoCKLAnWBUUMkLhUUVBsi9qCCi4UrTuK1q3WurVqVb7W4q91t8W1IF/XKl+0KHUBxYVqcCsguGCQRRFQEAwKIZ/fH2eSTJKZJBNmMpnJ+/l4zCMzdzn3c29u8plz77nnmLsjIiIi9dci3QGIiIhkGiVPERGRBCl5ioiIJEjJU0REJEFKniIiIglS8hQREUmQkqeIbBUzyzMzN7NW6Y5FpLEoeYokgZnNMrNvzKxNumNJBTMbYmZlZrbBzNab2SIzO70B5VxnZg+nIkaRxqTkKbKVzCwPOARwYHgjb7sxa3sr3L09sB1wOXCvme3diNsXaTKUPEW23q+AOcBDwKnRM8ysp5k9ZWarzGyNmd0ZNe9sM/swUpNbYGYDI9PdzHaLWu4hM7sx8n6ImS0zs8vN7EvgQTPrZGbPRrbxTeR9j6j1dzCzB81sRWT+1Mj0eWb2i6jlWpvZajMbUNvOejAV+AaokTzNbBczm2ZmX5vZJ2Z2dmT6MOAq4MRIDfb9eh5fkSZH9yhEtt6vgL8A/wHmmNlO7r7SzFoCzwIvA6cAW4BCADM7HrgOOAYoAn4EbK7n9nYGdgByCV+Ac4AHgROAlsADwJ2RsgEmAxuAvpGfB0WmTwJOBp6JfD4K+MLd361t42bWAhgBdAT+G2ORR4F5wC5AH+AFM/vU3Z83s/8BdnP3k+u5ryJNkpKnyFYws0GEJPa4u682s0+BXwJ/BfYnJJDL3L00ssprkZ9nAX9297cjnz9JYLNlwLXu/kPk80bgn1ExjQdmRt53A44EOrv7N5FFXon8fBj4g5lt5+7fEhL85Fq2u4uZrY1s/3PgFHdfFLlsXb7tnsDBwNHu/j3wnpndR/iC8XIC+yjSpOmyrcjWORX4t7uvjnz+Xyov3fYElkQlzmg9gU8buM1VkcQEgJnlmNnfzWyJmX0LvAp0jNR8ewJfRyXOCu6+AngdGGlmHQlJdkot213h7h3dfQd37+/uj8ZYZpfI9tZHTVsCdE94L0WaMNU8RRrIzNoRuVQauf8I0IaQuPKBpUAvM2sVI4EuJVyqjaWEcCm23M7AsqjP1YdCuhTYEzjA3b80s/7Au4BFtrODmXV097UxtvUPQi24FfCmuy+Pv8f1siKyvQ5RCbQXUF6uhnGSrKCap0jDHUO4j7k30D/y2guYTbhM+RbwBfAnM9vWzNqa2cGRde8DfmtmBRbsZma5kXnvAb80s5aRRjaD64ijA+HS7Voz2wG4tnyGu38BPAfcHWlY1NrMDo1adyowELiIcA90q7j7UuAN4KbI/u4LnEm4RAywEsiL3DcVyVg6gUUa7lTgQXf/3N2/LH8RGuuMIdT8fgHsRrhHuAw4EcDdnwDGEy7zricksR0i5V4UWW9tpJypdcRxK9AOWE1o9ft8tfmnEBojLQS+Ai4un+Hu5fdLewNPJbb7cY0G8gi10KcJ92dfjMx7IvJzjZm9k6TtiTQ602DYIs2bmV0D7KEWsCL1p3ueIs1Y5DLvmYTaqYjUky7bijRTkc4LlgLPufur6Y5HJJPosq2IiEiCVPMUERFJkJKniIhIgjKuwVCXLl08Ly8v3WGIiEiWmDt37mp375rIOhmXPPPy8igqKkp3GCIikiXMbEmi6+iyrYiISIKUPEVERBKk5CkiIpIgJU8REZEEKXmKiIgkSMlTREQkQUqeIiIiCVLyFBERSZCSp4iISIKUPEVERBKk5CkiIpIgJU8REZEEpSx5mtkDZvaVmc2rY7n9zKzUzEalKhYREZFkSmXN8yFgWG0LmFlL4Gbg3ymMQ0REJKlSljzd/VXg6zoWuwD4J/BVquIQERFJtrTd8zSz7sCxwD3pikFERKQh0tlg6Fbgcncvq2tBMxtrZkVmVrRq1apGCE1ERCS+VmncdiHwqJkBdAGOMrNSd59afUF3nwhMBCgsLPRGjVJERKSatCVPd+9d/t7MHgKejZU4RUREmppUPqryCPAmsKeZLTOzM83sXDM7N1XbFGmoKVMgLw9atAg/p0xJd0Qi0pSlrObp7qMTWPa0VMUhUpcpU2DsWCgpCZ+XLAmfAcaMSV9cItJ0qYchafauvroycZYrKQnTRURiybjkOXeuLqtJ8mzaFGqasXz+eePGIiKZI+OSJ1ReVlMCla1VWgqt4ty86NEDZsxo3HhEJDNkZPIEXVaThvvuO7jhBti4EXJy4K67ws9oOTkwYAAMGwaXXQabN6cnVhFpmjI2eYIuq0niZsyAffaBa66prFWOHQsTJ0JuLpiFnxMnwmOPwXnnwS23wKGH6nwTkUoZnTx32SXdEaSPHq1IzJo18KtfhZpkmzYwezYcc0zl/DFjoLgYysrCzzFjoG3bUCt97DGYPx/694dXX03XHohIU5LRyXPjRvjgg3RH0fjKH61YsgTcdQ+4Pk4/HR55BH7/e3jvPRg0qP7rnnACvPMOFBZC7951Ly8i2S8jk2duLtx4Y6gZ3HpruqNpfHq0on6WLoXyrpAnTAgttW+4IZw3idptN/j3v6Fnz1A7veKK7L6Mm4wrG7o6IlnN3TPqVVBQ4OWWL3cvKQnvv/3Wmw0z91DnrPoyS3dk6fHww+65uWH/c3PdJ092v+su9w4d3H/1q+Rvb8GCUHanTu7PPJPcsqvvy8MPN34ZDz/snpNT9dzKyXG//373Tz+t+fr++7DeunWV0/7yF/d27WqW0ZD9kezTFM7z6DKgwD3BXJT2ZJjoKzp5llu3zn2vvdx/8xv30tLED2Cm6dQpdvLcYQf3srJ0R9e4Yv2jb9Ei/PzJT9wXL07Ndj/+2L1//7Cd3/7WfdOmrS8zXtJK5J9Cfcr44Qf34mL3115zf+wx988/D9PfeMN90CD3li1jn19dusSeXlQU1v/b32LPr36OfvBB8/g7ldga6zxPrIxmmjxLS90vuCDszTHHuG/YUP8DmGleey1806r+D648YZx8svv69emOsvGEb401X507p/6LxMaN7uPGhe2NGrX134R79Yq9L926hfmbNrn/8581XwsWhPklJfETXG6u+7vvuu+4Y8155XHOnes+ZEj8xGfm/o9/1HytXh3WX7SoclpdSbR9+7Ctyy9337w5/jFpajWUdF8RSHcMySijZ8/4X86iz+uZMyvX+fe/q86Ld55HlzFnTuX606bV/LvZeefodZtp8ix3220hiRQUuK9YUefvMON88UX4R7rbbu733lv1BJ40yf3668P+77mn+1dfpTva1Pn6a/fnn3f/4x9r/0ffWB57zP0Pf6jfN+HnnnOfONH9mmvczzzT/Wc/c/+f/wnz4l2OhzB/3brY8667Lsxftqz24/HFF+5nnx2Wv/feEMsHH9T8shnvC0lubv2PSbwydtklnKvnn+9eWBjO5XLnn+9+3HHuN9/sPmtWuEzc9Goo6SmjKcRQVxllZe6rVrm/9577v/4V/i7KXXqpe9++7h07xj9Hq78OOqhy/b33rv965a9RoyrXr3u7iSdPc/d033ZNSGFhoRcVFcWd/+yzcNJJMHQo/N//NWJgjWDpUjj5ZLjjDth339jLzJwJjz8Od98dnllMtSlTQkOlzz+HXr1g/PjEO1OvrYxNm8JjJt26hd6A9t0XPvwwzDODli3D9Opyc8MjJ40lLy92N3+tWsHIkfDoo+HzLrvAF1+E2HfeGbp3D/OvuCJ+Gd27w7JlsGVLeGSmup12Cq/Nm8N+f/FFzWUSOR7VO8qH0GnExIn1/93Wt4wtW8LvEOCSS2DaNFi8uPayt98eLrggvB84EI49Nry/9trQmCva3/9e2WgsVhmDB8MRR8CGDXDzzTWX++lP4ZRTYv9ett8+PCt8wAHhmN99d81lRo4Mjzj16AHLl9ec360brFgBH30EkyfXnH/aafCjH1WeN9WVnxtz58LUGAM6XnAB7LgjvPkmHHkkrFtXc5ncXHjoIXjppZrzrroK2rUL+/naa+F/T6wyOnQIf6s//FA5rWNH+Oab8P73vw/nbvfu4dxYuzb2sXj++crPOTmhoR7AokVVyx42LPbxiC5j++3DvkHY9pYtVZc96qjo30kh7kWJ/cdMNNum+1VbzbPcu++Gb+Hu2XMPsHw/EtmfTz91P+ec1F3GTdU32W22CTWyAw90b9PGfejQyuUvvNB9/Hj3F18MNbFkxJAMtdUab7+9crkPPgj3GGPdI20qtYvyctJ1ee+rr9yffbb2mkKLFuF15pmV67VuXTm9/FVXGb//fVh35cqa67ZoEWrBtf1u7747rP/ee7HXnzw5zK+rkd/06bHXf+GF+q1///2x158/P8y/7bb4+2DmfuONsdf/+uuw/uWX1308f/tb91tvdX/iiXD/fMmS+OdFUzjPdc+zFqWl4R7oPffUe5Um6Ykn3EeMSLxF8QMPhBO+Tx/3//43+XH16BH7j6hdO/ef/7zqq9wdd1SdXr1FZvQf9KBB4XLPtGm1x5GMf/RbKxmXOt2bxj2ppiKVl48zrYymEEOyynBvOud5s29tG89337kffXTYy0svzcwWfh9+GBpXHHhgaCWZqJdfDjfG27UL3063tia+alVoVfnTn8b+Iyp/DRxY9VXuhhuqTq/t23AmaSo14GzSNGso6SmjKcSQrDKaIqDIlTyr2ry5siVuQUFo6ZUp38jXrw+P4HTt6r50acPL+fLLcOkT3O+7L/H1i4tDYxP3UAuE0NBju+1iJ750fJNtCrKlxteUNLUailrbZud5ruRZi1NOqfkPuil/Yyorcz/xxHDZ9aWXtr680tJwyfS77yo/1/ZHsHBhaAVaUBCO1TXXhOkbN4b7dmVl+iYrItlBybMWmVbDWbrUfaed3G+6Kfllr18f9nubbWomrcmTKxMmuB9wQGg0Ea+zAX2TFZFM15DkmXWPqsTTokVIB7G8+CIcfnjjPNqRiNWroXPn5Me1enXoo/X772vOy82FU0+FLl3CIwA9eiR32yIiTY2ZzXX3wkTWyciO4RuiV6/Y01u0CM959esH99/fuDHF8uWXcNNN4ZmkLl1Sk9C7dKn6zFS0zz+HP/4xPB+mxCkiEluzSZ7jx4eHbqPl5ISE+eCDsM02oQZa7ssvGzc+CA/7n3RSGPmjrgfFt1a8LxPxpouISKVmkzzHjAm9m+Tmhtpcbm74fNpp4TV3Ltx3X1h23rzQE8Yxx8DLL8e/3JtsV14Jr7wS4tp999RuK96XifHjU7tdEZFs0GySJ4QEWlwcuvAqLq7aTZgZbLtteN+1a0hkb7wRuvnr1y9087VxY+rGKHzySbjlFjjvvNAFX6rF+zKRaNd6IiLNUbNpMNQQ338Pjz0Gt90W+la89Va4+OKt6/Mzlu++C8lrt91CzbNNm62PXURE6qchDYaUPOvBPdRUDzus9o67t8Z//hM6f+7Zc+vKERGRxKi1bYqYQe/eoSVqLMuXw4UXhvfuYfSB776ru1z3cGkYwsgMSpwiIplByTMB8VqiduoEP/95eP/ZZ3DIIWE4nP794ZxzQove6OGIou+bHnxwuL8qIiKZI2XJ08weMLOvzGxenPljzOwDM/uvmb1hZvmpiiVZ4rVQveOOMO4fhHEVn302jIO3005hbM2zzqqsYd58c2jdG3359/bbk9fwSEREUi9l9zzN7FBgAzDJ3feJMf8g4EN3/8bMjgSuc/cD6io3Hfc8oyU6+HNZGXz8cRikdbvtQkve1atrLtfYgzeLiEjQ5BoMmVke8Gys5FltuU7APHfvXleZhWZelJtbd9ZqouJ1E2gWEq2IiDSuTG4wdCbwXLyZZjbWzIrMLFQ5lyyBsWMz8lqnevYREcl8aU+eZnYYIXleHm8Zd5/o7oVVvhmUlITrpxlGPfuIiGS+tCZPM9sXuA8Y4e5rEi4g3rMjTZh69hERyXyt0rVhM+sFPAWc4u4fNaiQDL3WOWaMkqWISCZLWfI0s0eAIUAXM1sGXAu0BnD3vwHXAJ2Buy2Mu1Wa0A3bdu10rVNERNIi87rnM/MigFNOgUmT0h2OiIhkuIa0tk3bZdsGKyiAVq1CZ7BlZeHZDxERkUaUeckTwthdLVuGFjciIiKNLDOT56BB6Y5ARESascy95rl8OZx7LixenO5IRESkmcnc5Alw331w993pjkJERJqZzE2e3bvDcceF8b5KStIdjYiINCOZmzwBLrgA1q7NyD5uRUQkc2V28hw0CPLz4c47Yw9VIiIikgKZnTzN4Le/hYMOgu+/T3c0IiLSTGTmoyrRTj45vERERBpJZtc8y7nDa6/BF1+kOxIREWkGsiN5LlsGhx4Kd92V7khERKQZyI7k2bMn/OIXYWDMH35IdzQiIpLlsiN5QnhsZdUqePzxdEciIiJZLnuS59Ch0KcP3HFHuiMREZEslz3J0wx+/evQ160aDomISAplT/IEOPPM0HioW7d0RyIiIlks85/zjNa2bfhZVgabNlV+FhERSaLsqnkCbNgAe+4ZBswWERFJgexLnu3bw667wj33wObN6Y5GRESyUPYlTwiPraxYAVOnpjsSERHJQtmZPI88Enr31mMrIiKSEtmZPFu2hPPOg9mz4YMP0h2NiIhkmexqbRvtzDNht92gb990RyIiIlkme5Nnp05wzDHpjkJERLJQdl62LVdWBtdeC/fdl+5IREQki2R38mzRAmbNgvHjYcuWdEcjIiJZImXJ08weMLOvzGxenPlmZreb2Sdm9oGZDUxJIBdcAMXFMH16SooXEZHmJ5U1z4eAYbXMPxLYPfIaC9yTkihGjIDu3fXYioiIJE3Kkqe7vwp8XcsiI4BJHswBOppZ8nt0b90axo2DF16AhQuTXryIiDQ/6Wxt2x1YGvV5WWRa8scTO/tseP99cE960SIi0vxkxKMqZjaWcGmXXr16JV7AjjvC448nOSoREWmu0tnadjnQM+pzj8i0Gtx9orsXunth165dG77Fjz6CV19t+PoiIiKkN3lOA34VaXV7ILDO3ZN/yTbaUUfB0KHhEZa8PJgyJaWbExGR7JSyy7Zm9ggwBOhiZsuAa4HWAO7+N2A6cBTwCVACnJ6qWICQKJcuhdLS8HnJEhg7NrwfMyalmxYRkexinmGNaAoLC72oqCjxFfPyQsKsLjc3PAcqIiLNkpnNdffCRNbJ7h6Gon3+eWLTRURE4mg+yTNeK92GtN4VEZFmrfkkz/HjISen6rScnNCBwsaN6YlJREQyUvNJnmPGwMSJ4R6nWfh5663w5z/Dz38O332X7ghFRCRDZEQnCUkzZkzNlrXt2sGpp8LPfhY6j99uu/TEJiIiGaP51DzjOflkeOwx+M9/4Igj4OvauuMVERFR8gxGjYKnngr93958c7qjERGRJq55XbatzS9+AbNnQ//+6Y5ERESaONU8o+2/P2yzDaxeDcceq2dARUQkJiXPWJYsgZdfhkMPhcWL0x2NiIg0MUqesRQUhOS5fn1IoIsWpTsiERFpQpQ84ykogJkzYfNmGDwYFixId0QiItJE1Dt5mtluZvawmf3TzH6cyqCajH33hVdegT59oFOndEcjIiJNRNzkaWZtq026AbgSuBi4J5VBNSl9+sCsWdCtWxjObMKEMEKLxgQVEWm2antU5Rkzm+zukyKfNwN5gANbUh1Yk3TssfDss5WfNSaoiEizVNtl22HAdmb2vJkdCvwW+BlwLNA8M8W779acVlICV1/d+LGIiEjaxK15uvsW4E4zmwz8ARgH/N7dP22s4JqcFStiT9fzoCIizUrc5GlmBwCXAZuA/wE2AuPNbDlwg7uvbZwQm5BevcKl2ljTRUSk2ajtsu3fgQuB64C/u/un7n4SMA14rBFia3rijQk6fnx4pEVERJqF2pJnKaGBUC6h9gmAu7/i7j9LcVxNU6wxQSdOhDVrwrOgq1alO0IREWkEtSXPXwIjgcOBXzVOOBlgzBgoLoaysvBzzBjo3j00JjrwQFi4MN0RiohIisVNnu7+kbtf6u5XuvvSxgwq44wcGZ4F3bABfvzj0DORiIhkLXXPlywHHBAG1N5lFxg2DJbq+4aISLbSeJ7JlJcHr78OL7wAPXumOxoREUmROmueZvYLM1MNtb46doTjjw/vX3oJTjkFvv8+vTGJiEhS1Scpngh8bGZ/NrM+qQ4oq8yfDw8/DIcfrpa4IiJZpM7k6e4nAwOAT4GHzOxNMxtrZh1SHl2mu/BCeOIJtcQVEcky9boc6+7fAk8CjwLdCP3bvmNmF9S2npkNM7NFZvaJmV0RY34vM5tpZu+a2QdmdlQD9qFpGzWqakvcT5tv74YiItmiPvc8h5vZ08AsoDWwv7sfCeQDl9ayXkvgLuBIYG9gtJntXW2x3wOPu/sA4CTg7obsRJNX3hL3/PNh113DMGYa1kxEJGPVp7XtSOCv7v5q9ER3LzGzM2tZb3/gE3dfDGBmjwIjgAXRxQDbRd5vD8TpeT0L5OXBjTeGRHnWWZWNiDSsmYhIxqnPZdvrgLfKP5hZOzPLA3D3l2pZrzsQ/bDjssi06mWfbGbLgOlArZeBs8LVV9dsfathzUREMkp9kucTQFnU5y2RackwGnjI3XsARwGTYz0WE2mgVGRmRasyvdVqvOHLNKyZiEjGqE/ybOXu0R3DbwK2qcd6y4HongJ6RKZFOxN4PFLum0BboEv1gtx9orsXunth165d67HpJize8GUdOzZuHCIi0mD1SZ6rzGx4+QczGwGsrsd6bwO7m1lvM9uG0CBoWrVlPgeGRsrdi5A8M7xqWYdYw5ptsw38v/8X3i9erOHNRESauPokz3OBq8zsczNbClwOnFPXSu5eCvwamAF8SGhVO9/Mro9KxpcCZ5vZ+8AjwGnu7g3ZkYwRa1izBx6A00+HH36An/wE9tsP5s5Nd6QiIhKH1TdXmVl7AHffkNKI6lBYWOhFRUXpDCG1nn46PNKyciVceilcd13NmqqIiCSNmc1198JE1qlXx/BmdjTQF2hrZgC4+/UJRyh1O/ZYOOww+N3vYMIEeOqpMMSZOpoXEWky6tNJwt8I/dteABhwPJCb4riat44dw6XdmTPhoIPCYNsQBuAWEZG0q889z4Pc/VfAN+7+R+DHwB6pDUsAGDIEJk0KPRGtXAn9+sGTT0KW3xYWEWnq6pM8y5/oLzGzXYDNhP5tpTGtWwdt24bhzo47Du68U138iYikSX3ueT5jZh2BCcA7hC717k1pVFLTHnuE/nH/8pfQG9HUqZXz1MWfiEijqrW1baS3nwPd/Y3I5zZAW3df10jx1ZD1rW3ro3t3WBGjG+DcXCgubvRwREQyWUNa29Z62dbdywgjo5R//iGdiVMivvgi9vQlS8JLRERSqj73PF8ys5FW/oyKpF+8Lv4gDHk2ciS88ooaFomIpEh9kuc5hI7gfzCzb81svZl9m+K4pDaxuvjLyYHbbgvPh77yCvziF2EAblASFRFJsjobDLl7h8YIRBJQ3ijo6qvDaCy9eoWEWj79mmvg/fehQ4eQOIcODV3+nXdeuC8qIiJbpT6dJBwa69UYwUktxowJjYPKysLP6Fa27drBgQeG9xs2wA47wC23hEu6xx0Hs2aFpDplih53ERFpgPo8qnJZ1Pu2wP7AXODwlEQkydWhQ+hY4fPP4Z57Qs9FTz8NF18c3peUhOX0uIuISL3Vu2P4ihXMegK3uvvI1IRUOz2qspU2boTHHoNrr409ALcedxGRZibpj6rEsQzYqwHrSVPQrh2cdhosXRp7/pIl8NxzjRqSiEimqfOyrZndQehVCEKy7U/oaUgyWa9esZ8JNQuXd488MnyeMSN0Tt9B7cZERMrVp+ZZRLjHORd4E7jc3U9OaVSSevEed3nwQfj738PnpUth2DDo2hWGD4eHHoKvv666jhodiUgzVJ8GQ08C37v7FgAza2lmOe5ektrQJKXqetwFYJddwjOjTz0VXs88Ay1bhvfDh4dEOXasGh2JSLNTZ4MhM5sDHOHuGyKf2wP/dveDGiG+GtRgKE3coagoJM6LLoKdd4bOnWvWREGNjkQkozSkwVB9ap5tyxMngLtvMLOc2laQLGQWOlrYb7/KabESJ8RuxSsikkXqc8/zOzMbWP7BzAqAjakLSTJGvN6KyvvenTwZ3nlH3QOKSNapT/K8GHjCzGab2WvAY8CvUxuWZIR4jY7Gj4cffoBx46CgIPRsdOml8PrroUckEZEMV2fydPe3gT7AOOBcYC93n5vqwCQDjBkTeinKzQ2XdXNzw+cxY6BNm3Df8/77oW9fuPNOGDQI/vznsG5pKWzeHN6rxa6IZJj6NBg6H5ji7msjnzsBo9397kaIrwY1GMpQ69bB9Omw//7wox/BtGlw+ukhsb71VqiplsvJqUzCIiIplqoehs4uT5wA7v4NcHaiwUkzt/32MHp0SJwQHoM5+mh47bWqiRPCoy9XXdX4MW4t1aBFmo36JM+W0QNhm1lLYJvUhSTNQmEhTJoUf375s6fHHx9GhJk9u/J50uqaQtIqf+Z1yZLQQKr8mddEY0nGvjSF45EsTeV4NIUymkIMTUm698Xda30BE4DHgaGR1+PA/6trvVS9CgoKXLJIbq57SDdVX507u594onteXuW0fv0q13v+eff5890nT3bPyam6bk6O+8MPN94+lJa69+oVez/atHE/4QT39evDsvPmuc+e7f7ZZ+4//FC1nIcf3vp9SUYZTUVTOR5NoYymEENTkuR9AYo8wVxUn3ueLYCxwBGRSS8A97p7WppN6p5nlqneSxHUvOe5cmW4L7p5cxiP1D100PDNN6GhUqxzONUdNWzaBC+9FDqN+L//g9Wr4z+S06cPzJsXemc655ywb+V23BF694Y33ww/Y/U3vOOO4RgAzJkDa9ZUnb/ddnDIIeH9zjtXLhst0eMxZUrtvU81Rhm9esUewKBr19CNZLmDDoJOncJ2/vvfqsuefjqsWlV7GYcfHgZM+Phj+OijmjR1cqAAABnXSURBVMued17sZ5fLyzjyyFD7mTev5u+vRYswPy+v7t9tUVHN311ODhx2WPz1d9oJvvwyvH/9dVi7tur8Tp3C8YHsOjdyc5MzKlQkjsIlSyhyt7pXiJJotgUOAe6q57LDgEXAJ8AVcZY5AVgAzAf+t64yVfPMQg8/HGqgZuFnXd8ey8rcP/zQ/aGHYtf2yl8TJri/+qr7d98lL9aVK93HjHHfbruwjQ4d3EePdu/WLXYMublV1//ss1Brvv9+9z/+0X3sWPdTTw3zzOLvS7nDDqs5r3//yvnx1jcL8885x/30093/8Af3v/3N/dln3T/6qGqMqa7lbNkSjuPcue7Tprl//nlYp6jI/Ygj3PfaKxzX2n630a85c8L6991X/3WiX+Xbv+GG+MeutvU3bw7rjxtXc17btvX/3Y4YUXPerrvWf/3996857+CD639unHSS+y9/6X7ZZe633ur+5JPuCxY07rlRVua+dm24qjRjhvuXX4Z15sxxP/rocK537Vr772Pvvd1/8pNwni9fHtZfutT93Xfdv/oqbKNaHAXhONaae6q/6jWep5kNAEZHEt1nwFPufkcd67QEPgJ+QhjG7G1CK90FUcvsTrgMfLi7f2NmO7r7V7WVq5qnVBHvG3nLlrBlS+X7fv1gwgQ44ojwmEyLFuFVLt434XXr4NlnQxknnRQaN+29NwwZAiNHwtCh4bGc+tSgG7ov3brBihXh/cKFsH591fk5OaHVMoSGWF98UbOM8m/kP/tZqCF9+WXlM7cnngiPPhreDxgAH35YsxEXhONS3ndxtEGDYPBg2LABbrstTJswIRy76lq2DMe9/DElCLW3006D996Dc8+F7t2hR49wT7x6TQpCDWratMrPe+0F7duHGmb1Wsfw4ZU1s3hl7Ltv+B2uWAHLl9dcdtSo2LWc8jIKC8MVkOLimrVcszC/Pr/bjz+uub9t2oT46rP+ggXw3XdV57dvH44P1H1u/OQn8Omn4Rhs2hTmnXFGeNysrCw09luxonJetJ49w1WV6g47LNR8v/kG7o48oBHv3GjVCtq2DedRuccfD+0eXn8dfv3rcG507x7GJI5VRocO4W98+XJYtizU5rt1gxtugGuuCcu0aROOxYoVFed5ISSv5gnsAVwLLAReAy4AltQ3KwM/BmZEfb4SuLLaMn8Gzkok26vmKVXU9i32yy9Dzebqq0ONpryG8vTToeY4dKj7VVe5X3KJe7t2VcvYZhv3ffd1b906fD788Mptln9zjRVLIjXoRPYl2WVs3hy+jc+Z4/7++2FaaWmoedRWQ4k1/fe/D+t/+WXtNYLy1+WXu99xh/tTT7n/5z+hppHu49HUy2jMGMrK3FetCjW1RYvCtJKSUJNL9Ny46aaw/qef1u/cuOiicMXof//X/ZVX3L/+OjnH45NPQk36tttCzbraed6Qmmdtya8MeAXYLWra4noXDKOA+6I+nwLcWW2ZqZEE+jowBxhWV7lKnlJDokmrqChcYhs40L1Vq/h/yK1auf/2t+5vvhkuNTaGrU3AySgjXiOuXr3cN22q+SotDeuVlVVOi9eAqvpl7FTvSzaV0RRiyKZzI2pfkp08jwEeBZYC9xJa2n5W74LrlzyfBZ4GWgO9I9vqGKOssYRxRYt69eqV2AESqU1JSfxvzeX3gpqbplDTkqYpm86NrbznWZ8kuC3wS+AZ4DvgHuCn9VivPpdt/wacHvX5JWC/2spVzVOSLt636US/CWeTplDLkaYpm86NSBwpazBULtI13/HAie4+tI5lWxEaDA0FlhMaDP3S3edHLTOM0IjoVDPrArwL9Hf3NbHKBDUYkhRIRmMfEclYqeqer4K7f+PuE+tKnJFlSwmjr8wAPgQed/f5Zna9mQ2PLDYDWGNmC4CZwGW1JU6RlKitg3sRkRgSqnk2Bap5iohIMqW85ikiIiJKniIiIglT8hQREUmQkqeIiEiClDxFREQSpOQpIiKSICVPERGRBCl5ioiIJEjJU0REJEFKniIiIglS8hQREUmQkqeIiEiClDxFREQSpOQpIiKSICVPERGRBCl5ioiIJEjJU0REJEFKniIiIglS8hQREUmQkqeIiEiClDxFREQSpOQpIiKSICVPERGRBCl5ioiIJEjJU0REJEFKniIiIglS8hQREUmQkqeIiEiCUpo8zWyYmS0ys0/M7IpalhtpZm5mhamMR0REJBlSljzNrCVwF3AksDcw2sz2jrFcB+Ai4D+pikVERCSZUlnz3B/4xN0Xu/sm4FFgRIzlbgBuBr5PYSwiIiJJk8rk2R1YGvV5WWRaBTMbCPR093/VVpCZjTWzIjMrWrVqVfIjFRERSUDaGgyZWQvgL8CldS3r7hPdvdDdC7t27Zr64ERERGqRyuS5HOgZ9blHZFq5DsA+wCwzKwYOBKap0ZCIiDR1qUyebwO7m1lvM9sGOAmYVj7T3de5exd3z3P3PGAOMNzdi1IYk4iIyFZLWfJ091Lg18AM4EPgcXefb2bXm9nwVG1XREQk1VqlsnB3nw5MrzbtmjjLDkllLCIiIsmiHoZEREQSpOQpIiKSICVPERGRBCl5ioiIJEjJU0REJEFKniIiIglS8hQREUmQkqeIiEiClDxFREQSpOQpIiKSICVPERGRBCl5ioiIJEjJU0REJEFKniIiIglS8hQREUmQkqeIiEiClDxFREQSpOQpIiKSICVPERGRBCl5ioiIJEjJU0REJEFKniIiIglS8hQREUmQkqeIiEiClDxFREQSpOQpIiKSICVPERGRBKU0eZrZMDNbZGafmNkVMeb/xswWmNkHZvaSmeWmMh4REZFkSFnyNLOWwF3AkcDewGgz27vaYu8Che6+L/Ak8OdUxSMiIpIsrVJY9v7AJ+6+GMDMHgVGAAvKF3D3mVHLzwFObsiGNm/ezLJly/j++++3IlzJNm3btqVHjx60bt063aGISJZJZfLsDiyN+rwMOKCW5c8EnmvIhpYtW0aHDh3Iy8vDzBpShGQZd2fNmjUsW7aM3r17pzscEckyTaLBkJmdDBQCE+LMH2tmRWZWtGrVqhrzv//+ezp37qzEKRXMjM6dO+tqhIikRCqT53KgZ9TnHpFpVZjZEcDVwHB3/yFWQe4+0d0L3b2wa9euMTemxCnV6ZwQkVRJZfJ8G9jdzHqb2TbAScC06AXMbADwd0Li/CqFsaTUmjVr6N+/P/3792fnnXeme/fuFZ83bdpU67pFRUVceOGFdW7joIMOSla4AFx88cV0796dsrKypJYrItIcpCx5unsp8GtgBvAh8Li7zzez681seGSxCUB74Akze8/MpsUpLrmmTIG8PGjRIvycMmWriuvcuTPvvfce7733Hueeey6XXHJJxedtttmG0tLSuOsWFhZy++2317mNN954Y6tijFZWVsbTTz9Nz549eeWVV5JWbnW17beISCZL6T1Pd5/u7nu4+4/cfXxk2jXuPi3y/gh338nd+0dew2svMQmmTIGxY2HJEnAPP8eO3eoEWt1pp53GueeeywEHHMDvfvc73nrrLX784x8zYMAADjroIBYtWgTArFmz+PnPfw7AddddxxlnnMGQIUPYddddqyTV9u3bVyw/ZMgQRo0aRZ8+fRgzZgzuDsD06dPp06cPBQUFXHjhhRXlVjdr1iz69u3LuHHjeOSRRyqmr1y5kmOPPZb8/Hzy8/MrEvakSZPYd999yc/P55RTTqnYvyeffDJmfIcccgjDhw9n773Dk0nHHHMMBQUF9O3bl4kTJ1as8/zzzzNw4EDy8/MZOnQoZWVl7L777pTf1y4rK2O33XYj1n1uEZF0SmVr2/QZMqTmtBNOgPPOgyuvhJKSqvNKSuCii2DMGFi9GkaNqjp/1qwGhbFs2TLeeOMNWrZsybfffsvs2bNp1aoVL774IldddRX//Oc/a6yzcOFCZs6cyfr169lzzz0ZN25cjUct3n33XebPn88uu+zCwQcfzOuvv05hYSHnnHMOr776Kr1792b06NFx43rkkUcYPXo0I0aM4KqrrmLz5s20bt2aCy+8kMGDB/P000+zZcsWNmzYwPz587nxxht544036NKlC19//XWd+/3OO+8wb968ilauDzzwADvssAMbN25kv/32Y+TIkZSVlXH22WdXxPv111/TokULTj75ZKZMmcLFF1/Miy++SH5+PvHuc4uIpEuTaG3bqJYtiz19zZqkb+r444+nZcuWAKxbt47jjz+effbZh0suuYT58+fHXOfoo4+mTZs2dOnShR133JGVK1fWWGb//fenR48etGjRgv79+1NcXMzChQvZddddKxJWvOS5adMmpk+fzjHHHMN2223HAQccwIwZMwB4+eWXGTduHAAtW7Zk++235+WXX+b444+nS5cuAOywww517vf+++9f5fGQ22+/nfz8fA488ECWLl3Kxx9/zJw5czj00EMrlisv94wzzmDSpElASLqnn356ndsTEWls2VnzrK2m2KtXuFRbXW6kZ8AuXRpc06xu2223rXj/hz/8gcMOO4ynn36a4uJihsSqHQNt2rSpeN+yZcuY9w3rs0w8M2bMYO3atfTr1w+AkpIS2rVrF/cSbzytWrWqaGxUVlZWpWFU9H7PmjWLF198kTfffJOcnByGDBlS6+MjPXv2ZKedduLll1/mrbfeYkqSL6eLiCRD86t5jh8POTlVp+XkhOkptG7dOrp37w7AQw89lPTy99xzTxYvXkxxcTEAjz32WMzlHnnkEe677z6Ki4spLi7ms88+44UXXqCkpIShQ4dyzz33ALBlyxbWrVvH4YcfzhNPPMGaSM28/LJtXl4ec+fOBWDatGls3rw55vbWrVtHp06dyMnJYeHChcyZMweAAw88kFdffZXPPvusSrkAZ511FieffHKVmruISFPS/JLnmDEwcWKoaZqFnxMnhukp9Lvf/Y4rr7ySAQMGpKQVart27bj77rsZNmwYBQUFdOjQge23377KMiUlJTz//PMcffTRFdO23XZbBg0axDPPPMNtt93GzJkz6devHwUFBSxYsIC+ffty9dVXM3jwYPLz8/nNb34DwNlnn80rr7xCfn4+b775ZpXaZrRhw4ZRWlrKXnvtxRVXXMGBBx4IQNeuXZk4cSLHHXcc+fn5nHjiiRXrDB8+nA0bNuiSrYg0WVbeUjNTFBYWelFRUZVpH374IXvttVeaImo6NmzYQPv27XF3zj//fHbffXcuueSSdIeVsKKiIi655BJmz5691WXp3BCRupjZXHcvTGSd5lfzzGL33nsv/fv3p2/fvqxbt45zzjkn3SEl7E9/+hMjR47kpptuSncoIiJxqeYpWU3nhojURTVPERGRRqDkKSIikiAlTxERkQQpeYqIiCRIyTMJDjvssIou7srdeuutFV3dxTJkyBDKGz4dddRRrF27tsYy1113Hbfcckut2546dSoLFiyo+HzNNdfw4osvJhJ+rTR0mYhITc0yeSZ5RDJGjx7No48+WmXao48+Wmvn7NGmT59Ox44dG7Tt6snz+uuv54gjjmhQWdVp6DIRkdiaXfJMxYhko0aN4l//+ldF/67FxcWsWLGCQw45hHHjxlFYWEjfvn259tprY66fl5fH6tWrARg/fjx77LEHgwYNqhi2DMIznPvttx/5+fmMHDmSkpIS3njjDaZNm8Zll11G//79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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ] }, { "cell_type": "code", @@ -5474,9 +5556,7 @@ "uMLuH1Ng4GxX", "fiKUpawZS342", "KsT90RRpoB3Y", - "bD8RQf6DLk8T", - "Yrza5UhRTQvn", - "wDJ8bzcxRnqp" + "bD8RQf6DLk8T" ], "machine_shape": "hm", "name": "ViT_Face_Emotion_Recognition.ipynb",