diff --git a/music.ipynb b/music.ipynb index 2abde28..d46ec10 100644 --- a/music.ipynb +++ b/music.ipynb @@ -4,7 +4,13 @@ "cell_type": "code", "execution_count": 1, "id": "7a4b3fe0-37b7-4dcc-928e-5d5981eb62bd", - "metadata": {}, + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, "outputs": [], "source": [ "%load_ext tensorboard\n", @@ -164,7 +170,7 @@ }, { "data": { - "image/png": "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Nnbu3IkrV64ol82cORORkZEICwsDAEyYMAGZmZnYs2ePsszw4cNhZ2eHzZs31yiWzMxMyOVyKBQK2Nra1m2DqEYSFbnoHbwfAHB+USBsLUxFjoiIiIiIiEj3apOHSqqPelhYGAIDA1WWDRs2DGfOnEFBQUGVZY4fP17pevPy8pCZmanyICIiIiIiIpIiSSXqiYmJcHZ2Vlnm7OyMwsJCpKSkVFkmMTGx0vUGBwdDLpcrH82aNdN88EREREREREQaIKlEHShpIl9Wacv8ssvVlSm/rKwFCxZAoVAoH7GxsRqMmGoq80GB2CEQERERERFJnqQSdRcXlwo140lJSTAxMYGDg0OVZcrXspdlbm4OW1tblQfpXt9PDoodAhERERERkeRJKlH38/NDSEiIyrJ9+/ahe/fuMDU1rbKMv7+/zuIkIiIiIiIi0hYTba48OzsbN2/eVD6PiopCREQE7O3t0bx5cyxYsAB3797Fzz//DKBkhPevv/4a8+bNw4wZMxAWFoZ169apjOY+Z84c9OvXD5988gkef/xx/PXXXwgNDcWxY8e0uSlEREREREREOqHVGvUzZ86ga9eu6Nq1KwBg3rx56Nq1K95//30AQEJCAmJiYpTlvby8sHv3bhw6dAhdunTBhx9+iJUrV+Kpp55SlvH398eWLVuwfv16dOrUCRs2bMDWrVvRq1cvbW4KERERERERkU7obB51KeE86rpzLzMXvZbuVz6PXjZKxGiIiIiIiIjEobfzqBMRERERERE1dEzUiYiIiIiIiCSEiToRERERERGRhDBRJyIiIiIiIpIQJupEREREREREEsJEnYiIiIiIiEhCmKgTERERERERSQgTdSIiIiIiIiIJYaJOREREREREJCFM1ImIiIiIiIgkhIk6ERERERERkYQwUSciIiIiIiKSECbqRERERERERBLCRJ20ShDEjoCIiIiIiEi/MFEnIiIiIo04fjMFsWk5YodBRKT3TMQOgIiIiIj039k7aZj0w0kAQPSyUSJHQ0Sk31ijTlolk4kdAREREenCuTsZYodARGQwmKgTERERERERSQgTdSIiIiIiIiIJYaJOREREREREJCFM1ImIiIiIiIgkhIk6ERERERERkYQwUSciIiIiIiKSECbqRERERERERBKi9UR99erV8PLygoWFBXx9fXH06NFKyz733HOQyWQVHh06dFCW2bBhg9oyubm52t4UIiIiIiIiIq3TaqK+detWzJ07FwsXLkR4eDgCAgIwYsQIxMTEqC3/1VdfISEhQfmIjY2Fvb09nn76aZVytra2KuUSEhJgYWGhzU0hIiIiIiIi0gmtJupffvklpk+fjhdeeAHt2rXDihUr0KxZM6xZs0ZteblcDhcXF+XjzJkzSE9Px7Rp01TKyWQylXIuLi7a3AwiIiIiIiIindFaop6fn4+zZ88iMDBQZXlgYCCOHz9eo3WsW7cOQ4YMgYeHh8ry7OxseHh4wN3dHaNHj0Z4eLjG4iYiIs3ILyxGYVGx2GEQERER6R2tJeopKSkoKiqCs7OzynJnZ2ckJiZW+/6EhATs2bMHL7zwgspyb29vbNiwATt37sTmzZthYWGBPn364MaNG5WuKy8vD5mZmSoPIiLSnrzCInT7MASDvjgsdihEREREesdE2x8gk8lUnguCUGGZOhs2bEDjxo3xxBNPqCzv3bs3evfurXzep08fdOvWDatWrcLKlSvVris4OBiLFy+uffBERFQn1xKzkJ1XiOy8QrFDISIdEAQB3x29LXYYREQGQ2s16o6OjjA2Nq5Qe56UlFShlr08QRDw448/IigoCGZmZlWWNTIyQo8ePaqsUV+wYAEUCoXyERsbW/MNISKiWtt+7q7YIRCRDh26lozkrDyxwyAiMhhaS9TNzMzg6+uLkJAQleUhISHw9/ev8r2HDx/GzZs3MX369Go/RxAEREREwNXVtdIy5ubmsLW1VXkQEZH23E65L3YIRKRDMWk5YodARGRQtNr0fd68eQgKCkL37t3h5+eH7777DjExMZg5cyaAkpruu3fv4ueff1Z537p169CrVy/4+PhUWOfixYvRu3dvtG7dGpmZmVi5ciUiIiLwzTffaHNTqI6q7+RARIZIEASxQyAiIiLSW1pN1CdMmIDU1FQsWbIECQkJ8PHxwe7du5WjuCckJFSYU12hUGDbtm346quv1K4zIyMDL774IhITEyGXy9G1a1ccOXIEPXv21OamEBEREREREemE1geTe/nll/Hyyy+rfW3Dhg0VlsnlcuTkVN58avny5Vi+fLmmwiMiIiIiIiKSFK31USciIiKihoHdXYiINIuJOhERERFp1OnoNLFDICLSa0zUiYiIiEijwm6lih0CEZFeY6JOREREREREJCFM1ImIiIiIiIgkhIk6ERFpHMeVImpYCov5oydqqP69lIhbydlih2FwtD49GxERNTzFzNSJGpTvj94WOwQiEsHxmyl46ZezAIDoZaNEjsawsEaddOr6vSyxQyAiLUvJzsNxDiRF1KDcy8wTOwQiEkFknELsEAwWE3XSqYycArFDICIt+znsjtghEJHIFA94viciqg8m6qRVbPxK1PAUFReLHQIRiWzdsSixQyAi0mtM1ImISKPK16gXFDFxJyIiIqoNJupERKRRWbmFKs+vJXJsCiIiIqLaYKJOREREREREtXYzidOyaQsTdSIiIiIiIqqV4mIB287FiR2GwWKiTlolK/d8Rzh/zERERERE+q5I4LDR2sREnbQqJ79I5fnmU7EiRUJERERERKQfmKiTVs3ffl7sEIiIiIiIiPQKE3XSqhO308QOgYiIiIiISK8wUSciIiIiIiKSECbqRERERERERBLCRJ2IiIiIiIhqhYO+axcTdSIiIiIiIqqX3IKi6gtRjTFRJyIiIiIionpZdyxK7BAMChN1IiIiIiIiqhWZTPV5bFqOOIEYKCbqRERERERERBKi9UR99erV8PLygoWFBXx9fXH06NFKyx46dAgymazC4+rVqyrltm3bhvbt28Pc3Bzt27fHjh07tL0ZRERERERERDqh1UR969atmDt3LhYuXIjw8HAEBARgxIgRiImJqfJ9165dQ0JCgvLRunVr5WthYWGYMGECgoKCEBkZiaCgIIwfPx4nT57U5qYQERERERER6YRWE/Uvv/wS06dPxwsvvIB27dphxYoVaNasGdasWVPl+5ycnODi4qJ8GBsbK19bsWIFhg4digULFsDb2xsLFizA4MGDsWLFCm1uChERERERET105HqyyvPyfdapfrSWqOfn5+Ps2bMIDAxUWR4YGIjjx49X+d6uXbvC1dUVgwcPxsGDB1VeCwsLq7DOYcOGVbtOIiIiIiIi0oytp2NVnnNedc3SWqKekpKCoqIiODs7qyx3dnZGYmKi2ve4urriu+++w7Zt27B9+3a0bdsWgwcPxpEjR5RlEhMTa7VOAMjLy0NmZqbKg4iIiIiIiDRjS7nEnerHRNsfICvXBkIQhArLSrVt2xZt27ZVPvfz80NsbCw+//xz9OvXr07rBIDg4GAsXry4LuETERERERFROYXFrELXJq3VqDs6OsLY2LhCTXdSUlKF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Kg9LS0v8+++/1a7XwsICq1atwqpVq+odIxEREREREZHUaKXpOxERERERERHVDRN10iqh+iJERERERERUBhN1IiIiIiIiIglhok5EREREREQkIUzUiYiIiEijLEx5iUlEVB88ipJWycQOgIiIiHTO08Fa7BCIiPQaE3UiItIqO2szsUMgIi0rO+UuAKye3E2kSIiIDAMTdSIi0ppG5iZih0BEImjRpJHYIRAR6TUm6kRERERULzIZO7sREWkSE3UiIiIiIiIiCWGiTkREWmNuwtMMERERUW3xCoqIiLSmqZ2l2CEQERER6R0m6kREREREREQSwkSdiIg0angHF7FDICIiItJrTNRJq7xdbcUOgYh0bKq/h9ghEBEREek1JuqkVWO7NhU7BCLSMTPjR6eWKb2ZtBMRETUEozq5ih2CQWGiTlplZMR5VYkasqd93cUOgYiIiHTgm0ndxA7BoDBRJyIirZHJeLOOiIiIqLaYqBMRERERERFJCBN1IiIiIiIiIglhok5ERBplYWosdghEpGO9vOzFDoGIyKAwUSciIo3q4GaLCd2b4bUhbcQOhYh0xMLUGJ8/3RkAILc0FTkaIiL9ZyJ2AEREZFhkMhk+GddJ7DCISMfGdm0KZ1tztHe1FTsUIiK9x0SdiIiIiOrNyEiGgNZNxA6DiMggsOk7ERERERERkYRoLVFPT09HUFAQ5HI55HI5goKCkJGRUeV7ZDKZ2sdnn32mLDNgwIAKr0+cOFFbm0FERERERESkU1pr+j5p0iTExcVh7969AIAXX3wRQUFB+Pvvvyt9T0JCgsrzPXv2YPr06XjqqadUls+YMQNLlixRPre0tNRg5ERERERERETi0UqifuXKFezduxcnTpxAr169AADff/89/Pz8cO3aNbRt21bt+1xcXFSe//XXXxg4cCBatGihstzKyqpCWSIiIiIiIiJDoJWm72FhYZDL5cokHQB69+4NuVyO48eP12gd9+7dw65duzB9+vQKr23atAmOjo7o0KED3njjDWRlZVW5rry8PGRmZqo8iIiIiIiIqP7+ntVX7BAMjlZq1BMTE+Hk5FRhuZOTExITE2u0jp9++gk2NjYYO3asyvLJkyfDy8sLLi4uuHjxIhYsWIDIyEiEhIRUuq7g4GAsXry4dhtBRERERERE1eroLhc7BINTqxr1RYsWVTrgW+njzJkz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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+EAAAF0CAYAAABMjTg/AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAZmhJREFUeJzt3XV4VGfax/HfxBNIgoQkBIK7W3F3KRUqVKDUy3bZCtttS5UqbG15K9Btt4VuKbWlLhQoXlyLe/AQJEZC/Lx/hAwZMvGZOZnJ93NducicOTNzTzgz59yP3I/FMAxDAAAAAADA6bzMDgAAAAAAgMqCJBwAAAAAABchCQcAAAAAwEVIwgEAAAAAcBGScAAAAAAAXIQkHAAAAAAAFyEJBwAAAADARUjCAQAAAABwEZJwAAAAAABchCQcAAAU6csvv1Tr1q0VGBgoi8WirVu3mh0SAABuy2IYhmF2EAAAoGI6c+aM6tSpo+HDh+vvf/+7/P391a5dOwUFBZkdGgAAbsnH7AAAAEDFtW/fPmVmZmrcuHHq16+fQ54zNTWVJB4AUGkxHB0AABfauXOnLBaLvv76a+u2TZs2yWKxqHXr1jb7XnPNNercubOk3CHhQ4cOVe3atRUYGKiWLVvqySefVEpKinX/GTNmyGKx6MCBAwVe94knnpCfn5/Onj1r3bZ48WINGjRIISEhCgoKUq9evfT7779b77/zzjvVu3dvSdLYsWNlsVjUv39/6/0//PCDevTooaCgIAUHB2vIkCFas2aNzetOnTpVFotFmzdv1o033qjq1aurcePGkqQGDRro6quv1k8//aSOHTta39dPP/0kSZozZ45atmypKlWqqGvXrtq4cWOp/tYAAFREJOEAALhQ69atVbt2bS1evNi6bfHixQoMDNSuXbt08uRJSVJWVpaWL1+uwYMHS5L279+vkSNH6qOPPtKCBQv0yCOP6KuvvtLo0aOtzzNu3Dj5+flpzpw5Nq+ZnZ2tuXPnavTo0QoLC5MkzZ07V0OHDlVISIg++eQTffXVV6pRo4aGDRtmTcSfffZZvffee5KkV199VWvWrNHMmTMlSfPmzdO1116rkJAQff755/roo48UHx+v/v37a9WqVQXe95gxY9SkSRN9/fXXev/9963bt23bpilTpuiJJ57QN998o9DQUI0ZM0bPP/+8/vOf/+jVV1/VZ599psTERF199dW6ePFief8LAAAwlwEAAFxq3LhxRqNGjay3Bw8ebNx3331G9erVjU8++cQwDMP4448/DEnGwoULCzw+JyfHyMzMNJYvX25IMrZt22a9b8yYMUbdunWN7Oxs67ZffvnFkGT8+OOPhmEYRkpKilGjRg1j9OjRNs+bnZ1ttG/f3ujatat129KlSw1Jxtdff22zX1RUlNG2bVub10lOTjbCw8ONnj17Wrc9//zzhiTjueeeK/A+6tevbwQGBhrHjx+3btu6dashyahdu7aRkpJi3f7dd98ZkowffvjB3p8UAAC3QU84AAAuNmjQIB06dEiHDx9WWlqaVq1apeHDh2vAgAFatGiRpNzecX9/f+tw8EOHDum2225TZGSkvL295evra52jvXv3butz33XXXTp+/LhNT/vs2bMVGRmpESNGSJJWr16t8+fPa8KECcrKyrL+5OTkaPjw4dqwYYPNMPcr7d27VydPntT48ePl5XX5UqJq1aq64YYbtHbtWqWmpto85oYbbrD7XB06dFCdOnWst1u2bClJ6t+/v8288bztR44cKTQuAADcAYXZAABwsbwh5osXL1bDhg2VmZmpgQMH6vTp03rppZes9/Xq1UuBgYG6cOGC+vTpo4CAAL388stq1qyZgoKCdOzYMY0ZM8ZmiPaIESNUu3ZtzZ49W0OHDlV8fLx++OEHPfzww/L29pYknT59WpJ04403Fhrj+fPnVaVKFbv3nTt3TpJUu3btAvdFRUUpJydH8fHxNkm0vX0lqUaNGja3/fz8ityelpZWaMwAALgDknAAAFysbt26atasmRYvXqwGDRqoS5cuqlatmgYNGqQHH3xQ69at09q1a/XCCy9IkpYsWaKTJ09q2bJlNhXKExISCjy3t7e3xo8fr7ffflsJCQmaN2+e0tPTddddd1n3yZsX/s4776h79+52Y4yIiCg0/po1a0qSTp06VeC+kydPysvLS9WrV7fZbrFYCn0+AAAqE4ajAwBggsGDB2vJkiVatGiRhgwZIklq1qyZ6tWrp+eee06ZmZnWHvO8BNbf39/mOf7973/bfe677rpLaWlp+vzzzzVnzhz16NFDLVq0sN7fq1cvVatWTbt27VKXLl3s/uT1PNvTvHlz1alTR/PmzZNhGNbtKSkpmj9/vrViOgAAKIiecAAATDBo0CDNnDlTZ8+e1YwZM2y2z549W9WrV7cuT9azZ09Vr15dEydO1PPPPy9fX1999tln2rZtm93nbtGihXr06KFp06bp2LFj+uCDD2zur1q1qt555x1NmDBB58+f14033qjw8HCdOXNG27Zt05kzZzRr1qxCY/fy8tJrr72m22+/XVdffbUeeOABpaen6/XXX1dCQoKmT59e/j8QAAAeip5wAABMMHDgQHl5ealKlSrq0aOHdXte7/eAAQOsRc9q1qypn3/+WUFBQRo3bpzuvvtuVa1aVV9++WWhz3/XXXfp2LFjCgwM1NixYwvcP27cOC1dulQXLlzQAw88oMGDB+vhhx/W5s2bNWjQoGLjv+222/Tdd9/p3LlzGjt2rO666y6FhIRo6dKl1mJyAACgIIuRfxwZAAAAAABwGnrCAQAAAABwEZJwAAAAAABchCQcAAAAAAAXIQkHAAAAAMBFSMIBAAAAAHARknAAAAAAAFzEx+wAHC0nJ0cnT55UcHCwLBaL2eEAAAAAADycYRhKTk5WVFSUvLyK7uv2uCT85MmTio6ONjsMAAAAAEAlc+zYMdWtW7fIfTwuCQ8ODpaU++ZDQkJMjgYAAAAA4OmSkpIUHR1tzUeL4nFJeN4Q9JCQEJJwAAAAAIDLlGRKNIXZAAAAAABwEZJwAAAAAABchCQcAAAAAAAXIQkHAAAAAMBFSMIBAAAAAHARknAAAAAAAFyEJBwAAAAAABchCQcAAAAAwEVIwgEAAAAAcBGScAAAAAAAXIQkHABQKsv3ndFDn29RQmqG2aEAAAC4HR+zAwAAuJcJH6+XJFXx99G0MW1NjgYAAMC90BMOACiT2MSLZocAAADgdkjCAQAAAABwEZJwAAAAAABchCQcAAAAAAAXIQkHAAAAAMBFSMIBAAAAAHARknAAAAAAAFyEJBwAAAAAABchCQcAAAAAwEVIwgEAAAAAcBGScAAAAAAAXIQkHAAAAAAAFyEJBwCUiWF2AAAAwGmysnN0KvGi2WF4JKcm4StWrNDo0aMVFRUli8Wi7777rtjHLF++XJ07d1ZAQIAaNWqk999/35khAgAAAACucNt/1qnHtCVae+ic2aF4HKcm4SkpKWrfvr3efffdEu1/+PBhjRw5Un369NGWLVv01FNP6aGHHtL8+fOdGSYAAAAAIJ/1h89Lkj5ff9TkSDyPjzOffMSIERoxYkSJ93///fdVr149zZgxQ5LUsmVLbdy4UW+88YZuuOEGJ0UJAAAAAIBrVKg54WvWrNHQoUNttg0bNkwbN25UZmam3cekp6crKSnJ5gcAAACO8+O2k7ph1mrmhwKAA1SoJDw2NlYRERE22yIiIpSVlaWzZ8/afcy0adMUGhpq/YmOjnZFqAAAAJXG3z7fok1H4vXCD7vMDgUA3F6FSsIlyWKx2Nw2DMPu9jxTpkxRYmKi9efYsWNOjxEAAKAySk63PzIRAFByTp0TXlqRkZGKjY212RYXFycfHx/VrFnT7mP8/f3l7+/vivAAAAAAACiXCtUT3qNHDy1atMhm28KFC9WlSxf5+vqaFBUAAAAAAI7h1CT8woUL2rp1q7Zu3SopdwmyrVu36ujR3DL3U6ZM0R133GHdf+LEiTpy5IgmT56s3bt36+OPP9ZHH32kxx57zJlhAgAAAADgEk4djr5x40YNGDDAenvy5MmSpAkTJmjOnDk6deqUNSGXpIYNG+qXX37Ro48+qvfee09RUVF6++23WZ4MAAAAAOARnJqE9+/f31pYzZ45c+YU2NavXz9t3rzZiVEBAAAAAGCOCjUnHADgPopoYwUAAB6C873jkYQDAAAAAOAiJOEAAAAAALgISTgAAAAAAC5CEg4AAAAAgIuQhAMAAAAA4CIk4QAAAAAAuAhJOACgTCwWsyMAAABwPyThAAAAAAC4CEk4AAAASsQihsAAQHmRhKNcdp1M0os/7lJ8SobZoQAAAABAhedjdgBwbyPfXilJOp2Upvdu72RyNAAAAAAcyTA7AA9ETzgcYvepJLNDAAAAAIAKjyQcAFAmBk3jAAAApUYSDgAAAACAi5CEAwAAAADgIiThAAAAAAC4CEk4AAAAAAAuQhIOAACAEtl2LMHsEADA7ZGEAwAAoESS07PMDgEA3B5JOByClYoAAAAAzxOfkmF2CB6HJBwAAAAAYNeqA2fNDsHjkIQDAAAAAOAiJOEAAAAAALgISTgAAAAAAC5CEg4AAIAS23w03uwQAMCtkYQDAMokMzvH7BAAmODuORvMDgEA3BpJOBzCYnYAAFwu5myK2SEAMEFCaqbZIQCAWyMJBwAAAADARUjCAQAAAABwEZJwOIRhdgAAAAAA4AZIwgEAJWYYNLkBAACUB0k4AKBMLBZKMgIAAJQWSTgAAAAAAC5CEg4AKJOkNJYpAgAAKC2ScABAieWfEp6clmVeIAAAwGkSUjPMDsGjkYQDAAAAAKxmLTtodggejSQcDnH4bIrZIQAAAABwgNSMbLND8Ggk4XCYbccSzA4BAAAAACo0knA4zIaY82aHAMDJWCUcAACgfEjCAQAAAABWFovt7azsHHMC8VAk4QCAMttxItHsEAAAgJON/WCt2SF4FJJwAECZ3fPJBrNDAAAADnZFR7g2HYk3JQ5PRRIOACizC6wVDgAAUCok4QCAEjMMSrMBAACUB0k4AAAAAMDKcmVlNjgUSTgAoMToBwcAACgfknAAAAAAAFyEJBwAUGJMCQcAACgfknAAAAAAAFyEJBwAUGYpGdlmhwAAAOBWSMIBACVmUJoNAACPR3F05yIJBwCU2Ny1R80OAQAAwK2RhAMASuzfyw+aHQIAF8vIyjE7BADwKCThAAAAKNSna4+YHQIAF7OI8ejO5PQkfObMmWrYsKECAgLUuXNnrVy5stB9ly1bJovFUuBnz549zg4TDnA8/qLZIQAAAAc7mVDw/G6wXiEAlJlTk/Avv/xSjzzyiJ5++mlt2bJFffr00YgRI3T0aNFzCvfu3atTp05Zf5o2berMMOEgc1bHmB0CAABwgd2nks0OAQDcllOT8Lfeekv33HOP7r33XrVs2VIzZsxQdHS0Zs2aVeTjwsPDFRkZaf3x9vZ2Zpgoo5wcWsGByoZPPVD52Ov0zsxmnjjgyaiO7lxOS8IzMjK0adMmDR061Gb70KFDtXr16iIf27FjR9WuXVuDBg3S0qVLi9w3PT1dSUlJNj9wjR//PGl2CAAAwMn2nubaCgAcyWlJ+NmzZ5Wdna2IiAib7REREYqNjbX7mNq1a+uDDz7Q/Pnz9c0336h58+YaNGiQVqxYUejrTJs2TaGhodaf6Ohoh74PFI454AAAeL4/DpwzOwQA8Cg+zn4ByxVjGQzDKLAtT/PmzdW8eXPr7R49eujYsWN644031LdvX7uPmTJliiZPnmy9nZSURCJuojEz/9A3D/YyOwwATkItJgAAPB+j0Z3LaT3hYWFh8vb2LtDrHRcXV6B3vCjdu3fX/v37C73f399fISEhNj8wz+ajCWaHAMCpyMIBAADKw2lJuJ+fnzp37qxFixbZbF+0aJF69uxZ4ufZsmWLateu7ejwAAAAAABwOacOR588ebLGjx+vLl26qEePHvrggw909OhRTZw4UVLuUPITJ07ov//9ryRpxowZatCggVq3bq2MjAzNnTtX8+fP1/z5850ZJgCghFLSs80OAQAAOBnV0Z3LqUn42LFjde7cOb344os6deqU2rRpo19++UX169eXJJ06dcpmzfCMjAw99thjOnHihAIDA9W6dWv9/PPPGjlypDPDBACU0MVMknAAAIDycHphtgcffFAPPvig3fvmzJljc/vxxx/X448/7uyQAAAAAACFKKyQNhzDaXPC4fmS07LMDgEAAAAA3ApJOMrkRMJFvb/8oNlhAAAAAHCwC+l0tjkTSTjK5Nftp8wOAQAAmOTjPw6bHQIAJ5q37mjxO6HMSMIBAABQKt9vPVlgW+LFTBmGYUI0AOBeSMIBAABQLrtOJqn9Cwt17ycbzQ4FACo8knAAAACUy6drYyRJv++JMzcQAHADJOEAAAAAALgISTjKhClfAPIwBxQAAKDkSMIBAOWybN8Zs0MAYDqL2QEAgNsgCQcAlMv8TcfNDgEAADhZagZrhzsKSTgAoFzOXcgwOwQAAOBkrZ77jUTcQUjCAQDlYog54UBlZ2E0OlAp7D6VbHYIHoEkHABQLpnZJOEAAAAlRRKOMqHnC0CeTUfizQ4BgMnyd4RnZueYFgcAuAOScABAiWw9llDsPtuOJejVX3brQjpzxoDKioY5wJPREecIJOEok10nk8wOATDNe0sPqN/rS3UmOd3sUFzqh60ni93n2vf+0AcrDunNhXtdEBEAAHCl5DTbRvaU9Cx9uOKQjp1PNSki90QSjjL5rgQX44Cnev23vTpyLlXvLT1gdigV1q/bY80OAYAL7TpF4zxQGbz00y6b2y//vFuv/LJbI/5vpUkRuSeScDgdc8PgqbJzGJJVmNikNLNDAOBCW44mWH+/mJFtXiAAnOrgmRSb24t2nZYkpqGVEkk4nGrHiUQ1ffpXvbZgj9mhAAAAF3jg001mhwDAic4kp6v/60v17pL9Onuhck3NcxSScDhNZnaOrn5nlSRp5rKDJkcDOEZl7v0ublWE1AxawQFIGYyAAzzae0sPKOZcqt5YuM/sUNwWSTgcbtqvuyVJG2OojgrPs/kox3VhrmyfyKnEDRYAAHgqppqWH0k4HO7fyw/Z3V7ZKkl7uuS0TO07nWx2GC5XmXvCS6vRU79o6d44s8MAHOLY+VQalgBUCobBd52zkYTDaXKu+ABf9cpikyKBM/R5bamG/mtFpesZ5rxUOnfN3mB2CEC5fbP5uPq8tlQPf7nV7FAAAB6AJBxOc/t/1hXYtje28vWceqqE1ExJ0u+7T5scCSqCa99dpYU7WZYMnundJbnLEf64jeU5AXg+Rv05H0k4XIoh6YD7KmoUwLbjiZr81TbXBQO4EJejACqTNYfOmR2CxyMJh0sVV10ZQMW1JzbJ7BAAAICTUXjN+UjC4RRpmdlmhwDAwRjJAgAA6FIrP5JwOEWLZxfY3U5RK7g7RnPAHcSnZGjG4n06dj7V7FDgwS5m0OAOAGVBEg6XukgPuUfgwqtyovnBfXR8aZFmLN6vvq8vNTsUj5CRdXloJkv3XNbyuQXadKRyrZABQLKYHYAHIAmHSz3w6SazQ4ADzFkdY/2d69FKhP9rt8Pn0zFOJFy0/l7ZigZnFTM39M2Fe10UCcxw7Hyq7v1ko9YfPm92KKhAdp2yXyPmeDyjr0qKJBxAqcWnZpgdAkxQyXIPAJLiSlALYs4fh10QCczw8BdbtHj3ad387zUU64LVlqMJdrc/8sVWl8bhzkjCAZTaoTMp1t8tlW1MUiXORBmGC+BKFzOzNfXHXQW2833hGfKPAvlw5SETI4E72Mj0lBIjCQdQaot3n7b+Xtmus2Ys3m/9vbI1QMScK9sws01HGMYIeKrCesRe/41h6p5m9QHWjq4sHqZH2+lIwgGUy5FKVn15fczlhLKyNUCU1Q2z1pgdgkucT8mgGjk8TlkbG2cuO+jYQGCK/Oc5VgepPJLTsswOweP5mB0AAPe2NzbZ7BCACqHTS4skSZueGayaVf1Ni6O4QloAAMBc9ISj1FieCvkx7w+wtT/ugqmv/8O2k6a+vqerbN95FhYjqtRKUpgPuNKsZQf1wKcblV3ZlpMoBZJwlNoHKyjMkV9cUpqS0zLNDgMm+HTtEbNDQAVkdo52PoXVC+A4FzNpeK+szpCAo4z+uWCPftt5Wot2nS5+50qKJByldirxYvE7VRLnLqSr66u/q+3UhWaHAqCCYN6kZ/vpz1M6k5yuBTtiK8XQ/xmL95X5saeT0hwYibkysnJ0x8fr9d7SA2aH4jJXjvrYd9rcUT5wP2k04hWKJBylZnYvT0Xy0arLa6Mu3RNXKdfQtFS2EuFABcdn0rke+XKrrnplsSbO3aTZf8SYHY7Tfb+17NMbzl3wnFEZvf+5RCv2nanUVd/PJKfrz+MJZocBeASScKAclu87Y/39rjkb9M4Sz28hr2zzIYFSM304OkNIXeXNRZ6dkNGLlSvxYiZzoy+55t0/zA4Bbmr1wbMeNTqmvEjCUWonEhiOnud4vO3f4pvNx02KxHXSs2x7+0nKAVtmfyK2n0iyuU0i5TxpmZ49+imLokqSpHeX7Dc7BFQQfx5P0PbjiWaH4XZW7Duj2z5cp26v/m52KBUGSThKbcdJx335fLDioH7dfsphz+dqJKAMfUXJ5FVIXX3wrO7770aPqy3x++6KU3xmRb4ROpL03ZYTJkUCXJZ4MVNfrD/qlo1CH648XPxO8Gink9L05YajuubdPzT63VVKz3K/47gkMrNz9M8Fe8r1HPYqoq86cLZcz+mJWCccpZaZ5ZiW/+3HE/XqL7kf9JjpoxzynK6WlJZlc7sy5KNXtjvEnE0xJxC4lfeWHlCDsCp66PMtkqRFu07r97/3U+NaVU2OzDHu+WSj9feK1jZ35egVoKQc2dDc/oXcAqZPfrNdK/4xQPVqBjnsueEkleCapqSGvLXc5povPStH/j7eJkbkHJ+uOaJZyw6W6zle/WW39feLmdnKyTGUw6iaAugJR6mllHOd8H2nkyVJZy+49/yqdYfOFdjm6vVUzfhSa/ncApvbWTlGpZ6ikJqRVfxO0FuL9lkT8DyD3lyuJ/73p9Iysz1qVMnnG46aHYKNHAf+bTcdOa+b31+jHScYjomSW7Aj1ub2Q19sKWRP95CYWrmXJfWk7+uSurLTxVMdOVf+jpX8RYunfLNdN/17jenTtCoiknCTGIahPw6cVVxy5StQ8MT8PyXZ9hrfOXu94t1sbds3FhYsyHP0fKrLXj8xNVM9py/Rs9/tcNlrFmZ7Ja6WmpKerYysHB1z4f+9J/ly4zG1eHaBJs1z34vyg2dsl+35+c+KNcXmyw3HHPZcN8xao/Ux53XLB2sd9pzwfBPnbrK5vfVYglsncpuPxpsdgqn+Mnez2SGYzlMHCTjjU7npSLxNYo5cJOEmWbw7Trf/Z516TFtidiil0uDJn8v9HH8eT5RhGFq29/K8xWV7z+iBTzfphlmrtf9ST7m72n86WQPfWKbvtzp3Hua89UcVm5SmT9cecerr5MnJMQpdH/Xgmco7JD02MU3NnvlVfV5band0BErm52JqQ1xIz9Iv20/pYilG4uTkGC6Zfzpl/nanv0Z57IlNdvjyiRfSK0evUGV3sZyfH6OIS/r8Q1YrMnuNBVN/3GlCJBXHgp2xxe8EFOHchfRKfx4hCTfJyv25Cai94gWeLjvHUMMpv2jO6hib7etjzmvTkXgN+deKYp/ji/VH9ZadnmhXKqwRf8i/VujQ2RQ9/MVWrT10zu4J/FTiRW09luDcAEtp27EEzVp2UFmFXKz/sO1koeujVuZ1U0e/u8r6+/iP15sYiWebNG+zHvxss5785s8SP2bsB2vU4tkFSkh17igbdyjQ48gh6ag8ur5SvkrGU38oPFn9cOVhHTpzQYfPphTZKx6XnKakNPOGf39hZyTJkXOlG/lkGEapGhBR8XlqUVpX5CVJaZnq/PJitXn+N6e/VkVGEm4SLw/98DrKL9tPaUsRw72e/Ga73l5yQDsdWKm9tDYeKX442i0frNWSPXGSbFvTe0xbouve+0Mzl13uWT505oIW77pcYTk+JUPXvLtKA95YprcW7dN/Vh7S9TP/KFD5uDjpWdmat+6ojscXfdFw7Xt/6J8L9qjJ07/qQFyyvlh/VHfP2WC9cCiu12LRropTHdosGR5cAOsPF1U2/W1nrN7+fX+Bi/K8kTPfbz1Z4ufaEJP7GV26N85xAdrhDoXPVu47q36vL9XacozWMLuqdWENhKi4NsTEa/3h84XeP/DN5RrwxjJdN3O13RonCakZ6vrK72o3daEzwyzSlG/KNtLl7IV0vfTTLh2IS9b9n25Sy+cW6Nj5VO0+laT3lh4w/fNUEufdYJrg0j1xeva7HU5tDP1qo+Om9FR0n61zfk2THoUsU5aZnWPzPfCflYf07RbPXfqX6ugmIQcv2oOf5c43+npiD13VoIbNffnn3ia7QaGMz9YdVYfoarp7zgaFhwTowzu6WO97bcFe9WlSS23rhmrgm8slSf93Swd1qlddT327XX9eWovy7d8vr1F6x8frNfeebgVe52JGttIys1UtyFfzN59Q+7qhahoRrHd+P6B3lx5QkJ+3dr04vMDj4lMydNO/19hsG/zW5dEIs1cf1oDm4YpLLrqQ3n3/3ah3b+uoq9tFSco9eQf5eSvA1/Oqh1YmhmEoO8fQ7f9Z5/TXOhB3QQ98mjt3tFO96oo5l6KTCRd1IO5CMY8saE/s5bWynV0wcU9sxZ9Cc+9/c6u33/LB2jKvRjFsRvGjlJzlfEqG+r++VENbR+r1G9vp0NkU1a8RJB9v+hKcITvH0JiZfzjkuW6+4vxiz7ZjCYo5l6JG+VZLyMrOcYvPVmG6vLxYkm2Rqn+vOKi5a3OTnPSsHE0e0syU2Epq+IyVZodQQGpGlhbtOq1O9arL39dLd83ZIEmKrhGo+/s2dsprPv6/giOwYs6mqE2dUKe8nqezV+D5Yka2ur26WI1qVdV3f+2lQ2cu6OWfczt/ru9Y19UhugRJuElcXUW7PAzD0OGzKapfs4rLX/um99cUuGDs89pS6++3fLBWn93bTb2ahLk6tBJbsidOnS+djKVEfbHetpVx9LurbN7jw19sLfY5x31kmxD93+L9+tfifZKkF69tree+zx0CGDN9lHXqQ2pGttKzsq1LahiGIYvFoo4vLSrytZLTsnR9CS/GJs3boo71qsvP20tXvbJYYVX9tPGZISV6LCqmez7ZWOSoFEca/NZy6+9XHuOlkZSWaXPx6ImNnkv3xulUQppu7RptMyxyWQl7/ZPTMlXV36dEQypTM7Lk5+1V6iG45ZV4MVPtX1ioB/o10r+XH5Ik/W/Tca3cf0ank3IbBd11ecuKbvPReG077tqRZhnZOcrOMeTtZdErP+/ShysP6/nRraz3/3PBHj0+rLlbDwPOS8Aluf0KAwt2xGpIqwh5e7n2/+PZ73Zq/uaCvaOnEl1b6Pjqd1bx/eNAG4+cV1JalrYeS9CpxIs6UgmK3dKEbBIXf2eVyyerYzTwzeVq/NQvprz+xE836dM1MVp94KyW2xmK7YoeOkd60s7QtvIWvMtLwCVZE3BJ2nUyyeZCqvkzC/TdlhMyDENjP1iru2YXP4c5KztHaZklHwbaa/oSXfVKbqPD2QsZMgyj0CFtFWXdyKS0TN09Z4N2nkzU0j1xmvzl1jIPbXvjt736fP1RnU7yjJUPluyJU3wFW47njwNni5wjeuaKURsbY+K1/dLnIC0zW3+Zu0lfObBiuD3OXMLofEqG7pq9QU99u13zrmjUu3P2hmIfvyc2SW2nLtTEuZv0yeoY67Qee3NWE1Mz1eq539Tk6V8dEntmdo5W7j9TYGm/w2dTtGr/Wb36y241ePJn/WvRPuu60nkJeJ68BFyS9fO662TuEF97Uw8+XXtEw/61QrFlvEg/WcwSjL/tjNXN/16jdYfOaceJRGXnGNp0JN4tagVcKS45TUfOpehgGUaflNfwGSs15FJD3Icrc3uPX/hxl/X+WcsOasGOWLdIXq/8DrLHnavDS7kV7xs/9Yv+Om+z0jKzrXOJHfXdd8+cDWrw5M82n+kdJxLtJuCSrCMHSys9K1s//3nKISv07IlN0j8X7Cm2hsGfxxOs5yRXyM4xil1ONSktU9e+55jRL6XR4MmfdSAu2abwb49pS3RXCc5l7o6ecJN4uVEWPjXfSdAMC3bGVrhKnBWtqFphRr5dcCjZI19u1SNfbi3xc+RdDJVVwym5jTf5h6pL0uw/DmvG4v2ad183tY4qOKQrOS1Ty/edUf/m4arqX/xXVd4FTUl7SQ7EXdBn647oL/0aq+ul+Ul58/clacOR81r5+ECbx5RkDt+7l04k1YN8lXAxUzd1rqtXr2+rU4lpiq4RVKLYULS8hrfdLw5XVk6OggN8be6/8gj4dO0Rfbr2iA5PG6l5647q1x2x+nVHrG6+KlppmdnafSpJ7etWc+j38tbjCerXrFaJ9jUMQ89+v0O1QwN1fcc6+r/F+3VX7wZqERlid//8IxOe/naHbu9Wv1Sx5Y0S+G3naf22M7eWw02d6+rrTcf10KCmNkNk1xwqvBZATo5R6r/ZW4v2adayg+rTNExDW0cqLilN9/RuqAFvLLPZ7//yTcEpSt5Q1G+2XF6NYv8rI+Sbb5h63jKOz/+wQz0a1VRqZrYe7N9E6w+fV/2aQapV1V+Hzl5Q41pVC3x/GIahntOLXsUkbwrFWDvLtrm6pyxvhFNZlbcQW3kdOptSZP2Jv1yaqja0VYRu715f3RrWKPGUpwvpWQr09XZYz+3Hqw5rXPf68vMp2J91rJgaLJK0dO8Z/bYzVlX9fdSrSZgSUzPl422RIenNhXt1dbsoda5f3SGxOtPPf56yLsv40nVt9Ox3OzS+e329dF2bMj2fYRhatu+Mfr90Pr5r9gY9PbKlwoL99NqCwovAbjoSr8zsHBlGblX/0EBfZWXnaOX+s4oMDdCbC/epRhVf/fOGdjafkQkfr9faQ5frFvh4WfTMqJb68c9Tmnl7J4UG+tp7ObvyvlvjUzI0/YZ2dve5mJGta97NTXa3PDtER8+nql3dUKeO8Bj5fyu193Sytj03VKFB9t/PDTNXa78JjW+S7RRIe2LOpshikSkjcp2JJNwkFWU0VVpmtl74caeGtIrQwBYRZodTZtN+3a1NMfH67z1dFeSXe1gbhqEcQ3ZPuDe9v1obYuL168N9dCDugppGVC30gtee60xoLXR3k+Zt0ai2ta0nmrwejr9/tU0LHulr3e+rDcf07Pc7rMWuBrUI138mdLE+bsGOWDUMq6LmkcGScnupalb104SP18vby6K593SzOZkt2BGrsKp+6livuo6dT1WDsNwv8SH/Wi7DkGb/EWM33mPnC/Z+laa6bV7v8Vcbj2v7iSTtPpWkqaNb6c5eDUv8HPllZefYzH+1d7Fd3gvw/M9jGBW/sbDlcwusv/97fGdV8fNR04iCiVSe/206bjMq4/fdp3XPJ7lzpZ8a2cJmPuFn647Ix8uiakF++njVYb01toPqVAsscWwTPl6vrx7ooa4Na+irjce0/vB5TR/T1u4c5p0nk6zDVPNWGvjf5uM6+OpIazGyPw6e05Pz/1SfpmH6aqNtT9DRc6m6/9ONurFz2efNfb0p9znf/n2/HhrYRP/bdFy9moTpeHzhvcCNnvpFh14dKYtF1uMlNSNLGVk5qhbkV2D/rOwczVp2UJK0cv9Zrdyfm2y9s8T+0odlNXPpQT08uKl2nUyyWc85f6NDZEiAJn+1TZJ0f99G+mBFbm/7o4Ob6ac/T+p/E3sqNMi3VIUAzfbMd9u1bO8Z/fpwnwINU3niktPk7+1d6IV4RVCS0W0Ld53WwkvFQPs2q6Vx3erp3aUHNGtcZ0WFBhQ49+84kair31mlAF8v7XlpRKHPW5qGpRd/2qUdJxMVVtVfyWmZmjYmN+nKyMpR4sWS9QbnNeDMvusqa8/fhB719cmaI5r9R4xipo9S4sVMeVmk4ABfJV7MlL+Pl1o8m/vdt+6pQYoICbB5zme+267sHEOZ2Yb+t+m4/nNHF8WcS9GYTnVVo0rBz6Uj5TV4fbr2iE0Sfu5Cuqb9uke3do1W5/qX6/zk5Bga/K/lGtQiXE+Pyp16MGd1jM0ICEl6pYTL2TXNN2LnmVEtdTEjW28u2mezz5ajCfr4zqusjeL5E3BJysoxrJ1P3QopIJYnMzvHpsEvzy/bT6lLgxo6dyFdA1qEq4q/j/X8kZyvl/zqd1bpRMJFvXFTe7vf31ee0w3DUHJ6ljbGnNcnq4/otRvbaf7m4zp8JkWv3WjbuHDuQrrGfrBWt3erp72Xlv5dc+ichreJtPtezErAS6L/pUbaa9pH6e1bO5objANZDHcfD3OFpKQkhYaGKjExUSEhJU+qXO2fC/ZYL0a+/2svtYoKKfBBNgxDu08lq3F4Fes83tLKO6EciEtWdI2gAs/z1qJ91qJf26cOlY+XlwL9bPdxxNrgrtI6KkQ7TyZp8pBmeuvSF+9XD/TQzf9eo3+Nba8ejcKUnpWtfq8vK/DYa9pHqWZVPyWnZalFZLDu6d1Q2TmG3Ytmd/qbVERLH+tv0/O19+Xhys4x9N2Wk3rqW/uVaB8Z3FRXNahhvUDb9txQrY85r/suFZzK89Pfeuuxr7fJ28uid27taC14FxLgo6S0LLWvG6ovH+hhvYgpyqf3dFX1ID+1iAzWqgNnSzTUtzgx00fZnFi/33pCjWtVLbLAy/xNx/X3r7dZT9Rfbzymfy7Yo4/vvErt6laTJP247aSe/X6HnhnVSk3Cq2rRrlhN6NFA4Zcu0PJeMys7R4YkX28v/fznKZ1MuKh7+zS0OXkP/ddy7TtdcU/IxXlmVEtrQZcr1Qr2tztUtFawv+pUC9TdvRuqT5Mwu7USNj4zWDWr+CklI1tV/X10MuFikb2k7aOr6Z1bOqrv67l1LO7oUV8H4i6oUa0qenJES6VlZiusqr/u/WSjFu8uuLrAX/o3tp4nXGlMxzo2PctFuaFTXR05l6KUjGxNGtBEf52X21P5yvVtVKdaoPo3D7fu+8X6o3an41RE9WsG6abOdfXGwn3F71yEvs1qacW+M3qwf2M9PryF9p/OPRcH+HoX2mjW+59LdDz+og68MsJ6/km8mKmvNx7T6PZRNknXsfOp+nDlId3Xp5G1Xsozo1rqRMJF9WocpsGtIhSfkqHYpDRFhgRYj+sdLwzTv5cf1Mi2tdWydojSMrO1+Wi8bvvQvaZ3FWXPS8O173Syqvj7aNCbl+tNPDOqpf7v9/16+9aOmr/puJ4f3VohgT5q/kzuOeH9cZ31zwV79PehzTRp3pYSv96yx/pr9cFzhZ7DymLHC8Osyzi9fmM7/eOKAmFNwqvq/XGdNPL/VimjBKsHTOzXWPVqBOmFH3fqwzu6aOLcTXp+dCv1bVZL03/do5s6R6t309waO4ZhWEeylcWGpwfryw1HdU/vRpr81Vb9uiN3ROPBV0daG0j+/tU26/DyF69trQNxF/TfNUfK/JqlcVu3eupcr7r+/vW2cj3P86Nb6a5LjetFXRv+544umvH7PnVrWNOmWJ8k9WxcU/Pu656738pDen/5IT09qoUe/XKbHh/eXA/2byJJuveTDVq8+/KIvRpV/KwNy1/e310d6lXTn8cT5WXJLSZ38EyKzes8M6ql5q49omdGtdLgVhFKvJipDi8uLHTJ3Ypoz0vDK3TB39LkoSThJnn9tz16b6ntxdUTw1voL/0v98Tkv2C5oVNdvXFTO2XnGPrzRKJ+2HpSd/dqqMe+3qYbO9fV/rhknUi4qPdu6ySLxWLz5dm5fnVtOhKviBB/fftgLwX5eeuZ73bojwNn7c71XP/UIP396226uUu0/vZ5yU9AnibIz1upGdmae083PfDpRj09qpVizqVYe0zgOE8Mb6HP1h0pstfNU6z4xwBrUpb/ompiv8baeixe4cEBeuvm9vL2sujeTzaqU/3qNuuw5zUmSLnVYO/t3Ui1QwN0/6UelSvtfGGYPlx5SDMW79cNnepaL3ieGN5C/1ywx7rf86Nbafm+M3r1+rbFDr+tzAa3jNDi3af1/V97mTJ/zh29P66zXvhxp8sLJ1U0+Xs7v32wp+7770Y9Paqlru9YVztOJOrDlYf02NDm1mR6yogWur9vIz317Q59nm/u/+9/76dBby5X7dCAYv+mU0a00LRf9xS5z3UdovSdG/X4l1TeCA2Uzo4XhinHMPSfFYf0toNHqUjSXwc0Vq/GYbrNzer5OFNUaIBOJqZZ/3WFvNzA3Xz7YE91rFdxp2lUqCR85syZev3113Xq1Cm1bt1aM2bMUJ8+fQrdf/ny5Zo8ebJ27typqKgoPf7445o4cWKJX89dkvCpP+zUnNUxBbaP615Pc9cetTlZA6h8IkL8bQpQAfBMH97RpcCIHgBAQV/c313dG9U0O4xClSYPdWp19C+//FKPPPKInn76aW3ZskV9+vTRiBEjdPSo/YXgDx8+rJEjR6pPnz7asmWLnnrqKT300EOaP3++M8M0xcEz9od65s0LJAEHKjcScKByIAEHgJKp2JVqSsepSfhbb72le+65R/fee69atmypGTNmKDo6WrNmzbK7//vvv6969eppxowZatmype69917dfffdeuONN5wZpilKsnwFAAAAAEA6UEgnpjtyWhKekZGhTZs2aejQoTbbhw4dqtWrV9t9zJo1awrsP2zYMG3cuFGZmfYrTaanpyspKcnmBwAAAADgORbtKljE1F05LQk/e/assrOzFRFhu+xVRESEYmPtr/kcGxtrd/+srCydPWt/3chp06YpNDTU+hMdHe2YN+BkecsFAAAAAACKtv14otkhOIxTh6NLKvU6tvb2t7c9z5QpU5SYmGj9OXbsWDkjdg0qdgIAAABAyRSVQ7obpyXhYWFh8vb2LtDrHRcXV6C3O09kZKTd/X18fFSzpv1KeP7+/goJCbH5cQf39G5odggAAAAA4BZCAn3MDsFhnJaE+/n5qXPnzlq0aJHN9kWLFqlnz552H9OjR48C+y9cuFBdunSRr6+vs0I1Rc/GFbe8PgAAcL43b2ovSWpQM8jkSACg4utUgdcILy2nNidMnjxZ48ePV5cuXdSjRw998MEHOnr0qHXd7ylTpujEiRP673//K0maOHGi3n33XU2ePFn33Xef1qxZo48++kiff/65M8M0hb3RFDHTR0mSUjOytDc2WUv3xOntJQc0un2U9pxKUovaIXr52jZasf+MaocG6Mb312jKiBYKq+qvtnVDdSY5XRtizuuBvo01+K3luqFTHb295IAk6ZsHe2rMzNV6fnQrtY+upnZ1QvXTn6f0yJdb5e1lUXZO7vj498d11pFzKbq2Qx1VDfBRm+d/c9nfpCKrUy1QJxIumh0GPFTM9FHadCReESH+qlMtUFk5hrafSFTH6GpqOOUXu4/p2qCG1sec102d6+rrTcdL/Fq+3hYNb1NbP2476ajwK503bmqvx77eZnYYFUbXhjW0/vB5s8NwGyPbRuqX7bmj/m7oXFfD20Sqir+PMrJy9OuOU+reqKYSUjO1+1SSRratLV9viz5bd1TPfLfD+hz39G6oj1Yd1m3d6mneOvvLvhbnk7u7asLH6x3ynuAZagX760xyur64v7v8fLw0Zqb9QsoltfSx/hrwxjLHBAeHctfrWk8aSWwxDOfOTp45c6Zee+01nTp1Sm3atNG//vUv9e3bV5J05513KiYmRsuWLbPuv3z5cj366KPauXOnoqKi9MQTT1iT9pIozSLpZlqy57TunnN5bdDD00Y6ZZ5DTo6hjOwcBfh6F7nfJ6tjdPhsip4f3comjo9XHdaLP+1yeFzOULd6oI7H2/9CaVSrilLTsxWblGbdFujrreaRwZo0oInuvbRO66AW4fp9T5wa1aqiQ2dSJEk/Tuqt1lEhum7mH/rTgwpCmMXfx0vpWTnW2+ufGqQ3Fu5VkJ+P5qyOcchrtI4K0c6TjlkpYfk/+mvf6QvlXss3/wlv7ZRBOpGQqh+2ntQzV7eSr3fhg5KW7Y3TnbM3qGXtEO0+lfueXrimtSb0bGCtsdHgyZ8lSc0iqmrfafvLd/zx5EB9vu6oHhrUVH4+XkrPypavl5csFuna9/7QNe2jNKpdbf385ymN615fk+Zt0eLdnlOFtCRWPTFAdaoFKi0zR95eFjV75lfrfVueHaI7Z6/X2Kvq6bZu9XTwzAW9v+xgsQ0gE/s11o2d62rwW8ut2xZP7qtRb6/S48Nb6KUK+v267bmhav/iwmL3mzamrfbGJjvss+uJ7urVQLP/iJGUexz5eFv07tIDGt0uSm3qhJb4eZLSMtVuau7/yd6Xh8vfJ/e8/sx32zV37VG9dF0bHYy7oDmrY3TLVdGq4u+jj1Yd1uQhzfTWon2SpPv7NtIHKw5Jkg69OlKv/LJbx86n6vUb25fo/9ud/aV/Y81adtBmW/voahrVNlKv/rJHknRv74Z6YkQLZWTlqHUpOiHMSDb/OqCx/jGshZLTMjXuP+u0rZjrk7FdomWx5H5mM7MNrdh3Rr2bhqnFswus+8RMH2VTuynv3FJWMdNH6apXFluX5d394nAdPZ+qZhFV9dpve/XVhmOaNa6zbv73mnK9TkWQ15Fm72/20996q3lksH7cdlKTv7JtwO3ZuKbGXhWtkW1rKzYxTV9sOKr3luYep2M61dGeU8lqWTtEd/VqoGV749SubjXd8fF6vT+usybO3VTgtRY80kfnUzL0zLc79PpN7dSgZhX9sO2kXvjx8rkmZvoopWVm2/zfu4u8v3NFVZo81OlJuKu5WxLevm6ovp/U2+xwijTt19369/JDZodRpJeuba3butXX67/tVauoED30+RZJUkSIv04npWv2nVepf/NaupiZLcOQUjKyFB4cYH388fhU1azir0C/3IuaU4kXNWneFk3o2UDXtI+SJGVk5WhvbLJGv7vK9W/QgxyeNtLau+vn46V9L4+w3vf91hN6+Iut1tt7Xhoui0W6mJGt4/EXNfuPGI1oE2ltNHloYBPraI8H+jXS/zYeV8LFTO18YZgsFik9K0chAb66fuYf2nI0QR2iq2lc9/r6dstx3dO7oU1DWGHyf+GX54Lk9RvbqWeTMHlbLIoMDSj+AXYcO5+qWsH+BRrVTielaemeOF3XsY6W7zujxbtO694+jbT+8Dl9vv6Y5tx9lc3xXhJv/LZX7y49UKY4Xa1/81patveMJGnrc0M05F8r9EDfRnr5593WfVY+PkB9XluqHo1qau693dT3taU6kXBRX9zfXd0b2Z8elJaZrUNnUtSydnChjaRPzv9TX2woWBC0Qc0gLfvHAOvt1QfP6u3f9+vl69qoSXiwdfuGmPO66f01Gt46Ugt2Xq6Jsu/lEcrOMeTjbVHTp39VcdY/NUgPfrZZR86nWi94S2tCj/qqFuSnRrWq6NoOdUp0vB+eNlIJqZnq+NIieVmknHxXFKufHKgp32xXl/rVtWBnbIGGsYEtwrVkT1yZYi1M/u+E/Px8vJRxqfHPz9tLGdk5Bfbp3SRMx+NT9er1bXXmQrp+2xmrZXvPKDUju1wxHZ42UnHJ6UrLzFb9mlXK9VxL98TJ28uivs1qWbcZhqETCRdVt3rxQ9pTM7J07bt/qGfjmnrh2jY29yWkZig+NdMtey6r+vvo4UFN9fpve/Xe7Z3kZZHu+WSjXry2te7okdtgGZuUph7TlkiSBreM0KEzF/TLw32s36c5OYa8vC5/zke/s0rbTxSe2B58daQW7IjVkFYR8vPxKvP5oU/TMK3cf3kFoKWP9Ve9GkHq8MJCJadn6bdH+mrTkXh1iK4mf18vTf91j9rWCdXEfo3l55PbgHv4bIrd/7fGtaro4KUOhcKSl/YvLFTixUzNGNtB13WsY3NfWd5TVGiAzqdm6MH+TfTQoKbadzpZL/+8W48ObqqOhQwljk/J0MEzF3Tj+45LxmOmj9LFjGy1fK5govnmTe01plMduyPNnhnV0ubcUZrXk6Tnvt+h/645Iim3oSQhNVOvXN/Wut/FjGwlXsxU92m/S5IeG9pMkwY2tXmu7ccT9d3WE3poUFOFBtqfjnshPcvuaNXC/p/fWrhXby85oA/v6KIhrSLcMgkPCfDRn1OHmR1GkUjCScIdrrytoc525ZdOakaWvL0sSs/KUczZFLWtE+qwkQYV/W9xpZu71NVXG0s+XNme6kG+ik/NLPPjf5jUSwt2xOru3g0VVtVfp5PS9MX6Y5rYv5G1N0fKvQj675oYpWRkq0fjmoXO/cnJMZScnqXQQF99t+WEfth2Uv93Swf5+3grO8ewNqbkSc/K1rK9Z9S9UU3rCS0rO0e3fbhO62OKHkab/9h6b+kBvf7b3hK/715NauqPA+ckOW+0i7NczMjWvxbv04Dm4br1w7Vmh1OkfS+PULNnfpW/j5d2vzjceiGd/7PqrNbzQ2cuaOCbywts796ohr64v0epnisv3gBfL+15aUSB7UVxRGPRvPu6qWfjMOvtlfvPaPxH63VVg+raEBNfYP+RbSM18/bONtvyXtvX26L9r4y0bv9h20k99PkWtasbqnHd6mv26hh9NKGLek5fUqZY85t5eyc9+NlmPTq4mR4e3FSr9p/VnNUxeum61qodGihJys4x9MKPO3VVgxoa3T5KR86laMo32/XXAU0UXT1Iqw+e1ZhOda1JTZ7YxDTrxXJxAny9lJaZm9z3aRqmT+/pVu73ZoYrG0Mrmjt7NtA1HaJULdBXR86lakCLcLv7ZWTl2Px/ZucYGvjmMnlbLFo8uZ8slqIrLRuGobEfrC10qsWV3ym/7z6t1xbs1dRrWqt7oxqFTiW60oanB6uKv7cCfb11MTNbQX5lmyma14OdnWNo9h+H1b1RTdUK9tcrP+/WhJ711bl+DbuPO3chXbtPJatn45o2jRDS5QS9NKaNaatbu9Yr03vI+z/7bssJPfLlVuv2QF9vbX1+iHy9cv8/b3h/tdIyc6yjw65Uv2aQll9qBM0/giTPf+7oosGtIvT89zv0yaWEOU/M9FF65rvt8vHy0mPDmmvV/jOaOHez3dfpWK+aGtSsonHd66tz/dzrlewcQz9sO6HO9WqoXhG1Hj5edVi/7jil2Xd1VVX/0v+f50+i3761o577fodevb6tRratXehjLqRnWV8rNSNLrZ7LTeKXPdZf62POa0DzcF31yuJSx+IKz4xqqZuvilZIQMWuEVaaPNRzSszBqRY80kfDZ6w0O4wSyzuJ+ft4q13dag597q8e6KGtx+Ktw9cqsgf7N9ZjQ5vrZEKaVh243NL+6OBmurt3A+2NTS6y5Xloqwj9a2wH7YlN0g2zyt5CXbd6kB4f3sJ6OyIkQA8PblpgPy8vi+7sVfx8Hy8vizWZvq5jnQKt91fy9/HWsNaRNtt8vL301cQeSs3I0tajCWpdJ1SxiWnyskjfbDmhWcsO6oG+jWweM6JNZJFJeHSNQP00qY9Cg3ytJ7vilmWsqAL9vPXUyJZmh1Goryf2UGJqphqHV5Wfj5d2vThMXhZLgYtIKfdz4CyNalW1u71bw7IX3/ztkb52tw9uGa5x3evrztkbyvzcV8o/RPfKi5s+TWsVOWzxmvaFf+4aXNHjO7pdbTWpVVWNalVRgK+3br4q2u7jujWsoc/v667k9Cw9+90O9WxcU09+s/1SPJd7DB/o20i/74lTy9ohGtm2tna8MMx6cdm7aZh6Nw2zeV5vL4tezNfzW79mFc27r7v1dr2a9pOG0oxa2fPSCGsjRJdCEh53cE37KAUH+MjX20vjP3LtnPGaVfx0LiVDn97TVY99vU2nk2xHdXSuX11Tr2ltvV3Y509SgQYVby+Llvy9vyTZ/Z64ksVi0Zs3tVef15aWKPZBLSM0qKX91X/WThlktzFn0zODVbOqv/V2WRNw6XKDgreXRff2uXzuevvWjkU+rmZVf/Vu6m/3Pu9i/k7rnxokSQoN8tW8dUe1Yt8ZXV/M+bgoef9nI9pG6p0lub343z7Ys0AP+rcP9pKUm/AePntBg99aISm3AeDdJQf00YQu1n1DAnytjeDz1h3V9hMJGnip4ebx4S1Uo4q/fH0sem3BXtWpltto9/J1l3uu+zS9POrkSvPu7V6g0d/by6LrO9Yt9r3e3buh7i7H/OYAX29NG9NW6ZnZuqZ9lEa3q13stUb+ZN8r375B/t66uYv97+SKYmiryAqfgJcWSThKpEWkuaMKJg1oovUx5+22SP/fLR1cGkvXhjXUtWGNEifhwf4+Sk7Pst6+pn2UfshXFKtTvWqaeXvnEve2FOf7v/bSj9tOqn/zcOuF6Nx7uyk+JUOrD55T3eqBalc3d2RAlwY1tHhyP5v5qvl9cEeXSzFW161d6+nz9SUrAHRN+yg1CKui9KxsZWYZqlHFzyHvzRmC/HzUs0nu3ykvsX9ieAvd27thgbiLuuCTpF8f7ms9yeX9644JuJk616+uTUdye13zz3nbPnWo2ubrzbiqgW2SU9TFa2AxNTGc4d4+pb+4en9cJ51PySwwZHlIqwgt2nVad/duaDM0ccnf++mWD9bqgX4lb2RY/o/+8vX2Uo0qftZhuDWr+Onw2RS1jrL/PV9YTZFhre0nHFLBi3eLxaJWhTy/lNsYkJqepYcHN7M2sr19a0clpWVak/DbutbTyv1n1bVhDU0Z2VJPjmhh/XyVpSeppF66trWe/X5nkfssejS34eTnh3pr6Z44myTI3VgsFg1sEaEDcckue017I4WW/2OAUtKzVLOqv2IT07R492mN6VT2BE8qPqm8UnSNsletnzKihab9ukfTxrRVZGiAYqaP0s9/ntJf5+X2qr5xU3ubBLwiiq4eqPMpGYXeHx5yuZHqrl4NdVcJGtFLwt/HW79fajApireXRU3Cg3V3r4aqFeyvW7vWs9sLn3ds3datnqTL91fx99HDg5vKMAz1aVJLDcIK/n9XKeS75bUb2xVIwF0t/3st7bVGgK+3/jGsuTKycmymq+U/BzvbrV2j9fn63Olc+18ZUeTUq6JGFbgrknBUSINahKtT/epKy8zW3b0aqnoVP7vDPge3jNC1Hcp3Una2Tc8O0ci3V+pAXG7BrCu/0Ofc3dWmda9rgxr6amKPAnO8/jGsuU0vbEiAj/x8vHX2gm1PQfvoamofXa1AHNWr+GlUu4LDlJqEV9WL17bWc1dcZN6frxfYYrFo2pi2xSbhvZuE6e1bO1bopLukynJx5Knp9r/GttejX7qmGvgdPerr7Vs7qmYVP/n7eOn50a3Utk6oggN89dTIFm4xAkWSgsvQYj+8jf1hhP8e11lnU9IVHhyg5LTLQ0Mb1aqqdU8NKtXFl705ySVJGP83sYfNqJnIkAC7r/vGTe315sK9euvmDiWK5/nRrbQxJl5/H9JMPkUUKJSkdtHVtP6pQdbvF1c1cNUqpp7Cd3/tpaYRufP8W0eFqnVUyYutVWSRl4byO9vQVhF2/y8DfL2tDUCRoQEa172+S+K50oDmtbT0Us2J0nigX2Pd37eRzXsb1a62/jov9/cAX6etEuwwraJCCy349hcnjjAqredGtyrX4y0Wi9rWLd3ntkaQ+1/n/HVAkwLbglzYsPBg/yaav/mEbutaT77eXtrz0nBl5xi6/T/rtPVYQr44K86x5kgk4aiQPrijS4EW60a1qmr2nVfptd/2WucBdaxXzYToSm7HC8Pk5+OlB/s3tlbEvL5jHQ1oXkvrD5/Xo0OaWZPyakG+SkjN1Lu35Q4daxhWxboMlZT7ZfntlhPWZH7+X3oqwNdb3289oU1H4rV07xnrmrOldVvXejZJ+NMjW+q+vgUvzJc91l/9iyjaM/de95wD6Sie2uk9qm2Uy5Lwoa0ibXoX8vesWMrYzOHuhU+8vCzWnorgAF+tfnKgddhmSRPRtnVC1ap22Uc0dck38uD1G9sVOgXkxs51dWPn4odi5imu98wn33nAx8ti0/PmKsX1npbn71qROXN0QZ5VTwwoUUE5M3WqV71MSbhk//P58KCm2nw0vsAUKXdyfcc6eiLfFDNP99qN7fT4//602VbaURXuorjVlBzlug5Riq4RpF0vDLM2wOa9dq3gy50g+14eUWBqiacgCUeJuWqISqd61Qr9chvQIlyd6lXXg/M2Kayqv+6rgEP+utSvro1H4lWjip/1Iub6jnXULCJYAb7eahKeO6R56BUn4M3PDNHFzGybnvJZ4zrpnSUHdEvX3Lk63/21lw7EXVDbOqHWv9GVVTXLwsfby2bYfGHX9XWqF94zsvvF4eWOw93lLzLnSfx8vEq9HnlpXbk0jj1jOtXR67/t1YAWhc/RqwyiqpW+h/LHvzmuAGjefGFXCPLz0V/6N1Z6Zo4iTEjAJam4t+qpF4iuUNETcMl+UjKvHA3Ojw5pVp5wXGpwy3C7I+CCAypX+nBzl+gCSXhJ6gq4o+eubqVFu5y/POlVDXMbdu2NgMr/l/Xk71fPfWdwuPfHddajg51/8vjboKKTytAgX312b3f93y0dTf1w1rFzIRwZEqAvH+ihj+/sooWPXi6uZLFY1KZOqDUBt8fLy1JgqHrNqv6aek1r65z8qv4+6hBdeCNFefRrfjmxKWzt2qIuvM2eG1UReGrLuCQ9Pcp5Rdp+upQgFterW7Oqv3a8MEzvj+tc5H5Xcvb/S+0yLjnnvlx7nD8xvEW5h5uWh5enDnEpgXvKUTgqz6JH7RcadHU9l7Kyt4RhRCX5zA8spPJ8ZdSvmW3jrycMR7cnukaQ6rtg/nXfIgreFXWt7ElIwlFitYL97Va0LqvC5hMNaO4eX/pV/G2TzsPTRmrtU4Pk7ZVb1CasghdcudKrl5YVefHa1oWumyy5ZogiKp6yDgXPLzzY/meisEYfe/x8vEo8BPuhgU3UNLyqxvdw7lzS8haLcrQWkcHF74QS8+TGteKMbFv+IdN58+WvVNHrueSxN1e4cTFFOj0FhUUv+/jOq2xuR1Xz3IaYmbd3ctpz73lpuNY9NajIood/G9hU9/VpqP9NLN0yn+6Gq2mTeNbq7KX3x5MDVadaoB4b2lzbTySqqr+P3ly4t0wVheEYIQG+mjambbH7hQbmLr+FXIenjdS9n2zUxApUpMYZvL3LfzH20nVt9NbCfdp72jVVlycPba7JQ5s7/XX+NrCpAny89eaifZJyl6oz05WjUubcdVUhe5ZOp3rVtP1Eono1Kfvya+7IU6eZuMLHd+ausLHt+aEa+X8rdSLhoskRwREq4zVsZWqMq1VIg3l5NA2vqheuaW1TcLEwgX7eenqUeaOfXIUk3GyVtJUxbyi3t5dFHS5V8p5VyiGmZnNEz6A78rIzfuYOJ/c0VmQWi0Uf3emYJKcic9QICE/8ygvw9dbfBjW1JuFv31L0urzOdl+fRnrws83W2/0dNLrofxN7KjMnp9IlpV3qVy9+J9g1sEXuMnahgb66tkOUZl5ak35oq8KXt6voPs+3vjwqL0YJlNys2ztpaOvIStWQURIMR4fLXdXAMy5owkPca7i5o9ibH/nUSOfNF4bnMAzbhNBikXU1AE9i9lSUaoGlXx6tJLy8LJUuAZdy33fbUkyZ8CThxSzPVhoP5av3UtSa8RUduZecPsUHJnPASIea+ZaqHdG2Ngm4HfSEw+VGt48yOwSH+OcN7XTDrNU6lZhmdiguZe9r1FVLWsD9PTK4qRqFVVGfZmGq7aJ1iF3lv3d3VXxqRpFz3eCeKuv1oyOP5QBfb/38UG8t3RNXorXpK6pKeihYjWpXW80KmecP5Lm9Wz29veSA2WFUaPSEw+XGdfOMFtSoaoGa7aC5lu7k1euLnzcOFCbA11s3XxXtcQm4JPVtVsttik2hlK7o/hzRxn3XeDZT66hQTRrY1O0abvP/9zeqJEXZChPhwNER7qyyN8YUJ6cS1g0oLZJwuJynrq1YWfRsEmZzu7KtFwpUeHzFOpwD6hLCjeUvROZbyQ+GhwY1MTuECsGTly4MKeeUplm3d9LwSw2VUZVkOb+y4OoZQLlUxiqpQEVWWYtGOtNdvRpq89Et1tt871UuoYG+SryYKUkK8qu8l87XdYhSNQ9dH7u0QoOcU3ujIijvSJURbWtLklb8Y4BTKq17CnrCUWq3d6tndggVRmW92PXzufzVkVPJrkaX/L2f2SG4rbxVEeBcHtxBY5rqJB6Vmn++c17+819lwxDjXJ5S28jZ6tUMKrBkJi6rvN8kKDNatfDytW2sv1e2JDz/fEDmhZbMvHu7afqYtmpbt3JWmHY1cnDHu7JhY2L/xpKkaztwMV6Yrg1rmB2CwzQIq2J2CBVC5TrbFxRxaVWc4a0596P8Ku+YGpSZI5csgXsy8p2KO9XzjCXnSmP904O07tB565wnFK1nkzD1NDuISoT1a52vQ3Q1bZ86VFX9Pf8y6plRLfXyz7tL/ThPOgpnjO2g6b/u0d29G5odiqlu6lzX7BBMtfDRftp/Olmd61e+6x44Hj3hKLWbulTuL2HYmnFLB7NDcLnw4ACNbh8lX2++QlHxkIM7XsvaBde1Dg7wrRQNHnf1Kjrx7NGopt66uX2B7Z7UaxpVLVBv39pRHaKrmR2Kqfo2q2V2CKYKDfRVlwY1KsXnHs7HFSRKjcTjssr6Pdy5/uVhhoyMACoWT67aa5YaVSrvnHDvIlY06d6ohube201jOhVsnPevxHOnAaA4fEMCKLUm4VX12yN9temZwWaHAuAKlb23zlmmj2krSXrx2tYmR1JxfHF/j0KTdIrZAUDhPH8yE+BEESGVtxe4eWSw2SEAsKOonkuU3S1d6+nq9lGVYh64IzAgA6h8nhnV0uwQ3AZnEqAcQgN9tejRvvL38WaOEDzetR2i9P3Wk2aHAZiGBLzkOCMClQ/XwiXH2QQop6YR9AijcvDxYgaTu/GjhgcAwEWGtoowOwS3wdkZTvHPG9qaHQIAVFp1qgVKkqZew/xlmIMeMcB9/Tipd5keF10jyMGReC6ScDjF2Kvq2d3enF5jwG0ZRSw69OSIFna3d2tYw+52ONfPD/XWp/d01S1XRZsdCgDAzUSE+JsdgscjCYdLfXpPV7NDAFBWRSz8e1+fRna316NV3BTVgvzUp2kteVGkDQCACockHC5zW7d6Cq/E1cQBd1dEDi5vL4uuble7VI8B4Llo/gHcF+du5yMJh8tQIAjwbA8Nalpgm8GZHKiUGodXNTsEONBL17UxOwTAo1AdHS5DjRbAvfl6F/0h9rLzIS9qHjkA99AorIoOnU0p1WPu6d3QSdHAlb77ay9tjDmv27var/UDoGzomkSZdG9EsSWgspnQs0GR9zeuVaXgRnJwwO2NaBtZ6scE+Ho7IRK4Wofoarq3TyPqS1QytapSmM3ZSMJRJjd3KX3FXR++wAG3FuzvW+T9FotFHetVc00wAFzG3igXAJ6rJI0uA1uE29xmNY7SIQlHmZR2HcD6NYM0sV9jJ0UDoKKiIxwAAM8zoo3tCJnpN7QzKRL3RBIOp7u7V0Mt/8cA1WRoC+DxHhpoW5zNoDIb4PboBwdwJQsjZMqFJBxlUprr6lF2li0C4Dke6Ht5jfABVwxPIwUHAMDzkIKXD0k4nI6GMsAzFFrpnM84UOlQoBWo3Li+Lx+WKDNJREiArusQpXo17VQTdgMMMQVQEnxVAB7AztV2h+jqJgQCoKIgCS8fknCTtKkTqhm3dDQ7DABwKhZFANyfvY9xoSNjAFQKFobBlQvD0VEmnHoBlMQ/hrcwOwQA5WT3nH/Fxrdubm/9/e9Dmjk1HgDmGdEmUg3DqmhY68jid0ahSMLhNHk9YE3Dq5obCABT+HpbVKdaoNlhACivEswrGdOprvX3Kws0AvAcs8Z11pK/91Ogn7cahrnntNqKgOHocJodLwxTRlaOggN8zQ4FgAOUdn43Q9UAz8WIOKDyYnmy8iMJR5mU5GI8yM9HQX7OjwWAuaoF8kEHKptqQTSwA0BZMRwdZUJBFgB57uzZwOwQADiTnV4vH6ouApUeqyWVHUk4AKBcAv28zQ4BgIu1q1vN7BAAwG2RhKNsaPgCUIhWtUMkScPaUDkV8FTdG9Us9L7wYH8XRgIA7oc54QCAEilp29un93TVwl2nNbp9lFPjAeAa1QJLNv/7mwd7KiU9S+EhAU6OCIAZbrkq2uwQPAY94SiToi7GWZIIqNxqVvXXrV3rqao/7byAJyhpg1qnetXVp2ktJ0cDwCzXd6xjdggegyQcDrf8H/3NDgEAADgIRdgA2OPjTSpZVvzlUCZFFUPkAwkAAAB4livXB58xtoMiQwL0xk3tTYrIfTFWEABQInSGAQCAPG3qhGrtU4PMDsMt0WUJACiRejWCzA4BAADA7ZGEo0xqVvUzOwQALnblMDQAAFB5cBngOCThKJOWl9YBBgAAns3fl8tFAHAkvlUBAABQqCA/SggBgCORhAMAAAAAisRodMdxWhIeHx+v8ePHKzQ0VKGhoRo/frwSEhKKfMydd94pi8Vi89O9e3dnhQgAAAAAgEs5bXzRbbfdpuPHj2vBggWSpPvvv1/jx4/Xjz/+WOTjhg8frtmzZ1tv+/lRAAwAAAAA4BmckoTv3r1bCxYs0Nq1a9WtWzdJ0ocffqgePXpo7969at68eaGP9ff3V2RkpDPCAgAAAADAVE4Zjr5mzRqFhoZaE3BJ6t69u0JDQ7V69eoiH7ts2TKFh4erWbNmuu+++xQXF1fk/unp6UpKSrL5AQAAAACgInJKEh4bG6vw8PAC28PDwxUbG1vo40aMGKHPPvtMS5Ys0ZtvvqkNGzZo4MCBSk9PL/Qx06ZNs847Dw0NVXR0tEPeAwCgeO3qhpodAgAAgFspVRI+derUAoXTrvzZuHGjJMliZzV3wzDsbs8zduxYjRo1Sm3atNHo0aP166+/at++ffr5558LfcyUKVOUmJho/Tl27Fhp3hIAoBwGtYgwOwQAAOACRaRxKKVSzQmfNGmSbrnlliL3adCggf7880+dPn26wH1nzpxRRETJL9hq166t+vXra//+/YXu4+/vL39//xI/JwDAcTghAwAAlE6pkvCwsDCFhYUVu1+PHj2UmJio9evXq2vXrpKkdevWKTExUT179izx6507d07Hjh1T7dq1SxMmAAAAAAAVklPmhLds2VLDhw/Xfffdp7Vr12rt2rW67777dPXVV9tURm/RooW+/fZbSdKFCxf02GOPac2aNYqJidGyZcs0evRohYWF6frrr3dGmAAAAAAAuJRTknBJ+uyzz9S2bVsNHTpUQ4cOVbt27fTpp5/a7LN3714lJiZKkry9vbV9+3Zde+21atasmSZMmKBmzZppzZo1Cg4OdlaYAAAAAIB8qgf52tnKHDRHcco64ZJUo0YNzZ07t8h9DMOw/h4YGKjffvvNWeEAAAAAAErAKH4XlIPTesIBAAAAAIAtknCUGVWRAVSv4md2CAAAwAW49nccknAAQIm1iLSt0TG2S7RJkQAAALgnknCUWU16wIBKJzjAtpSInw+nEQAAPM3A5uFmh+DRuHpCmT06pJnZIQAAAABwsGFtIgtsYzS645CEo8yqBdITDlQ2Fk7BAAB4PM72zkUSDgAAAACAi5CEw6F6Nq5pdggAAAAAHMxCeXSH8Sl+F8C+kEDbw+eV69toVNvaJkUDwNWC/TmFAAAAlBZXUCiz3k3CbG7f3q2+SZEAMAOV0YHK6cqlCgEApcMVFMqMISkAAABA5cCVv+OQhAMAAAAA4CIk4QAAAACAInkxCtZhSMIBAGXCuRgAAM/UpUENm9s9G9dU66gQk6LxPBRmAwAAAABY1ajiZ3N73n3dTYrEM9ETDgAoMUOG2SEAAAC4NZJwAECZGOTjAAAApUYSDgAoE3JwAACA0iMJBwAAAADARUjCAQAAAABwEZJwAAAAAABchCQcAAAAAAAXIQkHAJSJQXl0AACAUiMJBwAAAADARUjCAQAAAABwEZJwAECZWCwWs0MAAABwOyThAAAAAAC4CEk4AKBMKMwGAABQeiThAIAyiQwNNDsEAAAAt0MSjnK5p3dDSdLXE3uYHAkAV5vYr5HZIQAAALgdH7MDgHt79upWemZUSwo0AZVQoK+32SEAMAEzUQCgfOgJR7mRgAMAAABAyZCEAwAAAADgIiThAAAAAAC4CEk4AAAAAAAuQhIOAACAIj01soXZIQCAxyAJBwAAQJHu79vY7BAAwGOQhAMAAKDEWBQFAMqHJBwAUGLVg/ysv7M8IQAAnqtXk5pmh+CxSMIBACX24rVtrL8bhmFiJAAAwJm8aGx3GpJwAECJRYYGmB0CAACAWyMJBwAAAADARUjCAQAAAABwEZJwAAAAlBjlIACgfEjCAQAAAABwEZJwAAAAAABchCQcAAAAAAAXIQkHAAAAAMBFSMIBAAAAAHARknAAAAAAAFyEJBwAUCZeFovZIQAAALgdH7MDAAC4l/Hd62v7iUT1a17L7FAAAADcDkk4AKBUXrqujdkhAAAAuC2GowMAAAAA4CJOS8JfeeUV9ezZU0FBQapWrVqJHmMYhqZOnaqoqCgFBgaqf//+2rlzp7NCBAAAAADY0Swi2OwQPJbTkvCMjAzddNNN+stf/lLix7z22mt666239O6772rDhg2KjIzUkCFDlJyc7KwwAQAAAABXmDykme7r01DfPtjT7FA8jtPmhL/wwguSpDlz5pRof8MwNGPGDD399NMaM2aMJOmTTz5RRESE5s2bpwceeMBZoQIAAAAA8qni76OnR7UyOwyPVGHmhB8+fFixsbEaOnSodZu/v7/69eun1atXmxgZAAAAujWsIUm6rVs9kyMBAPdWYaqjx8bGSpIiIiJstkdEROjIkSOFPi49PV3p6enW20lJSc4JEAAAoBL75O6u2hObrHZ1Qs0OBQDcWql6wqdOnSqLxVLkz8aNG8sVkMVisbltGEaBbflNmzZNoaGh1p/o6OhyvT4AAAAKCvD1VofoavLyKvy6DABQvFL1hE+aNEm33HJLkfs0aNCgTIFERkZKyu0Rr127tnV7XFxcgd7x/KZMmaLJkydbbyclJZGIAwAAAAAqpFIl4WFhYQoLC3NKIA0bNlRkZKQWLVqkjh07SsqtsL58+XL985//LPRx/v7+8vf3d0pMAAAAAAA4ktMKsx09elRbt27V0aNHlZ2dra1bt2rr1q26cOGCdZ8WLVro22+/lZQ7DP2RRx7Rq6++qm+//VY7duzQnXfeqaCgIN12223OChMAAAAAAJdxWmG25557Tp988on1dl7v9tKlS9W/f39J0t69e5WYmGjd5/HHH9fFixf14IMPKj4+Xt26ddPChQsVHMxC8QAAAAAA92cxDMMwOwhHSkpKUmhoqBITExUSEmJ2OAAAAAAAD1eaPLTCrBMOAAAAAICnIwkHAAAAAMBFSMIBAAAAAHARknAAAAAAAFyEJBwAAAAAABdx2hJlZskr9p6UlGRyJAAAAACAyiAv/yzJ4mMel4QnJydLkqKjo02OBAAAAABQmSQnJys0NLTIfTxunfCcnBydPHlSwcHBslgsZodTpKSkJEVHR+vYsWOsaQ6n4BiDK3CcwRU4zuBsHGNwBY4zz2UYhpKTkxUVFSUvr6JnfXtcT7iXl5fq1q1rdhilEhISwocQTsUxBlfgOIMrcJzB2TjG4AocZ56puB7wPBRmAwAAAADARUjCAQAAAABwEZJwE/n7++v555+Xv7+/2aHAQ3GMwRU4zuAKHGdwNo4xuALHGSQPLMwGAAAAAEBFRU84AAAAAAAuQhIOAAAAAICLkIQDAAAAAOAiJOEAAAAAALgISbhJZs6cqYYNGyogIECdO3fWypUrzQ4JFcC0adN01VVXKTg4WOHh4bruuuu0d+9em30Mw9DUqVMVFRWlwMBA9e/fXzt37rTZJz09XX/7298UFhamKlWq6JprrtHx48dt9omPj9f48eMVGhqq0NBQjR8/XgkJCTb7HD16VKNHj1aVKlUUFhamhx56SBkZGU557zDHtGnTZLFY9Mgjj1i3cYzBEU6cOKFx48apZs2aCgoKUocOHbRp0ybr/RxnKK+srCw988wzatiwoQIDA9WoUSO9+OKLysnJse7DcYbSWrFihUaPHq2oqChZLBZ99913NvdXtGNq+/bt6tevnwIDA1WnTh29+OKLou62GzDgcl988YXh6+trfPjhh8auXbuMhx9+2KhSpYpx5MgRs0ODyYYNG2bMnj3b2LFjh7F161Zj1KhRRr169YwLFy5Y95k+fboRHBxszJ8/39i+fbsxduxYo3bt2kZSUpJ1n4kTJxp16tQxFi1aZGzevNkYMGCA0b59eyMrK8u6z/Dhw402bdoYq1evNlavXm20adPGuPrqq633Z2VlGW3atDEGDBhgbN682Vi0aJERFRVlTJo0yTV/DDjd+vXrjQYNGhjt2rUzHn74Yet2jjGU1/nz54369esbd955p7Fu3Trj8OHDxuLFi40DBw5Y9+E4Q3m9/PLLRs2aNY2ffvrJOHz4sPH1118bVatWNWbMmGHdh+MMpfXLL78YTz/9tDF//nxDkvHtt9/a3F+RjqnExEQjIiLCuOWWW4zt27cb8+fPN4KDg4033njDeX8gOARJuAm6du1qTJw40WZbixYtjCeffNKkiFBRxcXFGZKM5cuXG4ZhGDk5OUZkZKQxffp06z5paWlGaGio8f777xuGYRgJCQmGr6+v8cUXX1j3OXHihOHl5WUsWLDAMAzD2LVrlyHJWLt2rXWfNWvWGJKMPXv2GIaRexLy8vIyTpw4Yd3n888/N/z9/Y3ExETnvWm4RHJystG0aVNj0aJFRr9+/axJOMcYHOGJJ54wevfuXej9HGdwhFGjRhl33323zbYxY8YY48aNMwyD4wzld2USXtGOqZkzZxqhoaFGWlqadZ9p06YZUVFRRk5OjgP/EnA0hqO7WEZGhjZt2qShQ4fabB86dKhWr15tUlSoqBITEyVJNWrUkCQdPnxYsbGxNsePv7+/+vXrZz1+Nm3apMzMTJt9oqKi1KZNG+s+a9asUWhoqLp162bdp3v37goNDbXZp02bNoqKirLuM2zYMKWnp9sMKYV7+utf/6pRo0Zp8ODBNts5xuAIP/zwg7p06aKbbrpJ4eHh6tixoz788EPr/RxncITevXvr999/1759+yRJ27Zt06pVqzRy5EhJHGdwvIp2TK1Zs0b9+vWTv7+/zT4nT55UTEyM4/8AcBgfswOobM6ePavs7GxFRETYbI+IiFBsbKxJUaEiMgxDkydPVu/evdWmTRtJsh4j9o6fI0eOWPfx8/NT9erVC+yT9/jY2FiFh4cXeM3w8HCbfa58nerVq8vPz49j1c198cUX2rx5szZs2FDgPo4xOMKhQ4c0a9YsTZ48WU899ZTWr1+vhx56SP7+/rrjjjs4zuAQTzzxhBITE9WiRQt5e3srOztbr7zyim699VZJfJ/B8SraMRUbG6sGDRoUeJ28+xo2bFiWtwkXIAk3icVisbltGEaBbajcJk2apD///FOrVq0qcF9Zjp8r97G3f1n2gXs5duyYHn74YS1cuFABAQGF7scxhvLIyclRly5d9Oqrr0qSOnbsqJ07d2rWrFm64447rPtxnKE8vvzyS82dO1fz5s1T69attXXrVj3yyCOKiorShAkTrPtxnMHRKtIxZS+Wwh6LioPh6C4WFhYmb2/vAq2icXFxBVq7UHn97W9/0w8//KClS5eqbt261u2RkZGSVOTxExkZqYyMDMXHxxe5z+nTpwu87pkzZ2z2ufJ14uPjlZmZybHqxjZt2qS4uDh17txZPj4+8vHx0fLly/X222/Lx8fHpgU9P44xlEbt2rXVqlUrm20tW7bU0aNHJfFdBsf4xz/+oSeffFK33HKL2rZtq/Hjx+vRRx/VtGnTJHGcwfEq2jFlb5+4uDhJBXvrUbGQhLuYn5+fOnfurEWLFtlsX7RokXr27GlSVKgoDMPQpEmT9M0332jJkiUFhhE1bNhQkZGRNsdPRkaGli9fbj1+OnfuLF9fX5t9Tp06pR07dlj36dGjhxITE7V+/XrrPuvWrVNiYqLNPjt27NCpU6es+yxcuFD+/v7q3Lmz4988XGLQoEHavn27tm7dav3p0qWLbr/9dm3dulWNGjXiGEO59erVq8Dyivv27VP9+vUl8V0Gx0hNTZWXl+2lrLe3t3WJMo4zOFpFO6Z69OihFStW2CxbtnDhQkVFRRUYpo4KxnU14JAnb4myjz76yNi1a5fxyCOPGFWqVDFiYmLMDg0m+8tf/mKEhoYay5YtM06dOmX9SU1Nte4zffp0IzQ01Pjmm2+M7du3G7feeqvdpTHq1q1rLF682Ni8ebMxcOBAu0tjtGvXzlizZo2xZs0ao23btnaXxhg0aJCxefNmY/HixUbdunVZbsUD5a+ObhgcYyi/9evXGz4+PsYrr7xi7N+/3/jss8+MoKAgY+7cudZ9OM5QXhMmTDDq1KljXaLsm2++McLCwozHH3/cug/HGUorOTnZ2LJli7FlyxZDkvHWW28ZW7ZssS4lXJGOqYSEBCMiIsK49dZbje3btxvffPONERISwhJlboAk3CTvvfeeUb9+fcPPz8/o1KmTdQkqVG6S7P7Mnj3buk9OTo7x/PPPG5GRkYa/v7/Rt29fY/v27TbPc/HiRWPSpElGjRo1jMDAQOPqq682jh49arPPuXPnjNtvv90IDg42goODjdtvv92Ij4+32efIkSPGqFGjjMDAQKNGjRrGpEmTbJbBgGe4MgnnGIMj/Pjjj0abNm0Mf39/o0WLFsYHH3xgcz/HGcorKSnJePjhh4169eoZAQEBRqNGjYynn37aSE9Pt+7DcYbSWrp0qd1rsQkTJhiGUfGOqT///NPo06eP4e/vb0RGRhpTp05leTI3YDGMS7P3AQAAAACAUzEnHAAAAAAAFyEJBwAAAADARUjCAQAAAABwEZJwAAAAAABchCQcAAAAAAAXIQkHAAAAAMBFSMIBAAAAAHARknAAAAAAAFyEJBwAAAAAABchCQcAAAAAwEVIwgEAAAAAcBGScAAAAAAAXOT/AcWNmv/YWtJCAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -177,7 +183,7 @@ "text/html": [ "\n", " \n", " " @@ -199,11 +205,151 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "0c03543d-ad3d-4df4-b424-9d9b1e7b7869", + "execution_count": 10, + "id": "584543d0-89f7-4ae8-aedb-a01e0e110784", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "216" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(x[0][0])" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "03accbb9-48b7-40d9-85be-9ed6a92d2e86", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "from tinygrad import TinyJit, Device, Tensor, nn\n", + "from tinygrad.nn.state import safe_save, get_state_dict\n", + "from model import Model\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "9aa99587-01e0-4156-84a1-15ba0c929aec", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "x_np = np.array(x)[:, np.newaxis, :, :] # Shape: (N, 1, 128, 216)\n", + "y_np = np.array(y)[:, np.newaxis, :, :] # Shape: (N, 1, 128, 216)\n", + "\n", + "# Training parameters\n", + "num_epochs = 15\n", + "batch_size = 20\n", + "num_samples = len(x_np)\n", + "num_batches = num_samples // batch_size" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "bcf1bec0-be3f-411b-8324-7877f0ead016", + "metadata": {}, + "outputs": [], + "source": [ + "model = Model()\n", + "optimizer = nn.optim.Adam(nn.state.get_parameters(model), lr=1e-3)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "ea3a98ca-756b-4658-9c4a-3cbc36c61cdc", + "metadata": {}, + "outputs": [], + "source": [ + "@TinyJit\n", + "def jit_step(X: Tensor, Y: Tensor,show) -> Tensor:\n", + " Tensor.training = True\n", + " optimizer.zero_grad()\n", + " sample, loss = model.__Lcall__(X,Y)\n", + " loss.backward()\n", + " optimizer.step()\n", + " return loss.realize()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "bc6dfda7-4249-4e22-a931-85deef0e5347", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [ + { + "ename": "ParameterError", + "evalue": "Audio buffer is not finite everywhere", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mParameterError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[25]\u001b[39m\u001b[32m, line 11\u001b[39m\n\u001b[32m 8\u001b[39m batch_x = Tensor(x_np[indices[start:end]])\n\u001b[32m 9\u001b[39m batch_y = Tensor(y_np[indices[start:end]])\n\u001b[32m---> \u001b[39m\u001b[32m11\u001b[39m loss = \u001b[43mjit_step\u001b[49m\u001b[43m(\u001b[49m\u001b[43mbatch_x\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbatch_y\u001b[49m\u001b[43m,\u001b[49m\u001b[43m(\u001b[49m\u001b[43mbatch_idx\u001b[49m\u001b[43m \u001b[49m\u001b[43m%\u001b[49m\u001b[43m \u001b[49m\u001b[32;43m4\u001b[39;49m\u001b[43m \u001b[49m\u001b[43m==\u001b[49m\u001b[43m \u001b[49m\u001b[32;43m0\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 12\u001b[39m epoch_loss += loss.item()\n\u001b[32m 14\u001b[39m avg_epoch_loss = epoch_loss / num_batches\n", + "\u001b[36mFile \u001b[39m\u001b[32m/nix/store/khnvx4lwxjcrq6n0kllvbry5q64v8dcz-python3.12-tinygrad-0.10.2/lib/python3.12/site-packages/tinygrad/engine/jit.py:250\u001b[39m, in \u001b[36mTinyJit.__call__\u001b[39m\u001b[34m(self, *args, **kwargs)\u001b[39m\n\u001b[32m 248\u001b[39m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28mself\u001b[39m.fxn \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[32m 249\u001b[39m \u001b[38;5;28;01mwith\u001b[39;00m Context(BEAM=\u001b[32m0\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m getenv(\u001b[33m\"\u001b[39m\u001b[33mIGNORE_JIT_FIRST_BEAM\u001b[39m\u001b[33m\"\u001b[39m) \u001b[38;5;28;01melse\u001b[39;00m BEAM.value):\n\u001b[32m--> \u001b[39m\u001b[32m250\u001b[39m ret = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mfxn\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 251\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(params:=get_parameters(ret)): Tensor.realize(params[\u001b[32m0\u001b[39m], *params[\u001b[32m1\u001b[39m:])\n\u001b[32m 252\u001b[39m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m.cnt == \u001b[32m1\u001b[39m:\n\u001b[32m 253\u001b[39m \u001b[38;5;66;03m# jit capture\u001b[39;00m\n", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[24]\u001b[39m\u001b[32m, line 9\u001b[39m, in \u001b[36mjit_step\u001b[39m\u001b[34m(X, Y, show)\u001b[39m\n\u001b[32m 7\u001b[39m optimizer.step()\n\u001b[32m 8\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m show:\n\u001b[32m----> \u001b[39m\u001b[32m9\u001b[39m \u001b[43mplaySpec\u001b[49m\u001b[43m(\u001b[49m\u001b[43msample\u001b[49m\u001b[43m.\u001b[49m\u001b[43mnumpy\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m[\u001b[49m\u001b[32;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 10\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m loss.realize()\n", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[6]\u001b[39m\u001b[32m, line 3\u001b[39m, in \u001b[36mplaySpec\u001b[39m\u001b[34m(spec)\u001b[39m\n\u001b[32m 1\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mplaySpec\u001b[39m(spec):\n\u001b[32m 2\u001b[39m S = librosa.feature.inverse.mel_to_stft(spec, sr=SAMPLE_RATE)\n\u001b[32m----> \u001b[39m\u001b[32m3\u001b[39m audio = \u001b[43mlibrosa\u001b[49m\u001b[43m.\u001b[49m\u001b[43mgriffinlim\u001b[49m\u001b[43m(\u001b[49m\u001b[43mS\u001b[49m\u001b[43m,\u001b[49m\u001b[43mn_iter\u001b[49m\u001b[43m=\u001b[49m\u001b[32;43m25\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43mmomentum\u001b[49m\u001b[43m=\u001b[49m\u001b[32;43m0.99\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[32m 4\u001b[39m audio = librosa.effects.preemphasis(audio) \u001b[38;5;66;03m# Reapply pre-emphasis\u001b[39;00m\n\u001b[32m 6\u001b[39m plt.figure(figsize=(\u001b[32m12\u001b[39m,\u001b[32m4\u001b[39m))\n", + "\u001b[36mFile \u001b[39m\u001b[32m/nix/store/xb3jssmf8ghkxa2sib291dggp9m78rml-python3.12-librosa-0.11.0/lib/python3.12/site-packages/librosa/core/spectrum.py:2829\u001b[39m, in \u001b[36mgriffinlim\u001b[39m\u001b[34m(S, n_iter, hop_length, win_length, n_fft, window, center, dtype, length, pad_mode, momentum, init, random_state)\u001b[39m\n\u001b[32m 2816\u001b[39m inverse = istft(\n\u001b[32m 2817\u001b[39m angles,\n\u001b[32m 2818\u001b[39m hop_length=hop_length,\n\u001b[32m (...)\u001b[39m\u001b[32m 2825\u001b[39m out=inverse,\n\u001b[32m 2826\u001b[39m )\n\u001b[32m 2828\u001b[39m \u001b[38;5;66;03m# Rebuild the spectrogram\u001b[39;00m\n\u001b[32m-> \u001b[39m\u001b[32m2829\u001b[39m rebuilt = \u001b[43mstft\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 2830\u001b[39m \u001b[43m \u001b[49m\u001b[43minverse\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2831\u001b[39m \u001b[43m \u001b[49m\u001b[43mn_fft\u001b[49m\u001b[43m=\u001b[49m\u001b[43mn_fft\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2832\u001b[39m \u001b[43m \u001b[49m\u001b[43mhop_length\u001b[49m\u001b[43m=\u001b[49m\u001b[43mhop_length\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2833\u001b[39m \u001b[43m \u001b[49m\u001b[43mwin_length\u001b[49m\u001b[43m=\u001b[49m\u001b[43mwin_length\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2834\u001b[39m \u001b[43m \u001b[49m\u001b[43mwindow\u001b[49m\u001b[43m=\u001b[49m\u001b[43mwindow\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2835\u001b[39m \u001b[43m \u001b[49m\u001b[43mcenter\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcenter\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2836\u001b[39m \u001b[43m \u001b[49m\u001b[43mpad_mode\u001b[49m\u001b[43m=\u001b[49m\u001b[43mpad_mode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2837\u001b[39m \u001b[43m \u001b[49m\u001b[43mout\u001b[49m\u001b[43m=\u001b[49m\u001b[43mrebuilt\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2838\u001b[39m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 2840\u001b[39m \u001b[38;5;66;03m# Update our phase estimates\u001b[39;00m\n\u001b[32m 2841\u001b[39m angles[:] = rebuilt\n", + "\u001b[36mFile \u001b[39m\u001b[32m/nix/store/xb3jssmf8ghkxa2sib291dggp9m78rml-python3.12-librosa-0.11.0/lib/python3.12/site-packages/librosa/core/spectrum.py:239\u001b[39m, in \u001b[36mstft\u001b[39m\u001b[34m(y, n_fft, hop_length, win_length, window, center, dtype, pad_mode, out)\u001b[39m\n\u001b[32m 236\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m ParameterError(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mhop_length=\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mhop_length\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m must be a positive integer\u001b[39m\u001b[33m\"\u001b[39m)\n\u001b[32m 238\u001b[39m \u001b[38;5;66;03m# Check audio is valid\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m239\u001b[39m \u001b[43mutil\u001b[49m\u001b[43m.\u001b[49m\u001b[43mvalid_audio\u001b[49m\u001b[43m(\u001b[49m\u001b[43my\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 241\u001b[39m fft_window = get_window(window, win_length, fftbins=\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[32m 243\u001b[39m \u001b[38;5;66;03m# Pad the window out to n_fft size\u001b[39;00m\n", + "\u001b[36mFile \u001b[39m\u001b[32m/nix/store/xb3jssmf8ghkxa2sib291dggp9m78rml-python3.12-librosa-0.11.0/lib/python3.12/site-packages/librosa/util/utils.py:298\u001b[39m, in \u001b[36mvalid_audio\u001b[39m\u001b[34m(y)\u001b[39m\n\u001b[32m 293\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m ParameterError(\n\u001b[32m 294\u001b[39m \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mAudio data must be at least one-dimensional, given y.shape=\u001b[39m\u001b[38;5;132;01m{\u001b[39;00my.shape\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m\n\u001b[32m 295\u001b[39m )\n\u001b[32m 297\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m np.isfinite(y).all():\n\u001b[32m--> \u001b[39m\u001b[32m298\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m ParameterError(\u001b[33m\"\u001b[39m\u001b[33mAudio buffer is not finite everywhere\u001b[39m\u001b[33m\"\u001b[39m)\n\u001b[32m 300\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m\n", + "\u001b[31mParameterError\u001b[39m: Audio buffer is not finite everywhere" + ] + } + ], + "source": [ + "for epoch in range(num_epochs):\n", + " epoch_loss = 0.0\n", + " indices = np.random.permutation(num_samples)\n", + " \n", + " for batch_idx in range(num_batches):\n", + " start = batch_idx * batch_size\n", + " end = start + batch_size\n", + " batch_x = Tensor(x_np[indices[start:end]])\n", + " batch_y = Tensor(y_np[indices[start:end]])\n", + " \n", + " loss = jit_step(batch_x, batch_y,(batch_idx % 4 == 0))\n", + " epoch_loss += loss.item()\n", + " \n", + " avg_epoch_loss = epoch_loss / num_batches\n", + " print(f\"Epoch {epoch+1}/{num_epochs}, Loss: {avg_epoch_loss:.4f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "753ebcea-310b-43a0-a8d2-67994328d74a", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "nn.state.safe_save(nn.state.get_state_dict(model), \"vae_weights.safetensors\")" + ] } ], "metadata": {