{ "cells": [ { "cell_type": "markdown", "id": "a60c2ce1", "metadata": {}, "source": [ "## Lab 3\n", "#### Authors: Amahury J. Lopez Diaz, Srikanth Iyer, Jessica Lasebikan" ] }, { "cell_type": "markdown", "id": "87f663e3", "metadata": {}, "source": [ "##### Problem 1. \n", "##### a) Write an elementary (homogeneous, 1-dimensional lattice, binary, 3-cell neighborhood) cellular-automata simulator, that computes & displays the time-evolution of any elementary CA from a given initial configuration. Assume that the edges of your CA fold around (toroid lattice). Use it to run Rule 126, starting from an initial condition where the whole lattice is in state 0 except for a single point in the middle cell which is in state 1 (other rules are exemplified in section 2.4.1 of Floreano and Mattiussi's book and all rules can be seen at Wolfram's MathWorld). Run it for 100 iterations. Produce a space-time diagram that looks like the one shown for rule 126." ] }, { "cell_type": "markdown", "id": "1ce233cf", "metadata": {}, "source": [ "##### b) Run the CA again, except now with a new rule (whichever one you like), and a random initial condition (the probability of each initial cell being on or off is 0.5). \n", "##### HINTS: You can use wxPython or pyCX to make your drawings." ] }, { "cell_type": "code", "execution_count": 1, "id": "f5a2fcfc", "metadata": {}, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "code", "execution_count": 2, "id": "04b1d9a7", "metadata": {}, "outputs": [], "source": [ "#Setting an initial state\n", "rng = np.random.RandomState(42)\n", "data = rng.randint(0, 2, 20)" ] }, { "cell_type": "code", "execution_count": 3, "id": "d9e68ce2", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0])" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data" ] }, { "cell_type": "markdown", "id": "6f8ecf75", "metadata": {}, "source": [ "##### To update the state of our cellular automaton we will need to define a set of rules. A given cell \\(C\\) only knows about the state of it’s left and right neighbors, labeled \\(L\\) and \\(R\\) respectively. We can define a function or rule, \\(f(L, C, R)\\), which maps the cell state to either 0 or 1." ] }, { "cell_type": "code", "execution_count": 4, "id": "34b0a067", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "000\n", "001\n", "010\n", "011\n", "100\n", "101\n", "110\n", "111\n" ] } ], "source": [ "#How to generate input triplets?\n", "for i in range(8):\n", " print(np.binary_repr(i, 3))" ] }, { "cell_type": "markdown", "id": "6e11f028", "metadata": {}, "source": [ "##### For each input triplet, we can assign 0 or 1 to the output. \n", "\n", "##### The output of \\(f\\) is the value which will replace the current cell \\(C\\) in the next time step. In total there are \\(2^{2^3} = 2^8 = 256\\) possible rules for updating a cell. \n", "\n", "##### Stephen Wolfram introduced a naming convention, now known as the Wolfram Code, for the update rules in which each rule is represented by an 8 bit binary number." ] }, { "cell_type": "code", "execution_count": 5, "id": "83264647", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0 0 0 1 1 1 1 0]\n" ] } ], "source": [ "#For example “Rule 30” could be constructed by first converting to binary and then building an array for each bit\n", "rule_number = 30\n", "rule_string = np.binary_repr(rule_number, 8)\n", "rule = np.array([int(bit) for bit in rule_string])\n", "print(rule)" ] }, { "cell_type": "code", "execution_count": 6, "id": "0c8f8eff", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "input:000, index:7, output 0\n", "input:001, index:6, output 1\n", "input:010, index:5, output 1\n", "input:011, index:4, output 1\n", "input:100, index:3, output 1\n", "input:101, index:2, output 0\n", "input:110, index:1, output 0\n", "input:111, index:0, output 0\n" ] } ], "source": [ "# By convention the Wolfram code associates the leading bit with ‘111’ and the final bit with ‘000’.\n", "# For rule 30 the relationship between the input, rule index and output is as follows:\n", "for i in range(8):\n", " triplet = np.binary_repr(i, 3)\n", " print(f\"input:{triplet}, index:{7-i}, output {rule[7-i]}\")" ] }, { "cell_type": "markdown", "id": "4c04f9ea", "metadata": {}, "source": [ "##### We can define a function which maps the input cell information with the associated rule index. \n", "\n", "#### Essentially we are converting the binary input to decimal and adjusting the index range." ] }, { "cell_type": "code", "execution_count": 7, "id": "630df554", "metadata": {}, "outputs": [], "source": [ "def rule_index(triplet):\n", " L, C, R = triplet\n", " index = 7 - (4 * L + 2 * C + R)\n", " return int(index)" ] }, { "cell_type": "code", "execution_count": 8, "id": "5254ad59", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Now we can take in any input and look up the output based on our rule, for example:\n", "rule[rule_index((1, 0, 1))]" ] }, { "cell_type": "code", "execution_count": 9, "id": "0e95e93d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rule[rule_index((0, 1, 1))]" ] }, { "cell_type": "markdown", "id": "74711883", "metadata": {}, "source": [ "##### Finally, we can use Numpy to create a data structure containing all the triplets for our state array and apply the function across the appropriate axis to determine our new state." ] }, { "cell_type": "code", "execution_count": 10, "id": "eba26a49", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1],\n", " [0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0],\n", " [1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0]])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "all_triplets = np.stack([np.roll(data, 1), data, np.roll(data, -1)])\n", "all_triplets" ] }, { "cell_type": "code", "execution_count": 11, "id": "539bc162", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1 1 1 0 1 1 1 0 1 1 1 0 0 1 1 0 1 0 0 1]\n" ] } ], "source": [ "new_data = rule[np.apply_along_axis(func1d=rule_index, axis=0, arr=all_triplets)]\n", "print(new_data)" ] }, { "cell_type": "markdown", "id": "9b01bbcc", "metadata": {}, "source": [ "##### That is the process for a single update of our cellular automata. To do many updates and record the state over time, we will create a function." ] }, { "cell_type": "code", "execution_count": 12, "id": "8a70ecac", "metadata": {}, "outputs": [], "source": [ "def CA_run(initial_state, n_steps, rule_number):\n", " # Getting the triplet's assignment \n", " rule_string = np.binary_repr(rule_number, 8)\n", " rule = np.array([int(bit) for bit in rule_string])\n", " \n", " # Building an empty automaton\n", " m_cells = len(initial_state)\n", " CA_run = np.zeros((n_steps, m_cells))\n", " CA_run[0, :] = initial_state\n", " \n", " #Fillint out the automaton:\n", " for step in range(1, n_steps):\n", " all_triplets = np.stack(\n", " [\n", " np.roll(CA_run[step - 1, :], 1),\n", " CA_run[step - 1, :],\n", " np.roll(CA_run[step - 1, :], -1),\n", " ]\n", " )\n", " CA_run[step, :] = rule[np.apply_along_axis(rule_index, 0, all_triplets)]\n", "\n", " return CA_run" ] }, { "cell_type": "code", "execution_count": 13, "id": "694e9243", "metadata": {}, "outputs": [], "source": [ "initial = np.array([0, 1, 0, 0, 0, 1, 0, 0, 0, 1])\n", "data = CA_run(initial, n_steps=10, rule_number=30)" ] }, { "cell_type": "code", "execution_count": 14, "id": "21854c97", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0., 1., 0., 0., 0., 1., 0., 0., 0., 1.],\n", " [0., 1., 1., 0., 1., 1., 1., 0., 1., 1.],\n", " [0., 1., 0., 0., 1., 0., 0., 0., 1., 0.],\n", " [1., 1., 1., 1., 1., 1., 0., 1., 1., 1.],\n", " [0., 0., 0., 0., 0., 0., 0., 1., 0., 0.],\n", " [0., 0., 0., 0., 0., 0., 1., 1., 1., 0.],\n", " [0., 0., 0., 0., 0., 1., 1., 0., 0., 1.],\n", " [1., 0., 0., 0., 1., 1., 0., 1., 1., 1.],\n", " [0., 1., 0., 1., 1., 0., 0., 1., 0., 0.],\n", " [1., 1., 0., 1., 0., 1., 1., 1., 1., 0.]])" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data" ] }, { "cell_type": "markdown", "id": "0ca9ac41", "metadata": {}, "source": [ "##### Problem 2: Implement the Boolean Network (BN) model of the mammalian cell cycle described in \"Dynamical Analysis of a Generic Boolean Model for the Control of the Mammalian Cell Cycle\", A. Faure, A. Naldi, C. Chaouiya, D. Thieffry, Bioinformatics, 2006, 22(14), pp. 124-131. PDF. \n", "##### a) Implement the transition logic for the 10-node BN described in Table 1 of the article (note that all the update functions that refer to the input as Ubc actually refer to UbcH10). The codewords under the column 'Product' are short for the regulatory molecules involved in the mammalian cell cycle. Run the network from an initial condition where the CycD node is set to OFF, and all other nodes are set to any state. Show that the fixed-state attractor reached is defined by: Rb = p27 = Cdh1 = ON, with all other nodes OFF. This state represents the quiescence state of the cell, as CycD is a key growth regulator; lack of it kills the cell cycle. Read the first 2 paragraphs of section 2.2 in the paper that explains this. Also, here is a sample program that implements a simple 2-node BN: BooleanNet.py" ] }, { "cell_type": "code", "execution_count": 15, "id": "962f266d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[False, False] ===> [True, False]\n", "[False, True] ===> [False, False]\n", "[True, False] ===> [True, False]\n", "[True, True] ===> [False, True]\n" ] } ], "source": [ "%run BooleanNet.py" ] }, { "cell_type": "markdown", "id": "1041e127", "metadata": {}, "source": [ "##### b) Now set CycD node to ON. Using all possible combinations of states for the remanding nodes, create a state transition graph (STG) of this network (in other words, vertices in the STG represents all possible states of the network with CycD set to ON, and edges represent necessary transitions between these states). Plot this STG; note that this STG is not the same as the one shown on this webpage. You should see a 7-state cyclic attractor in your STG as shown in fig. 2 (bottom left) of the paper. To distinguish the attractor from the rest of the STG, write a piece of logic to identify it and then paint the nodes and edges involved in it using distinct colors. This attractor represents the active cell cycle, also explained in section 2.2 of the paper. To graph the STG, you will need to use a graph drawing library. A good one to use is the NetworkX library. For a sample piece of code on drawing a simple graph using this library, see BooleanNetSTG.py and DrawGraph.py." ] }, { "cell_type": "code", "execution_count": 16, "id": "0dbcd6d0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0, 1, 2, 3] [(0, 1), (1, 1), (2, 0), (3, 2)]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%run BooleanNetSTG.py" ] }, { "cell_type": "code", "execution_count": 17, "id": "65c6333c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, 3, 4, 5, 6] [(1, 2), (1, 3), (1, 5), (4, 5), (6, 5)]\n" ] }, { "data": { "image/png": "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99/r4MGDqlq1qvr27avk5GSjo8GOxo4dK4vFohEjRhgdBU6IMgMAAAxjMpn07LPPKj4+XiNGjNDUqVPl7++v6dOnKzs72+h4sINSpUppxIgR+vTTT3Xw4EGj48DJsAEAAABwGGfPntWgQYM0e/Zs1apVS7GxsWrWrJnRsZDHMjIyVK1aNZUvX16rVq2SyWQyOhKcBCszAADAYZQrV06zZs3S1q1b5eHhoebNm6tr1646efKk0dGQhzw9PRUdHa01a9Zo8eLFRseBE2FlBgAAOCSLxaI5c+Zo4MCBunbtmvr376/+/furYMGCRkdDHnnssceUmJiow4cPy9vb2+g4cAKszAAAAIdkNpv16quvKiEhQb169dKECRMUFBSkefPmiddi86eoqCidOnVKMTExRkeBk6DMAAAAh1aoUCGNHz9e8fHxql+/vrp166amTZtq165dRkdDLqtUqZI++OADjRs3TufOnTM6DpwAZQYAADiFhx56SAsWLNDq1at18+ZN1a9fX927d9f58+eNjoZcNHz4cHl7e2vw4MFGR4EToMwAAACn0qpVK+3Zs0dTpkzRkiVL5O/vr4kTJyo9Pd3oaMgFRYsW1dixYzVz5kzt3LnT6DhwcGwAAAAAnNa1a9c0atQoTZ48WQ888IAiIyP15JNPsrWvk8vOzlbt2rVVoEABbdmyhf+e+FuszAAAAKdVtGhRxcTE6MCBA3r44YfVuXNntWvXTocOHTI6Gu6Bm5ubYmJitG3bNn399ddGx4EDY2UGAADkC1arVcuWLVPv3r3166+/6r333tOoUaNUrFgxo6PhLnXp0kXbtm1TQkICW3LDJlZmAABAvmAymfTEE0/o0KFDCgsL06xZs/TII49o8uTJysrKMjoe7kJ4eLguX76ssLAwo6PAQVFmAABAvuLp6ak+ffooMTFRzz77rD766CPVrFlTq1atMjoacujBBx9U3759FR4erhMnThgdBw6IMgMAAPKl0qVL6/PPP9euXbtUtGhRtW3bVk899ZSOHTtmdDTkwMCBA1W0aFH179/f6ChwQJQZAACQr9WuXVsbNmzQt99+q71796py5coaMGCAbty4YXQ03AFfX1+FhYXpu+++0/r1642OAwfDBgAAAMBlpKamKiIiQhMmTFDhwoUVGhqq1157TWYzr+86MovFosaNGystLU27d++Wm5ub0ZHg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AEYiZgAAAAAYiZgBAAAAYCRiBgAAAICRiBkAAAAARiJmAAAAABiJmAEAAABgJGIGAAAAgJGIGQAAAABGImYAAAAAGImYAQAAAGAkYgYAAACAkYgZAAAAAEYiZgAAAAAYiZgBAAAAYCRiBgAAAICRiBkAAAAARiJmAAAAABiJmAEAAABgJGIGAAAAgJGIGQAAAABGImYAAAAAGImYAQAAAGAkYgYAAACAkYgZAAAAAEYiZgAAAAAYiZgBAAAAYCRiBgAAAICRiBkAAAAARiJmAAAAABiJmAEAAABgJGIGAAAAgJGIGQAAAABGImYAAAAAGImYAQAAAGAkYgYAAACAkYgZAAAAAEYiZgAAAAAYiZgBAAAAYCRiBgAAAICRiBkAAAAARiJmAAAAABiJmAEAAABgJGIGAAAAgJGIGQAAAABGImYAAAAAGImYAQAAAGAkYgYAAACAkYgZAAAAAEYiZgAAAAAYiZgBAAAAYCRiBgAAAICRiBkAAAAARiJmAAAAABiJmAEAAABgJGIGAAAAgJGIGQAAAABGImYAAAAAGImYAQAAAGAkYgYAAACAkYgZAAAAAEYiZgAAAAAYiZgBAAAAYCRiBgAAAICRiBkAAAAARiJmAAAAABiJmAEAAABgJGIGAAAAgJGIGQAAAABGImYAAAAAGImYAQAAAGAkYgYAAACAkYgZAAAAAEYiZgAAAAAYiZgBAAAAYCRiBgAAAICRiBkAAAAARiJmAAAAABiJmAEAAABgJGIGAAAAgJGIGQAAAABGImYAAAAAGImYAQAAAGAkYgYAAACAkYgZAAAAAEYiZgAAAAAYiZgBAAAAYCRiBgAAAICR/h+OMB7m5HY6bwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzMAAAMzCAYAAACSq0y2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABLKklEQVR4nO3915Od9YHufV8dlCUktaTutQCRwdgYkwwmmpyTQKnbe7ydkHfVu/dz8PwJ7+Fz9tRUvScIM2OPx90KgEQyIogoTDAZTBYgEKiVkFBuqXu9BxqwGRMk0d33Cp9PlQpV40GXqzwtvrp/9281VSqVSgAAAGpMc9EDAAAADoSYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAapKYAQAAalJr0QMAGtGGDcnGjUlbWzJlStFrAKA2iRmAYbRjR7JwYbJiRbJ1azJ+fHLOOcmcOcmYMUWvA4Da4pgZwDBauDBZujRpaUkOO2zvX5cu3ft1AGD/iBmAYbJhw94nMh0de3+MHv33n69YsffvAwD7TswADJONG/ceLZs48ctfnzhx79c3bixmFwDUKjEDMEza2va+I7N585e/vnnz3q+3tRWzCwBqlZgBGCZTpux92b+3d++PnTv//vNzznGrGQDsr6ZKpVIpegRAo3CbGQAMHjEDUID16yv5f/6f+bnuunNz3nk/KHoOANQknzMDUICBgXV57LHfZd26J3Pqqf+/jBs3ruhJAFBzvDMDUIB33nknlUolr776anp6ejIwMFD0JACoOWIGoABvvPFGRo8enTFjxuSBBx7Iww8/XPQkAKg5YgZgmPX19eWll15Ke3t7WlpaMmLEiCxYsCBvvfVW0dMAoKaIGYBh9v7772f9+vVpb2/Pzp07s2vXrqxcuTL/8R//kd27dxc9DwBqhgsAAIbZypUrs2PHjvT19X0RL9dff32OO+64NDU1FbwOAGqHq5kBhtnKlSvz1ltvpVwu55FHHkmpVMrcuXOLngUANceTGYBhdtRRR+Woo45KknzyySfelQGAA+SdGYAClcvlbNy4MTt37ix6CgDUHDEDUKByuZwk6e3tLXgJANQeMQNQoKlTp6a1tTWffPJJ0VMAoOaIGYACNTc3p6OjQ8wAwAEQMwAFK5fLWbNmTdEzAKDmiBmAgpVKpaxbty579uwpegoA1BQxA1CwcrmcgYEBlwAAwH4SMwAFa29vT3Nzs6NmALCfxAxAwUaMGJGpU6e6BAAA9pOYAagC5XJZzADAfhIzAFWgVCqlt7c3AwMDRU8BgJohZgCqQLlczp49e7J+/fqipwBAzRAzAFWgVColiUsAAGA/iBmAKjB69OhMnjzZezMAsB/EDECVcAkAAOwfMQNQJcrlctasWZNKpVL0FACoCWIGoEqUSqXs3LkzmzZtKnoKANQEMQNQJcrlcpI4agYA+0jMAFSJ8ePHZ8KECW40A4B9JGYAqkipVPJkBgD2kZgBqCJuNAOAfSdmAKpIuVzO1q1bs3Xr1qKnAEDVEzMAVaRUKiVxCQAA7AsxA1BFJk2alNGjR4sZANgHYgagijQ1NaVUKrnRDAD2gZgBqDIuAQCAfSNmAKpMuVzOp59+mp07dxY9BQCqmpgBqDKfXwLgqBkAfDMxA1Blpk6dmhEjRjhqBgDfQswAVJnm5uZ0dHSIGQD4FmIGoAq50QwAvp2YAahC5XI569evz+7du4ueAgBVS8wAVKFyuZyBgYGsXbu26CkAULXEDEAVam9vT3Nzs/dmAOAbiBmAKtTa2ppp06aJGQD4BmIGoEqVy2WXAADANxAzAFWqVCqlt7c3/f39RU8BgKokZgCqVLlczp49e7J+/fqipwBAVRIzAFWqVColiaNmAPA1xAxAlRo1alTa2tpcAgAAX0PMAFSxcrksZgDga4gZgCpWKpWyZs2aVCqVoqcAQNURMwBVrFwuZ9euXfn000+LngIAVUfMAFSxcrmcJI6aAcBXEDMAVWzcuHGZMGGCG80A4CuIGYAq5xIAAPhqYgagyn0eMy4BAIAvEzMAVa5UKmXbtm3ZunVr0VMAoKqIGYAq5xIAAPhqYgagyk2cODFjxoxxCQAA/DdiBqDKNTU1pVQqeTIDAP+NmAGoAW40A4B/JmYAakC5XM6mTZuyY8eOoqcAQNUQMwA1oFQqJYn3ZgDgH4gZgBowZcqUjBgxwlEzAPgHYgagBjQ3N6dUKnkyAwD/QMwA1Ag3mgHAl4kZgBpRLpezfv367N69u+gpAFAVxAxAjSiVSqlUKunt7S16CgBUBTEDUCPa29vT3NzsqBkA/BcxA1AjWltb097eLmYA4L+IGYAa4kYzAPg7MQNQQ8rlcnp7e9Pf31/0FAAonJgBqCHlcjn9/f1Zt25d0VMAoHBiBqCGdHR0pKmpyVEzAIiYAagpo0aNSltbm0sAACBiBqDmlMtlT2YAIGIGoOaUSqV88sknqVQqRU8BgEKJGYAaUy6X09fXl40bNxY9BQAKJWYAakypVEoSR80AaHhiBqDGjBs3LgcddJBLAABoeGIGoAaVy2UxA0DDEzMANejzG81cAgBAIxMzADWoVCpl27Zt2bJlS9FTAKAwYgagBpXL5SRx1AyAhiZmAGrQQQcdlDFjxrjRDICGJmYAalBTU5NLAABoeGIGoEaJGQAanZgBqFGlUimbN2/O9u3bi54CAIUQMwA16vNLALw3A0CjEjMANWrKlCkZOXKko2YANCwxA1Cjmpqa0tHR4ckMAA1LzADUMJcAANDIxAxADSuXy9mwYUP6+vqKngIAw07MANSwUqmUSqWS3t7eoqcAwLATMwA1rL29PS0tLY6aAdCQxAxADWtpaUl7e7tLAABoSGIGoMaVSiVPZgBoSGIGoMaVy+WsXbs2/f39RU8BgGElZgBqXLlcTn9/f9atW1f0FAAYVmIGoMZ1dHSkqanJUTMAGo6YAahxI0eOzJQpU8QMAA1HzADUgVKp5EYzABqOmAGoA+VyOWvWrEmlUil6CgAMGzEDUAfK5XL6+vqyYcOGoqcAwLARMwB1oFQqJYmjZgA0FDEDUAfGjh2biRMnugQAgIYiZgDqRLlcFjMANBQxA1AnPr/RzCUAADQKMQNQJ8rlcrZv357PPvus6CkAMCzEDECdKJfLSVwCAEDjEDMAdWLChAkZO3as92YAaBhiBqBONDU1uQQAgIYiZgDqSLlcdswMgIYhZgDqSKlUyubNm7N9+/aipwDAkBMzAHXk80sAHDUDoBGIGYA60tbWlpEjRzpqBkBDEDMAdaSpqSmlUsmTGQAagpgBqDNuNAOgUYgZgDpTKpWycePG9PX1FT0FAIaUmAGoM+VyOZVKxXszANQ9MQNQZ6ZNm5aWlhZHzQCoe2IGoM60tLSkvb3dkxkA6p6YAahDLgEAoBGIGYA6VC6Xs3bt2uzZs6foKQAwZMQMQB0qlUoZGBjIunXrip4CAENGzADUoY6OjjQ1NTlqBkBdEzMAdWjkyJGZOnWqSwAAqGtiBqBOlUolT2YAqGtiBqBOlcvlrFmzJgMDA0VPAYAhIWYA6lS5XM7u3buzcePGoqcAwJAQMwB1qlQqJYmjZgDULTEDUKfGjBmTSZMmiRkA6paYAahjn783AwD1SMwA1LHPbzSrVCpFTwGAQSdmAOpYuVzOjh07snnz5qKnAMCgEzMAdaxcLieJo2YA1CUxA1DHxo8fn3HjxrkEAIC6JGYA6lhTU1PK5bKYAaAuiRmAOlcqlRwzA6AuiRmAOlcul/PZZ59l27ZtRU8BgEElZgDq3OeXADhqBkC9ETMAdW7y5MkZNWqUo2YA1B0xA1DnmpqavvjwTACoJ2IGoAGUy2VPZgCoO2IGoAGUSqVs2LAhu3btKnoKAAwaMQPQAD6/BMDTGQDqiZgBaABTp05Na2urmAGgrogZgAbQ0tKS9vZ2lwAAUFfEDECDKJfLYgaAuiJmABpEuVzOunXrsmfPnqKnAMCgEDMADaJUKmVgYCBr164tegoADAoxA9AgOjo60tTU5KgZAHVDzAA0iBEjRmTatGluNAOgbogZgAZSKpU8mQGgbogZgAZSLpfT29ubgYGBoqcAwHcmZgAaSKlUyu7du7Nhw4aipwDAdyZmABpIuVxOEkfNAKgLYgaggYwePTqTJ08WMwDUBTED0GBKpZIbzQCoC2IGoMGUy+V88sknqVQqRU8BgO9EzAA0mHK5nJ07d2bTpk1FTwGA70TMADSYUqmUJI6aAVDzxAxAg5kwYULGjx/vEgAAap6YAWhA5XLZkxkAap6YAWhApVLJkxkAap6YAWhA5XI5W7ZsydatW4ueAgAHTMwANKByuZzEJQAA1DYxA9CAJk2alNGjRztqBkBNEzMADaipqcl7MwDUPDED0KDcaAZArRMzAA2qVCpl48aN2blzZ9FTAOCAiBmABuUSAABqnZgBaFBTp05Na2urmAGgZokZgAbV3Nycjo4OlwAAULPEDEADK5fLYgaAmiVmABpYqVTK+vXrs3v37qKnAMB+EzMADaxcLmdgYCBr164tegoA7DcxA9DAOjo60tzc7KgZADVJzAA0sNbW1kydOtWNZgDUJDED0OBcAgBArRIzAA2uXC6nt7c3AwMDRU8BgP0iZgAaXKlUyp49e7J+/fqipwDAfhEzAA2uVColiaNmANQcMQPQ4EaPHp22tjaXAABQc8QMACmVSp7MAFBzxAwAKZfLWbNmTSqVStFTAGCfiRkAUi6Xs3PnzmzatKnoKQCwz8QMAC4BAKAmiRkAMn78+EyYMEHMAFBTxAwASf7+3gwA1AoxA0ASN5oBUHvEDABJ9j6Z2bp1a7Zs2VL0FADYJ2IGgCR/vwTAUTMAaoWYASBJMmnSpIwePdpRMwBqhpgBIEnS1NSUcrksZgCoGWIGgC+USiXHzACoGWIGgC+Uy+V8+umn2bFjR9FTAOBbiRkAvlAul5O4BACA2iBmAPjClClTMmLECDEDQE0QMwB8obm5OR0dHS4BAKAmiBkAvqRcLnsyA0BNEDMAfEmpVMq6deuye/fuoqcAwDcSMwB8SblcTqVSSW9vb9FTAOAbiRkAvqS9vT3Nzc2OmgFQ9cQMAF/S2tqaadOmuQQAgKonZgD4J+VyWcwAUPXEDAD/pFwuZ+3atenv7y96CgB8LTEDwD8plUrZs2dP1q9fX/QUAPhaYgaAf1IqlZLEUTMAqpqYAeCfjBo1Km1tbW40A6CqiRkAvpJLAACodmIGgK9ULpezZs2aVCqVoqcAwFcSMwB8pVKplF27duXTTz8tegoAfCUxA8BXKpfLSVwCAED1EjMAfKVx48bloIMOEjMAVC0xA8DXKpVKbjQDoGqJGQC+1uc3mrkEAIBqJGYA+Frlcjnbtm3Lli1bip4CAP9EzADwtUqlUpI4agZAVRIzAHytiRMnZsyYMS4BAKAqiRkAvlZTU9MXH54JANVGzADwjUqlkiczAFQlMQPANyqXy9m0aVN27NhR9BQA+BIxA8A3KpfLSVwCAED1ETMAfKO2traMGDHCUTMAqo6YAeAbNTc3e28GgKokZgD4Vm40A6AaiRkAvlWpVMr69evT19dX9BQA+IKYAeBblcvlVCqV9Pb2Fj0FAL4gZgD4VtOmTUtzc7OjZgBUFTEDwLdqbW1Ne3u7SwAAqCpiBoB9Ui6XxQwAVUXMALBPSqVS1q5dm/7+/qKnAEASMQPAPiqXy+nv78+6deuKngIAScQMAPuoVCqlqanJUTMAqoaYAWCfjBw5Mm1tbW40A6BqiBkA9plLAACoJmIGgH1WLpezZs2aVCqVoqcAgJgBYN+VSqX09fVl48aNRU8BADEDwL4rl8tJ4qgZAFVBzACwz8aOHZuJEye6BACAqiBmANgvpVLJkxkAqoKYAWC/fH6jmUsAACiamAFgv5TL5Wzfvj1btmwpegoADU7MALBfSqVSEpcAAFA8MQPAfjnooIMyduxYMQNA4cQMAPulqanpiw/PBIAiiRkA9psbzQCoBmIGgP1WLpezefPmbN++vegpADQwMQPAfvv8EgBHzQAokpgBYL9NmTIlI0eOdNQMgEKJGQD2W1NTk/dmACicmAHggJRKJcfMACiUmAHggJTL5WzYsCF9fX1FTwGgQYkZAA5IuVxOpVLxdAaAwogZAA7ItGnT0tLSImYAKIyYAeCAtLS0pL293SUAABRGzABwwMrlspgBoDBiBoADViqVsm7duvT39xc9BYAGJGYAOGDlcjn9/f1Zu3Zt0VMAaEBiBoAD1tHRkaamJpcAAFAIMQPAARs5cmSmTJnivRkACiFmAPhOXAIAQFHEDADfSblcTm9vbwYGBoqeAkCDETMAfCelUil9fX3ZuHFj0VMAaDBiBoDvpFwuJ4mjZgAMOzEDwHcyZsyYTJw40Y1mAAw7MQPAd+YSAACKIGYA+M4+j5lKpVL0FAAaiJgB4DsrlUrZsWNHPvvss6KnANBAxAwA35lLAAAogpgB4DubMGFCxo0bJ2YAGFZiBoDvrKmpKaVSyY1mAAwrMQPAoHCjGQDDTcwAMCjK5XI+++yzbNu2regpADQIMQPAoCiVSkniqBkAw0bMADAo2traMmrUKEfNABg2YgaAQeESAACGm5gBYNCUSiVPZgAYNmIGgEFTLpezYcOG7Nq1q+gpADQAMQPAoCmXy0mS3t7egpcA0AjEDACDZurUqWltbXXUDIBhIWYAGDQtLS1pb28XMwAMCzEDwKAql8tuNANgWIgZAAZVqVTK2rVrs2fPnqKnAFDnxAwAg6pcLmdgYCBr164tegoAdU7MADCoOjo60tTU5KgZAENOzAAwqEaMGJGpU6e6BACAISdmABh05XJZzAAw5MQMAIOuVCqlt7c3AwMDRU8BoI6JGQAGXblczu7du7Nhw4aipwBQx8QMAIOuVColiaNmAAwpMQPAoBszZkwmTZrkRjMAhpSYAWBIuAQAgKEmZgAYEp/HTKVSKXoKAHVKzAAwJEqlUnbu3JnNmzcXPQWAOiVmABgS5XI5iUsAABg6YgaAITF+/PiMHz/eJQAADBkxA8CQaGpqSqlU8mQGgCEjZgAYMm40A2AoiRkAhky5XM6WLVuydevWoqcAUIfEDABDplQqJYn3ZgAYEmIGgCEzefLkjBo1ylEzAIaEmAFgyHx+CYAnMwAMBTEDwJByCQAAQ0XMADCkyuVyNm7cmJ07dxY9BYA6I2YAGFKfXwLQ29tb8BIA6o2YAWBITZs2La2trY6aATDoxAwAQ6q5uTkdHR1iBoBBJ2YAGHJuNANgKIgZAIZcuVzOunXrsmfPnqKnAFBHxAwAQ65cLmdgYMAlAAAMKjEDwJBrb29Pc3Ozo2YADKrWogcAUP9GjBiRqVOn5s031+egg5K2tmTKlKJXAVSHDRuSjRt9bzwQYgaAIbdjR7Jy5bl5+eWDcvfdyfjxyTnnJHPmJGPGFL0OYPB99NFHmT9/fs4888yce+65mTBhwj/9Z3bsSBYuTFasSLZu9b3xQIgZAIbcwoXJu++emKOPbsrEicnmzcnSpXv/3i9+Uew2gKGwefPmvPHGG3n55Zdz//3357LLLvunqFm4cO/3wo6O5LDDfG88EGIGgCG1YcPeP3UslZrS0bH3a6NHJzt37syf/9yXH/5wYyZPHih2JMAg+/DDD7N169ZMnz49q1atyv/7//6/WbhwYc4777zMnDkze/ZMzIoVe0PmH783Jnu/Z15zjSNn+0LMADCkNm7ce3zisMO+/PWPP349H3/ckn//90cyZcrGYsYBDJG1a9fm/fffz5YtW9Lc3Jxdu3bl7bffzksvvZSdO3fm0kv/P1/5vXHixGTVqr3fO8XMtxMzAAyptra958A3b/77nzomyeGH/yjl8p783//34WlrqxQ3EGAIvP766/nkk09y8MEH5+OPP05TU1MuuuiiXHzxxTnvvPPy2Wdf/b1x8+a9X29rK257LREzAAypUaO2Jnkxq1adnmTUF+/MrF/fkuuvb8lRR40qeiLAoDvooIMyatSorF+/PqeeemquuOKKnHLKKWlt3fuv31Om7H3Z//N3ZD7/3tjbm1x/vacy+6qpUqn44zAAhsSePXvy+9//PuvWbU1b2//KX/862o09QENYu3Ztbrvttvz4xz/+UsT8I7eZfXdiBoAhUalUsmTJkrz22mv51a9+lUMOOcRnKQB8Bd8bD5yYAWBIPPnkk7n//vszc+bMnHjiiUXPAaAONRc9AID68/bbb+eBBx7IeeedJ2QAGDJiBoBBtW7duixevDjHHXdcLrrooqLnAFDHxAwAg2b79u3p7u7OxIkTc+ONN6apqanoSQDUMTEDwKDo7+/PokWLsnPnznR1dWXUKFcuAzC0xAwAg+K+++7LBx98kDlz5mTy5MlFzwGgAYgZAL6zv/71r3n22Wdz9dVX54gjjih6DgANQswA8J289957uffee/OTn/wkp512WtFzAGggYgaAA7Zx48YsXLgwRxxxRC6//PKi5wDQYMQMAAdk165d6e7uztixYzN79uw0N/stBYDh5XceAPbbwMBAbrvttmzZsiVdXV0ZM2ZM0ZMAaEBiBoD99tBDD+Xtt9/OrFmzMnXq1KLnANCgxAwA++Wll17KihUrctlll+WYY44peg4ADUzMALDPPvroo9x555055ZRTcuaZZxY9B4AGJ2YA2CebN29OT09PDjnkkFx99dVpamoqehIADU7MAPCtdu/enZ6enrS0tGTu3LlpbW0tehIAiBkAvlmlUsmSJUuyfv36dHV1Zdy4cUVPAoAkYgaAb/HYY4/ltddey4033phSqVT0HAD4gpgB4Gv97W9/y8MPP5wLL7ww3//+94ueAwBfImYA+Epr1qzJHXfckR/+8If56U9/WvQcAPgnYgaAf7J169Z0d3dn2rRpuf76691cBkBVEjMAfMmePXuyYMGC9Pf3p7OzMyNGjCh6EgB8JTEDwBcqlUruueeefPLJJ+ns7MxBBx1U9CQA+FpiBoAvPPXUU3nhhRdy3XXX5dBDDy16DgB8IzEDQJLk7bffzv33359zzz03P/rRj4qeAwDfSswAkPXr12fx4sU59thjc9FFFxU9BwD2iZgBaHA7duzIn/70p0ycODEzZ85Mc7PfGgCoDX7HAmhg/f39WbRoUXbu3Jmurq6MGjWq6EkAsM/EDEADW7ZsWd5///3MmTMnkydPLnoOAOwXMQPQoJ577rk888wzueqqq3LEEUcUPQcA9puYAWhA77//fu65556cccYZ+fGPf1z0HAA4IGIGoMF8+umnWbhwYY444ohcfvnlRc8BgAMmZgAayK5du9Ld3Z3Ro0dn9uzZaWlpKXoSABwwMQPQIAYGBnL77bdn8+bN6erqypgxY4qeBADfiZgBaBDLly/PW2+9lVmzZmXatGlFzwGA70zMADSAl19+OU888UQuvfTSHHvssUXPAYBBIWYA6txHH32UO++8MyeffHLOOuusoucAwKARMwB17LPPPsuCBQtSLpdzzTXXpKmpqehJADBoxAxAndq9e3d6enrS3NycuXPnprW1tehJADCoxAxAHapUKlm6dGnWrVuXzs7OjB8/vuhJADDoxAxAHXr88cfz6quv5oYbbki5XC56DgAMCTEDUGdef/31LF++PBdccEF+8IMfFD0HAIaMmAGoI729vbnjjjtywgkn5Pzzzy96DgAMKTEDUCe2bduW7u7uTJkyJTNmzHBzGQB1T8wA1IH+/v4sWLAge/bsSWdnZ0aMGFH0JAAYcmIGoMZVKpXcfffdWb16dTo7OzNx4sSiJwHAsBAzADXu6aefzgsvvJDrrrsuhx56aNFzAGDYiBmAGvbOO+9k2bJlOeecc3LSSScVPQcAhpWYAahR69evz+LFi3Psscfm4osvLnoOAAw7MQNQg3bs2JHu7u5MmDAhM2fOTHOzb+cANB6/+wHUmIGBgSxevDjbt29PV1dXRo0aVfQkACiEmAGoMcuWLct7772XOXPmpK2treg5AFAYMQNQQ55//vk8/fTTufLKK3PkkUcWPQcACiVmAGrEBx98kHvuuSenn356Tj/99KLnAEDhxAxADdi0aVMWLFiQww47LFdccUXRcwCgKogZgCq3a9eudHd3Z9SoUZk9e3ZaWlqKngQAVUHMAFSxSqWSO+64I5s2bcrPfvazjB07tuhJAFA1xAxAFVu+fHnefPPNzJw5M9OmTSt6DgBUFTEDUKVeeeWVPP7447nkkkty3HHHFT0HAKqOmAGoQqtXr87SpUtz0kkn5eyzzy56DgBUJTEDUGW2bNmSnp6elEqlXHvttWlqaip6EgBUJTEDUEV2796dnp6eNDU1pbOzM62trUVPAoCqJWYAqkSlUsmdd96ZtWvXpqurK+PHjy96EgBUNTEDUCWeeOKJvPLKK5kxY0bK5XLRcwCg6okZgCrwxhtv5KGHHsr555+fE044oeg5AFATxAxAwXp7e3P77bfnBz/4QS644IKi5wBAzRAzAAXatm1buru709bWlhkzZri5DAD2g5gBKEh/f38WLlyY3bt3p6urKyNHjix6EgDUFDEDUIBKpZJ77703H330UTo7OzNx4sSiJwFAzREzAAV45pln8txzz+Xaa6/N9OnTi54DADVJzAAMs3fffTf33Xdfzj777Jx88slFzwGAmiVmAIbRhg0bsmjRohxzzDG55JJLip4DADVNzAAMk507d+ZPf/pTxo8fn5kzZ6a52bdgAPgu/E4KMAwGBgayePHibN++PV1dXRk9enTRkwCg5okZgGHwwAMPZOXKlZk9e3amTJlS9BwAqAtiBmCIvfDCC/nLX/6SK664IkcddVTRcwCgbogZgCG0atWq3H333fnxj3+c008/veg5AFBXxAzAENm0aVMWLFiQ6dOn58orr0xTU1PRkwCgrogZgCHQ19eX7u7ujBw5MnPmzElLS0vRkwCg7ogZgEFWqVRyxx135NNPP01XV1fGjh1b9CQAqEtiBmCQPfzww3njjTcyc+bMtLe3Fz0HAOqWmAEYRK+++moee+yxXHzxxfne975X9BwAqGtiBmCQfPzxx1myZEl+9KMf5Zxzzil6DgDUPTEDMAi2bNmSnp6edHR05LrrrnNzGQAMAzED8B3t3r07PT09SZLOzs60trYWvAgAGoOYAfgOKpVK7rrrrvT29qazszMTJkwoehIANAwxA/AdrFixIi+//HJmzJiRgw8+uOg5ANBQxAzAAXrzzTfz0EMP5ac//Wl++MMfFj0HABqOmAE4AGvXrs1tt92W448/PhdeeGHRcwCgIYkZgP20ffv2dHd3Z/LkybnhhhvcXAYABREzAPuhv78/CxcuTF9fX7q6ujJy5MiiJwFAwxIzAPuoUqnkz3/+cz788MPMnTs3kyZNKnoSADQ0MQOwj5599tn89a9/zTXXXJPDDjus6DkA0PDEDMA+WLlyZe67776cddZZOeWUU4qeAwBEzAB8qw0bNmTRokU56qijcumllxY9BwD4L2IG4Bvs3Lkz3d3dGTduXGbNmpXmZt82AaBa+F0Z4GsMDAxk8eLF2bp1a7q6ujJ69OiiJwEA/0DMAHyNBx98MCtXrszs2bMzZcqUoucAAP+NmAH4Ci+++GKefPLJXH755Tn66KOLngMAfAUxA/DfrFq1KnfddVdOO+20nHHGGUXPAQC+hpgB+AebN2/OggULcuihh+aqq65KU1NT0ZMAgK8hZgD+S19fX7q7uzNixIjMmTMnLS0tRU8CAL6BmAFIUqlUsmTJkmzcuDFdXV0ZN25c0ZMAgG8hZgCSPPLII3n99ddz4403pqOjo+g5AMA+EDNAw3vttdfy6KOP5qKLLsrxxx9f9BwAYB+JGaChffLJJ1myZElOPPHEnHvuuUXPAQD2g5gBGtbWrVvT3d2d9vb2XHfddW4uA4AaI2aAhrRnz5709PSkUqmks7MzI0aMKHoSALCfxAzQcCqVSu66666sWbMmnZ2dmTBhQtGTAIADIGaAhvPkk0/mpZdeyvXXX59DDjmk6DkAwAESM0BDeeutt/Lggw/mvPPOy4knnlj0HADgOxAzQMNYu3Ztbrvttnzve9/LRRddVPQcAOA7EjNAQ9i+fXu6u7szadKk3HjjjW4uA4A6IGaAutff35+FCxdm165d6erqysiRI4ueBAAMAjED1L377rsvH374YebOnZtJkyYVPQcAGCRiBqhrzz77bJ599tlcffXVOfzww4ueAwAMIjED1K333nsvf/7zn/OTn/wkp556atFzAIBBJmaAurRx48YsXLgwRx55ZC6//PKi5wAAQ0DMAHVn165d6e7uztixYzNr1qw0N/tWBwD1yO/wQF0ZGBjI4sWLs2XLlnR1dWXMmDFFTwIAhoiYAerKQw89lHfeeSezZ8/O1KlTi54DAAwhMQPUjRdffDErVqzI5ZdfnqOPPrroOQDAEBMzQF348MMPc9ddd+XUU0/NT37yk6LnAADDQMwANW/z5s1ZsGBBDjnkkFx99dVpamoqehIAMAzEDFDT+vr60tPTk9bW1sydOzctLS1FTwIAhomYAWpWpVLJkiVLsmHDhnR1dWXcuHFFTwIAhpGYAWrWo48+mr/97W+54YYb0tHRUfQcAGCYiRmgJv3tb3/LI488kosuuijf//73i54DABRAzAA155NPPskdd9yRH/7whznvvPOKngMAFETMADVl69at6enpybRp03L99de7uQwAGpiYAWrGnj17smDBggwMDKSzszMjRowoehIAUCAxA9SESqWSu+++O5988kk6Oztz0EEHFT0JACiYmAFqwl/+8pe8+OKLue6663LIIYcUPQcAqAJiBqh6b7/9dh544IGce+65+dGPflT0HACgSogZoKqtW7cuixcvznHHHZeLL7646DkAQBURM0DV2r59e7q7uzNx4sTceOONbi4DAL5EzABVqb+/P4sWLcrOnTvT1dWVUaNGFT0JAKgyYgaoSsuWLcsHH3yQOXPmZPLkyUXPAQCqkJgBqs5f//rXPPPMM7n66qtzxBFHFD0HAKhSrUUPqFUbNiQbNyZtbcmUKUWvgfrx/vvv5957780ZZ5yR0047reg5AEAVEzP7aceOZOHCZMWKZOvWZPz45JxzkjlzkjFjil4Hte3TTz/NggULcsQRR+SKK64oeg4AUOUcM9tPCxcmS5cmLS3JYYft/evSpXu/Dhy4Xbt25U9/+lPGjBmT2bNnp7nZtycA4Jv5t4X9sGHD3icyHR17f4we/fefr1ix9+8D+29gYCC33XZbtmzZkp/97GcZ4zEnALAPxMx+2Lhx79GyiRO//PWJE/d+fePGYnZBrVu+fHnefvvtzJo1K1OnTi16DgBQI8TMfmhr2/uOzObNX/762rW7MmZMf9raitkFteyll17KE088kcsuuyzHHHNM0XMAgBoiZvbDlCl7X/bv7d37Y+fOvX996aU12bXroQwMrCt6ItSUjz76KHfddVdOOeWUnHnmmUXPAQBqTFOlUqkUPaKWfNVtZiefvC19fX/Mjh0bM2vWrBx77LFFz4Sq99lnn+Xmm2/O5MmT84tf/CKtrS5XBAD2j5g5QP/9c2Z27dqV22+/PW+99VYuvfTSnHXWWWlqaip6JlSl3bt359Zbb8327dszb968jB8/vuhJAEANEjODaGBgIMuXL88TTzyRk08+Oddcc40/bYb/plKpZPHixXnrrbfym9/8JqVSqehJAECN8m/ag6i5uTmXXHJJ2tvbc+edd2bDhg2ZO3euP3WGf/DYY4/ltddey9y5c4UMAPCdeDIzRFavXp2enp40Nzens7Mz5XK56ElQuNdffz0LFizIhRdemPPPP7/oOQBAjXOb2RA55JBDMm/evIwbNy633npr/va3vxU9CQq1Zs2a3H777TnhhBPy05/+tOg5AEAd8GRmiO3evTtLly7Nq6++mgsuuCDnn3++iwFoONu2bcvNN9+csWPH5te//nVGjBhR9CQAoA54Z2aIjRgxIjNnzkx7e3uWL1+etWvXZsaMGRk5cmTR02BY7NmzJwsWLEh/f3+6urqEDAAwaDyZGUavv/567rjjjkyZMiWdnZ2ZOHFi0ZNgSFUqldx555155ZVX8stf/jKHHnpo0ZMAgDrinZlh9P3vfz+/+c1vsmPHjsyfPz8ffvhh0ZNgSD311FN54YUXcu211woZAGDQiZlh1tHRkXnz5qWtrS3//u//nhdffLHoSTAk3n777dx///0555xzctJJJxU9BwCoQ46ZFaS/vz/33HNPnn/++Zx99tm55JJL0tysLakP69evz/z583P44Yens7PT/7YBgCEhZgpUqVTy9NNPZ9myZTnmmGMya9asjBo1quhZ8J18foyypaUlN910k/9NAwBDRsxUgXfeeSeLFy/OhAkT0tXVlba2tqInwQEZGBjIH//4x3zyySf57W9/m8mTJxc9CQCoY85+VIFjjjkmN910UwYGBjJ//vy89957RU+CA7Js2bK8//77mTNnjpABAIacmKkSU6dOzU033ZSDDz44//Ef/5Fnn3226EmwX5577rk8/fTTueqqq3LkkUcWPQcAaACOmVWZgYGB3H///Xnqqady+umn54orrkhLS0vRs+Abvf/++/nDH/6Q0047LVdffXXRcwCABiFmqtTzzz+fe+65J4cddlhmz56dsWPHFj0JvtKnn36a+fPnp6OjI//yL/8ivgGAYSNmqtgHH3yQBQsWZNSoUfnZz36WadOmFT0JvmTXrl353e9+lz179mTevHkZM2ZM0ZMAgAbinZkqdvjhh+e3v/1tRo4cmVtuuSVvvfVW0ZPgCwMDA7n99tuzefPmdHV1CRkAYNiJmSo3adKk/PrXv86RRx6Z7u7urFixIh6mUQ2WL1+et956K7NmzfLUEAAohGNmNaJSqWT58uV5/PHHc9JJJ+Xaa69Na2tr0bNoUC+//HJuv/32XHbZZTn77LOLngMANCgxU2NeeeWVLF26NKVSKZ2dnRk/fnzRk2gwq1evzr/927/lhz/8Ya6//vo0NTUVPQkAaFBipgatXr06PT09aWpqSldXV8rlctGTaBCfffZZ5s+fn0mTJuUXv/iFp4MAQKG8M1ODDjnkkPz2t7/NhAkTcuutt+a1114rehINYPfu3enp6Ulzc3Pmzp0rZACAwomZ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44wzip4DAFAYFwAwbA4++ODMmzcvEydOzK233ppXX3216Ek1Z9WqVbn77rtz2mmn5fTTTy96DgBAoTyZYdjt2bMnd911V1566aX89Kc/zYUXXuhigH2wadOmzJ8/P9OmTcvPf/5zH0oKADQ8H5rJsGttbc2MGTPS3t6eBx98MGvXrs2NN96YkSNHFj2tavX19aW7uzsjR47MnDlzhAwAQDyZoWBvvfVWFi9enMmTJ6erqyuTJk0qelLVqVQqWbhwYd59993cdNNNaW9vL3oSAEBV8M4MhTruuONy0003pa+vLzfffHM++OCDoidVnYcffjhvvPFGZs6cKWQAAP6BmKFw7e3tmTdvXtrb2/OHP/whzz//fNGTqsarr76axx57LBdffHG+973vFT0HAKCqOGZG1ejv78+f//zn/PWvf82ZZ56Zyy67LM3NjdvbH3/8cW699db84Ac/yA033OCSBACA/0bMUHWeffbZ/PnPf86RRx6ZWbNmZcyYMUVPGnZbtmzJ/PnzM2HChPzqV79Ka6u7OgAA/jsxQ1VauXJlFi1alLFjx6arqytTp04tetKw2b17d/793/89W7Zsybx58zJhwoSiJwEAVKXGPcNDVTvqqKMyb968NDU15ZZbbsm7775b9KRhUalUctddd6W3tzednZ1CBgDgG4gZqlZbW1tuuummTJ8+PX/84x/z1FNPpd4fJK5YsSIvv/xyZsyYkYMPPrjoOQAAVc0xM6rewMBAHnzwwTz55JM59dRTc/XVV9flh0a++eab6enpyXnnnZeLLrqo6DkAAFVPzFAzXnzxxdx111055JBDMnfu3IwbN67oSYNm7dq1ueWWW3L00Udnzpw5bi4DANgHYoaa8uGHH6anpycjRoxIV1dXOjo6ip70nW3fvj3z58/PyJEj85vf/CYjR44sehIAQE3wzgw1Zfr06fntb3+b0aNH53e/+13eeOONoid9J/39/Vm4cGH6+vrS1dUlZAAA9oOYoeZMnDgxv/71r3PMMcekp6cnjz32WE1eDFCpVHLvvffmww8/zNy5czNp0qSiJwEA1BTHzKhZlUoljz76aB555JH88Ic/zPXXX58RI0YUPWufPfPMM7n33ntz3XXX5dRTTy16DgBAzREz1LzXXnstS5YsybRp09LZ2ZmDDjqo6EnfauXKlfnjH/+YM844I1dccUXRcwAAapKYoS588skn6e7uTqVSSWdnZw455JCiJ32tDRs25JZbbskhhxySn/3sZ2ludtoTAOBAiBnqxtatW9PT05M1a9bk+uuvz4knnlj0pH+yc+fO3HLLLalUKpk3b15Gjx5d9CQAgJolZqgre/bsyV133ZWXXnop5557bi6++OKq+cyWgYGB/OlPf8pHH32UefPmZcqUKUVPAgCoaa1FD4DB1NramhkzZqSjoyMPPPBA1q1blxtvvDGjRo0qeloeeOCBrFy5Mv/jf/wPIQMAMAg8maFuvf3221m8eHEmTpyYrq6uTJ48ubAtL774YpYsWZIrr7wyP/nJTwrbAQBQT7x5TN069thjc9NNN2XPnj2ZP39+3n///UJ2rFq1KnfddVdOPfXUnHHGGYVsAACoR57MUPe2b9+eRYsW5YMPPsjVV1+d0047bdh+7c2bN+fmm2/O1KlT8z//5/9MS0vLsP3aAAD1TszQEPr7+7Ns2bI888wz+clPfpLLL798yK9E7uvry6233pqdO3dm3rx5GTdu3JD+egAAjUbM0FD++te/5t57780RRxyR2bNnZ8yYMUPy61QqlSxcuDDvvvtufvOb36Sjo2NIfh0AgEYmZmg47733XhYuXJixY8emq6srU6dOHfRf4+GHH85jjz2WuXPn5vjjjx/0fz4AAC4AoAEdeeSRmTdvXpqbm3PLLbfknXfeGdR//muvvZZHH300F110kZABABhCYoaG1NbWlptuuimHHXZY/vM//zN/+ctfcqAPKe+7776sWLEilUoln3zySZYsWZITTzwx55577iCvBgDgH/nQTBrWqFGj0tnZmYceeijLli3L2rVrc/XVV6e1tTWrVq3KX/7yl9x4440ZMWLE1/4z+vr6cs8992Tjxo155513snbt2rS3t+e6665LU1PTMP63AQBoPGKGhtbc3JxLL7007e3tufPOO7Nhw4Zcdtllufnmm/Puu+/m6KOPzo9//OOv/b9fvXp1Nm3alNbW1vzrv/5rDj/88Pzrv/7rNwYQAACDwzEzSHLSSSflV7/6VdauXZv//b//d5577rn09fXlkUce+cbjZx9++GG2b9+eHTt2ZPTo0dm+fXt+97vf5eOPPx7G9QAAjUnMwH85+OCDM3ny5KxatSpbtmzJuHHj8vLLL3/jBQHvvfdeNmzYkLVr1+boo4/OuHHj8re//S2PPfbYMC4HAGhMjpnBf3nkkUeyfPnynHTSSdm6dWs++OCDVCqVPPbYYzn22GP/6T9fqVSyYsWK9Pb2Ztq0aenv789pp52WCy+8MKecckoB/w0AABqLmIH/snXr1rS3t2fTpk0ZGBhIU1NTent7093dncsvvzyHHnrol/7zq1atyksvvZSOjo7MnTs3P/3pT/P9738/zc0eeAIADAcfmgn/oK+vL6tXr86qVavy3nvv5fHHH8+rr76aX//61/lf/+t/ZcOGZOPGpK0tGTVqa2655ZZce+21Ofroo4ueDgDQcMQMfIOBgYGsWrUqEya05+67x2bFimTr1mT8+OScc5I5c5IxY4peCQDQmJyHgW/Q3NycI444InffPTZLlyYtLclhh+3969KlycKFRS8EAGhcYga+xYYNyYoVSUfH3h+jR//95ytW7P37AAAMPzED32Ljxr1HyyZO/PLXJ07c+/WNG4vZBQDQ6MQMfIu2tr3vyGze/OWvb96cjBmzJ/39677xgzUBABgaLgCAffD73+99R6ajY+8Tmc2bk97eZPTo+/Lee//fnHHGGTnrrLNyxBFHZPr06SmVSmlpaSl6NgBAXRMzsA927Nj7sv9/v83spJPezP/1f92U9evXp1wup62tLePHj8+UKVNy1VVX5eKLLy56OgBA3fKhmbAPxoxJfvGL5Jpr/v45M1OmJJXKcZk5c2YWL16cgYGBtLa2ZmBgIKtXr05rq//3AgAYSv5tC/bDlCl7f3yuqakpF110UZ5++um0trZm5cqV2bVrV/7P//k/+elPf1rcUACABuACAPiOTjjhhBx//PHZuXNnxo0bl4MPPjgbN27M+vXri54GAFDXxAx8Ry0tLbnooouSJGeeeWb+9V//NaNHj84tt9ySt99+u+B1AAD1ywUAMAh27NiRRYsW5cILL8z06dOza9eu3H777Xnrrbdy6aWX5qyzzkpTU1PRMwEA6oqYgSEyMDCQ5cuX54knnsjJJ5+ca665xqUAAACDSMzAEHv55Zdz5513plwuZ+7cuRk/fnzRkwAA6oKYgWHw0UcfpaenJy0tLens7Ey5XC56EgBAzRMzMEw+++yz9PT0ZN26dbnhhhvygx/8oOhJAAA1TczAMNq9e3eWLl2aV199NRdccEHOP/98FwMAABwgMQPDrFKp5PHHH8/y5cvzgx/8IDNmzMjIkSOLngUAUHPEDBTk9ddfzx133JEpU6aks7MzEydOLHoSAEBNETNQoDVr1qS7uzv9/f2ZO3dupk+fXvQkAICaIWagYNu2bcuCBQuyevXqXHvttTn55JOLngQAUBPEDFSBPXv25J577skLL7yQs88+O5dcckmam5uLngUAUNXEDFSJSqWSp59+OsuWLcsxxxyTWbNmZdSoUUXPAgCoWmIGqsw777yTxYsXZ8KECenq6kpbW1vRkwAAqpKYgSq0fv36dHd3Z/v27ZkzZ06OPPLIoicBAFQdMQNVaseOHVm0aFHef//9XHnllTn99NOLngQAUFXEDFSxgYGBLFu2LE8//XROP/30XHHFFWlpaSl6FgBAVRAzUAOee+653HPPPTn88MMze/bsjB07tuhJAACFEzNQIz744IMsWLAgo0ePTldXV6ZNm1b0JACAQokZqCGffvppuru7s3nz5syaNSvHHnts0ZMAAAojZqDG7Nq1K7fffnveeuutXHrppTnrrLPS1NRU9CwAgGEnZqAGVSqVLF++PI8//nhOOumkXHvttWltbS16FgDAsBIzUMNeeeWVLF26NKVSKZ2dnRk/fnzRkwAAho2YgRq3evXq9PT0pKmpKV1dXSmXy0VPAgAYFmIG6sBnn32Wnp6erFu3LjNmzMgJJ5xQ9CQAgCEnZqBO7N69O0uXLs2rr76aCy64IOeff76LAQCAuiZmoI5UKpU88cQTeeihh/KDH/wgM2bMyMiRI4ueBQAwJMQM1KE33ngjt99+e9ra2tLV1ZWJEycWPQkAYNCJGahTvb296e7uzu7du9PZ2Znp06cXPQkAYFCJGahj27Zty8KFC/PRRx/l2muvzcknn1z0JACAQSNmoM719/fnnnvuyfPPP5+zzz47l1xySZqbm4ueBQDwnYkZaACVSiXPPPNM7rvvvhxzzDGZOXNmRo8eXfQsAIDvRMxAA3n33XezaNGiTJgwIV1dXWlrayt6EgDAARMz0GDWr1+f7u7ubN++PXPmzMmRRx5Z9CQAgAMiZqAB7dixI4sXL857772XK6+8MqeffnrRkwAA9puYgQY1MDCQ+++/P0899VR+/OMf58orr0xLS0vRswAA9pmYgQb3/PPP55577sn06dMzZ86cjB07tuhJAAD7RMwA+eCDD7JgwYKMGjUqXV1daW9vL3oSAMC3EjNAkmTTpk3p7u7Opk2bMnPmzBx33HFFTwIA+EZiBvhCX19fbr/99rz55pu55JJLcvbZZ6epqanoWQAAX0nMAF9SqVTy8MMP57HHHstJJ52Ua6+9Nq2trUXPAgD4J2IG+EqvvPJKli5dmlKplLlz52bChAlFTwIA+BIxA3yt1atXp6enJ01NTens7MzBBx9c9CQAgC+IGeAbbdmyJT09PVm7dm1mzJiRE044oehJAABJxAywD3bv3p0777wzr7zySs4///xccMEFLgYAAAonZoB9UqlU8sQTT2T58uU5/vjjc8MNN2TkyJFFzwIAGpiYAfbLm2++mdtuuy1tbW3p7OzMpEmTip4EADQoMQPst97e3nR3d2f37t2ZO3duDjvssKInAQANSMwAB2Tbtm1ZuHBhPvroo1xzzTU55ZRTip4EADQYMQMcsP7+/tx777157rnnctZZZ+XSSy9Nc3Nz0bMAgAYhZoDvpFKp5JlnnsmyZcty1FFHZdasWRk9enTRswCABiBmgEHx7rvvZtGiRRk/fny6uroyZcqUoicBAHVOzACDZsOGDenu7s62bdsye/bsHHXUUUVPAgDqmJgBBtXOnTuzePHirFy5MldccUVOP/10H7AJAAwJMQMMuoGBgTzwwAP5y1/+ktNOOy1XXXVVWlpaip4FANQZMQMMmRdeeCF33313pk+fnjlz5mTs2LFFTwIA6oiYAYbUqlWrsmDBgowcOTJdXV1pb28vehIAUCfEDDDkNm3alJ6enmzcuDEzZ87M9773vaInAQB1QMwAw6Kvry933HFH3njjjVx88cU555xzXAwAAHwnYgYYNpVKJY888kgeffTR/OhHP8p1112X1tbWomcBADVKzADD7tVXX82SJUvS0dGRzs7OTJgwoehJAEANEjNAIT7++OP09PQkSTo7O3PwwQcXvAgAqDViBijMli1b0tPTk97e3syYMSM//OEPi54EANQQMQMUas+ePbnzzjvz8ssv56c//WkuvPBCFwMAAPtEzACFq1QqWbFiRR566KEcf/zxueGGGzJy5MiiZwEAVU7MAFXjzTffzG233ZbJkyenq6srkyZNKnoSAFDFxAxQVdauXZvu7u709fVl7ty5Oeyww4qeBABUKTEDVJ3t27dn4cKF+fDDD3P11Vfn1FNPLXoSAFCFxAxQlfr7+/PnP/85f/3rX3PmmWfmsssuS3Nzc9GzAIAqImaAqlWpVPLss8/mvvvuy1FHHZVZs2Zl9OjRRc8CAKqEmAGq3sqVK7No0aKMGzcuXV1dmTJlStGTAIAqIGaAmrBhw4Z0d3dn69atmT17do4++uiiJwEABRMzQM3YuXNnFi9enJUrV+byyy/PGWec4QM2AaCBiRmgpgwMDOTBBx/Mk08+mdNOOy1XXXVVWlpaip4FABRAzAA16cUXX8xdd92VQw89NHPmzMm4ceOKngQADDMxA9SsDz/8MD09PRkxYkS6urrS0dFR9CQAYBiJGaCmbd68Od3d3dm4cWNuvPHGHH/88UVPAgCGiZgBal5fX1+WLFmS119/PRdddFHOPfdcFwMAQAMQM0BdqFQqeeSRR/Loo4/mxBNPzHXXXZcRI0YUPQsAGEJiBqgrr732WpYsWZL29vZ0dnZmwoQJRU8CAIaImAHqzieffJLu7u5UKpV0dnbmkEMOKXoSADAExAxQl7Zu3Zqenp6sWbMm119/fU488cSiJwEAg0zMAHVrz549ueuuu/LSSy/lvPPOy0UXXeRiAACoI2IGqGuVSiVPPvlkHnzwwXzve9/LDTfckFGjRhU9CwAYBGIGaAhvvfVWbrvttkyaNCldXV2ZNGlS0ZMAgO9IzAANY+3atenu7s6uXbsyd+7cHH744UVPAgC+AzEDNJTt27dn4cKF+fDDD3P11Vfn1FNPLXoSAHCAxAzQcPr7+3Pffffl2WefzZlnnpnLLrsszc3NRc8CAPaTmAEa1rPPPps///nPOfLIIzNr1qyMGTOm6EkAwH4QM0BDe++997Jw4cKMHTs2XV1dmTp1atGTAIB9JGaAhrdx48Z0d3dny5YtmT17do4++uiiJwEA+0DMACTZuXNnbrvttrzzzju5/PLL85Of/MQHbAJAlRMzAP9lYGAgDz74YJ588smceuqpufrqq9PS0lL0LADga4gZgP/mxRdfzF133ZVDDjkkc+fOzbhx47JhQ7JxY9LWlkyZUvRCACARMwBf6cMPP8yCBQtSKh2Z/v6ZWbEi2bo1GT8+OeecZM6cxOVnAFAsMQPwNbZt25Y//CF54IFx6ehIJk5MNm9OenuT669PfvGLohcCQGPzKXEAX2PnznF54YW9IdPRkYwenS9+vmJFsmFD0QsBoLGJGYCvsXHj3qNlEyd++esTJ+79+saNxewCAPYSMwBfo61t7zsymzd/+eubN+/9eltbMbsAgL3EDMDXmDJl78v+vb17f+zc+fefn3OOW80AoGguAAD4Bjt2JAsXxm1mAFCFxAzAPvA5MwBQfcQMAABQk7wzAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1CQxAwAA1KT/P2wxXG0vdcBUAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%run DrawGraph.py" ] }, { "cell_type": "markdown", "id": "be988264", "metadata": {}, "source": [ "##### Optional: Write a 2-dimensional cellular-automata simulator, and implement the game of life. Its transition function is simple. Like the 1-dimensional CA in problem 1, this automaton is also binary with its two states often conceptualized as \"alive\" and \"dead\" with values 1 and 0, respectively. The state of each cell at the next iteration is determined by a set of 4 simple rules that you can find in the link above. Implement your CA on a 100x100 grid. Run it through a few hundred iterations from various initial conditions (the more the better). Describe the patterns you observe. Some example patterns have been observed in very large grids and documented. Note: you will not produce a space-time diagram for this, as it would have to be in 3D. Instead, simply show the state of your CA at the end of some of your runs. However, you have to pay attention the state of the CA at each iteration, in order to better observe and describe patterns as they evolve with time. Here's a brief demonstration of how to display a 2D grid using the wxPython library: 2Dcells.py (this displays a randomly-initialized rectangular grid of cells) or you can also use PyCX (https://github.com/hsayama/PyCX)" ] }, { "cell_type": "code", "execution_count": 18, "id": "f20971f3", "metadata": {}, "outputs": [], "source": [ "%run 2Dcells.py " ] }, { "cell_type": "code", "execution_count": 19, "id": "71ee4401", "metadata": {}, "outputs": [], "source": [ "%run interactive-template.py" ] }, { "cell_type": "markdown", "id": "b4baecc8", "metadata": {}, "source": [ "##### Here below are other beautiful (useful) examples using PyCX!" ] }, { "cell_type": "code", "execution_count": 20, "id": "26b50920", "metadata": {}, "outputs": [], "source": [ "%run turing.py" ] }, { "cell_type": "code", "execution_count": 21, "id": "07fd6fea", "metadata": {}, "outputs": [], "source": [ "%run hostpathogen.py" ] }, { "cell_type": "code", "execution_count": 22, "id": "d60e880f", "metadata": {}, "outputs": [], "source": [ "%run forestfire.py" ] }, { "cell_type": "code", "execution_count": 23, "id": "cf3fdb30", "metadata": {}, "outputs": [], "source": [ "%run excitablemedia.py" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.4" } }, "nbformat": 4, "nbformat_minor": 5 }