##// END OF EJS Templates
add kernel metadata to example notebooks
Min RK -
Show More

The requested changes are too big and content was truncated. Show full diff

@@ -1,101 +1,119 b''
1 1 {
2 2 "cells": [
3 3 {
4 4 "cell_type": "markdown",
5 5 "metadata": {},
6 6 "source": [
7 7 "<img src=\"../images/ipython_logo.png\">"
8 8 ]
9 9 },
10 10 {
11 11 "cell_type": "markdown",
12 12 "metadata": {},
13 13 "source": [
14 14 "Back to the main [Index](../Index.ipynb)"
15 15 ]
16 16 },
17 17 {
18 18 "cell_type": "markdown",
19 19 "metadata": {},
20 20 "source": [
21 21 "# Customization"
22 22 ]
23 23 },
24 24 {
25 25 "cell_type": "markdown",
26 26 "metadata": {},
27 27 "source": [
28 28 "IPython has rich APIs for customization. Many behaviors of the different IPython applications can be configured using command line arguments or configuration files. IPython's core syntax and command line features can also be customized through input filters, custom magic commands, etc."
29 29 ]
30 30 },
31 31 {
32 32 "cell_type": "markdown",
33 33 "metadata": {},
34 34 "source": [
35 35 "## Tutorials"
36 36 ]
37 37 },
38 38 {
39 39 "cell_type": "markdown",
40 40 "metadata": {},
41 41 "source": [
42 42 "Coming soon."
43 43 ]
44 44 },
45 45 {
46 46 "cell_type": "markdown",
47 47 "metadata": {},
48 48 "source": [
49 49 "## Examples"
50 50 ]
51 51 },
52 52 {
53 53 "cell_type": "markdown",
54 54 "metadata": {},
55 55 "source": [
56 56 "Coming soon."
57 57 ]
58 58 },
59 59 {
60 60 "cell_type": "markdown",
61 61 "metadata": {},
62 62 "source": [
63 63 "## Non-notebook examples"
64 64 ]
65 65 },
66 66 {
67 67 "cell_type": "markdown",
68 68 "metadata": {},
69 69 "source": [
70 70 "This directory also contains examples that are regular Python (`.py`) files."
71 71 ]
72 72 },
73 73 {
74 74 "cell_type": "code",
75 75 "execution_count": 1,
76 76 "metadata": {
77 77 "collapsed": false
78 78 },
79 79 "outputs": [
80 80 {
81 81 "data": {
82 82 "text/html": [
83 83 "<a href='appconfig.py' target='_blank'>appconfig.py</a><br>"
84 84 ],
85 85 "text/plain": [
86 86 "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Customization/appconfig.py"
87 87 ]
88 88 },
89 89 "metadata": {},
90 90 "output_type": "display_data"
91 91 }
92 92 ],
93 93 "source": [
94 94 "%run ../utils/list_pyfiles.ipy"
95 95 ]
96 96 }
97 97 ],
98 "metadata": {},
98 "metadata": {
99 "kernelspec": {
100 "display_name": "Python 3",
101 "language": "python",
102 "name": "python3"
103 },
104 "language_info": {
105 "codemirror_mode": {
106 "name": "ipython",
107 "version": 3
108 },
109 "file_extension": ".py",
110 "mimetype": "text/x-python",
111 "name": "python",
112 "nbconvert_exporter": "python",
113 "pygments_lexer": "ipython3",
114 "version": "3.4.2"
115 }
116 },
99 117 "nbformat": 4,
100 118 "nbformat_minor": 0
101 } No newline at end of file
119 }
@@ -1,192 +1,210 b''
1 1 {
2 2 "cells": [
3 3 {
4 4 "cell_type": "markdown",
5 5 "metadata": {},
6 6 "source": [
7 7 "<img src=\"../images/ipython_logo.png\">"
8 8 ]
9 9 },
10 10 {
11 11 "cell_type": "markdown",
12 12 "metadata": {},
13 13 "source": [
14 14 "Back to the main [Index](../Index.ipynb)"
15 15 ]
16 16 },
17 17 {
18 18 "cell_type": "markdown",
19 19 "metadata": {},
20 20 "source": [
21 21 "# Embedding IPython Into Other Applications"
22 22 ]
23 23 },
24 24 {
25 25 "cell_type": "markdown",
26 26 "metadata": {},
27 27 "source": [
28 28 "The architecture of IPython is built with reusable components. These components include:\n",
29 29 "\n",
30 30 "* The configuration system for processing command line arguments and configuration files\n",
31 31 "* The IPython `InteractiveShell` object that provides the core interactive features across the entire code base\n",
32 32 "* The IPython kernel, which provides the capabilities of the `InteractiveShell` object over a ZeroMQ/JSON based message protocol to various frontends\n",
33 33 "* The IPython frontends (Notebook, Qt Console, Console, Terminal)\n",
34 34 "\n",
35 35 "These components can be embedded into other applications."
36 36 ]
37 37 },
38 38 {
39 39 "cell_type": "markdown",
40 40 "metadata": {},
41 41 "source": [
42 42 "## Tutorials"
43 43 ]
44 44 },
45 45 {
46 46 "cell_type": "markdown",
47 47 "metadata": {},
48 48 "source": [
49 49 "Coming soon."
50 50 ]
51 51 },
52 52 {
53 53 "cell_type": "markdown",
54 54 "metadata": {},
55 55 "source": [
56 56 "## Examples"
57 57 ]
58 58 },
59 59 {
60 60 "cell_type": "markdown",
61 61 "metadata": {},
62 62 "source": [
63 63 "Coming soon."
64 64 ]
65 65 },
66 66 {
67 67 "cell_type": "markdown",
68 68 "metadata": {},
69 69 "source": [
70 70 "## Non-notebook examples"
71 71 ]
72 72 },
73 73 {
74 74 "cell_type": "markdown",
75 75 "metadata": {},
76 76 "source": [
77 77 "This directory also contains examples that are regular Python (`.py`) files."
78 78 ]
79 79 },
80 80 {
81 81 "cell_type": "code",
82 82 "execution_count": 1,
83 83 "metadata": {
84 84 "collapsed": false
85 85 },
86 86 "outputs": [
87 87 {
88 88 "data": {
89 89 "text/html": [
90 90 "<a href='embed_class_long.py' target='_blank'>embed_class_long.py</a><br>"
91 91 ],
92 92 "text/plain": [
93 93 "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/embed_class_long.py"
94 94 ]
95 95 },
96 96 "metadata": {},
97 97 "output_type": "display_data"
98 98 },
99 99 {
100 100 "data": {
101 101 "text/html": [
102 102 "<a href='embed_class_short.py' target='_blank'>embed_class_short.py</a><br>"
103 103 ],
104 104 "text/plain": [
105 105 "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/embed_class_short.py"
106 106 ]
107 107 },
108 108 "metadata": {},
109 109 "output_type": "display_data"
110 110 },
111 111 {
112 112 "data": {
113 113 "text/html": [
114 114 "<a href='embed_function.py' target='_blank'>embed_function.py</a><br>"
115 115 ],
116 116 "text/plain": [
117 117 "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/embed_function.py"
118 118 ]
119 119 },
120 120 "metadata": {},
121 121 "output_type": "display_data"
122 122 },
123 123 {
124 124 "data": {
125 125 "text/html": [
126 126 "<a href='inprocess_qtconsole.py' target='_blank'>inprocess_qtconsole.py</a><br>"
127 127 ],
128 128 "text/plain": [
129 129 "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/inprocess_qtconsole.py"
130 130 ]
131 131 },
132 132 "metadata": {},
133 133 "output_type": "display_data"
134 134 },
135 135 {
136 136 "data": {
137 137 "text/html": [
138 138 "<a href='inprocess_terminal.py' target='_blank'>inprocess_terminal.py</a><br>"
139 139 ],
140 140 "text/plain": [
141 141 "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/inprocess_terminal.py"
142 142 ]
143 143 },
144 144 "metadata": {},
145 145 "output_type": "display_data"
146 146 },
147 147 {
148 148 "data": {
149 149 "text/html": [
150 150 "<a href='internal_ipkernel.py' target='_blank'>internal_ipkernel.py</a><br>"
151 151 ],
152 152 "text/plain": [
153 153 "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/internal_ipkernel.py"
154 154 ]
155 155 },
156 156 "metadata": {},
157 157 "output_type": "display_data"
158 158 },
159 159 {
160 160 "data": {
161 161 "text/html": [
162 162 "<a href='ipkernel_qtapp.py' target='_blank'>ipkernel_qtapp.py</a><br>"
163 163 ],
164 164 "text/plain": [
165 165 "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/ipkernel_qtapp.py"
166 166 ]
167 167 },
168 168 "metadata": {},
169 169 "output_type": "display_data"
170 170 },
171 171 {
172 172 "data": {
173 173 "text/html": [
174 174 "<a href='ipkernel_wxapp.py' target='_blank'>ipkernel_wxapp.py</a><br>"
175 175 ],
176 176 "text/plain": [
177 177 "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Embedding/ipkernel_wxapp.py"
178 178 ]
179 179 },
180 180 "metadata": {},
181 181 "output_type": "display_data"
182 182 }
183 183 ],
184 184 "source": [
185 185 "%run ../utils/list_pyfiles.ipy"
186 186 ]
187 187 }
188 188 ],
189 "metadata": {},
189 "metadata": {
190 "kernelspec": {
191 "display_name": "Python 3",
192 "language": "python",
193 "name": "python3"
194 },
195 "language_info": {
196 "codemirror_mode": {
197 "name": "ipython",
198 "version": 3
199 },
200 "file_extension": ".py",
201 "mimetype": "text/x-python",
202 "name": "python",
203 "nbconvert_exporter": "python",
204 "pygments_lexer": "ipython3",
205 "version": "3.4.2"
206 }
207 },
190 208 "nbformat": 4,
191 209 "nbformat_minor": 0
192 } No newline at end of file
210 }
@@ -1,1341 +1,1359 b''
1 1 {
2 2 "cells": [
3 3 {
4 4 "cell_type": "markdown",
5 5 "metadata": {},
6 6 "source": [
7 7 "# Simple animations Using clear_output"
8 8 ]
9 9 },
10 10 {
11 11 "cell_type": "markdown",
12 12 "metadata": {},
13 13 "source": [
14 14 "Sometimes you want to clear the output area in the middle of a calculation. This can be useful for doing simple animations. In terminals, there is the carriage-return (`'\\r'`) for overwriting a single line, but the notebook frontend can clear the whole output area, not just a single line.\n",
15 15 "\n",
16 16 "To clear output in the Notebook you can use the `clear_output()` function. If you are clearing the output every frame of an animation, calling `clear_output()` will create noticeable flickering. You can use `clear_output(wait=True)` to add the *clear_output* call to a queue. When data becomes available to replace the existing output, the *clear_output* will be called immediately before the new data is added. This avoids the flickering by not rendering the cleared output to the screen."
17 17 ]
18 18 },
19 19 {
20 20 "cell_type": "markdown",
21 21 "metadata": {},
22 22 "source": [
23 23 "## Simple example"
24 24 ]
25 25 },
26 26 {
27 27 "cell_type": "markdown",
28 28 "metadata": {},
29 29 "source": [
30 30 "Here we show our progress iterating through a list:"
31 31 ]
32 32 },
33 33 {
34 34 "cell_type": "code",
35 35 "execution_count": 1,
36 36 "metadata": {
37 37 "collapsed": true
38 38 },
39 39 "outputs": [],
40 40 "source": [
41 41 "import sys\n",
42 42 "import time"
43 43 ]
44 44 },
45 45 {
46 46 "cell_type": "code",
47 47 "execution_count": 2,
48 48 "metadata": {
49 49 "collapsed": false
50 50 },
51 51 "outputs": [
52 52 {
53 53 "name": "stdout",
54 54 "output_type": "stream",
55 55 "text": [
56 56 "9\n"
57 57 ]
58 58 }
59 59 ],
60 60 "source": [
61 61 "from IPython.display import display, clear_output\n",
62 62 "for i in range(10):\n",
63 63 " time.sleep(0.25)\n",
64 64 " clear_output(wait=True)\n",
65 65 " print(i)\n",
66 66 " sys.stdout.flush()"
67 67 ]
68 68 },
69 69 {
70 70 "cell_type": "markdown",
71 71 "metadata": {},
72 72 "source": [
73 73 "## AsyncResult.wait_interactive"
74 74 ]
75 75 },
76 76 {
77 77 "cell_type": "markdown",
78 78 "metadata": {},
79 79 "source": [
80 80 "The AsyncResult object has a special `wait_interactive()` method, which prints its progress interactively,\n",
81 81 "so you can watch as your parallel computation completes.\n",
82 82 "\n",
83 83 "**This example assumes you have an IPython cluster running, which you can start from the [cluster panel](/#clusters)**"
84 84 ]
85 85 },
86 86 {
87 87 "cell_type": "code",
88 88 "execution_count": 3,
89 89 "metadata": {
90 90 "collapsed": false
91 91 },
92 92 "outputs": [
93 93 {
94 94 "name": "stdout",
95 95 "output_type": "stream",
96 96 "text": [
97 97 " 100/100 tasks finished after 6 s\n",
98 98 "done\n"
99 99 ]
100 100 }
101 101 ],
102 102 "source": [
103 103 "from IPython import parallel\n",
104 104 "rc = parallel.Client()\n",
105 105 "view = rc.load_balanced_view()\n",
106 106 "\n",
107 107 "amr = view.map_async(time.sleep, [0.5]*100)\n",
108 108 "\n",
109 109 "amr.wait_interactive()"
110 110 ]
111 111 },
112 112 {
113 113 "cell_type": "markdown",
114 114 "metadata": {},
115 115 "source": [
116 116 "## Matplotlib example"
117 117 ]
118 118 },
119 119 {
120 120 "cell_type": "markdown",
121 121 "metadata": {},
122 122 "source": [
123 123 "You can also use `clear_output()` to clear figures and plots."
124 124 ]
125 125 },
126 126 {
127 127 "cell_type": "code",
128 128 "execution_count": 4,
129 129 "metadata": {
130 130 "collapsed": false
131 131 },
132 132 "outputs": [],
133 133 "source": [
134 134 "%matplotlib inline\n",
135 135 "import numpy as np\n",
136 136 "import matplotlib.pyplot as plt"
137 137 ]
138 138 },
139 139 {
140 140 "cell_type": "code",
141 141 "execution_count": 5,
142 142 "metadata": {
143 143 "collapsed": false
144 144 },
145 145 "outputs": [
146 146 {
147 147 "data": {
148 148 "image/png": [
149 149 "iVBORw0KGgoAAAANSUhEUgAAAloAAAGKCAYAAADUje9YAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
150 150 "AAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4U+fZx/GvJMt774H3wOABmG32CitANmkzmzRpk6ZN\n",
151 151 "SdpmJzTrzWpmm9WRBVklhB32DBsMBoyx8cA23lOesiyd8/5hcEKBBIxtedyf69J1dKxxbksY/fSc\n",
152 152 "Z2hUVVURQgghhBAdTmvtAoQQQggheisJWkIIIYQQnUSClhBCCCFEJ5GgJYQQQgjRSSRoCSGEEEJ0\n",
153 153 "EglaQgghhBCdRIKWEKJH+Pjjj/nVr371k/epqanh2muvxcXFhZdffrmLKhNCiIuToCWEYOHChWi1\n",
154 154 "2raLj48PM2fOZNeuXdYurY1Go/nZ+/ztb3/D09OTsrIyFixY0AVVXZjJZCIuLo4jR45YrQYhRPcg\n",
155 155 "QUsIgUaj4dZbb0VRFBRF4cSJE8TFxTF9+nQyMzOtXd4lS01NZf78+Tg4OGBra2u1OmxtbUlLSyMx\n",
156 156 "MdFqNQghugcJWkIIVFXlx4tEeHl58dprrxEYGMjKlSutWNnlqaurw97evsuPO3HiRLZv397lxxVC\n",
157 157 "dH8StIQQF2U2m3F3d7d2GZfFGquKaTQaqxxXCNH9SdASQpynoqKCRx99FFtbW+bPn3/ObWvXrmXw\n",
158 158 "4MHY29sTGRnJe++9d87tn3zyCTExMTg6OpKcnExqaioAFouFP/3pT/j7++Pi4sL8+fOpqqpqe1xJ\n",
159 159 "SQk333wzrq6ueHh4cOedd1JZWXlJ9X788cdotVq2bdvGpEmT0Ol0QGtL07Zt286578KFC9s61be0\n",
160 160 "tKDVatm9ezdXX301zs7OxMbGsnTp0nMeYzabefHFFwkPD8fe3p5hw4axYcOG846r1Wr59NNPAQgL\n",
161 161 "CyM/P7/tOQwGA/fffz++vr44Ojoyfvx49u7d23b7pdbyyiuvEBoaipOTE9OnTycvL++SXiMhhHVI\n",
162 162 "0BJCALB48eK2zvC+vr4sWrSIV199FWdn57b7LFmyhEceeYR33nmHmpoaVq9ezdKlS3nppZcAOHr0\n",
163 163 "KAsWLOCLL76gsrKSMWPG8PnnnwPw/vvvs337dg4ePEhOTg61tbVtp9sMBgNjx45l/PjxnDp1ipyc\n",
164 164 "HOLi4pg0aRJms/lna7/zzjtRFIUJEyawdetWLBYL0NrS9L+d6H+8r9frAbjnnnt44IEHKC8v55ln\n",
165 165 "nuH222+nrKys7X633nora9as4ZtvvqGmpobHHnuMF198kdtuu+2c4yqKwu23337ecZqbm0lOTsZk\n",
166 166 "MrF3716Kior49a9/zcyZM1m+fPnP1lJeXg7A6tWree+999iwYQPFxcX4+vqyatWqn319hBBWpAoh\n",
167 167 "+rxnnnlGve2229r2q6ur1S+//FL18PBQP/nkE1VVVdVisaj9+vVTc3Nzz3lsQUGB6ubmpqqqqi5f\n",
168 168 "vlyNiIhQTSbTecd46KGH1FtuueWCx3/00UfVZ5555ryfT506Vf3mm29UVVXVjz76SL3zzjt/8veY\n",
169 169 "OHGiunXr1nP2t23bds59Fi5ceM7zaDQa9d133z3nPqNHj1ZXrVqlqqqq7ty5U3V3d1crKysv+biq\n",
170 170 "qqphYWFqXl6eqqqq+tprr6mjR48+73EffPCBGhMTc8m1vP322+q4ceMuWocQovuRFi0hBHBu3yZ3\n",
171 171 "d3fmz5/P448/3tZalZOTQ2FhIREREedMBRESEkJdXR2FhYVMmTIFHx8fIiIiuO+++1i6dCmKogBw\n",
172 172 "9913s2HDBoYMGcKjjz56ztQRO3bs4Nlnnz3nebVaLZs3byY9Pf2yfo9LmQbif40bN+6c/YiIiLbT\n",
173 173 "mjt37mT06NF4enq2+7hbt25l7ty55/38mmuu4eTJk20tVher5ewp1BtvvJHi4mJiYmJYsGAB69ev\n",
174 174 "/+lfTAhhdRK0hBAXNWDAAHJzc4HWIKHVajEYDG3TQJy9WCwWgoKCcHJyYteuXXzyySd4eHiwYMEC\n",
175 175 "brjhBgAGDhxITk4OTz75JFVVVcycOZO3334bAK1WyzvvvHPB533iiSfajn+5NBrNeaceGxoazruf\n",
176 176 "o6PjOft6vb4teLbnuBeq41L9VC3+/v6kpaXxxhtvoKoqt956Kw899NAV1yeE6DwStIQQFw0CBw8e\n",
177 177 "JDY2FmhtWQkKCmrrc3VWfX09OTk5bfuKojB58mRefPFF9uzZw7Jly6iqqkJRFBwdHbn++uv58MMP\n",
178 178 "ef/99/nnP/8JwIQJE857XqCtI317eXh4nNdZ/Pvvv7+k4HM23IwZM4Y9e/ac03H/f2k0mrZ+YRcy\n",
179 179 "ceLEC06TsXz5cmJiYvDx8fnZes7SarXMnj2bN998k+XLl7e9hkKI7kmClhDivKkJysvL+eCDD3j5\n",
180 180 "5Zd56qmngNYw8dZbb/GXv/yFRYsWUVtby/Hjx5k7dy6vvPIKAIsWLWL06NHk5OTQ2NjIl19+iZ+f\n",
181 181 "H66urvzmN7/h7rvvpqqqivLyclauXElMTAwAf/nLXzh9+jR33303+fn5VFdX88ILLzBjxgxqa2sv\n",
182 182 "WOOlGDduHG+88QYZGRnU1tby+OOPk5ube1nPNXr0aKZPn84111zD4cOHaWpqYsmSJYwfP74tXPn7\n",
183 183 "+7Nz506amprOOQ141gMPPIDBYODee+8lNzeX6upqPv30Ux599NG21+5SvPDCC8ydO5fi4mIMBgPf\n",
184 184 "fPNN22sohOieJGgJIdBoNOeMOoyMjGTx4sUsWbKE6667ru1+11xzDUuWLOH111/H19eXmTNnMm7c\n",
185 185 "OP7+978DrX2Ixo8fT3JyMj4+PixbtozVq1djY2PDM888g8FgICwsjJiYGFRVbWuNcXFxYf/+/TQ1\n",
186 186 "NZGYmEhoaCj79+9nx44duLq6ttV4uafx7rvvPpKTkxk3bhzR0dHY2tpy//33YzKZzvndL/aanLVo\n",
187 187 "0SKmTZvG3Llz8fDw4OWXX2bhwoVt00gsWLCADz/8EF9fX7Zs2XLec9na2rJz5060Wi0jRowgMDCQ\n",
188 188 "Dz/8kNWrV5/Td+vnavnd736Hv78/8fHxBAcHk56ezpIlSy7rNRFCdC2N2p6viUIIIYQQ4mfZXMmD\n",
189 189 "V6xYwf79+wFISkri2muvveDtOp0OZ2dn7r///vM6egohhBBC9FbtDlrp6enk5uby3HPPAfDee+9x\n",
190 190 "9OhREhIS2u6zY8cOXnzxRfR6PR999BFZWVmyyKoQQggh+ox2B61Dhw4xZcqUtv0pU6awe/fuc4LW\n",
191 191 "9ddfz3333YezszNBQUESsoQQQgjRp7S7M3xdXR0uLi5t+66urhgMhrb95uZmVq5cyeuvv86bb75J\n",
192 192 "QECArG4vhBBCiD6l3S1aLi4ubcOuAWpra9tGBwEUFBQQERHR9rMJEyawYsUKxo8ff8Hn27RpU3tL\n",
193 193 "EUIIIYTocj8+s3cx7Q5aSUlJrFu3ru1U4ebNmxkzZkzb7f7+/mRnZ2MymbC1teXw4cMEBwf/7HOK\n",
194 194 "nmnlypXMmTPH2mWIdpL3r+eS965nk/ev50pJSbmk+7U7aMXGxpKRkcGTTz4JtIakhIQEFi9ezJw5\n",
195 195 "c3B1dWXevHk899xzaLVaAgICuOeee9p7OCGEEEKIHueKpneYN28e8+bNO+dnt9xyS9v1kSNHMnLk\n",
196 196 "yCs5hBBCCCFEjyUzwwshhBBCdBIJWkIIIYQQnUSClugQsrBtzybvX88l713PJu9f79fjgpaqqlQ2\n",
197 197 "tmA0K9YuRfxI//79rV2CuALy/vVc8t71bPL+9X5X1Bm+s1gUlfIGE0W1zRTXtm4La5sprm2mqM6E\n",
198 198 "vY2WZrNCpJcDgwKcSQhwJs7XCXu9ztqlCyGEEEK06VZB68l12RTVNlNab8Ld3oZAVzsCXO0IdLVj\n",
199 199 "sq8jgS6t+062OowtFtLKGjhaXM+ilBKyK5uI8HQgMcCZxABn4vyccJDgJYQQQggr6lZBa3asN4Gu\n",
200 200 "tvi72GFn89NnNe31OoYGuTI0qHXmeaNZIb20gSMl9XxxuISTFU2EediTGODMyBA3Evydu+JXEEII\n",
201 201 "IYRo062C1uhQt3Y/1t5Gy5AgF4YEuQABNJsVTpQ3cKS4nr9tzyPI1Z57RwYS6uHQcQULIYQQQvyE\n",
202 202 "bhW0OpKdjZZBAS4MCnDh5kF+rDhewZ9WZzE+3J3bkvxxd9Bbu0QhhBBC9HI9btRhe+h1Wq5P8OXf\n",
203 203 "NwxAp9Xw6yXpfH2kFJNFRi4KIYQQovP0iaB1lqu9DfeP7scbc2JIK2ng10vS2Z5Tjaqq1i5NCCGE\n",
204 204 "EL1QnwpaZwW72/PXqyJ4aFwInx8u5aFVJzlR1mDtsoQQQgjRy/TJoHXW4EAX/nFNf6bHeLFwYw4v\n",
205 205 "bTlFWb3J2mUJIYQQopfo00ELQKfVMKO/Fx/dOJAAVzvu+/YE6zIrrV2WEEIIIXqBPh+0znLQ67hj\n",
206 206 "aABvXB3Dl4dL+ceu05gV6bslhBBCiPaToPU/QjzseWdeDEW1Rh77LguD0WztkoQQQgjRQ0nQugBn\n",
207 207 "OxuevSqSWB9HHliWQXZlk7VLEkIIIUQPJEHrInRaDXePCOLu4YE8+l0W23KqrV2SEEIIIXqYXjsz\n",
208 208 "fEeZGOlBPzc7/roxl+zKJu4YGoBOq7F2WUIIIYToAaRF6xJEeTvyzrwYjpc18MyGHBpMFmuXJIQQ\n",
209 209 "QogeQILWJXJ30PPSzCgCXGz5/fIM8muM1i5JCCGEEN2cBK3LYKPV8LvkYG5K9OPhVSfZk2+wdklC\n",
210 210 "CCGE6Makj1Y7zOjvRYi7Pc9tyqUwoZnrE3ytXZIQQgghuiFp0WqngX5OvDU3hpXpFXydWmrtcoQQ\n",
211 211 "QgjRDUnQugK+zra8NjuK7zIq+VLClhBCCCH+hwStK+TtZMtrs6NZn1nJF4dLrF2OEEIIIboRCVod\n",
212 212 "wMtJz6uzo9l4sorFhyRsCSGEEKKVBK0O4uXYGrY2Z1exKKXY2uUIIYQQohuQoNWBPB31vDY7mm05\n",
213 213 "NXwmYUsIIYTo8yRodTAPBz2vzI5ie24NnxwsRlVVa5ckhBBCCCuRoNUJPBz0vDorip2nJGwJIYQQ\n",
214 214 "fZkErU7i7qDnlVlR7Mk38NEBCVtCCCFEXyRBqxO5O+h5eVY0+wpq+c/+IglbQgghRB8jQauTudnb\n",
215 215 "8MqsKA4U1vEvCVtCCCFEnyJBqwu42tvw8swoDhTU8vWRMmuXI4QQQoguIkGri7ja2/DCjEhWpVew\n",
216 216 "8WSVtcsRQgghRBeQoNWFvJ1seWF6JB/uLeTA6VprlyOEEEKITiZBq4uFeNjzzNRwXt6aR2ZFo7XL\n",
217 217 "EUIIIUQnkqBlBXH+zvxxbDBPr8+mqLbZ2uUIIYQQopNI0LKSMWHu3DokgMfXZlPT1GLtcoQQQgjR\n",
218 218 "CSRoWdHVA7yZGOHOU+tzaGqxWLscIYQQQnQwCVpWdsfQAMI87Hl+Uy5mRebYEkIIIXoTCVpWptFo\n",
219 219 "eHBsCBqNhjd25MuEpkIIIUQvIkGrG7DRanhychj5NUY+Plhs7XKEEEII0UEkaHUT9nodz10Vwfac\n",
220 220 "GlYcL7d2OUIIIYToABK0uhF3Bz0vzojki8OlfJ9bY+1yhBBCCHGFJGh1MwGudjx7VQRv7SwgraTe\n",
221 221 "2uUIIYQQ4gpI0OqGor0d+fOEUJ7blEtJnUxoKoQQQvRUErS6qRHBrswf5MfT63NoMMkcW0IIIURP\n",
222 222 "dEVBa8WKFTz11FM89dRTfPvttxe8T319PS+//DJGo/FKDtUnXRPnQ5yfEy9tOYVF5tgSQgghepx2\n",
223 223 "B6309HRyc3N57rnneO655ygpKeHo0aPn3W/58uXce++92NvbX1GhfZFGo+F3ycE0WxT+ta/I2uUI\n",
224 224 "IYQQ4jK1O2gdOnSIKVOmtO1PmTKFlJSUc+7z/fffc+zYMT788EOWL1/e/ir7sNY5tsLZk2/guxMV\n",
225 225 "1i5HCCGEEJeh3UGrrq4OFxeXtn1XV1cMBkPbfmNjI7t27WLhwoU88sgj1NfXs3Xr1isqtq9ytbfh\n",
226 226 "2asi+M+BYlKL66xdjhBCCCEuUbuDlouLC7W1tW37tbW1uLq6tu2np6fTv39/7OzsAJgwYQLp6elX\n",
227 227 "UGrfFuxuz2OTQnlh0ykKDTISUQghhOgJ2h20kpKS2Lx5c9v+5s2bGTp0aNu+i4sLx44dQ1EUAFJS\n",
228 228 "UggJCbmCUkVSkCu3Dw3g6Q3Z1DebrV2OEEIIIX6GTXsfGBsbS0ZGBk8++STQGrwSEhJYvHgxc+bM\n",
229 229 "ISYmhoSEBJ566ilsbGwICgri7rvv7rDC+6qrB3iTV23k+c2neGF6JDqtxtolCSGEEOIiNKqqdot5\n",
230 230 "AzZt2kRSUpK1y+gRLIrKU+uzCXS144HkYGuXI4QQQvQ5KSkp5wwKvBiZsLQH0mk1PDE5nMNF9bIA\n",
231 231 "tRBCCNGNSdDqoZxsdTx7VQSLD5VwsLD25x/QDoqi0ljfTFOjiW7S8CmEEEL0KO3uoyWsL9DVjicm\n",
232 232 "h/Pcplz+dnU0Ie4/PymsqqhUltVTV9tMU4OJxgYTTY0mmhpMNDW0tO6f+ZnRaMbe3gZVhRaTGUdn\n",
233 233 "O5xc7HBytm3d/vji/MN1GxvJ70IIIQRI0OrxEgOcuXt4IE+vz+GdeTG42J3/ljbUNXMqq4JTJyvI\n",
234 234 "y6rE1s4GNw8HHJ1scThz8Q10PWff0ckWewc92jOd7c0tFhrqTTTUNdNQ39y6rWumrKj2zM9ab2tq\n",
235 235 "bME3wIXgCE+Cwz0JDHHH9gI1CSGEEH2BfAL2AjP6e5Fb1cSLm0/x/PRIUFSK8mvIPVnBqcxyDNVN\n",
236 236 "hER4ERbjzdhpMbh5OFz2MWz0Otw8HH72sS0mC0X5NZzOrWLPlmxKi2rx8XehX3hr8AoKleAlhBCi\n",
237 237 "75BPvF7ipigP3l5xgnf+vgttdROe3o6ERXszec5AAoLd0Om65nSe3lZHaJQXoVFeALS0WCjOr6Eg\n",
238 238 "t4p923IoKTTg7efcFrxCIjyx0eu6pDYhhBCiq0nQ6uEKcqvYtSmLyrJ6kiK82GzWM/O6KGYk+Fm7\n",
239 239 "NAD0eh0hkV6ERP4QvEoKDG3Ba83XR4hN9CduaD/8g1zRaGReMCGEEL2HBK0eSFVVCnKq2L05mzqD\n",
240 240 "kVGTIhgwOBCdTsug6ib+vDqLMD9nYn2drF3qefR6XWv/rQhPkqdEUVvTRFpKIau+PIyNXkd8UhAD\n",
241 241 "Bwfi5GJn7VKFEEKIKyYTlvYgqqqSn13J7s3ZNNQ1M2pSJAMGBaD9n9OCO0/V8O7u07w9rz9ejnor\n",
242 242 "VXt5VEXldF41xw4WknW8lH7hnsQPDSIixgedjGIUQgjRzVzqhKXSotUDqKpKXlYluzZl0dRoYvSk\n",
243 243 "KGIT/c8LWGeNCXMnt6qJZzfm8OrsaGy7qH/WldBoNQSf6bdlah5AxtESDuw4xfpv0xg4OID4pH74\n",
244 244 "BLhYu0whhBDiskjQ6sZUVeXUyQp2bcqm2djC6EmR9E8MaJty4af8cog/uVVG3tlZwEPjQnpU3ydb\n",
245 245 "OxsShvUjYVg/qisbSDtYyNJPD+Lsas+oSRFE9PfpUb+PEEKIvktOHXZT+dmVbF+XSYvJwuhJkcQk\n",
246 246 "+F9SwPqxphYLC1ZmMqO/F9fE+XZSpV1DUVROppWyZ0s2Gg2MmhRJ9EA/NLKothBCCCuQU4c9lMWs\n",
247 247 "sGN9JhlHS5g4sz8x8f7tDhMOeh0Lp0Xw4IpMQt0dGBLUc0+9abUa+if4ExPvR86JcnZvyWbnxixG\n",
248 248 "TYygf8LFT6MKIYQQ1iRBqxuprmxg9ZepOLnYcdsDyTg62V7xc/q72PHYpDBe3HyKN+fGEOjas0fz\n",
249 249 "aTQaIgf4EhHrQ15W68CAnZtaA9fZkZdCCCFEdyFBq5s4friILavSGT05iiGjO7ZP1eBAF25N8ueZ\n",
250 250 "DTm8NScGR9ueP0GoRqMhLNqbsGhvCs7MQr9rUzYjJoQTnxQkk6AKIYToFiRoWZmp2cymlekU59dw\n",
251 251 "413D8Q107ZTjzBngTXZlE69sy+PpqeFoe1Fn8rOjFYvya9izNZs9W7IZPi6cQSNDZIFrIYQQViWf\n",
252 252 "QlZUWlTLZ//YhUYDtz0wutNCFrS2AD2Q3A+D0cziQyWddhxrCgxx57rbh3Lt7UPJz67kozd3cDKt\n",
253 253 "lG4y3kMIIUQfJC1aVqCqKim78tizJZvJcwYwYFBglxxXr9Py9NRwHliWQZiHA+PC3bvkuF3NL9CV\n",
254 254 "a28fSl5WJVtWp5OyO49Js2I7NcgKIYQQFyJBq4s1NphYu+QojQ0mbrlvNO5ejl16fA8HPc9Mi+CJ\n",
255 255 "tdkEudkR4enQpcfvSqFRXtz+QDJHDxay5OMDRA3wZczUaFneRwghRJeRU4ddKD+7kk/f2YmXnzO/\n",
256 256 "uHdkl4ess2K8HblvVBALN+RgMJqtUkNX0eq0DBoRzF0LxmFrZ8PHb33Pvu05mM2KtUsTQgjRB0jQ\n",
257 257 "6iLHUgpZ/fURZlyfwIQZ/a2+ft/kKE/Gh7vz/KZczErv78Nk76Bn4qxYfvnbURTl1fDRmzvITCuR\n",
258 258 "/ltCCCE6lQStLnBkfwE7N5xk/q9HEBbtbe1y2vxqWCC2Oi0f7Cm0dildxsPbiWtuS+Kqa+LZtTGL\n",
259 259 "r/+9n7KiWmuXJYQQopeSoNXJDu/NZ8+WbG769XA8fZysXc45dFoNj00K5WBhLWszKq1dTpc6238r\n",
260 260 "NjGAJR8fYOPyNJqNLdYuSwghRC8jQasTHdx5in3bc5n/6xF4eHWvkHWWs50Nf50Wwb/3F5FWWm/t\n",
261 261 "crrUj/tvKYrKx2/t5OTxUmuXJYQQoheRoNVJ9u/I5dDufG6+ZwRuntbp9H6pgt3t+fOEEJ7fdIry\n",
262 262 "BpO1y+ly9g56rro2nlk3JbJ9bQbLFx+ivtZo7bKEEEL0AhK0OsGerdkc2VfA/HtG4OreM6ZPGBHs\n",
263 263 "xjVxPizckENzHx2RFxzuyR2/H4OXrzOfvL2T1H0FqF04UEBVVRSzGVVRpJO+EEL0EjKPVgdSVZXd\n",
264 264 "m7M5caSY+feMwNnV3tolXZabEn3JqWrijR35PDIxtEPXW+wpbPQ6xk6LJjbBn3XfppF+uIhp18bh\n",
265 265 "5eN8Rc+rqiotVQaMxWUYi8sxFpVhLC6j+UfXjUXlWIzNoKqtF40GjVYL2h9tNT/sa/Q22Pl64RDo\n",
266 266 "h32QL/aBvti3XffDPsAHnb3MGSaEENakUbvJV+dNmzaRlJRk7TLaTVVVvt9wkuz0Mm68a3iPnRTT\n",
267 267 "aFZ4eGUmEyM9uDHRz9rlWJWiqKTuzWfXpiyGJIcycnzEJU3LYW5swnAwjeq9qVTvP0pTXiHGknJ0\n",
268 268 "DvbYB/hiH+CLXaBP6/Wz2wBf7AN8sHFp7cunnglbqqKA8qOt+sO+YmqhubSiNagVlmEsKqWpqHVr\n",
269 269 "LCzDWFKO3sW5LYQ5R4fhOngAboMHYB/o2yeDtBBCdJSUlBSmTJnys/eToNUBVFVl+9oM8rIqueGu\n",
270 270 "4Tg62Vq7pCtSVm/iDysyeHhcKMODZdma2pomNq04Tk11E9OvjSMwxOOc201VBqr3pbYGqz2p1J/I\n",
271 271 "wSU+Go+Rg/AYOQinyBDs/X3QOXZtC6eqKJgqqjEWltFUWEL9iRwMh9IxHE4HrQa3M6HLbfAA3AbF\n",
272 272 "Yuvt8fNPKoQQApCg1WVUVWXL6hMU5lVzw6+G4eDYs0PWWcdK6vnrxlzemBNNP7eedQq0M6iqSuax\n",
273 273 "UjavSic6wIb+DvXUHjxK9Z5UjMVluA2Nw3PkYDxGDsJtyEB0Dt23RVNVVYyFpRgOp7ddao9koHdz\n",
274 274 "bmvxch8aj/vQeLR66V0ghBAXIkGrC6iKyqaVxyktquX6O4dh76C3dkkdas2JCr45Vsbbc/vjZKuz\n",
275 275 "djlWZaqupWTZRgq+XEVt9mmaAsKIvHo0YTNG4xIXhdamZwcSVVFozCloDV6pJ6jem0pjXhFe44fh\n",
276 276 "M3k03pNHYe/XfSbbFUIIa7vUoNWzPx2sbNvaDMpL6rjhV8Oxs+99L+WsWG9yqpp4cfMpnr0qAp22\n",
277 277 "b/XpUcxmKrfuo/CrNVRs3Yv35NHEPHIv3hOGk5VRwcblxzEUa0iO0/b44bsarRanqFCcokIJvGEG\n",
278 278 "AM1llVRs2UP5xt2cWPgOjiEBeE8ejc+U0bglDezx4VIIIbqCtGi107GUQvZsyebW+0f3upasHzMr\n",
279 279 "Kk+szSbC04HfjAqydjldoj7zFIVfraFoyVrsA30Junk2AfOmoHc/t79aY30zG5Ydp7qqgVk3JOIb\n",
280 280 "2Hv7sylmMzUHjlGxeQ/lm3ZjLCzBa8JIfCaPwnvyKOx8PK1dohBCdCk5ddiJigtqWPrJQebfOxJv\n",
281 281 "3ysb9t8T1DWb+cPyTOYP8mNGfy9rl9MpWmpqKV6+icIvV2MsKiPwhhkE3TQT5/7hP/k4VVU5fqiI\n",
282 282 "rd9lMDQ5lBHjw9Hqenr71s8zFpe3tnZt3k3l9gO4xscQcP1V+F89Cb2bi7XLE0KITidBq5PU1xpZ\n",
283 283 "9O5ups6LI2qAr7XL6TIFNUYeXnWSJ6eEkxjQe8JlY34R2a9/ROnqrXhPHEnQzbPxmjD8sk+L1dY0\n",
284 284 "sW7pMUzNZmbekNjt1rXsTEqzifJNuyn6Zh2V2/fjNW4YAddPx2fKaJnHSwjRa0nQ6gTmFgtf/Wsf\n",
285 285 "EbG+jJ4Uae1yutzBwlpe3ZrHm3Nj8O+h84SdZSytIOeNjylevpGQX11P6D3zsfW4slN/qqJy+My8\n",
286 286 "W6MnRzFkVAiaPtavrcVQR+nqrRR9s566tEz8Zk0k4Pqr8Bw9pHXSVSGE6CUkaHUwVVVZ+80xWkxm\n",
287 287 "5vxicJ+d7HF5WjmrTlTw5pyYHjkS0VRlIPfvizj9xUqC5s8i4oHbOnz+qOqKBr5bchSdjZYZ1yfg\n",
288 288 "5tEzlmHqaMaiMoqXbaTom3WYqmoIvPYqAq6/CpeBUX3270cI0XtI0OpgKbvyOHrgNL/4zUhs7fru\n",
289 289 "aCtVVXln12nK600snNZzRiKa6xo49cGX5P1nCf5zJhP5xzuxD/DptOMpisr+Hbkc2JHLxNmxDBwc\n",
290 290 "2KfDRV1GDsXfrKf42/XYuLkQcsd1BFw3DRun7r3guhBCXIwErQ6Un13Jqq9SueW3o3DzlA8Gs6Ly\n",
291 291 "+NosorwcuXdk9x6JaGlqJv+jb8h9dzHek0YS9fBdOIb167LjlxXVsvqrVHwCXZk2byB29r13hOql\n",
292 292 "UBWFyu37yf/kW6r3HCbguumE3HEtzjFh1i5NCCEuy6UGLek08TMMVY2s+iqVq+cPkpB1ho1Ww5OT\n",
293 293 "w9mVZ2BdZqW1y7kgxdRC/sdL2Z58EzUHjzH8m3dIfOfpLg1ZAL6Brtz6u2Ts7W345J1dFOZVd+nx\n",
294 294 "uxuNVotHoGPcAAAgAElEQVT3xJEkffQSyRs/Qe/qxP4bfs++639PyYrNKC1ma5cohBAdSlq0foKp\n",
295 295 "2cznH+xh0PBghowOtXY53U7+mZGIT08NJ8G/+4xErNx5kLSHX8IxvB/Rj9yL2+AB1i4JgKz0MtZ/\n",
296 296 "e4xBI4IZPSmyT0wDcSkUUwula7dT8PFSGrIL6HfrXIJvmYt9YOeN6lVVlQZjLY3N9TSZGmhsbqDJ\n",
297 297 "VE9TcwONZ7ZNpoYz23qaTI3otDpsdLbodfrWrY0tel3rxcZGf+a6Hr2NHU72Lng4++Dh7IO7kxc6\n",
298 298 "bd/tbiBEbyWnDq+Qqqis/OIwdg56rro2rk/3r/kpB0/X8uq27jES0dzYRObz71H63TbiXv0LvlPH\n",
299 299 "WLWeC6mvNbL2m6M0Gy3Mnp+Iu7SSnqMuI4eCj7+l+Nv1eI4ZSsid1+E5dmi7/v5UVcXQWEVJdT4l\n",
300 300 "1QWUVOdTXF1AcVUepTUF2Gj1ONo542DnhIOt84+un7nYOeFo2/oze70DiqrQYjHRYjbRYjFhtrTQ\n",
301 301 "Yj6ztZz5mbn1er2xlur6cqrryqhtqsHFwR0PZ288nX3bApinS+vWy8WPAM9QbHR9+7SyED2NBK0r\n",
302 302 "tHtzFrmZFdz06xHY2EjLw09ZllbOmjMjER2tNBKxem8qRx98HvfhCQx47o/nzeLenaiKysFdeezd\n",
303 303 "ms2k2QMYOCTQ2iV1O+b6BoqXbiDv30vQ6HWE338L/nMmX3SR66r6cjJOH6agIqs1VFW1hiqdVkeA\n",
304 304 "Zwj+HiH4ewQT4PHDdUe7rmmFtShmDI3VVNeVUV1fTlV9eev2zH5FbQnlhiJ83YMI9o6kn3fkmW0E\n",
305 305 "/h7B0homRDclQesKZB0vZdPKdG65bxTOrvbWLqfbU1WVt3cWUNHYwsKpXTsS0dLUzMmXPqB42UYG\n",
306 306 "vvwn/GaM77JjX6mzHeV9A12ZKh3lL0hVVSo27Sb33cU05hcR9ptfEPSL2VSZqzlRcIj00ymkF6TQ\n",
307 307 "YKyjf7/BhPnGnBOqnB3crP0rXJIWs4miqjwKKrI4XZFNQUUOBRXZ1NRXEOAZQj+vCIJ9ogj2jiTS\n",
308 308 "fyDuzrLAtxDWJkGrnSpK6/jqn/u47o6hBAS7W7ucHsOsqDz2XRYx3o7c00UjEWsOHuPIH57HLSGG\n",
309 309 "AS8+jK1nz/hQ/bEWk4VtazPIyShn9k2JBIV27JxevYGqqhRW5pKyaw2H960lT1eK1tGegREjiIsa\n",
310 310 "xYB+QwjyjkCr6X0tz0ZTE4VVua3hqzybgoossorTcLJ3pX/QoLZLb/39hejOLjVoSZv0j7SYzCxf\n",
311 311 "dIiJs2IlZF0mG62Gp6aE8+CKTALd7Jgd23nfuC3GZrJe/TeFX69h4IsP4z9nUqcdq7PpbXVMnTuQ\n",
312 312 "7PQyVnx+mEEjghk1MaLPd5RvMjVwMGs7+zI3k16QgoOtEwOChzDupnu4TRNI4+KtlDy1Eb+rffD8\n",
313 313 "7Qi0Pr3z9bK3dSDSfyCR/gPbfqaoCkWVp8goTCWz8DCr9n9GXWMNUYEJrcGr3yAi/eOxt+2bE+UK\n",
314 314 "0d1Ii9aPa1h5nOYmM7NuSrRqHT1ZoaGZh1dl8vD4UIYHd3w/KcPhdI7+4XmcokMZ+PKfsPP27PBj\n",
315 315 "WEt9rZHvlhzFYlaYdVMiru5964PS1GLkUM5Odp1Yz5HcPQwIHsLI/lOICxmOt6v/+fevqCb/46Xk\n",
316 316 "f7QU9xEJhN9/Cx7DE6xQufXVNFSSWXiEzMLDZBSmkl9+kiCvCAYEJzEofDSx/YZga9Ozl80SoruR\n",
317 317 "U4eXqSCnitVfp3Lng2Oxd5C+MlcirbSehRtyeWlmJJFeHTOqTjG1kP3GRxR8tpzY5/5IwDVTe+VI\n",
318 318 "UPXsjPI7TzFtXhzRcX7WLqlTmS0tHDm1h93p60nJ3kGE/0CSB1zF8OhJl9y/ytJo5PRXqzn13hc4\n",
319 319 "9PMj8uG78ExO6pX/Pi6VydxMTslx0vIOkJq7i4KKbGL7DWFQ+GgGhScT4Bli7RKF6PEkaF0GU7OZ\n",
320 320 "j9/eydQ5A4iI7by5e/qS7TnVfLC3kDfnxuDjZHtFz9VcUcWhux5H7+JM3OuPYu/X+zsCF+XXsOqr\n",
321 321 "VCL6+zBhZn/0+p63ruTFKIqF4wUH2ZW+jv0ntxLoGUbygKsYGTPlijp5K2YzxUs3kP3mx9j5ehL5\n",
322 322 "0F14jRvWpwPXWfVNBo7m7SM1dxepObuw1dszKDyZweHJDAwZir2tTDMixOWSoHUZNixLw2JRmHF9\n",
323 323 "3zzt0Fm+PlLK5qwq/nZ1+xegrjueRcodfyHwhhlE/fnXaLS9sy/OhRibWtiwLI3K8nquvnkw3r7d\n",
324 324 "Z1LY9qisK2Xdwa/YlrYKL2dfRg+YzujYqXi7BnTocRSzmZLlm8h+4yP0Hm5EPXQXXhNHSOA6Q1VV\n",
325 325 "8suzWkNX7i6yi48TFRjPoPBkRkRPxM8j2NolCtEjdEnQWrFiBfv37wcgKSmJa6+99rz7KIrCW2+9\n",
326 326 "haqqPPTQQxd9LmsFrVMnK1i39Bh3PjhGhtd3sLMLUJfUNfPsVZHYXOa0D6XfbefYn15iwPMLCLx2\n",
327 327 "WidV2b2pqsqxg4VsX5vBuOkxJAzr1+MCw6nSDFbvX0RKzveMj5vNVUNuJMCz81daUC0WildsJvuN\n",
328 328 "j7BxdiLqoV/hPWV0j3v9OluTqYG0/AMcyv6eAye34u7szYiYyYyMmUI/74guqUFVVWioQ6muRK2p\n",
329 329 "hKYm1JZmMJlQW0xgOnPd1AwtZ7amZlSTCVDR2OhBbwt6PRq9Ldjo0di2btHbotGfvd0Wjas7GjeP\n",
330 330 "1q2LKxpt72ktFl2r04NWeno669ev58EHHwTgvffeY+zYsSQknNsq9N///pd+/fqxe/fubhe0mo0t\n",
331 331 "fPL2Tq66Np6w6N5/OsoaLIrK0+tz8HbS88exwZf0IaeqKjlvf0r+x0tJ+s9LuA3pHkvoWFNlWT2r\n",
332 332 "vkzFw8eJq66J6/b9CFVVJTV3N6v2f0ZhZS4zh/6CKYOuw8nepetrURRKVm0h+/WP0NrbEvXQXfhM\n",
333 333 "GyOB6wIUxUJGYSp7MzexL2MzDnZOjIyZwoiYyYT6xrRvhn7FglpRhlpdiVJdgVpdiXpmq1RVoNZU\n",
334 334 "olZXgo0NWg9vNO6e4OCIxtYObO1ag5OtHdjatl3X2NqC/sxWo0FtaQFzS2sIa2ndYm5pDWItJtQz\n",
335 335 "t9HcjFpnQDVUo9TWQGM9GieXc8OXm8cP17390PoFovH06VOt6eLSdHrQ+vzzz0lMTCQ+Ph6AzMxM\n",
336 336 "du/ezR133NF2n3379lFTU8OQIUP47LPPul3QWrf0GBoNXHVtfJcet69pNFl4ePVJJkR4cPOgn+7c\n",
337 337 "bWlq5tjD/0dDTj5JH72MfYBPF1XZ/ZlbLGz9rnXOravnJxIY0v3m3Goxm/j++HesPrAYrUbL1cNv\n",
338 338 "JXnA9G6xvIyqKJSu2Ub26x+h0WmJfPgufKePk8B1EYqqkF2cxt6MTezL3IxGo2kNXf0nE+l/4WXJ\n",
339 339 "1DoDlvwclILc1kt+DkpRfmuY8fJB4+6F1tMbjYcXGo/WrfbMVmPf9aNsVYsFtbbmzKW6dWuoRjW0\n",
340 340 "bpWKUtTSQtT6OjQ+/mj9AtH692sNX36BrVtvX2kV66M6fR6turo6XFx++Hbq6uqKwWBo2y8qKiI1\n",
341 341 "NZV77rmHsrKy9h6m0+RklJOXXcmdf+h+6+H1No62Op67KoIHV2Ti72zLxMgLBwRjSTmH7nwUh9Ag\n",
342 342 "Ri59F52jzMr/Yzb61jm3Th4vZdmiQyQlhzJifATaLpyJ/2LqmmrYePgb1qd8TYhvNHdMfpj40O7V\n",
343 343 "L0qj1eJ/9ST8Zk2gbO0Osl75FzlvfkL0o/fiNaF71dodaDVaogMTiA5M4JaJD3KqLIN9mZt5d/Uz\n",
344 344 "mJubmOo3kuGOEXgajCgFOSj5OajNRrQhEeiCI9BF9kc/YQba4DA0Dk7W/nUuSKPTofHwAg+vn7yf\n",
345 345 "amxCKS9BLSlEKS3EkpeFum87Skkhal0NGm9/tAH90IZGoguNRBsahcbbT/5NCeAKgpaLiwu1tbVt\n",
346 346 "+7W1tbi6/jBv0tGjRykvL+fVV1/FZDJRUFDAokWLuPXWW6+s4g5gbGph/bfHmHVjIrZ2MmdrV/B2\n",
347 347 "suW56ZE8siYLbyc98f7nduw2HE7n0F2PEXzbNUT88Q75D+onRA/0wy/QlTVfHyE/u4pZNyZYbako\n",
348 348 "Q0MV3+75NzvS1jAsagKP3fR3QnyirVLLpdJotfjNmoDvjHGUrNzM8SfewM7Xk5hHf4PHyEHWLq97\n",
349 349 "UhRC6iGoxou5ldGYM49R75BKjs0u9rvZ4TVgJLHzn8YzZGCv/NvV2DugCw6H4PDzblNNzShlxaiF\n",
350 350 "eVjyc2jZ+h1KXjZqc/OZ0NUavLShkWgDQ9DYyGdOX9PuU4cnTpxg3bp1bX203n//fcaMGXNeHy2A\n",
351 351 "8vLybnXq8Lv/HkFvZ8PUuQN//s6iQx08Xcsr2/L429XR9HNrDQfFyzdy/PHXiXvlL/jPnmjdAnsQ\n",
352 352 "xaKwe0s2R/afZsb18YTHdN1pVpO5me8OfM6q/YsYO3Amc0begadzzzzNq5jNFC1ZS/bf/oNTTDjR\n",
353 353 "j9yLW2J/a5dlVaqioJw+heX4YSxph7BkHEXr6YMubgi6gYPRxSagcXJBURUyTh9mx/E17MvYTKhv\n",
354 354 "DOPiZjEiZnKXLdrdXSmGapT8bJS81oslLwu1ogxtYAjasCh0kbHoYuLRBF5a31XR/XTJqMPly5ef\n",
355 355 "M+rwuuuuY/HixcyZM+ec1q2ysjIWL17MggULLvpcXRW0stLL2Lr6BHf8IRm9rXyzsIbvTlTw1ZFS\n",
356 356 "3pgdRcU/PqXw6zUkffwyrvEx1i6tRyrIqWLNf48Qm+jP2Gkx6Gw6r9OuqqrsSl/Hl9v/Tphff345\n",
357 357 "4Q9dMoKwKyjNJgo+X0nOm5/gPjye6D/fg3P/81sweiul+DSWtEOYjx/Gkp6Kxsm5NVQNHIJuQCJa\n",
358 358 "t5/uE2gyN3Mo+3u+P76GtPwDDApPZlzcLBLDRnWLPnrdgWpsQjl9CuXUSSwnj2PJTENtakAXHYcu\n",
359 359 "Jg5ddBzaiP6tnfxFtyfzaF1AU6OJj9/ayZxfDKJfWO9ZuqUn+mh3HrzwBv3VRoZ+/BJ2PvJ+XInG\n",
360 360 "BhNrvzlKY72Jq28ehLtnx09AmVGYymebX0dRLNw6aQEDQ4Z2+DG6A0ujkfyPviH33c/xnjySqIfv\n",
361 361 "wjGsn7XL6hRK8WnMe7dh3rMVtaEOXcLQ1mA1cBBaz/a3UNY11bAnYyM70tZQUp1Pcux0JiXOI9RX\n",
362 362 "vkz9L6W6EuVkGpaMY1gy01CK8lv7uZ0NXzFxaFy759q7qqrSoii0WCyYLBZMFqV1q1hosSjYaDXo\n",
363 363 "dTr0Wi22Oh16rQ69rvW6TqPp8S15ErQuYNWXqTi52DFpdmynHkf8NMXUwqF7nySrrJ70+3/PU7P6\n",
364 364 "o+sGHbp7OlVVSdmVx54t2UyeM4ABgwI75HlLa07zxbZ3OFl0jPnj72fswJloNb1/qLu5roFTH3xJ\n",
365 365 "3n+W4H/1JCIX/KpXjIJVyop/CFeGamxGjMdm5AS00QM7ZQqD0prTbD+2iq1HV+Lm5MnkxGtIHjC9\n",
366 366 "z59avBjV2IQlJwMlMw1LZhqWrONo3L2wiU9CF5+EbkBihw4uUFWVepOJqiYjVU1NVDU1UdnURLXR\n",
367 367 "SGVj636VsfW2umYTzRZzW6BqsVjQabXYarXodTpsz1zsdDpsdFosikKLRWkLXi1KaxhrsVhQVLU1\n",
368 368 "fJ0JYk62etzt7HG3t8Pd3h63s9sf/ax13w5PRwec9NZvJZWg9T8yjpXw/fpMbn9gDPp2zlIurpzS\n",
369 369 "bOLQr59AY6Mj7t2/8tdtBXg66Hl4fEiP/3bTXZQWGlj1ZSpBYR5MmTOg3afIG4x1fLv732w9uoJZ\n",
370 370 "w37J7OG3YKfvWwtdA5iqDOT+fRGnv1hJ8K3zCH/gVvRuXT8f2JVQKsp+CFeVZeiGj0U/aiLa/vFd\n",
371 371 "NjWBolg4cmovW44s42jeXoZHT2Jy4jXEBA2Sv/2foCqW1j5exw5hSUvBkpWONjgCXfwQbOKHoo2M\n",
372 372 "/dkO9iaLhcLaOvIMhtZLjaHtenlDI3qdDi8HBzwd7PF0cPjRpXXfy8EBD4fWkKPX6bDV6rCzaQ1I\n",
373 373 "unaGc4ui0KKcaQGzWGhoacFgNFJjbG7dNjdTc2a/xmjEYGymptlIjdFIVZMRW52WAGdnAl1cCHB2\n",
374 374 "JsDF+Zx9b0eHdtd2qSRo/UhjfTOfvLOLebcM7pZzD/UVFmMzh+56DJ2jPYPeexat3gZji4VHvssi\n",
375 375 "3t+Ze0YEWbvEXsPUbGbjiuOUnDYw5+bB+ARcejCwKGY2Hv6Gpbv+xdCo8dw49rd49NCO7h3JWFRG\n",
376 376 "1mv/pmzd94T/7hZC7roenb2dtcu6KMVQjXn3Fsx7t6EUn8Zm2BhsRk5AN3AwGp11v2waGqrYkbaa\n",
377 377 "zUeWATAp8RrGx83GzUm6EPwc1dTc2tJ1LAXLsRSU0kJ0/RPQxSdREx1Hho0DeYZa8gwG8g0GTtUY\n",
378 378 "KKmvx9/ZmVA3V0Ld3Qh1cyPEzY1Qdzf8nJyw72EjIVVVxdDcTFFdHcV19RTX11P0P1uD0YivkxOB\n",
379 379 "Ls6EurkR4eFBhIc7ER7uBLq4oO2AcC9B6wxVVVn5+WHcvByZMKNvjySyJktTMyl3PoLe3ZXEvz+N\n",
380 380 "Vv/DH3at0czDq04yLcaTmxJ/ekJTcXnSUgrZuuYEyVOjGTzy50c3FVRk896ahTjYOnH75IcJ9e3e\n",
381 381 "UzVYQ33mKTL/731qj2QQ9ee7CbpxptWDy49Zsk/QsmE55pQ92CSNwmb0JHRxSd1yWgFVVcksTGXz\n",
382 382 "kWXsP7mFhNCRTEq8hsSwkWhlEtCf1GAykVZewdGCfI7k5HCsxkC9RSHWWEuYiwth/UIIixlAmI8P\n",
383 383 "Qa4u2Hajf6NdodlspqShgaK6evJqasiuriG3uobcmhqqjUbC3NwIPxO8ItzdifDwINTd7bJCpwSt\n",
384 384 "M06mlbJjfSa3P5CMjb5v/UPrLiyNRg7e/mfsfL1IePtJtBf4h1zeYOKhlSe5Ncmf6TE/PXmguDxV\n",
385 385 "FQ2s+jIVV3d7pl8Xj4Pj+SOaLIqZVfsXsWrfZ9w87ndMHnStnM75GdUHjpL5/Lu0VNUS/fhvrDrL\n",
386 386 "vNpiwrx3Oy3rl6HWGdBPnYt+wnQ0zq4//+BuorG5jl3p69mUupR6Yy1TB1/PpIR5uDrKWQiTxUJG\n",
387 387 "ZSXHyso5WlrG0bJyiurq6O/tRYKvL/G+PiT4+hDi5galhZgP78NyaA+W7Ax0MXHYJI1CN3gkWm/5\n",
388 388 "IgutIfVUjYGc6mpyamrIqW69nK6txc/ZiYE+Pgzw9mKgjzcDvL3xdLhwlwkJWrQuWfLRm99z1bXx\n",
389 389 "hEbJh7c1mBsaSbntz9j38yfhjcd/8pt/QY2RP68+yR/GBpMc2j1H2fRUZrPCjnWZZB4rYdZNiQSH\n",
390 390 "/3CKprAyl/fWLMRO78BvZz6Nj1vHdKLvC1RVpXzTLjJfeB8bZ0dinrgPz1GDu+z4SlU5LRtXYt76\n",
391 391 "HdrQSPTT5qEbPKLHLwmTXZzG+kP/Zf/JLSRFjmPakBuJCUzsM+HfoiiklZezs+A0OwtOk15eQYib\n",
392 392 "K/G+viT4+pDg60uUpwf6n2mlUhsbsBw9gPnQXsyp+9C6e6IbMgqbwSPRRsX2+H8nHa3FYiHPYCC9\n",
393 393 "vIL0ikqOl1eQXlGBk62egd7eDDgTvAZ4e+Pv7MShQ4ckaO3dmk3xaQPX3Nq1ayiKVub6Bg7e8icc\n",
394 394 "I4KJf+2RSzq9klneyBPrsnlqSjiJATIqqaPlZJSzbukxEof1Y+TEMNYe+pLlez/mxrG/Zerg6/vE\n",
395 395 "aMLOoFosFC3dQNYrH+IcG0nME7/FJTayc46lqignjmBavxzL8cPox0xBP3UO2sCQTjmeNdU3Gdh2\n",
396 396 "bCUbDi/BTu/AtME3MHbgTOxtO376Emsrrqtn1+nTfJ9fwJ7Thfg6OTEmuB/Jwf1ICvDH8QpH2amK\n",
397 397 "BSU7A/OhPVgO70WprsRm0HBskpLRJQ6zylqTPYGqqpyureN4RcWZAFbB8fIKFFXlncEJfTto1dca\n",
398 398 "+eTtndxy32jcvXrfH2V3Z65r4MAvFuA8IJK4l/98WcPGDxXW8eKWU7w0M5JIee86XENdM19/uYF9\n",
399 399 "tZ/g7ePKA3P/ip9775wnqqspzSbyP/mWnLc/xWdqMtF/uQf7QN8OeW7V3IL5+420rPsW1WJGP20e\n",
400 400 "+rHT0Dj0/r8RRVU4lrePDYf+y/GCFMYOnMm0wTfQzzvC2qW1W2NLCweKitlZcJpdBQVUNhlJ7hfE\n",
401 401 "mJBgkvv1w8+5c9eHVCrKMB/ajeXATiw5Gejik7AZNhabIaPQOHbPtSm7C1VVKW9s5HRGRt8OWt/9\n",
402 402 "9whOrvaMny4T5HW1FkMdB25egNugWAa8+FC75ubZnlvNe7sL+dvV0QS6dt+RXT2NoiqsO/gVS3f/\n",
403 403 "k2F+19Nysj/T5sTRPzHA2qX1Ki219eT+fREFny1rnRLi97ehd21fC61qsWD+fiOmZYvQ+gWhnzO/\n",
404 404 "deRgHzmN9r8qakvYfORbNqcuI9AzlKuG3Miw6Ik9Yvb5GqORDTm5rM3KJrW0jDgf7zOtVsEM9PHu\n",
405 405 "kJFw7aHW1WJO2Y35wPdY0o+gi41vDV1Dk9G4uFmlpp6gT/fRKi6oYfniQ9y1YJwsGt3FTNW1HLj5\n",
406 406 "j3gMTyD2uT9e0YfB6hMVfJ1ayutzYvBy7P7/iXZ3JdUFvP/dX1FVlftmLcTfI5iS0wZWfZVKcLgn\n",
407 407 "k6+OlWWpOpixqIyTr/6L8g07ifjD7YTccS1au0tbXkVVLJh3b8G0dBFaT29sr78DXez5a8n2VWZL\n",
408 408 "C/tPbmX9oa8prT7NtCE3MmXQtd2u83y9ycTm3FOsycompbiEMcH9mBkVyZjgfjh1w6V21KaG1j5d\n",
409 409 "B3ZiOXoAXXgMuuFjsRk2Fq2H9HX+sT4btFRF5fMP9jBoZAjxSTIvU1dqMdSx/4bf4zkmif7P/L5D\n",
410 410 "vnF/fqiE7bnVvDY7GmcJze2iqiqbUpfy1Y53uWbUXcwcevM5Q+dNzWY2rThOcYGBq28ehG9gzxmp\n",
411 411 "1lPUncgm8/n3qM88RfRjvyFg3pSLtvSqioJ533ZMSz9F4+yK7Q13YjOw6zrY90SnSjNYm/IV+zM3\n",
412 412 "MzxmEtOT5hPuZ70VQJpaWtiWl8+ak1nsKSxieGAAM6MimRQW2i3D1cWozcbWzvT7v8d8eB/aoBBs\n",
413 413 "Rk3EZsR4tO59c84zi6KSV2PkWEk9/YwFfTNoHT9URMruPG757Sg0sqxLl1GaTWf6ZEUx4Pkra8n6\n",
414 414 "MVVVeX9PIScrGvm/mVHYdeKCyb1Rc0sT/1r/f+SVZfDg3JcI8rr4IsnHDxexZVU6oyZFkpQc2mdP\n",
415 415 "TXWmql0pZDz7D1RVpf+T9+M1bljbbaqiYDmwE9PST8HOHtsb7kQXnyTvw2Wobaxmy5FlrD/0X3zc\n",
416 416 "ApiRdHOXnVY0WSx8n1/Ad1nZbM/LJ9HPl5lRkUwJD8etG09se6lUcwuWoymY927FnLIHXVgUNqMn\n",
417 417 "YTNsLBqX3vvlzGRWyKho5FhJPcdKGjhe1oCHgw1xfk5Mcq7se0HL1GzmP2/sYO4vZQb4rqQqCkfu\n",
418 418 "X4hiNjP4g+c6fPJGRVV5dVsedc0Wnp4ajq1OwtalKK0u4PXlf6GfVwT3TH8Se9ufH1VUU9nIqq9S\n",
419 419 "cXCyZcZ18Ti59PwPiO5GVVVKVm4m84X3cYoMpv8T9+HQXIHpm09Aq209RThohASsK2BRzOw/uZV1\n",
420 420 "KV91+mnFrKoqvjx2nNUns4j28mRWVCTTIiLwcuy9o/hUUzOW1P2Y92zBfOQAupj41pauock9viN9\n",
421 421 "rdHM8bKG1mBV2kB2ZRNhHvbE+TkR7+dMvL8T7g6twb1Pnjr8fn0mhpomZt80qIOqEpci47l3qd5/\n",
422 422 "hOFfvYXOoXM+mM2Kyoubc7Eo8OSUMPQStn5SSvYOPvjuWa5L/jVXDbnpsj60LRaFXZuyOHawkOnX\n",
423 423 "xhER2zGj5sS5FFMLxe+8j+77lehdHXG45V4cps2UgNXBfnxacVj0RGYN+yWhvlc2SMpksbA59xRf\n",
424 424 "HEvjVI2BGwbGcv2AWAJdetYamB1BNTa1dqTfsxVLeiq6uCGtoWvwyB4xZYSiqmSWN7K3oJZ9+QYK\n",
425 425 "a5uJ9XEizr81WMX6OuJwkcnO+1zQMlQ18tk/dnPHH8bg4mbfgZWJn5L30Tfk//u/jFzxAbaenTs6\n",
426 426 "pcWi8MLmU2g18PjkcGzk1PB5FFVh6a5/sjl1GQ/Oe4n+Qe3/0nH6VBVrvj5KRKwPE2b0l8XYO5BS\n",
427 427 "XYnpy3+2jvC65jby9+RR8Nky+t0yl4jf39bjFq3uCWobq9mU+i3rD31NoGcoM4f9kqTIcZc1d1xJ\n",
428 428 "fT3/PZ7Of4+fIMLdnZvjBzIlPOxnJw7tK9SGOswHdmHeuxVLVjo2g0dhM2ZK6ynwbvQa1TebOVhY\n",
429 429 "x76CWvYV1OJub8OIEFdGBrsy0M/5kj9b+lzQWrH4ED6Broye1DmTBIrzlX63neOPvsbIle/jGNI1\n",
430 430 "s4mbLArPbczFzkbLY5PC0EnYalPfZODvq5+iuaWJB+f8H+7O3lf8nMamFjatOE5pUS2z5w/CTzrK\n",
431 431 "XxHVbKZl/TJMK75AP2kWtvN+2fat31hczslX/kn5+p1EPHh5IxTFpTNbWtiTsZE1Bz6nsbmOGUk3\n",
432 432 "MzFh7kUnQVVUlT2nC/niWBoHioq5OiaK+XFxRHlK95SfohiqMe/djnnnRtTyktb+XGOmoA2P6fJW\n",
433 433 "W1VVKahpZm+BgX0FtWRWNBLv58zIEFdGBLvi384uEn0qaOVnV7L2m2P8asFY9LKeYZeoPnCUlDse\n",
434 434 "Ydjiv+E2eECXHttkVvjrxhycbG14ZGKohC0gt/QEbyz7C8NjJvGL8Q90eOffsx3lh48PZ/jYcBlo\n",
435 435 "0g7m44cxffJ3NF4+2N32O7QBF54ktm2E4sk8Yh7/Df5zJrdrLjrx084uaL3m4Bek5e1nYsIcpifd\n",
436 436 "jI9b65xyBmMzyzIy+PLYcextdPwiPo7ZMdE4XeEM7X2RUnIa864ttOzcBBoN+jFTWkOXb+fN36eq\n",
437 437 "KifKG9maXc3ufAMWRWVkiBsjgl0ZHOiCfQcMrOozQUuxKHz2j92MmhxJ/3j/TqhM/K+GnAL2zruP\n",
438 438 "hK00V+0AACAASURBVDcex2dqslVqaDYrPLMhBw8HG/40vm+HrW3HVrJoy5vcNe1RRsdO67TjGKqb\n",
439 439 "WPP1EbQ6DTNvSMDVvfv3v+gOlKpyTIs/wJKTgd0tv0U3NPmSvtFX7jxIxnP/QIOG/k//Ds9kWUqs\n",
440 440 "s5QbiliX8hVbj64kvN8oGp1Hs7mgknGh/8/eeUZVdW5t+9r03nvvKNJRsYIdrIktakzvPTG9fCaa\n",
441 441 "k95PeqJpJ1GTaNTYsQuiIlVAQHrvve6+vh8knuMbCyBlb+QawwFD2GtNdlnrfp455z1dWDXGj2A7\n",
442 442 "25HauX5AEASUBTnI448gTziByNahW3SFR/abMWppk5ijBY0cK2hCS0PEdE9zJruZ4Wau1++v4Q0j\n",
443 443 "tNISSrmQXs0t940b+SAMApL6RhIWPIj7Y7fhfNtNQxqLWK5kbUwBNkY6PBPhMmSuykOFTC7lp6Mf\n",
444 444 "klWaxNM3vz8o40iUSoGzsYUkx5cwa+HoEUf5qyDIpMgObEe6dyvasxehs2AFIt3e1Y8KSiXVu46Q\n",
445 445 "+9Y3GPm64/P/HsbYV33Hzqgy1e3tfJucxJ85uVgpi/DTr2PZ+GWE+85UC9d5dUOQy1FkJneLrnNn\n",
446 446 "0fQNQHvqHDRDwhFp9y5lXtsu5XhhE8cKmmjpkjPd05zpnuZ4WuoPqC64IYSWuEvG9x/HseyusSMm\n",
447 447 "i4OAvLOLxCWPYTVjAt7P3z/U4QAglil4JaYQR1NdnprifMOIreaOBj7Y/jQWxjY8NPc1DHQHdwB3\n",
448 448 "VXkL+347h4OLGTMW+qGrN2Im+7/I05OQ/OcLNOyd0L39ketOkVwyQ3H2ZLyfu6/fZije6JS1tPJd\n",
449 449 "ahoxBYUsGT2Ku4ICsNTXI6XwJPsSN1PTXE502ApmBC7GUG+kSWEgELo6kSfGIT95GEVpIVrhkWhP\n",
450 450 "nY2G56grCqVWsZy4omaOFjRR3NTFVDczpnuZ429rNGgZjhtCaB3bm41cpmT2zWMGKKoR/kYpl5N6\n",
451 451 "z8vomJvg/8krKrV72CVT8PKBAtzM9XhisrNKxTYQVDWW8Pa2J4gYM5+lk+4fsr9XKpFzfF8OJfkN\n",
452 452 "zF0eiJPbSHGw0NaC5MfPUBTnoXvbI2iFhPfr8WUtbRR9sem/MxQfu22kQ7GPFDQ1sSE5ldjSMlaO\n",
453 453 "8eP2QH/M9f+ZDi+qzmZf0mZSCk8ydcw85oauxNbceQgivjFQ1td0D08/eQhEGmhPmYXWlFloWNqg\n",
454 454 "UAoklLWw/0IDGVXtjHM2YYanBWFOxkPirzjshVZDbTu/fpvA3WumYmA40pkzkAiCQNZLH9BZVEHY\n",
455 455 "z++joaN62+id0m6x5WWlz6MTnYat2MqrzODDHc+yYurDTA+8eajDASA/q4ZDf2bhF+zA5FleaN2g\n",
456 456 "DSnylNNIvv8ErUkz0Vl2F6IBHLUirqoj//2N1MacxP3x23C9e+lIh2IPya6v59vkVBIrK7k9MIBV\n",
457 457 "/mMw0b1211ljWy0xKb9xNH0no5xCmD9uNb6ON+5w74FGEASU+dnITh6iLiWZI54zOGTmj5WZEfP9\n",
458 458 "rJniZobBEFvODGuhJQgCf/yYjJu3FWOnuA1sYCNQ+NnPVO08TPjOL9EyVl3X3w6pghf35+NnY8hD\n",
459 459 "ExyH3QUwOT+Wr/ev5+F56wj1nDrU4VxCZ4eUQzvP01jfwbzlgTeUDYTQ2YHkly9R5GSg98Bzgzr4\n",
460 460 "ue1CIblvfk17dj5ezz+Aw9I5Ix2KVyC3oYF/JySSWVvHXcGB3DLGr08dhGJpJycy97A/eTOGuibM\n",
461 461 "G3vrSB3XACAIAueq2tmTXU9KRStTjcTMKYnDNfskWqGT0IqYg+aowCF9vw9roVWYU8vxfRe484nJ\n",
462 462 "aI7MvhtQqnYe4sIbXzJhz7fo2VkPdTjXpF0i54X9+QTaGfNAuMOwEVtH0razNf4bnlvyEZ72qpkq\n",
463 463 "FwSB7LQqju3LIXSiC+GRHmgMcwd/eWYKkg0fohkcju6q+4fMCbvxTBq5//oShVjSPUNx2sgIn7+p\n",
464 464 "7ejgs7NJHCsu5oHQEG4Z44ee1vXXFCqVir/quDb9Vce1cqSOqx9ol8g5nN/InuwGRCJYONqKmV4W\n",
465 465 "GP61e6VsaUJ+6ijy2BgEcRfaU2ejNWX2gFpFXAm1FFo76kzxtjL4658+lgba/7hYKJUCP30WT0SU\n",
466 466 "D54jo0EGlLasfM4uf4LxWz/F2M9rqMPpMa1iOS/tz2eUjSGPTnJS6wJ5QRDYGv818VkHeGn559ip\n",
467 467 "QW1IW4uYA39kIBHLmbs8AEvrwS3UHwwEcRfSXzciTz2N7n1PoxUw9toPGuiYBIGafSfIfetr9Oyt\n",
468 468 "8V37KKZBo4Y6rCGjQybjh9RzbMrIZJnfKO4PDelRirAvFFVnszdpE6mF8d11XGGrsDW7vE/aCJcn\n",
469 469 "t76TPdn1nCxqZqyTCQtGWxFgZ3jFBYMgCCiL85HHHUR2+hiaTm5oRUShNW7KoC141FJodZp7kNfQ\n",
470 470 "SV59J3n1XWiIwOei8OoWX7V5daSeLuPWh8JHVmwDiKyljdNR9+D1wgM4LB44b6aBokOq4NWDf1s/\n",
471 471 "uKrluB65QsbGg29RWpfPC0v/jamhxVCH1GMEQeDc2TLiD+UxYbonoRNdh43JqSI3E/E376Pp7Yfu\n",
472 472 "7Y8iMlQtIamUySnfvJuCj37AfEIw3i8+gKH7jXPTlyuV7Mi5wOdnkwh3dODJ8PE4mgzOLlNDWw0x\n",
473 473 "Kb9zLH0no51DmT92NT6OQSP3qiugFATOlrbya3oN9R1S5o+yItrXEnP93qVhBZkURWoCstgYFLnn\n",
474 474 "0Ro7Ge2IKDR8/UfsHf6X/5s6FASBug7ZX6Kr+19ufReSTineVgZE+Fox3dMck5G28n5HUCpJufMF\n",
475 475 "DFwdGP3GmqEOp8+I5d3jerQ0RLwyww0dNUozi6WdfLLrRUSIeHLR21ccD6LqNDV0sH9rBppaGkQv\n",
476 476 "DcDUXH1NTgWpFOkfPyGPP4zuXY+jNXbKUId0VeQdnZRs+J3ib3/DbuEMPJ++Gz3b6x/LpKoIgkBc\n",
477 477 "aRkfnD6DmZ4ez0+aiL/N0JQ7/F3HtS9pE8b6Zswbu5pw3xloaozcrwAUSoHjhU38dq4GLQ0RK4Js\n",
478 478 "meJm1i+2DMqmhv+mFuUytKfO6U4tWvV/BkzthdblyEwu50xyBb6zfThZ3D2zaKyTMdE+lgQ7GN/Q\n",
479 479 "7uD9ScHHP1J37Azjt32mkh2GvUGmUPLeiRKau+Ssn+0x5F0qPaGlo5F3/3gSF2tv7o96We0vzkql\n",
480 480 "QFJcEYlxRUTO9WVMqPo1KiiK8pB88x4ieyf07n4SkYnZUIfUY6QNzRR+/jMVv+7F+fabcX909bCz\n",
481 481 "hMiur+eDU2eobu/gmYnhTHdzVYn3mFKpIKUgjr1Jm6hrqSQ6dCUzgm7GQHd4Pf89RSJXEpPbwNb0\n",
482 482 "WuyMdVgRZEuYo/GAvFaCIKAsykV2IgZ5wnE03XzQioxCK2xyv3UEDzuhpVAo+f7jOKKXBuDs3p1C\n",
483 483 "aZPIOVbQRExuA81dcmZ7WxDlY4m9ycDk4W8E6o8lkLHmTSYe+E4tit97gkIp8Fl8GQWNXbwZ5anS\n",
484 484 "u6DVTWW8vfUxpvjNZdnkB1XiZtFf1FW3sW9rOsYmesy+eQzGpr1zSR8KBEFAFrMD2a4t6Kx+CK1J\n",
485 485 "M9T2NemqqCH/g++oOxiP+yO34nLPMjT11ftaWdvRwSdnznKytIxHxoWxdPQotDVVczFVUJ3FvsRN\n",
486 486 "pBWdItJ/AdGhK7ExcxzqsAaFdomc3dn17Dxfx2gbQ1YE2TLaZvA62AWpFHlyPPITMSiKc9EKn4Z2\n",
487 487 "ZDQa7t7X9XkedkIrI6mc7HOV3HLv+Mv+vKChi4O5DRwtaMLNXI8oH0umuJv1y+DI/kImVSDukiER\n",
488 488 "y5CI5Ui6ZIjF8u7vxTIkXd1fxWI5UrEMbR0tjEx0MTLWxchEDyMTXQxN9DAy1kVXT6vfL/hdZVWc\n",
489 489 "nnc/wd++gcXE4H499lAjCAIbEytJLGvl7bleWBqo3k5dQXUW7/+xhuVTHmJm0OKhDmdAUMiVJMQW\n",
490 490 "knqqhKlRPgSMVV3PM6GrA/GGjxBqq9B7Yu2QdDUNBO25xeS98w0tadl4PnMPjivmodEPXXiDiUKp\n",
491 491 "ZEtmFl8lJV8sdDcaQN+y/qS+tZqDKb9zLONPRjuHMm/srcPWj6uxU8b2zFr2X2hggospywNtcBvi\n",
492 492 "8gFlfW13AX3cQUQ6umhFRqM9eWafdqmHldBSyJV891Ec81cE4uh6dfdpqUJJQmkrMbkNZNd2MNXd\n",
493 493 "jPmjrPC2GtwaF0EQaKrvpLK0iYqSZipKmmht6kJXXxs9PS109bXR/eurnp4Wunra6Op3f9XT00JH\n",
494 494 "TwupVEFHq4T2VjHtbX99bZXQ3ipBqRQuEWFmlga4eFjg4GLWJ8NIRZeEhJsewmFZNG4PrBiAZ2To\n",
495 495 "EQSB387VcCC3gXfmemFnrDqr+fyqTN7/Yw33R73CWO9pQx3OgFNX3UbMHxno6GkTtXgMphaqVYOm\n",
496 496 "KC1E/OnraPoFo3vbIwNqPjpUNKecJ/eNr5DU1uP9woPYLpimFjf7rLo61h2PQ09bi9cip+Jprp4T\n",
497 497 "CbrruHazP3kLBrrGzB+7etj4cdV1SNmSVsOJwiZmeFqwLMAGW2PV+gwJSiXKCxndqcWUU2iODkY7\n",
498 498 "MgrNoPGIergrOqyEVlpCKQXZtSy9q3ct1PUdUg7nNbIrq54xtobcPc4BhwFKK8plCqorWqksaaKi\n",
499 499 "tJnKkia0dTRxcDXH0cUMB1dzrG2N+s1XSCqR094muSjE6mvbKS1opL6mDXtnM1w9LXDxtMTWweSa\n",
500 500 "5xQEgcw1b6HokhD09Xq1uNheD7uy6vjtXA1vRXviqgLF2XmVGby/fQ0PRb9GqJdqGZEOJEqFkqT4\n",
501 501 "YhJji5g4w4uQCS4q0Zkoi41BsmUDurc9hPbkWUMdzoAiCAINJ86S++ZXoKmBz4sPYhmpmh5cHVIp\n",
502 502 "n51NYl9ePmsmhnOzr49Kxtlb/uvHtZma5jLmhN7CzKAlGOmpn+lvq1h+cTE719eSZQE2mPWyg3Ao\n",
503 503 "ELo6kJ85gSz2IEJdFVqTZqIdGYWGo+tVHzdshJZcpuC7j+JYdGsw9s59K0AVy5Vsz6hle2YtM70s\n",
504 504 "WB1id911OoIgUF7UREFOLRUlzdRVt2FlY3iJsBqKGhSJWE55USOlhQ2UFDTQ1izGyd0CV09LXDwt\n",
505 505 "sLQx+sfFqeyXPyn59ncm7N+AlqFq7SwMFEfyG/k2oYJ/zfHEx3ro/uaLImvuayrn9j5YNNZ1ELM9\n",
506 506 "A4CoJQFYWA/N9AFBKkHy0+co8s6j98SraDq5DUkcQ4GgVFK9+yh5721E18YCnxcfxDw8aKjDusiR\n",
507 507 "wiLeOnmKCU6OPDsx/LIzCYcDRTU53XMV82OZ7BfN3LBV2Ftc/WavCnTJFGzPrGNHZi0RHuasDrbD\n",
508 508 "0lD1BdblUFaWIos9iPzkIUSWNmhHRqM1YRoig39el4aN0Eo5VUJJfj2L7wi77nM0d8n4JbWaE4XN\n",
509 509 "LA+w4aYx1uj2soaro03C+dQKMhLL0dTSwDfQHidXc+ycTNDWUb06h442CWWFjZQUNFBa2IBMqsDV\n",
510 510 "0xK/EEfcvCxpPZdD8m3PEv7nlxh6qe4HWtbciqS2EUFQgkKJoFQiKIXu7wUlgkIJyu6vgqBEJBKh\n",
511 511 "52CDnqMdGtqXf11Ol7TwUVwpa2e6EWg/+F1AuRXpfLDjaR6Zt55gj8mDfn5VQlAKpCWUcupIPuOm\n",
512 512 "ujN2itugusorq8sRf/oGGo4u6N67Zsgc3ocapVxO1R8x5H/wPYZeLni/8ACmwaOHLJ7Ktjbeioun\n",
513 513 "qLmF1yKnMt7RYchiGUwa2+s4lLqVI+e242Xvz7yxqxnjMlbldvCkCiX7cur5Na2GYAdjbg+1x9FU\n",
514 514 "dUoyrgdBoUCRntTtzXU+Ba3gCWhFRqE5Ouji2J9hIbRkUgUbP4xlyZ1h/To7rbxFzHeJleTVd3JX\n",
515 515 "mAMzvMyv6h4uKAWK8xvISCyjpKAB7zG2BI5zxt7ZVOXe+NeipamLotw60hPLkXRKME44wcQ7puF6\n",
516 516 "07ShDg2lXE5XaRUdBaV05JfSkV9CR0EJHfmlKLok6NpZIdLUQKTx1z9NDdDQQCQSdefUNUQXfy4o\n",
517 517 "lIgraxHX1KNna4m+iyP6LvYYuDqg7+LQ/dXVgSyJFm8dK2HNVGcmuQ5ey/6F8jQ+3Pksj8x7nWCP\n",
518 518 "SYN2XlWnpbGTmB3nkYhlRC8JwHoQBLA88SSSH/6NzpI70Jq5QO0+0wOBUiqjfNNuCv79I2ahY/B6\n",
519 519 "/j6MR3kO2vnlSiW/pGfybUoqtwf6c29IMDoq2k04kEhkXcSd38f+5C1oamgyN2wVk0dHo6M9tB27\n",
520 520 "CqXAkfxGfk6pxs1cj7vGOuBpOXwXJ0JbC7L4I93eXF2d3WN/ps4hraxS/YVWYlwRlaXN3LQ6ZEDO\n",
521 521 "mVndzoazFUgVAvePdyDU8VIx19YiJjO5nIykCvQNtAkY58ToIAd0VdgeoKco5XKO3f069e4B1GqZ\n",
522 522 "4zHKmuBwFxxczAblRiNtaqXhRAKtmXndwqqglK6SSnRtLDH0csHQ0wVDT1cMvbu/6tpZ9SkupUyO\n",
523 523 "uLKGzpJKukor6SqpvPh9Z2klSrEUDUdbsk3tcZoZTtTKaejbD+xop5zyVD7a+RyPzf8Xge4TB/Rc\n",
524 524 "6oggCGQmVxB74ALBE1wIn+aJ1gB0DwtyOdLfNiJPikfv8bVoevj0+znUHUWXhNIft1P0xS9YRozD\n",
525 525 "67n7BtxlPqO2lteOx2Kmp8drEVNxNTMd0POpA4IgkFF8hv3Jv1JQfZ6ZQUuYHbIcC6PBteARBIFT\n",
526 526 "JS38mFSFka4m94xzIMBOtSYjDCQXx/7ExiA7fYzcB15Rb6EllcjZ+GEst9wzDiu7gVvVCoJAXHEz\n",
527 527 "3ydW4miiyz1jHRDq2klPLKOypBnfADsCxzlh6zi8Puy5b31NS2oWYVs+QiJVcj6lknNnS9HU0iA4\n",
528 528 "3AW/YAd0dPtPUAqCQEduMbWH46k7FE9rZh4Wk0IxC/HrFlVeLhi4Ow+6r4+8rYPOkgrKTqVzZvsJ\n",
529 529 "7PJzMHG0wSpiHJYR47CYGIyWUf/VDGWXpfLRzmd5fOGbBLpN6LfjDkfaWsQc2ZVFQ107s28ag4un\n",
530 530 "Zb8dW9nUgPjTfyEyMkbvwecQGalf4fFgIm/voGTDVoo3/Ibt3Eg819yFvpNdv55DqlDwVVIyf2Tl\n",
531 531 "8NzkiSzw9hrZXbwMlY3FHEj+jfis/QR7TGbu2FV42fsP+Hkzq9v5NqECqULJ3WMdGO9sckO/PoJU\n",
532 532 "SmpmpnoLrYTjBdRVt7Ng5eAUZEplCn6LyaM0sQwDY12mR7gzJtheJeuurpea/bFkr/2YSQe+R8fq\n",
533 533 "v63RgiBQWtDIuYRSSgsb8Q2wIzjcpc/pG6VESuPpVGoPnaLuUDyCUoHNrMlYz56MxaRQlTNL7JAq\n",
534 534 "ePNwAcYlJSwWV9Aan0xLajYm/t5YTh2LZcQ4TEP8rljzdS2yy1L4aOdzPLHwLQLcwvs5+uFLflYN\n",
535 535 "R3Zn4+xhwbS5vhgYXd/7RlGUh/jj19CeuQDthSsv1luMcG2kTa0Uf7WZsp93Yn/zbDyeuAM9++vf\n",
536 536 "VclvbOSFw8ewNTRg/fRIrA1ujKac66FD3Max9J3EpPyGuZE10WGrGO8zvd/tIeo7pGw8W0lGdTv3\n",
537 537 "jHNguufVS21uJNS6RksilrHxg1hWPhiOpfXAb0uWFTZyfF8OIg0RY2d6sbmklfoOGS9Mc1WJ9v/+\n",
538 538 "pKusitPR9xH6y/uYhfhd8ffaW8WkJ5WTkViOhbUhEdG+PaqTk9Q2UHfkNHWH4mmIS8JolAfWsydj\n",
539 539 "M3syRqM8VH4FpFAKfHG6nPPV7fwryhNLDSVNiek0nEikIS6RzuIKLKaE4bRyPlYzJ/bY6DGrNJlP\n",
540 540 "dr3AEwvfwt/18qa7I1wZqUTOqSP5nE+tZOocbwLCnPpkBfF3PZbuPU+q/KxCVUZS30jRl5up2Lwb\n",
541 541 "+yVReDx+e58El0Kp5D/pGWxMSePpieEsGeWr8tcIVUOhlJOcH8v+5C3UNlcwJ2Q50wNvxsTg+vzF\n",
542 542 "pIrubv2tGbUsHG3FiiBb9Pvg0TicUWuhdepoPs0NncxbHjig52yoayd2/wXqatqJiPLBN8AOkUiE\n",
543 543 "IAjsv9DAD0lVrA6xZZGf9bBQ8IJCwdklj2EzZwruj67u0WMUCiUZSeWcPlqAi6cFU2b7/GMwsCAI\n",
544 544 "NJ1Opfjb32g8nYZV5HisZ0/GesYEdCzVZybc3wiCwPbMOrZl1LJ+tscl9g/S+iZqD8VTvmkXXeXV\n",
545 545 "OK6cj9OtCzFwuXI31PnSRP696yWeXPQ2Y1zGDcafMGyprWrl0M7zaGiImH3TmB6XFQiCgGzPb8gO\n",
546 546 "7UJvzXo03b0HONIbA0ldI0VfbaZiy55uwfXYbT0WXBWtbbx09BhKQeDtGdNxNh1J314vRTU5HEj+\n",
547 547 "laS844zzmU5U6ArcbUf16hiCIJBQ2srXCeW4mevzQLjjgPlPqjtqK7TEXTK++zCWWx+egLnlwPjp\n",
548 548 "dLZLOHW0gAvpVYyP9CBkoutli20rWsS8e7wEAx1Nno1wwcpQtZxte0vBJz/ScDKZcb//u9fpEqlE\n",
549 549 "TtLJYlJOleAf5kj4NA90NASq/zxM8be/o5RKcbt/BQ7LotE0UP0Zdj3hVEkzH8eV8dQUZya7/VMw\n",
550 550 "tuUUUL55D5V/xGAyxhun2xZhGzUVDd3/vk8ySxL5964XWXPTu/i59M5wd4TLo1QKpCeWEX8oj4Cx\n",
551 551 "Tkyc4YX2VYaFCzIpku8+QVlejN7Tr6NhYTWI0d4YSOoaKfpyU7fgWhqNx+O3XXFWqiAI7Mi5wIen\n",
552 552 "E7g3JIg7gwLRHEnf9iutnU0cTd/JodRtWJnYERW6okdpxbJmMV+fKae6TcrDE50Y6zQifq+G2gqt\n",
553 553 "kwdzaW+TEL00oN/PIZMpSIkvJulkMX4hDkyY7om+wdXFk0IpsDmtmt1Z9Tw2yYkID/Uc99CcmkXK\n",
554 554 "7c8x6eAP6Dn0vauuo01C/PZk6rftwTI3FYuQUbg/uBLLyHHDstYlt76TdQcLWexvzbIAm8umNRRi\n",
555 555 "CTX7YynftIv27EIclkfhdOsiqozaeO+Pp1hz03v4uVy/D9wIl9LRJuHYvhwqS5uZtcgPD99/3tiF\n",
556 556 "tha6PlmHyMQMvQefv2H9sQaL/xVcDsuicX/sUsFV39nJuuOxVLa1886s6fhY9l+Dwwj/RKGUk5R3\n",
557 557 "gpiU36hqKmVW8FJmBi3BzPDS571DqmBzajUxuQ2sCrZjkZ8V2oPoY6euqKXQGuXrz/cfxXH7Y5P+\n",
558 558 "kZ66HgSlQNa5Sk4ezMPeyZSp0T693i3Lqe3g3eMl+Nka8shEJwyvsoJWNeQdnZyadRc+Lz2E3aIZ\n",
559 559 "fT5Oa0YuxRt+ozbmJOZRkZS7BlMtN2DKbG9GBzugoQLjUwaC2nYprx4sYJSNIY9NckbrKn9nR1E5\n",
560 560 "FVv2ULr5T2r023C/YxkTHnjkkl2uEfqX4rx6Dv+ZhY2DMdPnj744kUFZUULXh2vRmjANnWV3DcuF\n",
561 561 "gKoiqW3oFly/7r0ouE52tvN67EkWj/Ll0XFhN6Qv1lBSUptHTOpvJOQcJtRzKnNCb8HT3p/DeY18\n",
562 562 "n1TJWEcT7hnngIWBejq6DwVqKbTaag2RiuXMvnlMvx23uqKFQzvOo6EpYtq8UdccSn01xDIF3yRU\n",
563 563 "kFTexvPTXNXGPyTz6bcRlEoCPnml148VFApqY05SvOE3ukoqcblnKU6rb0LHvHtLuaKkiRP7LyCT\n",
564 564 "KYiI8sXN23JYFrN2ShW8dawYuVJg7Uz3qwrtupYq1v98D8t05mB0rJT2vGI8n7wLxxXz0NAZuYgN\n",
565 565 "BDKZgrPHC0lLKCVsihshJvXIN36AzqoH0J46e6jDu2GR1DZw/qtNfFZXTYm3M29Oi2BiUP9d30fo\n",
566 566 "Pe1dLRzL2MXu1GPUay3FxMCKZ6b5EGCvntmaoaSnQktz3bp16wY+nGtTVFRE8vFa5q8IRFfv+m9G\n",
567 567 "SqXA2ROFHNmdzaSZXsxYMBoTs+vbJdPS1GCCiykOJrq8f6KEli45AXZGaKrwTk713uOUb9pF6I/v\n",
568 568 "oKHTu12V+uMJpN79Ei1p2bjet5wx7z2PxcSQS2wZTMz08Q9zxMBIhxP7cii8UIejqzl6ajBItDdo\n",
569 569 "a2oQ6WFOXn0nPyRVEexgjOlljGtbOhr5168PMXf8rcxeeD8Oy6IxC/On9MftFHz4A1rGBt3dlyO7\n",
570 570 "K/2KpqYGLp6W+Pjb0bJ9G3r7/0PLsicxnz59WAp/dSGvq5MXmmrwCRrNMyVNtLz6KR15xRh5u6Jj\n",
571 571 "oX6NMsMCDR2Sam051xLIDHctjDo3EZP4Ba2dTdiaOWKkP7w8IweSqqoqPDw8rvl7KrWj1VShx8yF\n",
572 572 "V7Yc6CktTV3s35qOSEPE3GUB1y2wLkdzl4yP4kpp7pLz2mwPLFVwu1VcVcep2XcR+tO7mIX13NCu\n",
573 573 "I7+EnPWf05FXjO+6x7GJmtqjm5VCoSQ5vpjE2CImzfImeLxzn1rwVZ0DFxr4LrGSxyY5Efk/NXud\n",
574 574 "knb+9euDhHhM4ZapD//jcY1n0sh//zvElTV4PXMP9otnd48OGqFfEBQKpL98hfx8Kg3LnuZIfCPG\n",
575 575 "ZnpMnz8aSxv12H0eLgiCwO9Z2XyakMhLUyaxwKe7y1PW3ErJ939Q+t02LCaF4PHkHZj4jzjyDxbn\n",
576 576 "q9v5+GQZjia6PDbZCeu/Gryqm8o4nPYHJzJ342Hnx5yQ5YR4TEZDY+T6dDXUMnXo4+WHkcn1daxl\n",
577 577 "pVVybG8O46a6MXaK+4DWDQmCwOa0Gvbl1LNutgfeVqpjsicolSStXIN5eBBez9zTo8fImlvJ/+gH\n",
578 578 "KrcdwOOx23G9d1mfaosaats58EcGWtqaRC/xx9RCdZ6X/iKvvpM3jhQx0dWU+8Y7olRKeXfbE9ib\n",
579 579 "u3LvnJeuKkwb4pPJe3cDsqYWvJ65B7tFM0d2uK4TQdyF+LM3QKlA7/G1iAwMUSiUpJ0p5cyxAvxC\n",
580 580 "HJk007NfdstHuDodUinrTsSR19jIx3Nm427+z50reUcnZf/5k+Kvt2AS4IPHU3diPrb/G6BG6KZD\n",
581 581 "quD7xEriS5p5ZKITU90uP2pNKhNz5sJhDqZupbmjnplBS5keeNM/iudH6EYthdb/nXXYG8RdP2Jl\n",
582 582 "SQAAIABJREFUMg7vyqKuspV5K4L6dQj1tYgtauKz+HIen+xEhLtq5LmLvt5Czd7jjN/xxTVNNZVy\n",
583 583 "OWU//0nBh99jOy8Sr+fvQ9fK4rrOr1QKJJ0sJjG2kEkzvQgOdxl2u1ttEjnvnSihVSzDTroBPW0t\n",
584 584 "nlz4Vo9WgYIg0BCbSN67G1B0dOH13L3YzoscEVx9QGhrpeuDV9BwcEH3vqf/sUvY2S4h7mAehRfq\n",
585 585 "mDLbG/9Qx2H3XlQVLtQ3sObgIcba2/Py1MnoXePaoxBLqPh1L0Vf/IK+iyOeT92JxZSwkXRvP3Km\n",
586 586 "pIXPTpUR5mTC/eMdMO7haLXC6mwOpW3j7IUjBHtMZnbIMnwdg0dem//hhhJaZYWN7N+WjudoGyKi\n",
587 587 "fK/qqTNQ5Nd38tqhQub6WrI6xG5I34yt5/NIvOVJJu7feFUjTeiuw8p59VN0bCwY/fqTGPt59Wss\n",
588 588 "w313S6FU8vKW/0dJfTnPLvmYsc69W/kJgkD9kdPkvb8RQa7A5+WHsJ45Mmi6pygb6+h650W0Qiag\n",
589 589 "s/K+q37uqitaOLo7G6VCyYyFo3FwUY1F0XBAEAS2ZefwyZmzvDh5Igt9e5cOVMrkVG0/SOFn/0HL\n",
590 590 "xBiPx27DJnrqyMLjOmjqkvHlqXLyGjp5aooLwQ59G6XWLm4lLnMvB1O3oqWpzcygxUwZMw8jvRGP\n",
591 591 "rUERWrt27SIxMRGA0NBQFi9efMnP4+Pj2bdvH9ra2hgaGvLII49gaHh5W4W+CC2FXMnJw3lkpVYS\n",
592 592 "tcT/sj46g0ljp4x1hwqxNdLhmUhX9C5jgjrQKLoknI66B/fHb8dxefQVf68jv4ScdZ/RUVCK72uP\n",
593 593 "9bgOqy8M592tLSc+I7MkkUURH/BxfA03+9twS6BNrycJCIJA7YE4Lqz/DGM/L0b96yn0HW0HKOrh\n",
594 594 "gbKylK73XkZ79iJ05t/So8cIgkD2uSpiD1zA2ePykw5G6B0dMhnrT8Rxob6Bj6Nm4WHedwErKBTU\n",
595 595 "7Iul6ItfkLV14P7QKhyWR6OpN+JM3lMEQeBgXiMbz1YS5WPBbaH2/XIvEgSBrLIkjpzbQVphPGO9\n",
596 596 "pjEzaDE+jkE37C7XgAut7OxsDh48yJNPPgnAV199xZQpUwgI6M6zKxQKvvzySx588EF0dHSIiYlB\n",
597 597 "LBZz0003XfZ4vRVaDbXt7P3tHMamekQt8b/uQbP9hVSu5OOTpZQ2i1k/22PQ3eSzXv4IaUMzQV+v\n",
598 598 "v7y5ZqeYvPe+pWLrX3VY9ywdNI+n4ba7tTfxF46c28G6WzdiYmBOXYeUN48UY6qnxXORLhj1cIv+\n",
599 599 "f1GIJRR9/gsl32/rfn3uv6XPQ6yHM4rCC4g/ehWd5fegHRnV68dLJXIS44pIPV1KwFhHwqd5DrtO\n",
600 600 "2cEgt6GBNTGHCbW34+Upk9DX7p/nsHusVxpFX26i5VwOrvcuw/nOJRdtZUa4PDVtUj6KK6VdImfN\n",
601 601 "VBe8BqhuuLWzidjMPRw5twNNTS1mBi1m6pj5N9wu14DbOxw6dIiJEydiY9PtMm5qakpiYiLBwcEA\n",
602 602 "aGhoEB4ejuZf9RLnz5/H2toaZ2fnyx6vqKgIe3v7Hp07PbGMfb+nMz7Sg8i5vuj04YY2UGhqiJjs\n",
603 603 "akq7VMkncWWMsTUcNLFVd/gUxd9sIezn99HU/2dTQXNqFkmr1qBlYkTYT+9hFTkOkdbgpVkNDHXw\n",
604 604 "D3Oiq0PGgW0ZaGtrYudoqparodjMPfyZ8ANrV36NuVH3TqqhjiYzvczJre/k24QKAu2Nem3+p6Gl\n",
605 605 "hcWkUGznRlLy/TaKv9qMsZ/XyO7W/yDPSEby6evo3rsG7YnT+nQMTS0NXDws8QtxuGh4KhKJsHUw\n",
606 606 "QWPEEfuaCILA9pwLvHj4GE+Ej+PhsWFo92MHrUgkQt/ZHoclc7CaOYG6Q6fIfukDJNX1GHm7oW3a\n",
607 607 "tzTYcEUQBA7lNfLG0WJmeFnwbITrgN53dLX18XEMIir0FpytPEnOP8EPh9+lvKEIEwMzLI2Htnxm\n",
608 608 "sOipvUOfhdapU6cYM2YMZmbdHSUymYyUlBTCw8P/8buxsbHk5+ezdOnSKx6vJ0JLqVBybF8OWamV\n",
609 609 "LL9nHO4+Vir5YopEIvztjHAw0eWtY8VYG2rjbjGw6QlJfSPJq58l6It1GHm7XfIzpUxOwcc/kPPa\n",
610 610 "p4x67XG8nr4bTYOhSZeIRCIcXc3xHGXDqaMFFOTU4u5jjZYaTYVPzo/lxyPv8/9WfIWd+aULB00N\n",
611 611 "EeOcTTA30ObtYyWY6mnhZdn7VaWOuSkOS6PQsTQj85l3aM8pxHxc4LCZI9lXZGdOIP3uI/SeeBWt\n",
612 612 "gOsfa6Sjq4XnaBs8R9mQmVzByUP56BvoYGVrpJLXFlVAIpfz2ok4DhYW8s2CeUx0chrQ8+lamWM7\n",
613 613 "NwKHpdG0nsvh/Avv0XY+DwNXR3RtR7rhmrtkvHeihLOlrbw224MId7Nely70FZFIhLWpA+G+M5ke\n",
614 614 "eDOtnU1si/+GQ2lbUSjl2Jo5oas9fFPzAy60cnNzMTMzw9a2e6VdWVlJbW3txR2tv/njjz+or6/n\n",
615 615 "vvvuu+rxriW0JGI5uzan0tkuZdndYy+O2VBlnM30GOtkwsdxZbSK5QTaD8zFWxAEzj34KlbTxuO0\n",
616 616 "euElP+vILyHl9ueQNbUQtvnDXvlpDSQGhjqMCXGkpqKV4/tycHIzv25rj8EgtyKdT3e/xPNLP8HN\n",
617 617 "xveKv+dmrs8EZ1O+PlPB+ZoOgh2M0O1lnYRIJMLY1wPn1YtoTs4k64X30TI1xsTf+4YUAbLDu5Bu\n",
618 618 "/QG9599G02tUvx7bwFCHUUH22DqacOZ4AWkJpZhaGGDWB5E8nKlp7+CBPfvQ19bmy3nR2F6h5nYg\n",
619 619 "0DI2xCpyPM533IykpoHstR9Tf/QMOpbmGLg63JCfiTOlLfy/gwUE2Rvz0gy3i75YQ0H3Llcgc0Ju\n",
620 620 "wcXah9SCOH44/C6FNTno6xhgY+qISDS8dosH3LA0JyeHmJiYizVaX3/9NZMnT76kRmvjxo24uroS\n",
621 621 "HX3louy/uVqNVktjJ9t/TsHJ1ZwZC0ejqWZb+81dMl4/XISZvhYvTHPr9Q33WpT98idl/9nJhD3f\n",
622 622 "XhzxIggCZT/uIO/9DXg/dz/Ody1W2QvRhfQqDu/KYmqUDwFjnVQ2zprmcl7bdC8PRq8lxHNKjx4j\n",
623 623 "kSv5LrGS+OJmno5wIcyx7zUMrZm5ZL3wAYjA793nMBnj3edjqROCICDb8Quy+MPov/AOGjY9KzG4\n",
624 624 "nvPlnq8hLiYXMwt9IqJ8sRlEuxhVJbWqmjUHD7E6wJ/7Qoa+zV8plVG14xDF3/6GUirF9d7lONwy\n",
625 625 "F60h2q0fTDql3ePgUiraeC7SlUB71TTk7ZS0cSr7IMczdtHYVkuE/wKmBSz6RyZAXRmUrsM///zz\n",
626 626 "kq7DJUuWsGnTJhYuXEhubi5fffUVLi4uF38/JCSERYsWXfZYVxJaFSVN7NqcRnikByETXYb8w91X\n",
627 627 "pAolH8aW0tgpY/1sDwz6yYKiq6KGU3PuZvwfn2E8yhMAcXUdmWveQtbUSuDnr2Lo5dov5xpIGura\n",
628 628 "2bUpDTsnU2Yt8hsSi46r0SFu49VNdzMnZDlRoSt6/fiUilY+jC1lkqsp94537HMXkKBUUr55N3nv\n",
629 629 "fIvDsii8n39gWKcTBaUS6c9foMg9j95zb6Fhdn3+br1BoVCSfraM08cKcPOyYtIsL8zUvIGjr2zL\n",
630 630 "yuaThLO8NWM6Ea4u137AIPJ34XzJxt9pPJOG48r5uN69DH1nu6EObUDIrG7n/RMlBNob8dAEp6vO\n",
631 631 "XVUlyuryOZ65m5Pn9+Fg6ca0gEWE+8xCT0d9hfGw8NH62+V97rKAIbdu6A8USoEvTpeTW9fJm9Ge\n",
632 632 "l52V1xsEQSDltucwDfW76P5evesoWS9/iMtdS/B48k616liTSuQc2nme+pp2Ft0ajLnV4KUlroZc\n",
633 633 "IePdbU/iaOnOXbOe6/Nx2iRyvjhVTl59J89Pc8XXuu9/n7S+iey1n9CamUvgF+swDbxyGlNdEeQy\n",
634 634 "JN+8j9DcgN6a1xEZDM37QSKWk3Syu0PRe4wtE6Z73jCWEDKFgnfiT3OmvILP50Zd1uVdlegsraT0\n",
635 635 "+21U/LYPi0mhuN53C+YThof9gFSh5OfkKg7lNfLEFGcmuar2a3El5AoZKQUnOZ7xJxfK0wj3ncm0\n",
636 636 "gJvwdghQu9dJrYWWoBSIP5JPVlolS24Pxcpu+HSYCILA90lVnClp4e25ntfVGVKx9QDFX21m4oHv\n",
637 637 "UHSJyX7lI5pTsgj8/FXMQsf0Y9SDhyAIpCWUcepwHnMW++M9Zmi77QRBYMPBN2lqr+O5xR/1y+yv\n",
638 638 "E4VNfHGqnIV+VqwKtkPrOjzFKrcfJGftv3F9cAUej64eNrMTBZm0e6SOIHSP1OnlQPSBoKtTSvLJ\n",
639 639 "YtISyvANsCN8mseAzFFVFRo6u1hz8BCG2tq8N2sGxrqqYaHTE+QdnVT8vp+SjVvRMtDD9b7l2N00\n",
640 640 "S239uIoau3j3eDF2xro8NcUZs2FiRdLYXkfc+b0cT98FQIT/fKb4zcPadGDLA64XhVxJwolC9Mxb\n",
641 641 "1VNoyaQK9m9Lp71Vws23haiMP1Z/8+u57hmJ78z1wsGk93+jpLaB+Ol3ELb5Q5RSGecefhXrWZPw\n",
642 642 "ffWxYVGjUFXWzO4t5/ANsGXqHJ8ha7nfffZn4s7vZf3q79DX6b8dlYYOGR/GldAmUfB8pCvOZn1P\n",
643 643 "/3WVV5PxxBsICgWBn7+KvrNqX6SuhSCVIv50PWjroPfoy4i0VOum0tkhJSmuiPTEckYF2RMe6aEW\n",
644 644 "zTm9IbuunscPxLDA25vHx49FU00d2gWlkvpjCZRs/J3WzDycb78J59tuQs/BZqhD6xGCILA9s45f\n",
645 645 "z9Vw33gH5nhbqN2uT08QBIH8qkxiM/dw5sJhnK08mTpmPuG+MzHQVa36s6qyZmK2Z2Jiro+bv0j9\n",
646 646 "hJaPlx87f07BwtqIOYvHqFXLf1/Yk13P5tRq3or2xK2X9g+p976MoacL+i725L39Lf4fv4TNnJ4V\n",
647 647 "aKsLXZ1S9v2ejkyqYMHKoEHvSjybe4wfD7/H67f9gJVJ/9d7CILA7ux6fk6p5vZQOxaO7rtdiaBU\n",
648 648 "Uvz1rxR+8QujXnsch+XRanlBFqQSxB+/hsjAEN2HX0J0jVl5Q0lnu4SzsUVkJlfgF+LA+Ah3teic\n",
649 649 "vRb78vJ5My6etRFTiPbyHOpw+o323GJKv99G1c5DmE8MweXOxVhGjFPZMT8tYjkfnCihRSzn5Rlu\n",
650 650 "2BkPz02H/4tMLiW1MJ6483vILEkixHMyEWPmE+AWjqbG0F0PZFIF8YfzyEqrZMb80fgG2pGamqp+\n",
651 651 "QivxUCtB450Jn+ahljeJvnCsoJGvTlfw+hwPRtn0bMekevcxct/9BovwYJoS0wn94R0MPVWrQLW/\n",
652 652 "EJQCp48XkH62jPkrgnB2H5xi6MLqbN7e+hgvLv8MTzu/AT1XeYuYd4+XYKijyTMRLtfVot16Po/0\n",
653 653 "R9Zj5OOG33vPq5WTtiARI/7oVUSm5ug++LzapEE72iScjS3kfEol/mGOjJvqjqEa3hQVSiWfJJzl\n",
654 654 "QH4hn82NYpTV8PSokrd3ULXjMKU/bUfR3onz7TfjuHI+OpaqU/OUXtXOu8eLmeZpzt1jHa6rvECd\n",
655 655 "aetq5nTOIWIz91DfWs2k0VFEjJmPq43PoGqE0oIGYnZk4uBsxvQFozH46xqtljVahjoO+PoPz06R\n",
656 656 "q5FQ2sIHsaW8PN2NEMer16NJG5o5GbEaHVsLDJwdCPz8VbSMVaNofCApzqtn39Z0IqJ88Q9zHNBz\n",
657 657 "1bdW8+ovd3PXrOcZ7zN9QM/1NwqlwK/nath5vo7VIbYsHG2NZh8vroouCblvfUX1nmMEfPIKVpHj\n",
658 658 "+zna/kcQdyH+cC0iS2t0H3gWUT/Uwg027a1iEk4Ukp1WhX+YI2GT3dQmpdgmkfDsoSNIFQo+mjML\n",
659 659 "c331Lz+4FoIg0JKaRdlPO6jZH4v17Mm43LkYs3FDV5StUApsSatmT3Y9T0e4Mt5ZfRZKA01VYwlx\n",
660 660 "5/cRd34vejqGTBodxaTRc7A1GzjDXHGXjNgDFyjKrWfWTX54jro05ayWQqu3Q6WHE+lVbfzrSDFP\n",
661 661 "TXFmstuVV1aJq56m+ew53B++Fc+n71bZbe+BoKGune0/JTMq0J4ps7wHZDB1l7SDdZvvY4rfXBaO\n",
662 662 "v6Pfj38tSpvFfBZfRodUwROTnXu8y3k56k+cJeOpN7FbMB2flx9GU181d1mErk66PngFDVtHdO9b\n",
663 663 "o5Yi639paxGTdLKY8ykVePnZMC7CHUtr1aoz+V8q29p4eO+Bi/MK+3OUjrogbWql4re9lP1nJxq6\n",
664 664 "OrjcsRiHZVGDuoht6JTxzrFiAF6c5oaloWrVJqoKSkHJhfJznMo+QELuEWxMHZk8OpoJo2ZdHIfW\n",
665 665 "H+Rn13L4z/N4jrIhItoX3cu4BIwILTUkt66TtQcLuH+8I7O8/5kiy177CSXfbSPoy3XY3zxrCCIc\n",
666 666 "ejo7pOz8OQVjMz2ilwag3Y91fAqlnA92PIO5kTX3z3llyFa1giBwtKCJDQkVTHYz4+6x9n0aUA3d\n",
667 667 "N5Dzz79LR24JQV+vx3i0atXcCJ0ddL3/MhpO7uje/cSwWjh0dUpJO1NK6plSHF3MGR/pjr2z6qSn\n",
668 668 "AM7X1vHo/gPcFRTEnUHq117f3wiCQOPJZEp/2k5DXDJ2C6bjuGo+ZmH+A/rcJJa18mFsCfNHW3Fr\n",
669 669 "sF2fd7NvNOQKGZkliZzKjiE5/wRutqOYPDqK8b4z+zzgurNdwpE92dRUtBK1xP+q5SojQktNKWnq\n",
670 670 "4uUDBSwPtOXmMd3qXCmTk/3KR5Rv2s2YD1/AaeWCIY5yaJHLFBz4I5PW5q5+7Uz98cj7lNcX8uKy\n",
671 671 "T9HSHPrVZJtEzg9JVZwqaeb+8Y7M8DTv08VeEAQqf99HzutfMHr9Ezgsu/akhsFA6Gin672X0HT3\n",
672 672 "QeeOR4eVyPpfZFI5GUkVJJ0sxtRCn/ER7rh5D/2c1qNFxaw9doJ10yKY7eE+pLGoIuKaeiq37qd8\n",
673 673 "y15EGiKcVi7A4Za56Fr3X52oXCnwY1IlR/ObeHG6K4H2w8fKaLCRysSkFsZzKjuG9OIE/JxDmTQ6\n",
674 674 "ijCvyB6bouacq+Lo3mzGhDoyaabXNRfyI0JLjaluk/Di/nzm+Vpxs6MOaQ+spbO4HMvIcQR8/MpQ\n",
675 675 "h6cS/O21lp1WyZI7w7C0ub7UTEzKb8Sk/M6/bvsRQz3Vutjl1Hbw7/gyjHU1eXySc5+tINqy8km9\n",
676 676 "92WsIsczav0TaOgOnTeV0N5K1zsvounrj85tDw+56BgMFAolF9KrORtbiEhDxPgId3z97YbEuuSX\n",
677 677 "9Aw2pKTx2dwoAm3Vw+pgqBAEgeaz6ZRv2UPN/lgsJgbjtGoBVjMmXpchdHWbhLePFWOsq8WzES7D\n",
678 678 "xhtLFeiUtJOUd5z47BjyKtMJdJvABN9ZBHtMuazo6uqUcnhXFvVVbUQvD8TeybRH5xkRWmpOfYeU\n",
679 679 "N745wpyfvsFhYiBNielMPb7phih87w2ZKRXEHrjA/FuCcPXqW5dUWmE8X+9/nfWrvxvQwsrrQaEU\n",
680 680 "+DOrjs2p1Sz0s2ZlkG2fZmbKWtrIePINJLWNBG94A33HwTeEFdpa6Hr7BTT9Q9FZdf8NIbL+F0EQ\n",
681 681 "KLpQR8KJItpbxYyd4saYUEd0+pge7g0KpfIvp/dyvp4/D0cT1VpUqDry9g6qdx+jfMseuoorcFgW\n",
682 682 "jeOqBRh5927M2cmiZv4dX8aKIBuW+NugcYN9BgaT1s4mkvKOk5B7hNyKDALcxhPuM5NQr6no6xhS\n",
683 683 "eKGOgzsy8Q2wZ8oc716Vo6il0DJxc8fLwnyoQ1EJqv48zPmXPuTYwhWY11Rx5x3TsZ4xYajDUknK\n",
684 684 "ihrZvSWNqXO6h1L3hqrGEl7bfC/P3PwBvk7BAxRh/1HfIeWrMxUUNHTy6ERnxvWhK0lQKin6chMl\n",
685 685 "3/5OwOevYhUxbgAivTzKlibE77yAZnA4Orfcc8OJrP9LRUkTiXFFlBc14R/mSPAElwGbp9ghk/H8\n",
686 686 "oSN0yWR8Ej0HEzVyeldFOvJLKN+yl8qt+9F3scdx5XzsFs5A2/TK4lWhFPgusZK4omZemeF2Xc0u\n",
687 687 "I/Se9q4WkvJPkHDhCLmlmYxmFTpdjsxdGoD3qN4vsnsqtDTXrVu3rg/x9jtFRUU8fSqBBd5e6Gvf\n",
688 688 "2FuoRV9toeDjHxn368cY5+SwwzccC3/v65qNN5wxNdfHc5QNh3dl0d4qxsXDskc38E5JO2/+/giL\n",
689 689 "J9zDuEGycbheDHQ0ifQwx8FEjy9Pl3G2rBU3c30sDHr+mRGJRJiPD8Ik0JeMx15HKZFgPj5wwEWP\n",
690 690 "0NaK+O3n0QydiM7yu294kQVgYqbPqEB7fAPtqalo5ciuLCpKmjEw1MbUXL/fnqPajg7u370XJxMT\n",
691 691 "PpgzC4Mb/BrbH+hYmGEVOQ7X+25B19aSmj3HyX7lY1rO5aChrYWBiwMirf/ujjR2ynjtUCFtEjlv\n",
692 692 "R3vhqCbWH8MJHW093Gx9cTecQGemL8ZmerQ6HGN76qdcqEhDoZBjZWKHjnbPXpuqqio8PDyu+Xsq\n",
693 693 "taN1VCwlo7aWDQvno3MDthgLSiUXXv+c+qMJhG35iK6yKs499Cqee37gpbgqVofYMW+U1VCHqbJ0\n",
694 694 "dkj585dUDI11mLs88KpbwEpByUc7nsPM0JL7ol4exCj7D5lCyb6cBjanVRPmaMydYQ7YGveu7kpc\n",
695 695 "VUfa/a+gbW5K4Gdr0TYbGN8eoaOdrneeR9MvBJ2V942IrCsgkyrIPldJyqkSBAFCJrowJsQBbZ2+\n",
696 696 "pxVzGxp4eO8BbhkzmgdCQ0ae+wFE1tJGzd7jVG6LoS07H9v503BYGk2lmydvHSsh2teS1SEjXYVD\n",
697 697 "hVyu7HZ3T61k9k1+ePl1l050StpJKYgj4cJhMksS8bAbzVjvaYz1mnbVuYtqmToMCg7m8f0x2Bga\n",
698 698 "8lrk1BvqgqCUysh48g3ElbWE/Pgumro6xM+6E99XH8U2OoKKFjHP78vnjjB7onyGp2NzfyCXK4nZ\n",
699 699 "nkFTfSdL7gy76OD7f/kjfgPnik/z6spvVKLD8HrokCrYllHLrqw6onwsWRlki8llPF+uhFIq48Lr\n",
700 700 "n1N76BQhG9/EJMCnX+MTujr/2114+yM31Oe6rwiCQFlhI6mnSykvbmRMqCMhE1ww7WVa8WRpGS8e\n",
701 701 "OcpLUyYz39trgKId4XJ0VdRQufMQf6bXEOsfzh3iMmYvHI/xKNWyWLlRqK1qZd/WdMwtDJl9s98V\n",
702 702 "u9Ulsi4yihNIzDtOSkEcFsY2jPOeRphXJG42vpdcv9Qydejo4MA0N1e+SExGISgJtB38Qt2hQN7W\n",
703 703 "QcpdL4CGiNAf3kXb2JC8t79By0APz6fuAsBET4vxzia8f6IUMz0tPCyHv3NzX9DQEOHtZ0trcxex\n",
704 704 "+y/gOdoGXb1LhVRS/gl2nN7IK7d8oXIdhn1BR1ODYAdjZnlbkFzRyuenykEALyuDHo3uEGlqYj1j\n",
705 705 "IrrW5px7ZB06lqaY+PeP2BIkYsQfrkXD3hndOx8fthYO/Y1IJMLUwqA7rRjQnVY8/FdaUU9fC1Nz\n",
706 706 "g2sK1u3ZObwZF88n0XOIdO1dsfYI149CX5/vu8wocPTgtUAjrLOzyH3zKyp+34+ivRM9exu0TVXX\n",
707 707 "yHa4oFQoORtbyOFd2Uye6cWUOd5XbTzR0tTGwdKNcd7TWDDuNpytvCity2P7qY3sTfqF2uZKtDS1\n",
708 708 "sTC2oaamVv1Sh393HVa0trFq+07emjGNKS7OQxvYACOpbSB59TOYhvjh9/YziDQ1aT2fR9ItTzH5\n",
709 709 "xM/oWl3q2VLS1MUL+/N5MNyR6Z6DM/dPXUk6WUxyfDHL7h570f6hoqGI9Vvu57klH+PtEDDEEQ4M\n",
710 710 "pc1ivk+sJK++kzvD7JnpZdHjVEXbhULS7n0Z84kh+L35NBo6fd/tE2TS7tmFxmboPvSc2ju+DzV/\n",
711 711 "pxXTE8vpaJMQMNaJMaGOmJpfuugSBIENKalszcphw8J5uJmplknqjUBFi5j1h4vwtjLg8cnO6P3V\n",
712 712 "ISwolTSdSaPyj4PU7D+BgasjdgtnYLdwBvrON974uYGmpamLvb+dQ0tbg+ilAZiY9X2DQhAEyhsK\n",
713 713 "Sco7TlLeCWqay3lkygfqlzr8X3uH5KoqnjxwkP/cvAgP8+HZidhRWEbSqqdxXDEPzzV3IRKJEJRK\n",
714 714 "EhY+hOOq+TjfdtNlH1fc2MWL+/N5ZKITER7D87npL86nVHDiwAUW3x6KqY0mr/znThaF38n0wMs/\n",
715 715 "t8OJ89XtbEispEuq4N7xDoxzMulR2k7e3kH6o68ja20jZONbfRq2K8jliD99HbS00Xv0ZbUZEK0u\n",
716 716 "1Fa1kpFUTs65KmwdTQkY54TXKBtEmiLePnmKpMpKvlkwDxvDkQaaweZUSTMfx5VxZ5g980dduTFH\n",
717 717 "KZPTGJ9M9e5j1ByIxcDF4S/RNR195yvXBY3QM3LOVXFkTzbhke6ETXLr95FtjW21FOeVq7fQgu6t\n",
718 718 "729TUvl16WLM9IZXh0ZLajYpdz6P1wv347x60cX/L/vPTiq27if8z6+ummYpaOji5QP5PD7JmSnu\n",
719 719 "IyvWq1GQXcuB7Zl0OMRj5aTNPbNfHOqQBg1BEDhV0sL3SZUY62qxKsiW8c7XFlyCQkHuW99QvecY\n",
720 720 "Yf95DyPfnjuHCwoFki/fRpBK0HvyVURa6l0Dp8rIZAryz9eQnlRObW0rCQ6tKAxEfHPTvBH7hkFG\n",
721 721 "oRT4KbmKI/mNrJ3p3ivrBqVMTuOpFKp3H6VmfywGzvbdomvRjBHR1UukEjlHdmdTWdrEghVB2Dr2\n",
722 722 "zHy0L6hljZa9/aVvqNHWVlS2tbMpI5N53l5oDpP6jrqjZ0i9/xX8P3wRh8VzLv6/pK6RtPv/H8Eb\n",
723 723 "3kDX5uoF7xYG2gQ7GPP2sWKcTPX67BZ+I2BhbUhO8zHaz7sxc/xcrG0HprNOFRGJRLiY6bFglBUG\n",
724 724 "Opr8klLF3px6jHS0cDbTu6JRokhDA6vIcWibGJH+yHqMfN0x9Lh2Gl9QKpFs+AChrRW9p9Yh0h46\n",
725 725 "9/kbAU1NDaztjHH3t+bb+iwUMiWTSk2puNDQbeNhZYDmEDjP32i0iOWsP1REXaeUd+a2hClfAAAg\n",
726 726 "AElEQVR64dTL67FIUwMDN0ds5kzB7cEVGLg50ZSQRs66z6jefQRZUyva5qZoW5iONJNcharyFrb9\n",
727 727 "kISZhQE33xaCifnAeNJdPF8P7R1UWmgBTHByJKawiHPVNUS6qX9BZ8XWA2S9+D6hP777D6PIrBfe\n",
728 728 "wzw8CIdlUT06lqWBNkH2xrx5tBhXMz2cRnxZLsvZ3GPsPfcd9y59gKN/5qGto4XdAK5yVBENkQg3\n",
729 729 "c33mj7LCxkiHbRm1/J5ei66mCFdzvSvWcJn4e2M2PpD0R9cj0tDANGzMFS/0giAg+eFTlLVV6D/z\n",
730 730 "L0QjOyqDQn1nJ/ft3ouvtSWfLIpi3GR3DAx1yEqr5NjeHBpq2tHS1sDUTL/f0ycjQGFjFy/syyfE\n",
731 731 "0ZhnI1wx0Lm+NLlIQwMD10tFV0vKefLe/Zayn3bQVVGNhp4uevbWI80lfyEoBRLjijiyK5vp80YR\n",
732 732 "Ps1jUBYYaumjdaURPO1SKav+2Mkqfz9uDfAf5Mj6B0EQKPpyE6U//MHYzR9j5ON2yc8b4pLIWPMm\n",
733 733 "U2I3o2XQu4K9nNoO1h4sZO1Mt5GhpP+H8vpC1m+5nxeXfYqn/RiaGzrZ+kMiAWOdCI/0uGFXh4Ig\n",
734 734 "kFHdzpa0GkqaxCwLtGGeryV6/5+98w6Pquji8Lslu5veIRBIpYUaEkKTpvQOKoIFAbuoCHYRAREQ\n",
735 735 "RRQVxV4QFJUPpHeQXkPogYT03kjP9nu/PxIQkJKEbHY32fd59plbZmdONrv3/u7MmXNuEXtMnZLJ\n",
736 736 "iQlv4BoaQusFr/3HSV4URXTLl2KMu4D9mwuQ2Jv2SdJGOSmFRTy9fiPDWzZncqfw/3yfS4u1XDyT\n",
737 737 "yfmT6RQVqGnZzofWoY3xaWIbGakJrqTSmdzN9IuTRFGk6EwMOdv2k7VlL5qMHBr0606DgT3x7NO5\n",
738 738 "yveNukJJkYZNf53BaBAYOrb9XTm8VxWrjKN1u1yHKYVFPLr6bxb0u4/uTS0zH92tEEWR2AXfkr15\n",
739 739 "L53+WIyqkfd1540aLQfue5xWs16kwcCe1erjZHox83YlMn9QMM29bDc5gFJNMe/8+jj3d3uSXm2H\n",
740 740 "XT1eUqRh1c/H8Q/2os/glvX+KT8mt4w/TmZxOrOEUW28GdHaC+ebLH82lJZxevJ7/3GSF0UR3Z8/\n",
741 741 "YjwTif3bHyFxtC1Zrw2ic3J5ftNmngsPY1zbNnesn59bSvSpDKJPpiOKEBLaiJAOjfGwZZyoMoIo\n",
742 742 "siIqky0X85jVP4gWZrjmqlMyyd6+n+wt+yg4cQ6PrqE0GNQT7/73oGpYPwJbx0Vns3XNWUK7+tG1\n",
743 743 "d1CtJ2ivc0IL4FhaOq9s28Gvo0dYzZJlURS5OGcJeXuPE/HHYhRe/10leGnRjxSdjSHspwV31deB\n",
744 744 "xAK+OJDCR0Ob41fPfbYEwchHq6fh496UiX1f/895jVrP6l8icfN0YOD9bW1+LEByvoY/TmdxOLmQ\n",
745 745 "QS08Gd7aCx/n66f/REEgZv7XZK7fTdiyD3FuGYRuzXIMR/Zg/84iJM71x//NnBxJS+PVbTt4t1dP\n",
746 746 "BgbfeeriWkRRJCutiOhT6Vw4nYmTi5KQDo1p1d4HJ5f6fd2oDGq9kY/2JJGvNjCzb2CV0l+ZCn1h\n",
747 747 "Mbm7D5O9ZR85u4/g4NcIr/u64XVvF9zC2yK1M33C8tpErzeyZ/NF4i/kMHRse3z9zbP6vk4KLYBV\n",
748 748 "56P5IeoUKx8YjavKsn1ARFEkesZiCiLP0On3xSjc/3sTKo1P4fCwZ+i+7Sfsm9x9HJVtMXksO5HB\n",
749 749 "J8Na0MCp/joir9z7JTFpp5n+0JJbRn7X64ys+y0KiVTC8IdDq5S1vS6TWaxl7blctsfmEdLAkeGt\n",
750 750 "vQj3dbnOjyvtz81cfG8JrSbeh2vWGexnfILUzRbXrTbYcimOufv288mA/nT2bXxXbQlGgeT4y0Sf\n",
751 751 "yuDS+Sy8fZxp3qYhzds0rNUpGGsho0jLrO3xtGrgyIvdm6CwwAc0QW+g8MQ5cnYdJnf3YcqS0vHs\n",
752 752 "GY7XvV3xvrcrqsYNzG3iXZGbXcKG30/i2dCJ/iPboLI3n9Cts0IL4IP9B0ksKOCrIYMsdiWiKAic\n",
753 753 "e3MhJefjCP/9E+xc/judIooix8dOxevergQ+/3CN9b36bDYbo3NZNKw5bmb8EpqL47H/8PPOhcx/\n",
754 754 "fDkuDrd/0jEaBbasOkNJsZbR48NuGzG4vqExCOyJz2fd+RyKtUaGhXgxsIUnrhXpfXJ++Ikz7/9I\n",
755 755 "wEvjCXzlaZvPTy2w8uw5vo48wdKhgwnxqtnpIYPeSFJcHrHnsoiLzsbV3b5CdPnYphcpd8/4YHci\n",
756 756 "D4f6MLK1l9V837XZeeT+c5TcXYfI3XMUZUMvvO/rhtd9XXCPaI9UaT0P5GdPpLFn0wV6DWpJ23Bf\n",
757 757 "s/8P6rTQMggCT63bSKhPQ6Z27Wxiy6qOaDRy9pUFlCWlEr78Y+RON79Ipa/ZTsKS5XTb+gNSec3e\n",
758 758 "4H+JzOBIciELhzbH8S5XwVgTWfkpvLtiUpUivwuCyPa/z5GXXcIDE8P/k7LHRvmCi/XRuRxKKqSb\n",
759 759 "vytjxCS8/1oCk94g6vXPcO/SnpC502r8e2zjX76NjOJ/0Rf4fvhQmrqadopWMAqkJuYTcy6LS+ez\n",
760 760 "UKrsro50NWjkbPYbXG0iiiLrzueyIiqTt+8NoKOv9S44Eo1GCk9dIHfXYXJ2HaY0NhH3zh3w6BmO\n",
761 761 "Z49wnFs3s8iVjHqdgR3roslMKWD4I6F4NbSM/0GdFloAl9Vqxvy1mjfv6caAKvoomBLBYODMlLlo\n",
762 762 "s/MIW/bRLVeC6AuL2d/rUTr+OB+38JpfSSmKIl8eSiXhsob5g4JRyi3vx1PT6PQaZq54gnvbj2Rg\n",
763 763 "2NgqvVcURHZuKP8hPzCpE/YO1vOUV5sUaQwc3XWQNqs+5Zd7niW0RwQ9GiiIfu5dpAo7Onwzp96u\n",
764 764 "fjIVoijy6eGj7E5M4ocRQ2s92rsoiGSkFhJ7LouYc5mIIrRo05DgkAY09nOr0/6NeqPAkoOpnM8u\n",
765 765 "ZU7/IBq5WLa7SlXR5RVw+WAUefuPk7c/En1+IR73hOHZoxOePcJxCGpqdlGdm1XM+t9P4ePrQr+R\n",
766 766 "rbFTWM7DXJ0XWgDnsnN4ZsMmfhk1nGYe5vcPEfQGTk+ejaGklI4/LkBmf+sf5bm3FoIg0uajN0xn\n",
767 767 "jyjy0T9JlOqMzOofVKkEw9bMN1veR6tX89KwedW6OIiiyN4tF0m8lMeYJyJwcLSJrRsxJsWh+fAt\n",
768 768 "FM+/SZRbC9ZH5xCdVUovP2c6/rYMWUIS4csX3jHgro3KIYgi7+/dz7nsHL4ZNhh3e/OKWFEUyc0s\n",
769 769 "IeZcJvEXcyjIK8O/mSdBLb0JaO5Vp5zp89V65uxIwFUl543edx8fyxpQp2Vx+cCJcuG17zgSiQSP\n",
770 770 "HuFXhVdt+3edjUxjz+YL9B7cirbhvrXad2WoF0ILYO3FGL4+foI/Hhxt1pQTglbHyWffRTQKhH43\n",
771 771 "F9ltHPULTpwjauJb9Ni7Ajs3004BGASR97bH46iQ8UYf/1tGArd2/jmzjnVHfmH+47+iUlR/qbUo\n",
772 772 "ihzccYmYs5mMeTKiTt047hYhKx313FdQPvY88i69rx7PLtGxKy6fnTF5NNu8njaRh2j144c0C29p\n",
773 773 "RmutH73RyDu7/iGztJSvhgzCSWF5wr+0WEtCTC7xMTkkxebi5uFAYEtvglp64dPEDamVPtzFX1Yz\n",
774 774 "a1s8/Zp7MD7Mp85eN2+HKIqUxaeQtz+SvP3HuXzgBHauzrh36YB71w64d+6AQ2ATk4x46XUGdqw9\n",
775 775 "T2ZqoUVNFd5IvRFaAPP2HSC1qIgvhwwyyw/CqNFy8sl3kKoUdFj63n+COV6LYDBwaNCTBD7/CI0f\n",
776 776 "qFwE+LtFaxCYviWOQA8VL3QzzQ/DnCRlxzD3j+eZ9fB3NPGqmWnkw//EcS4yjTFPRthWXwFCfh7q\n",
777 777 "96ehGDYWu/uG3rSOKIrE5ak5/O0aHH9cRtQzk+k4pBt9gt1xr4eLMu4GrcHAq9t2YBBFFg/sj8oK\n",
778 778 "fN+MRoH05AISLuaQEJNLcaGGgBZeBLXwJqCFl9WMEB9JLuTjvcm80K0JfYLNEzbAEhEFgZKLCeQf\n",
779 779 "PkX+kZNcPnIKjAJuXdrj0aUD7l1CcW4dfNcJ5HMzi1n/+0l8mrrRb0SIRU0V3ki9Elp6o5En1m2g\n",
780 780 "i68vL3buVMOW3R5jmYYTE99E4eFKuy9m3jFeSeK3f5C9bT8Rf31eq4KnVGfk9Y2xdPFzZUJ43UlS\n",
781 781 "WqYtZvqy8Tx4z7P0aD24Rts+vj+BE4eSGftkBK4e9TcIrFhajPr9V5B3vw/FiMqtjs3+5yhRz88i\n",
782 782 "6bHxbGnalpAGDtzXzIN7/F1vGX3eRjmlej0vbd6Km0rFgr73orjLG5e5KC7UkBCTQ/zFHJLjLuPq\n",
783 783 "bo9fsCd+wR40CfBAqbKsG6goiqw+m8NfZ7KY1S+IkCokha6PiKKIJjWTyxXCK//IKbSZubh1als+\n",
784 784 "6tUlFNcOrZA5VG5WQBRFzkamsXfLRYudKryReiW0oDzf19hVa5je8x76BgbUmF23w1Baxonxb6Bq\n",
785 785 "0pB2n06/o5LXpGdzoN8Euq77GsdmtZ+3sUCt55UNsQxt5cUD7aw7lgqU/zA/+fs13J28eaL/Wybp\n",
786 786 "I+pwMkf3xDPmyQg8vOrfhVfUqFF/+BayZq1RPPJMlR4OiqPjiHzsNRqPH0XK0GHsiivgfHYpEU1c\n",
787 787 "6O7vSkRTl3q1IrYyFGq0PLdxE808PJjdu6fFhq+pKkajQFZaEclxeSTH55GRUohXQyf8gsqFV2M/\n",
788 788 "d+zM+F0wCCJLDqYQnVXKnAHBNHS2jtE3S0OXm0/+sTMVwus0xRficGrmj2tYG9zCWuMa1hbH4Kb/\n",
789 789 "Wdmo0xrYse48WWlFDH+4g8VOFd5IvRNaAKezspm8aTPLRo0gyN20Q76GMjWRj76KY2BT2nz8ZqWW\n",
790 790 "xEY9OR3nkGCavfakSW27HdklOl7ZEMPE8Mb0a27+BQR3w4ajv3L44g5mPfwddnLTXRjPHE/lwI5Y\n",
791 791 "HpzUyWouADWBaNCj+WQWEjd3lE+/Vq0RWE1GDpGPvYZbeBtC5r9CoV7kYFIhh5IKOZtZQkgDR7r5\n",
792 792 "u9LN3xVvK5laMhW5ZWU8vX4jXZv48kb3bnVuiv9aDHoj6ckFJMdfJjkuj5zMYnx8XfEL9qBpkCc+\n",
793 793 "TVyR19JK6WKtgbk7E7GTSXj73gCb+K9BjBotxediKYg8R+GJcxREnkNfVIJrxxDcwtrgGtYawS+I\n",
794 794 "zRsvWcVU4Y3US6EFsDr6Aj9EneKPB0ebzHnUqNYSOf417H19aPvp25USWTm7DhM9fRH3/LP8to7y\n",
795 795 "tUFSvprXN17i9d7+RDS1zpQp0SlRLF77BnPHL8Pb1fRToedPprNn80UemBBOg8bW+ZlVBVEwol36\n",
796 796 "IaJOi2rKzLvyuzAUl3LymRlIpDI6fDsHuWP5NGyZzsjxtCIOJRVyNKWIRs5Kuvm70t3flQB3VZ0W\n",
797 797 "GjeSXlzMU+s3MrR5s5smh67r6LQGUhPzSYnPIznuMnk5pTRs7Iyvvzu+/u409nczSciVtEItM7fF\n",
798 798 "EdHUhac7+16X/cCGadDmXKYw6jwFkeeIjblMjEdL/OIjadZQhku7lrh0aIlL2xYmXyhWE9RboQUw\n",
799 799 "Z88+ssvK+HzQgBp3jjdqtBU+WW60/+LdSt2ABK2O/feOJ2TOy3j3616j9lSXc1klzN6ewNyBQbS0\n",
800 800 "sqjPBSW5TF82nmcGzSA06J5a6zfmbCY71p1n9OPhNGriWmv91jaiKKL7ZQlCWiKq1z9AUgMPLILe\n",
801 801 "wLk3PqL4XCxhvy78T9JbgyByNrPk6miXRALdK0a6WjdwxK4Ox2pKLCjgqfUbebx9Ox7v0N7c5lgE\n",
802 802 "Oq2BjJQC0pIKSEvKJyOlACcXVYXwcqOxvzvung53JUhPZ5Qwb1cC48MaMSykfiRhthSMBoF/Nl8g\n",
803 803 "/mIOw8e2x7Esn6KTFyg6c5GiMzEUnY1F4elWLrratcS1XUtc2rW4aa5gc1KvhZbOaGTS2vX08GvK\n",
804 804 "853Ca6RNAEGnJ+qJt5HZq2i/dHalo2DHf/Er+cfOEL7soxqzpSY4lFTIZ/uT+XhYc5q4WkcYA6Ng\n",
805 805 "YN4fL9CqaSgP9Xi+1vuPi85my+qzjB7fkcZ+lvWjryl0q3/FcOIg9u98jMS+5kS4KIrEffozab9v\n",
806 806 "oNPvn9zST1EUReIvaziUVMDh5CJSCzW0aehEmK8zHX2dCXBX1Znl9jF5eTy9fhNTukTwQEgrc5tj\n",
807 807 "sQhGgZysEtKT8q+KL4NBwNfPjcZ+bvg0caWhr0ulszpsi8nj+6PpvHWvP2G+lj9yUpcoLtSw7reT\n",
808 808 "ODjaMXhM+5vmKhSNRkrjUyuE10WKTl2k6GwMcmdHXNq1wKVtC5xbN8O5dTD2fo3NFs2+XgstgJzS\n",
809 809 "Uh5atYZZvXvSJ+DuHc8FvYFTz76LKIqEfju30tnQrzjAd9v0HQ4BTe7ajppm84Vcfj+VxafDW+Bp\n",
810 810 "AVno78TKvUuIyzjP22O+QCo1jy9F/MUcNq86w6jHOpota7yp0O/ehG7DH9jPXIzU1TR/W+pv64n5\n",
811 811 "4BvCfvkQt7A2d6xfpDFwKqOEqPRiTqQVU6Yz0tHXmY6NnQnzdbba5Onnc3J4bsNm3urRnSHNm5nb\n",
812 812 "HKujqEBNelIBGakFZKYWkZ1RhJOLEh9fVxr6upaLr8bO1/n8CKLIT8fS2ZdYwJwBwfi5WccDZl0h\n",
813 813 "6VIum/46Q1h3fzr3DERShalaURBQJ6dTdDqGojMXKY6Oozg6Dn1+EU6tgnAOCca5dTDOIcE4tQpG\n",
814 814 "4WH6WYd6L7QATmZm8eLmLSwfPZIAN7dqtyMYDJye/B7GMjUdf/zgtnGy/mPDszNxDG5K8zeernb/\n",
815 815 "pmZFVCb7EgpYNMyy8yJGXtrLj9s/5IMJd04WbWoSYnLY9FfdEluGE4fQ/rgY+xmfIPUx7dLq7B0H\n",
816 816 "OPPyPNp99g4N+lVt+jezWMvJ9BJOpBUTlV6Mk0JWPtrV2Jm2Po5WkUj9dFYWL2zayqzePekXFGhu\n",
817 817 "c+oEglHgck4pmWmFZKYVkZlaSG5WMW4eDjT0dcWjkTNrL2tRizB7QPDV5Og2TI8oiBzeE8/Jw8kM\n",
818 818 "fag9fsE1lzlCX1hMyYV4is/HUXwhjuLzlyi5EI/M0b581KtVME4tA3FsEYBTM3/kzjU3Sm8TWhX8\n",
819 819 "ce48y0+fZeWDo3G0q/oFWDQaOT1lLrq8fMJ+/rBKjux5ByI5O3UePfb8VulYIubgSl7EpHwN8wYG\n",
820 820 "o7DAvIjZBWm8u3wir45eRAtfy/BjSYzNZeOfpxn5aChNAqx7Bacx5hyaxbNRvTYXWVDtRHQviDzL\n",
821 821 "iYlv0eKd52gybli12hBEkYTLGqLSi4hKK+ZcVinu9na0buhI64aOtGngiJ+FTTVGpmfw8tZtzLu3\n",
822 822 "D71rYLTdxq0xGgRysoqJTSzgu5h8HLR6mqfn4+amwtvHGe9GLuWljzMubvVrAUZtoS7TsemvM+g0\n",
823 823 "eoaNC8W5FtxUrsT4Ko6uEF6xSZTGJFB6KRm5mzNOzQNwbB6AU3N/nFqUbyu83Kv8/7cJrQpEUeTd\n",
824 824 "3Xso1ev5ZEC/Kn2QoiBwdtoHqNMyCf/149vmLrwRQW/gYN8JNH/rGRoO6X3nN5gZoyAyf3ciANPv\n",
825 825 "DbCo1TcGo55ZK56ke8hAhkY8am5zriMxNpeNf5xixKMdaRponWJLSE9GPe81lM+8jrxDRK32XXop\n",
826 826 "ieMPv0KTx0YQNOXxu77RGQWR5AIN57NKOZ9dyrmsUgo1BkIaONCmoROtGzjS0tvBbHnrDqWm8fr2\n",
827 827 "HSzs15duTS3PlaAukpSvZsbWeAa28ODRjj4Igkh+TinZmcXkZBaTm1lMdkYxep2xQnw5XxVfXg2d\n",
828 828 "UChtI1/VJTO1kHW/n6R564b0GtTC7AnIRUFAk5ZFSUwiJbGJlMYmVZSJIIo4Ng/AsZk/jkFNcQhs\n",
829 829 "cvUld7h5dhCb0LoGrcHAY2vWMqR5MyaFdqjUe0RR5NwbH1Eam0j4b5/c8oO+FYnfrCRn92E6/f6p\n",
830 830 "1Twl6QwC07fGEeBuWal6lu1aRHZBOq+O/thibLqWpEt5bFh50irFlpCfh/q9l1E8MAG7nv3NYoMm\n",
831 831 "M4fIR1/DvXN7QuZOvesUHjdSoNZzPru0XHxllXIpT42vq5JW3g4083SgmZc9ge72Jh/J3ZuUzPRd\n",
832 832 "u1k8cACdGted7AyWzMn0YubvSuTZrr70bXb732ZZqY6cjHLxdeV1OacElb0dng2c8PB2xLOBE57e\n",
833 833 "5dsOTgqLvB5ZAqIocvpYKvu3xdBvVBtatvUxt0m3RRRFdHn5lMYkURqXTGlCCmXxKZTFp1KWnIad\n",
834 834 "m0uF+GqKQ1ATHCvK2LJCm9C6lvTiYsatWsPHA/rR2bfxbeuKokj0O59SdPoCnVZ+itypanO62uw8\n",
835 835 "9vd5zGwR4O+GUp2RVzfE0CvQnUc6mv/HcSx2N8t2LuKDCStwsrfckArJcXms//0kwx8OrVH/A1Mi\n",
836 836 "lpagnluRWmf4OLPaoi8qIWrS29i5O9N+ySyTxprTGwXi8tRcyCkjLq+M2Fw1aYUaGrkoaeZpT3CF\n",
837 837 "+Ar2sMephkYzdiYkMuufPSwZPIhQn4Y10qaN23NlZeGMvgG0b1S9QMOiIFJUoCYvp5S87BIuX1MC\n",
838 838 "V8WXh7cjnt6OuHk54upmj8wC3S9qC73eyM5158lIKWTkox3xsLLwQTciGo1o0nP+FV8JqZTGp1CW\n",
839 839 "kILj52/YhNaNHExJ5a2du/nzwdH4ODndtI4oilyc/QWXj5wk4s/PsXO5eb3bcXrK+yi9PWn57uS7\n",
840 840 "Ndks5JXqmbo+hkc7+jCopflEQ05hOu/8+jiv3/8pzRu3M5sdlSUl/jLrfouyCrEl6nVoPpqOtGkg\n",
841 841 "ivGTLeLJXNDqOP3S+2hz8gj7+UPsXGsvCr/OKJCUryEuT82lvDIu5aqJv6zG3V5OM08Hgj3t8XdX\n",
842 842 "4e+uopGzskpT61suxTF/3wG+GjqYtg28TfhX2IDya/gvkRnsjsvn/YGmWVkoiiJlJTou5/4rvC7n\n",
843 843 "lFCQp6a4UI2Tiwo3TwfcPR1w83TAzdOxvHS3R16Hc30W5qtZtyIKN08HBt7fts5Pu9qmDm/Bt5FR\n",
844 844 "7E5M5JdRI/6TrFUURWLnf03O7sN0XvVFtSLT5h89zcln36Xnvt+qPBJmSaQUaHhtYyzTevjR1b/2\n",
845 845 "R5IMRj2zf3uKLi37Mbzz+Frvv7qkJFxm3Yooho3rgH8zywyCKAoC2i/nIYqgenE6EjOFybgZoiBw\n",
846 846 "YeZn5O2PpNPvn6JqZD5hYhRE0oq0xOWVcSlPTXK+huQCDXllehq7KPF3U+HnrsLPTYW/m4rGrkoU\n",
847 847 "N/igrL8Yw8JDR/h22BBaeVm2+K4L6IwCn+xNJr1Iy5wBQWZZgWo0ChQVqCnIK6Mgr4z8q2UpRQUa\n",
848 848 "HBwVuHk64Opuj4u7PS5u9uXbbvY4uyiRWmlw3sTYXDb9dZrOvQIJvyfAIh7eTI1NaN0CQRSZsmUb\n",
849 849 "DRwcmNm753Xn4hb/TMaaHXRevQSFZ9XDQYhGIwcHPkHgC4/ReLR5/F1qkgvZpby7LZ7Z/QNp07Dq\n",
850 850 "I3t3w/Ldn5J2OZHX7/8UqcS6LjxXxNbQsR0IaG5ZYksURXTLlyIkx9VY1PeaRhRFEr5aQcrPqwlf\n",
851 851 "8QlOLQLMbdJ1aAwCqQXloiu5QENSRZlZrKOhkwI/NxVNXJWklKSzIzGaRf0HEuHbwKIWmNRFijQG\n",
852 852 "3tuRgJtKzht9/FFa4PSdYBQoLtSQn1dGUYGaonw1hQVqivI1FBWoKSvR4uisxMWtXIS5VpTOriqc\n",
853 853 "XVU4uahQWlhYClEUObonnhOHkhk2tgNNg6zLT/VusAmt21Cs1TL2f2t4Jqwjo1qVL2VP/O5Pkn9c\n",
854 854 "Ree/v/pPepDKkvzzajLW7qDz6i/rjJo/llLEx3uTWDikOX7utROi4sSlffywfQELJq7A2b768c/M\n",
855 855 "SWpiPmuXn2DIQx0IbGE5Yku34Q8MB3ZiP+MTJI61K56rStqfm7n4/pd0/OkD3DtZ/tSx3iiQVqQl\n",
856 856 "OV/D3xej2ZcaSyfvUIrUMgo0Bho4KmjsoqCRi5JGzkoauyhp5KLAx1mJygJFgTWRXqRlxtY4uvm7\n",
857 857 "8mREY4sK51EVjAaB4iINRfnqciFWoKEwv3w6sqRQS1GhBqkUnFz+FV7OLkqcXFU4u6hwclHi5KLC\n",
858 858 "3lGBtBaEvVZjYPOq05QW6xjxSO2EbrAkKiu0LEsa1xLOSiWfDxrAhL/X09LTE+cdh0n85ne6rFla\n",
859 859 "bZGlyyvg0sIfiPjrszojsgAimrrwZERj3tkax+LhLfB0NO1QfG5RBt9smcMroxZarcgCaBLgzqjx\n",
860 860 "Yfz96wmGPNSewBbm983R79+Bfsd67GcutniRBeD70GAUnm5ETXiLtp9Nr3Jg09rGTiYlwN2ePcmx\n",
861 861 "nM1LZM3Y0TRxKXc/0BkEMot1pBdrySjSkl6kIyq9mIwiLZklOhzsZHg72tHASYG3ox3ejop/t50U\n",
862 862 "eDrY2UbEbsH5rFLm7IjnsTqQs1Aml+Lm4YCbh8NNz4uiiFZjoKRIQ3Ghtrws0pCdXkTchRxKijSU\n",
863 863 "FGrQagzYOypwdFbi6HSlVF7dd3D+d1uhlFfrnpWbXcLa5SfwC/Jk2LhQ5LaHhVtSL0e0rrDlUhwb\n",
864 864 "li5n9I5Iuq5egmOwX7XbOvv6h8iUCkLmTqtBCy2Hlaey2H3pMouGNa+xlVg3YjDqmfP7M4Q3783I\n",
865 865 "LhNN0kdtk5aUz9+/nmDwmPYEtTSf2DKcPo726w+xf2cRUt/qf8/NQcGJc5yY8CYtZ0zGd+wQc5tz\n",
866 866 "W36IOslf56L5aeRwGjlXTswKokihxkB2iY6cEj3ZpeVlTqmu/FipnkKNAXd7+VXR5WEvx8PBDnd7\n",
867 867 "Ozyu2XdVyeuVINubkM8XB1J5vbc/nZvachZewWgUKCvRUVqipaxYS0mxltISHaXF5fulJVpKi3WU\n",
868 868 "FGsRBQF7RwUOjoqblvaOdtcdU6rsiD2XxY615+g9uBVtw02bRcKSsY1oVYKw+Az0Gw+y+eVx9Ams\n",
869 869 "fvDAwpPR5GzdT499v9WgdZbF2PYNyCvVMXtHAvNNFD3+z31LcVA5M7zz4zXetugF8cUAACAASURB\n",
870 870 "VLnw9Xdn9ONhrPk1isEPtjOL2DImxKL9+kNUU2dZncgCcAtrQ+fVXxL5yDS0uZcJnPyoRY4afxN5\n",
871 871 "grUXY/hl1AgaVmEhjFQiwd2+XDTd6uuhNwrklenJKdWTV6Ynv0zP5TI9qYVa8tXl25fLDBRrDbiq\n",
872 872 "5Lg72OFhb4e7vRxXVfnLRSXHraJ0VclwVclxVMgs8rO8E6Io8r+z2aw+k8OCwcEEe958BKi+IpNJ\n",
873 873 "r/p13Qm9zkhZqQ51mQ51qa58u1RHWamewvzCG47p0GoMIAEnZyUnDydx4XQ6KnsFKgc7VPYVr4pt\n",
874 874 "pUqOSmWH0l6OUiVHoZBXKb9hXaHejmjl7TvOqedm0WHZh7ySEk94o0ZM6VL1qNiiIHB42LM0fXxk\n",
875 875 "tdOIWAtXosdLgOn3BdSoH0RU3H6+3zafDyasMHseQ1OQnpxvFrEl5GSinjMV5eMvIo/oUWv9mgJN\n",
876 876 "Rg7HH56GZ68IWs1+CYnUcqYqvjx2nM2xcfw0chjejuZbbWwQRArVBvLU5WIsX22gSGOg8IZXkdZA\n",
877 877 "gdqA1iBUCK/yl5NShpNChrNSjpNChpNShrNShpNCXl5WnHdSypGb6YZpFES+PpzGyYxi5g0Mttqk\n",
878 878 "4tZGWYmW9StPIZVK6DeyDRJArdajKdOjUesqyopXmR51mR6txoBW82+p1wsoFDKUqnIRdvVlb4dC\n",
879 879 "KUeplKNQylAo5Te8ZCgqhJpSJcfOTmYRgq1WnOHXrVvHsWPHAAgLC2P06NHXnd+3bx9bt25FKpUS\n",
880 880 "GBjIpEmTbtlWbQqt/ONniJrwFqHfzcWje0dyy8p4aNVqZvTswX2BAVVqK3XlBlJ/XUeX9V9b1IXf\n",
881 881 "VFyJHh/obs/kbr418jScV5zF9GXjmTpiASFNa3f6uDZJTy5gza8nGPxAW4JaNTB5f2JJEWVzpmLX\n",
882 882 "bwSKAaNM3l9toC8o4sSEN1H5NqTd4neqlODdFIiiyJJjx9kWl8BPI4fh5WBdIyt6o0CR1lguvjQG\n",
883 883 "irVGSrQGinVGSrRGSnRGirWGa7bLz5fojNjJpDjaSXFQyHCwk+GgkOJgJ8NRIcPh2uMV2yq5FJWd\n",
884 884 "FHu5DJWdFJVcin1FqZRLK/XgpjEILNidSJneyMy+gSZzY7BxPRmphaz/LYqQDo25p3/zajvaC4KI\n",
885 885 "TmtAq74ivgxoNHq0agM67Y0vI9qbHNNpDej1RuRyGQqlDDs7GXZKGXZ28hv2ywWbnZ0MO4UM+dVS\n",
886 886 "ip3dNftyKXKF7N9jdlJkclml/kaTC63o6Gi2bdvGyy+/DMDSpUvp0aMH7dqVrw7Kzs7mq6++Ytas\n",
887 887 "WUgkElatWoWHhwf33XffTdurLaFVdCaG4+Om0e6Ld/G+r+vV4yczs3hx8xZWjB6Fv1vl4kbpC4vZ\n",
888 888 "3/MRwn5diGuHVqYy2eIo0Rp4ZUMsfZt5MLbD3UW5NgoG3l/5LB0CuzO625M1ZKHlckVsDXqgLcEm\n",
889 889 "FFuiTof6wzeRBYegfOQZk/VjDoxqLaeen4lRo6Xj9/PMFq9OFEUWHznKnqRkfhwxDA/7qqXpsmZE\n",
890 890 "UURrECjVC5TpjJTpjZTpBMr0Rkp1RsquPV6xrTEIaPQCaoOxohSuljqDgEIuxb5CjCnlUpSyilIu\n",
891 891 "QSmXIhHhTFYpLkoZXZq6YK+QXa1nJ5OgkElRyCTY3aJUVNSzk0mwk0qQy6TIJFjl1GltcuZ4Knu3\n",
892 892 "XGTA6LY0b2MZWQ1EQUSvN6LXlb90OsPV7Zvt6/VGDBX1DXrh6r5Bb0SvFzBcW0dvxGAQkEolyOXl\n",
893 893 "wkwulyKXy5Bd2bYrF2iB7aWm9dGKioq6roO+ffty6NChq0Lr5MmT9OrV6+qXuF+/fnz33Xe3FFq1\n",
894 894 "QUlMIpGPvkrrD1+7TmQBhPo05IWITkzZso3fHxiFg92dn5QvLfwe74E96pXIAnBSypk/KJip62Pw\n",
895 895 "cLCjf/Pqx035a/832MlVjOx669HOukRjPzfufzyM1ctMJ7ZEQUDz9YdI3b1QjHuqxts3NzJ7JaHf\n",
896 896 "z+P8Wx9z9MGX6LR8EQqv2p1uFkWRjw8d4VBqKj+NGIZ7PRJZUC5OVHYyVHYyPB3uflRRqBBuGoOA\n",
897 897 "Wi+gNVS8jAJag0h6kZbfTmbS0tuBsMZO6IwiWqN4dfpTL4jorpRGAb1BRC8I6Izlx3XGin2DiEEQ\n",
898 898 "0QsieqOAKIL8ivCSSiq2ywWZXHr9S3btvkyCXHL9Mdk1pUxCeSmVIL1aD2SSK+clSCUgvcW2TCKp\n",
899 899 "2C/34ZNKK8qKc5IrxyWSCrH47760Yrv8WPn/6oqglHCTYxIqjv+7LZFIMBoEdm2IJiX+MuOe6YJn\n",
900 900 "A8tZqSyRSq5OK5oCURQRjCIGg1AuyAwCBoMRo768NOgFDAaBgtKUSrVXbSuLi4txdv43RYaLiwuF\n",
901 901 "hYVX90tKSvDz87vufFFRUXW7u2vKktI4Pm4qLWZMxmfYvTetM65Na85kZTNz9x4W9u972yed4ovx\n",
902 902 "pK/ZTs+9ddcB/nZ4OSqYNzCY1zdewk0lJ6IaK35OJRxi79kNfDBhhdUFJb0bGjU1rdjS/f4tFBeg\n",
903 903 "fOODOjudLZXLabPwTS4t/J7DI56j08pPcfC7fQ7TmkIURRYcOERkRgY/jhiGm6p+xQ4yBVKJBHs7\n",
904 904 "GfZ2Mtxv0Kznskr4/WQmE8MbMaRVzYZvMAoixmuEl0GoEGLG8mMGQcRgLC+NwvXlta+r58TybaNY\n",
905 905 "3rYglrer1osYBf49X1FXEMtFplEoL2+2fW094brt8qk4gYp9AUTK3yMiIopcV1cURUSuPyaIIlSU\n",
906 906 "IlCxi9JgpEN2IXqplGgfV/638RJSrhdmV4TbTfclIOHfffj3GNe9B6BcHFZslp+/UvNKvWvqSq45\n",
907 907 "dl39a27X1/V7pZF/q/9bSrjuiOSGetxQ76r9FccfqmQ64GoLLWdn5+uEU1FRES4uLpU+X5toMnI4\n",
908 908 "NuZlgl56HN+HBt+ynkQiYWbvnjy2Zi2/nDrDxND2N60niiIX3v2MZtMmViuCfF3B392eWf0Cmb0j\n",
909 909 "gXkDg2nhXXn/lPySHJZums1Lw+fi6lh/Iglf4TqxdX9bgkNqRmzpNv8P4+nj2M/8FIld3XYSlkgk\n",
910 910 "NH/jaRTeHhwZ+Tzhyz/GpU1zk/YpiiLz9h3gTHY2PwwfhqsJk1/bgH0JBXx+IMVk4RuujDqV/1Is\n",
911 911 "JxWVOUlNvMyGlado38OfiF5BiJJ/BZgglAsyqBj1qdgRKjyQhIp6iCBUiL3yuuXi799tKs79K/6u\n",
912 912 "NCxeqXml3rV1rzl2Xf1rHKD+rV/Ruvjv8etKkeuO/Pf49fviDfUQgezKDR5VW2iFhYWxdevWq1OF\n",
913 913 "u3bt4p57/g0oGBoayldffUWfPn2QSqXs2LGD8PDw6nZXbXS5+Rx7aApNHx+J36T771hfJZfz+aAB\n",
914 914 "jFu1hhBvT7r4/jdGSPaWfWgzc2k64c7t1XXa+DgxrWdTZm6PY9HQFvi63vnGIwhGlmx4l36h99PG\n",
915 915 "r+orPesKjZq6cf+EcNYsi2Qgdy+2DEf2oN+0CvtZnyFxrL2EzObGf9IDKD3dOf7Q1KsLXEyBIIq8\n",
916 916 "v3c/F3Jz+X74UJyVNpFlSv53Jpv/ncnmg0HBNPOyrkUG1ogoipw8ksKhXZcY9IB5QtFYGyeyK1dP\n",
917 917 "Nnv27NnV6cDLy4usrCyWL1/Orl27aNasGX369GHFihUEBATg4eGBVCrlu+++Y8+ePahUKh544IFb\n",
918 918 "tpeQkECjRo2qY8ot0RcWc+yhKTQY1JNmrzxR6fc5K5W08vLkjR27GRQcjLPy35EBo0bLiQlv0nrB\n",
919 919 "azgGNa1Re62Vpm4q7OUyvjiYQu8gd+zvkJ1+zaEfyS5I5dlBM5HUoynDm+HsoqJJoAfrV57Cw9sR\n",
920 920 "D+/qOXYbL5xB++1CVG/MQ9a4/n0vnVoG4tKhJaeemYm9X2OcWgbWaPuCKDL7n73EXc7n2+FDbCLL\n",
921 921 "hBgFkW8Op7EvoYCPajH1V33GoDeybc054qKzefCJTjRuWn9naqpCRkYGQUFBd6xXZ+NoGUrLOD52\n",
922 922 "Kq6hIbR6f2q1Vpb8EHWSrZfi+XX0CJTy8sG/uMU/U3jqAmE/LagxW+sKyyIzOJJcyMKhzXFQ3Fxs\n",
923 923 "RadEsXjdm3zw+HI8nE0f4sBayEgtZM2ySAaMakOz1lVb2SOkJaOe9yrK599E3q6TiSy0DorOxhA5\n",
924 924 "/nWCXhqP/xMP1kibRkFg5j97SSkqYunQwThWYqGMjeqhNQgs+CeREq2Rmf0CcbaFbzA5RQVq1q2I\n",
925 925 "wtXDgYH3tzWZg3ldpLLhHerkcIJRoyVq4ls4NvOn1ZyXq71894nQDvi6OPP+3v2IoogmPZvEb1bS\n",
926 926 "avZLNWxx3WB8mA/NvR2YsyMBnVH4z/lidQFLNszg2UHv2kTWDTRq4sr9j4ez7e9zxJ7LqvT7hPw8\n",
927 927 "1B+/g+Lhp+u9yAJwaduCruu+JumHVcTM/5q7fY40CgLv7PqH9OJivraJLJNSoNbzxqZYlDIp8wYF\n",
928 928 "20RWLZAcl8eKpYdp2b4Rw8Z1sIksE1HnhJagN3Dq2ZnYubnQdtFbd7XqSiKRMPe+PpzOzubP89Fc\n",
929 929 "nPsVTR8fjYN//c3tdDskEgkvdW+KvULKwj1JVx0koXz+f+mm2XRt1Y+w4J5mtNJy8WniygMTwtm+\n",
930 930 "9hwXz2Tesb6oLkOzaAZ2vQdh13NALVhoHdg3bUTXdV+Ttz+Ss1PnIegN1WrHIAi8vXM3OWVlfDVk\n",
931 931 "UKVCvtioHmmFWqauj6VDI2fe6OOPQlbnbk0WhSiKHN+fwIY/TjFkTHsiegba4omZkDr1bRaNRs68\n",
932 932 "PBfRaKT9l7OQyO5+FYmjnR1fDBrIZwcOcTwugaAp42vA0rqLTCrh7T4B5KsNLD2UenVEYXPk7xSW\n",
933 933 "XubhXi+a2ULLpqGvKw9O6sSuDdFcOJVxy3qiwYDmi/eRBrbAbuQjtWihdaDwdCNi1efocgs4MfFN\n",
934 934 "DGXqKr3fIAi8uWMX+RoNXw4ZhL1NZJmM6OxSXt0Qw5h2DXgionGNpvay8V/0OgMb/zhN9MkMHn2+\n",
935 935 "G/7NPM1tUp2nzggtURQ59+ZCtJm5hH43r0ZTc/g5OzF+31mWje5Jvu0acEcUcinv9Q/iTGYpv53M\n",
936 936 "Ij4zmjWHfmDKiPnIZbYb1p1o0MiFMZM6sXvTBc5Hpf/nvCiKaH9cDFIpyolTbE+it0DuYE/Hnxeg\n",
937 937 "9Pbg2P0vosvNr9T79EYjr2/fSYlOx5LBA1HJbdMppuJAYgEzt8UzracfQ0NqNkaWjf9SkFfGb18f\n",
938 938 "QSaXMu7ZLrjeGLTMhkmoE0JLFEUuvvcFxefjCFv2ITL7ml0RlLpyIx0L1YwJC+WVrdvRG4012n5d\n",
939 939 "xFEhY96gYLZezGX2ur94ov9bNHRrYm6zrAYvH2fGPBnB3q0XOXsi7bpz+jW/IqQkoHpxRo2M2tZl\n",
940 940 "pHZy2n46Hc8+nTk84jnKktJuW19nNPLqth1oDQa+GDzw6iIYGzXP3+dyWHIwlXkDg+niV7m0Zzaq\n",
941 941 "T0JMDr99c5j2EU0Y9EBb7O6wOtxGzVEnhFbcoh/J23uc8BWLajzvmb6wmNgF3xIydxqTI8JxVihY\n",
942 942 "ePBwjfZRV/Gwl9NauY4CeX+MyvobL6u6eDVwYsyTEezfFsOZ46kA6PdsQb9vO6rX5iJR2Z5GK4NE\n",
943 943 "IqHFW88S8PRYjox8nqIzMTetpzMaeWXrdgRg8aABKGwi1iQIYnn4hvXROXw6vHmVAh3bqDqiIHJ4\n",
944 944 "dxxbV59lxCMd6djN3zYKXstYvdBK+Pp30tdsp9Mfi1G413zk4LhPfqLBgB64tm+JVCJhQb/72Juc\n",
945 945 "zPqLN79Y2/iXf86sJS//FAuGtOKzAymczig2t0lWh6e3E2Of6szBnZeIWr0P3Z8/Yv/GfKSutZvb\n",
946 946 "ry7gN+l+QuZO49i4qeTuPXbdOa3BwMtbtiGTSvlkQD+byDIROoPA/F2JxOSW8umwFvg42+KRmRKt\n",
947 947 "xsDa36KIv5jDY5O70STAdt0wB1YttFKWryX5h7+I+PMzlN41n8alJCaRtFVbaP72M1ePuSiVfDFo\n",
948 948 "IAsOHCI6J7fG+6wrpOTG8dueL3h5xAe09nFn+r0BvL8zkbi8MnObZnW4ezny4KAGHDmSyYUBryBt\n",
949 949 "VP8CktYUPsPupeP38zn9/GzSV28DykXWlC3bUMnlfNy/r01kmYgijYE3N19CIoEPBjXDRWWbljUl\n",
950 950 "eTklrFh6CEcnJWOf6oyTiy3wq7mwWqGVvmY7lz7+gU5/fo69b9UCPFYGURSJnrmY4CmPo/S6XsQ1\n",
951 951 "9/Tg3V49mLJlGwUaTY33be3o9Bo+W/c2j/R+iSZe5VFzO/o681L3JszYGk9GkdbMFloXQk4mqu/n\n",
952 952 "MGZwQyJjtEQeSDS3SVaNR7dQIlZ9Tsy8pcR8/gsvbtpS7hLQvy92NpFlEjKKtExbH0Obho68fW8A\n",
953 953 "CrnV3nqsgtjzWaz89igRPQPpP6oNMtvnbVas8tPP3rqPCzM/o9PKT3EMNI2Ddc62/WjSsvC7RXTp\n",
954 954 "Qc2CGRgcxKvbdmAQ/hucsz7zy65F+Hs3p0+7kdcd7xXkzsOhDXl7Sxz5ar2ZrLMuxJIi1AunYzds\n",
955 955 "LJ59ejH2qc6cOJTE8f0J5jbNqnEOCSZ0zRJOLFtDlz92ML9PL+R3EXPPxq25mFPKtA0xjGzjzVOd\n",
956 956 "fW3hG0yIIIjs3xbDrvXR3D8hnHadbAuQLAGru7Lk7j7C2VcWEL5sIc6tgk3Sh6DVcWHW54TMmYrU\n",
957 957 "7tbD29O6dkYmkdic46/h0IXtnEs+xpMD3r6pw+WI1t7cF+zOjC1xlOpsqzdvh6jTof50FvLQLigG\n",
958 958 "jgbA1d2esU915uThFI7ujTezhdZLmV7PtKgTnJ31LB0McOaJ6RhKbdPaNc2BxAJmbI3n5Xv8GNHa\n",
959 959 "lqTYlKjLdKz+JZK05ALGv9CNRk1sKzktBasSWnkHIjn94hw6/rwA144hJusn8ds/cGwRiNe9XW5b\n",
960 960 "TyaVsrB/P/YmJbM6+oLJ7LEWsgpS+WnHh0wZ/gEOSqdb1hsf5kMLbwfe2xF/01Q9NkAUBLTffIjU\n",
961 961 "zRPFuKevO+fiZs/Ypztz5ngqB3deuus0M/WNUp2OZzdsorGzM+8NHUj48o9ReHtw9P4X0Wbnmdu8\n",
962 962 "OsOas9lXwzd087fd9E1JVlohv355CG8fJ8ZM6oSDk22RganJOxBZ6bpWI7Tyj5zi1DMzCf1uLu4R\n",
963 963 "7UzWjyYzh4Slv9HqvSmVqu+qUvLlkIF8cvgIURl3TptSV9EbdHy29i1Gd32SIJ/bi2CJRMKL3Zvi\n",
964 964 "rJTzwe5EjIJNKNyI7vfvEAoLUD77xk3TSDm7qhj3dBdiz2WxZ/NFm9iqJMVaLU9v2ESwuzvv39sb\n",
965 965 "mVRaHmvrk7dpMLAnh4c+Q0lMornNtGqMgsjSQ6lsvJBnC99QC5yNTGXVT8fpPbglvQe3QmpLX2RS\n",
966 966 "BJ2ei3O/4vTk9yr9Hqv4jxREnSfqiem0/2oWHt07mrSvmHlLafLI8Cr5fgW5uzP/vnuZtm07GcUl\n",
967 967 "JrTOcvl97xd4ODdkUPi4StWXSSW82ccfrUHgk33J1+VFrO/otqzGcOoo9lNnIVEoblnP0VnJQ09F\n",
968 968 "kJqYz4615xFtgvW2FGq0PLV+I228vZjVu+d1vkISiYRmr0yi2WtPcvT+F7h8MMqMllovGoPA+zsT\n",
969 969 "iL+sZvHw5rbwDSbEYBDYtuYsR/ckMO6ZLrRs62Nuk+o8pXHJHB7+LCUX4um+8+dKv8/ihVbRmRhO\n",
970 970 "jH+dtoun49W7s0n7yj9+hrx9xwmeOqHK7+3l78f49u2YsmUrGkP1kthaK8cv7eFYzG6eGzyzSoHw\n",
971 971 "FDIpM/sFkVGk5atr8iLWZwxH96Hf+Bf2b8xH4nTnuHD2DgrGPBFBXnYJm/93BsE2FXtT8tVqnli3\n",
972 972 "gfBGjZje455bfk99xw6hw9L3OPn0DNLXbK9lK62bfLWe1zfG4qiQMX9QME5KW/gGU1FUoGblt0dQ\n",
973 973 "l+l5dHI3PBvc2lXDxt0jiiKpv63n8Ijn8B03lLBfF/4nGsHtsGihVXwhjshHX6X1h6/ToP89Ju1L\n",
974 974 "FASiZ3xKi3cmVzu6/BOhHQh0d+fd3XvqjWjILcrguy1zeXH4PJzsq+6HoZJLeX9gMNFZpfwceesk\n",
975 975 "yvUBY8xZtD9/jurV95F6VT5kiVIl54GJnSgr0bF+5SmMBpvYupa8MjWT1m2gh18TXu/e9Y4PA549\n",
976 976 "O1WEf/iK+CW/1pvf8t2QnK/h5XUxdG7qwmu9/LCzTV+ZjOS4PFYsPUyLtg0Z8UgoSls8MpOiyy/i\n",
977 977 "5NPvkPjdn3RevQT/SQ9UObK+xf4aSmKTOD52Gq3mTMFnaB+T95f2xyakMjmNHxhQ7TYkEglz+vQi\n",
978 978 "qaCQH6JO1aB1lonBqOfz9e8wJOJRWvp2qHY7V/Ii7k8s4M9TWTVoofUgpCWhWfweyufeRBbQrMrv\n",
979 979 "t1PIGDU+DET4e/kJ9Hrbik6AnNJSJq5dR/+gQKZ26VzpC6RzSDBd139LxpodnH/rY4R6NkpdFU5l\n",
980 980 "FPPaxlge6+jD+LBGtvQuJkIURY7ujWfjn6cZ+lB7OvcKsn3WJibvQCQH+z6OqlEDum3+HueWQdVq\n",
981 981 "xyKFVlliKsfHvkyL6c/RaFR/k/enLyoh9oNvCJk77aaOx1VBJZfzxeCBLD9zhn8Sk2rIQstk1YFv\n",
982 982 "sFc4MLzz43fdlpu9HR8ObsaGC7lsiK5fEfeFy7moF76D4pFnkbfvVO125HIpwx/ugMrBjtU/R6LT\n",
983 983 "1m9xkFlSwuN/r2dYi+a8ENGpyjclVSNvuvz9FerkdKImvoWhpNREllovOy9dZt7ORKbfF8CAFp7m\n",
984 984 "NqfOotUYWPfbSWLOZvHo813xC7Z91qZE0OmJmbeU05Pfo83HbxHy/lRkqur7G1qc0FKnZHJszBSC\n",
985 985 "p03Cd+yQWukz7pMf8erbrcZCRjR0cuSzgQOYsfsf4vLza6RNS+NUwiH2nt3I5CFzkEpq5mvk5ahg\n",
986 986 "weBm/BaVyc5Ll2ukTUtHLC1Bs3A6dn2HY9ej3123J5VJGfJge9y9HPjrx2No6mlg2PTiYib+vZ4x\n",
987 987 "rVvxbHhYtduROzsStmwhSh8vjox4HnVK/V1ZfC2iKLIiKpOfj2fw0dBmhDZ2NrdJdZa87PJUOg6O\n",
988 988 "CsY90wUXN1syeVNSGpfM4RHPUhwdR/edP+N9X9e7btOihJYmI4djY14i4NlxNB0/8s5vqAFKYpNI\n",
989 989 "+3MzLaY/V6PtdvBpyGvduvLCpi0UaupWypn8khyWbprNi8Pex9WxZnNMNnZRMn9wMN8eSeNgUkGN\n",
990 990 "tm1piHodmsWzkYV0wG7YQzXWrkQqof+oNjT2c+eP749SVlK3vn93IqWwiAl/r+fR9m15omPoXbcn\n",
991 991 "tZPTZuGb+I4byuFhz5B//EwNWGm96I0Ci/YmczCpgM9GtCDA3XbjNxXRJ9NZ+e0ROvcqT6Ujt6XS\n",
992 992 "MRmiKJKyYl25w/vYqju83w7Z7NmzZ9dIS3dJQkICiU/MoOmjIwl47uFa6VMURc68NAffh4aYZEVj\n",
993 993 "Ky8v0oqL+f3seYY0b1YnUk8IgpFFa16lS8u+9G433CR9uNnb0aGRM/N2JdLc04FGLnVvibgoCGiX\n",
994 994 "LgCFEuVTdz9lfSMSiYSA5p6UFmvZs+kizVo3rBdOs0kFhUxat4GnwkJ5tF3bGmtXIpHgFt4Wx+Z+\n",
995 995 "nH52FkofL5xbV92Xztop0hh4d1s8Egm8PyAI53rwnTIHBoPArg3RnDmeyv0TwglsYYuqb0q0uZc5\n",
996 996 "Pfk98vYeI2zZRzTod+uVydeSkZFBUNCd/bYsSh43un8ggS88Wmv95ew4iDo5Hf9b5DOsCV7tVj7s\n",
997 997 "uOhQ3UjTs+bQj4gi3N/tSZP208LbgXf7BjJ/dyLns+qWb4woiuh++wahMB/Vc28ikZomkbFEIuGe\n",
998 998 "fs1p26kJK789QkFe3U4xE5+fz8S165kcEc64tm1M0keDfvcQ8b/Pif3wO2IWfINYj/KcphZqmLIu\n",
999 999 "hlYNHJjZLxCVnS0BtykozFez8pvDlBZrGf9CNxo0unOYFxvVJ3vrPg7eNwGnFgF021R9h/fbYVFC\n",
1000 1000 "q9krk2qtL0Gr48K7i2k1ZypShZ3J+pFLpSwa0I9/EpNZc+GiyfqpDc4nH2f7yVW8OHwuUhOJg2tp\n",
1001 1001 "38iJ13v7MWt7PHF5apP3V1voN63CePYE9tNm3zYgaU3RuVcgEb0CWfndEbLSi0zenzm4kJvHpLUb\n",
1002 1002 "eLlLBA+EtDJpX86tgum26TvyD53k5NMzMJTVne/mrTiVUcwr62MZ274BT9sSQ5uM+AvZrFh6iFYd\n",
1003 1003 "GleEbjDdvam+Yygp5eyrC4h+9zNCv5tLi3eeN5kWsCihVZskfleez7AmHN3uhKtKyZIhA1l06DDH\n",
1004 1004 "060zVlRRWT5LNrzL80Nm4+FUe8PYnZu68lL3Jryz9RIpBZpa69dU6A/sRL9tDao35iNxrD0H4tAu\n",
1005 1005 "ftw7LIRVPx0nOa5u5fM7nZXF0+s38naP7oxq1bJW+lR4uRPx52fInRw4OmoymvTsWunXHGy5mHd1\n",
1006 1006 "ZeHgVl7mNqdOIhgF9m2NYfva84x8tCOdegTYQjeYkPxjZzjQdyKiIHDPzl9w71L98ESVoV4KLU1m\n",
1007 1007 "DglfVT6fYU0Q7O7Own59eWXrdhLyrcvJWxAFvtw4k55thtAhsFut998ryJ2J4Y15a/Ml0gqt17Hb\n",
1008 1008 "cPYEuhVfo3p9PlKP2ve5aNnWhxEPh7J+5SkunrZOwX8jR9PSmbxpC3Pv7c2gZsG12rdUqaDt4nfw\n",
1009 1009 "GdmXQ0OfpjAqulb7NzWCKPL90TRWnsrk42HNbSsLTURpsZa/fjpOZloh41/ohq+/u7lNqrMIOj0x\n",
1010 1010 "H3xD1BNv02rWi7T7dDpy5+oFKK8K9VJoVSefYU3QrWkTpnbtzPMbN3NZbT3TDRuO/opaW8KYHjW7\n",
1011 1011 "MrMqDGrpySMdfXhjU6xVii1j4iW0X32AaspMZE0CzGZH0yAPxjzRid2bLhB1yLrjvO1NSuaVbdtZ\n",
1012 1012 "NKAfvQP8zWKDRCIh6IXHaD3/VY4/9ioZ63aaxY6aRqM38v7OBKKzS/lsREv83FTmNqlOkpJwmV+/\n",
1013 1013 "PEiTAHcemNgJB6e6t/DHUii5mMDhoU9TfC6We3b+QsMhvWut73ontAoiUO6fYgAAIABJREFUz1Y7\n",
1014 1014 "n2FNcH9IKwY3D+bFzdaREzEm7TQbjy3npeHzkcvM6y8wtJXXVbGVXmQ9YkvIzkCzaAbKSS8ja9XO\n",
1015 1015 "3ObQoJELDz/ThRMHk9i/LcYqU8xsi4vnnV3/sGTwILr4+prbHBoO7kXEH4u5OGcJlz7+wSo/0yvk\n",
1016 1016 "lep5dWMsDnYyPhjcDFfbysIaRxTKo7yv//0kA+9vxz39miOV2qYKTYEoCCR9/ydHRk+m6fhR5WEb\n",
1017 1017 "GtRuwNd6JbREQSD6nbvLZ1gTTOkcga+zM2/v3I1gwRfkorJ8Pl//Nk8PfAdv10bmNgeoEFuhPry+\n",
1018 1018 "0TrEllhciPqj6diNeBh5RA9zm3MVVw8HHn6uK4mX8ti25pxVJaNedzGGufsO8O2wIYT6VD4npKlx\n",
1019 1019 "aduCbpu+J2fXYU4+M8MqI8nH5ZUxZd1FegS48VovPxS2nIU1jrpMx98roog9l81jk7sR2MLm92Yq\n",
1020 1020 "1CmZHB83jfTV2+m64VuaPj7KLL5v9epXlPbnJiRy2V3lM6wJJBIJ8+7rQ25ZGZ8ePmJWW26FIAp8\n",
1021 1021 "tWkWXVv2p1PzPuY25zqGhliH2BI1atQfz0DeuSeK/rUTgLcqODgqeOjJCIoLNaz97SR6neXnR1x5\n",
1022 1022 "9hyLjxzlp5HDCPG2vBuUsoEnnVcvwc7FmUNDnqb0kvVMzx5OKuStzXE828WXh0N9bM7YJiA1MZ9f\n",
1023 1023 "lxzEzcOBcU93tkV5NxGiKJKyfC0HBz2Bxz1hdFm3FMegpmazp94ILX1RCbHzayafYU2gkMn4YvBA\n",
1024 1024 "diYk8se58+Y25z+sPfwTGl0p43q9YG5TbsrQEC8eDi2fRsywQLEl6nVoPnsPaZMAFGNqL2xJVVEo\n",
1025 1025 "5YweH4ZSKeevH4+hLtOZ26Rb8mPUSX48eYpfRo4g2N1yHYZlKiVtF71FwDNjOTzyebI27TG3SbdF\n",
1026 1026 "FEX+OJXFZwdSeH9AEL2CLPeztVYEQeTw7jjW/RZF3xGtuXdoK2S2KO8mQZ2WReQjr5Cy7G86r/qC\n",
1027 1027 "4JcnIJWbd/q73vyn4z79qTyfYWjN5DOsCdxUKpYOHcyXxyLZl5xibnOuci75GFtP/MmU4R+Y3S/r\n",
1028 1028 "dgwL8WJcBx9etzCxJQpGtF9/BEoVyiemWvzIgEwuZfCD7Wjs58bKb49SVGBZCzVEUWTJ0eP8L/oi\n",
1029 1029 "y0aNoKmrdQRwbPrYSMKXf0z0u4uJmf81otHyRgy1BoEP/0lib0I+n49sQasG5nOpqKuUFGlY9dNx\n",
1030 1030 "EmNzGf9Cd4JbNTC3SXUSURRJ/X0DBwdMwr1zB7pu/A7nkNpdiXwr6oXQMlU+w5rA39WVzwb25+2d\n",
1031 1031 "u7iQa/74RvklOSxZP4PJQ9/Dw9nyLwjDQrwY276hxYgtURTR/vwFYnEhqsnTkcisI3q2RCqhz5BW\n",
1032 1032 "tA33ZeW3R8jNLjG3SUD55/nRwUPsTEhg2agR+Dg5mdukKuHWsTXdtv5AQeQ5jj/yKrrLheY26So5\n",
1033 1033 "pTpe2RADwCfDWuDtaPrgufWNhJhcfv3yEE0C3Hnoqc44u9pWb5oCTUYOkY+9RtIPf9H5r88JnjYR\n",
1034 1034 "qZ3lLOKo80JLFEUuzPqMoJfGo/Su2QTINUXHRj7M6NmDyZs2k1livhucUTDwxfr/t3ff0VGVWwOH\n",
1035 1035 "f1PTe68kpBJqQq/SiyBeUewodkUBC2C9NhSxIWDlKkVFsYECSu+9JrQQEhKSkE56nT7n+yPKd71S\n",
1036 1036 "QkgyM8n7rJU1M+HknE3KzJ637P0yw7pNoEtY8xdybSo3xflwRxc/Zq1Lp7DassmW/pdlmDPTsG+h\n",
1037 1037 "qu9NrefAcAaMiOanrw6RnV5i0VhMZjNv7NxNYkERS2++CS9H21zPYuftSY8fP8K1YxT7Rz1I5QnL\n",
1038 1038 "d4hILqph2uo0bgj34PnB7bAT01hNymQys3NDKhtXnWTcHV3pNyxS7CpsBpIkkffjOvYNn4x7Qkf6\n",
1039 1039 "rl9slT1IrSflaybFm/c2ez/DpjA6MoK86mqm/LGBb28Zj5MFXqR/3vMFCrmSCX0fbvFrX6+b4nyQ\n",
1040 1040 "gJl/pPP+2Ej8XVq+Ho1+/UqMh3bj+O95yBxsdwomLj4QF3d71q44Rr9hkXTrHdriMehNJp7fso1y\n",
1041 1041 "jZYl48da5O+hKcmVSmJefRK3bh04ctczxL76JEF3jLVILBtSS1l8OJ+ZN4TSK8TNIjG0ZpXlGn7/\n",
1042 1042 "4Tj2jirum9ofRzFS2Cy0hcUkz3gXbUFx/RuZTtGWDumyWvXbGJNGR8or8+nw9rPN2s+wqTzYrStd\n",
1043 1043 "/Hx5dtMWjC3crDYpYw+7Tv3BU+Napo9hcxgf58PELr7M/KPlR7YMuzdj2LASh+fnInN1b9FrN4eQ\n",
1044 1044 "cE/ueqw3iXuz2fZ7SouWf6jV63n8j/WYJYlF48bYfJL13/zHD6XXqk/IWPgtyc+/j1nXcpsPTGaJ\n",
1045 1045 "z/bn8tOJIj4cFyWSrGaQdqqQ5Z/tJ7qTHxMmJYgkqxlIkkT+LxvYN2wybt060Hf9V1adZEErT7Qy\n",
1046 1046 "P12Oa9cYvG/oZelQGkQmk/HKoPpaS2/v3ttiRQ9Lqgr4Yv0bTBs/Bzcn65xebaj/TrZaqoK8MXE/\n",
1047 1047 "+h++xGHWXOTe1r+uraE8vJy4+4k+lF6o4ddvE9Fpm7/Abmmdhsmr1xLq6sq8kcOxs/BuoebgEtOe\n",
1048 1048 "vuu/QldUwqEJT6EtKG72a1Zpjby0IYO8Si0Lx0eLSu9NzGAwsWV1Mjs3pDLhvgR6DgxHJqYKm5wm\n",
1049 1049 "p4Cj987g3Kff0X3FPCJnPGQTgyitNtGqy84je8kvxL7ecv0Mm4JSLmfeyOEcLyziP4lJzX49o8nA\n",
1050 1050 "/NUvMK7XJGKD45v9ei1hfJwPd3fzY8YfZ8kobd4ddKYzJ9B9NQ/752YjD2r5KbbmZu+gYsL93XHz\n",
1051 1051 "cOD7RQeoLKtrtmvlVlVx76+rGdQulNduGIjCCsqwNBeVqzPxS97BZ2R/9o96kOKt+5vtWlnlGqat\n",
1052 1052 "SSXSy4E3R0bgbNf6kldLupBfxfJP96PRGLjvqX4EhNj+iLa1MRuNZC36gX2jHsSjd1f6bVqKW5eW\n",
1053 1053 "aSDfFBSvv/7665YOAiAzM5OAgKarPn5i2lv4jx+G74j+TXbOlqJWKBga3o45u/chl8no7Nd8oyTf\n",
1054 1054 "bJ+HyWRk8vBZVl+G4FpEeTvi66zinW1ZdPB1wte56YfwTVnpaOe9it2TL6GM6dTk57cWcrmM8Bgf\n",
1055 1055 "JDNsWHmKwFD3Ji+0mFpSykNr/mByty48nBDfqn4XL0cmk+HZpxtuXWM59cwctPkX8OwXj0zZdFP3\n",
1056 1056 "+7IreHNLFg/2CGRiFz/kbeD72lLMZonDuzLZvOY0A0ZE0X94JEqVbS67sGZVp9JIvP95NDmFJCyb\n",
1057 1057 "i9/oQcispGNBQUEB7du3v+px1hFtE7uwZS+16dmEP3anpUNpNB8nJxaPH8dXScdYm5rWLNc4kLqF\n",
1058 1058 "o+m7eGLsG63yhW1QuAfPD2nHG1syOZTTtNvqzYW5aD94GbsHpqPs2DpGAq9EJpOR0K8doyZ04rfl\n",
1059 1059 "SZxOym+ycx/NL+Chtb8zs18f7uncehPWy/Hsl0C/LV9Tdz6fA+MebZJq8mZJ4tvEAj7dl8vske0Z\n",
1060 1060 "HmXbSwKsTWW5hp++OkRmWgn3TulLXHxgq3wOtSRTnZbU2Z9x5M5nCH1gAj1/WWjR6u7Xo9WNaJm0\n",
1061 1061 "OhInzaLjO8/hFNmuCSKzHFc7OwaEhjBry3ZCXV1p34TVsAvKzjPvtxnMmDAPf/fgJjuvtQl0taOL\n",
1062 1062 "vzNztmfh5agi3PP6R2LMZSVo5sxEfcu9qPoPa4IobYeHtxPtY7zZ9GsydbV6QsM9r+sFZltmFs9v\n",
1063 1063 "3cZ7w4cxNDysyeK0NQoHe/xvHgZmiRNTZ6P2csOlY1SjvreVWiOzt2aSV6lnzphIsR6rCUmSRHJS\n",
1064 1064 "Pmu/T6JT92BG/KsjDo7Wv0bI1pTsOszRe2agdHIg4ev38Ozd1SoT2YaOaLW6yfrMT7/DtWMk3kN6\n",
1065 1065 "WzqUJhHh4cHnN47msT/W4ahW0zc46LrPqTdo+Wj1LCYOeJwI/7gmiNK6xfo68e6Nkby8IYMavYnx\n",
1066 1066 "cT6NPpdUXYX23RdQDR2HasiNTRil7fD2c+GeKX1ZvTyRtSuOMWZiF1Tqa58yWZVyhvkHDvH52DF0\n",
1067 1067 "9m09mwgaSyaTETp5Ah59unL8sdco3XGIuPdmoXJteJHW1OJa3tqaxaD27jzYIxCFWJDdZDR1ejb/\n",
1068 1068 "mkxpSS0TH+qJb4BtdCiwJfrSCs688THl+5OIe2cGPsP7WTqkJtGqpg7rzueT/dVPxL4x3dKhNKmO\n",
1069 1069 "vj7MHzWSmZu3cLyw6LrPt3Tr+wR7t2dEN+uuLdaUwjwc+HBcFKtOFbM8saBROzql2ho0776AIr4P\n",
1070 1070 "6pvuaIYobYejk5qJD/VCqVbww5cHr6ltjyRJLE46xmdHjvL1v8aLJOt/uMRG0HfDYpTuLuwbdj/l\n",
1071 1071 "R05e9WskSeL3lBJe2XiOx3oH8UivIJFkNaHMtBK+XrgXVw8HJk3pK5KsJvZXyYY9g+9F5e5K/x3L\n",
1072 1072 "W02SBa1s6vDk9LfwHzcE31EDmigq6xHo4kKkpyczNm+lf0gw3o6OjTrP1mOr2H9mMzNv/QiVsm3V\n",
1073 1073 "eHG2U3JDe3eWHikgp1JH92CXBg9HS5paNO++iCK6I+q7H7XKYeyWJpfLiIzzRac1sWHlSbz9nPHw\n",
1074 1074 "unKhVrMk8cG+A2w+l8mym8cTbCN9C1uaXKXEd3h/HEICOPHkG5j1Bjx6dkZ2iZ2YWoOJebvPc/B8\n",
1075 1075 "JXPGRNDJ37baFFkzg97EjnVnOLw7kxsndqFr71DkVrIQu7WoScvixJTXKd11hG6fv0nw3eNsomQD\n",
1076 1076 "tMHF8MVb9lGTmkn4E3dbOpRmM6hdKC8P7M9jf6wju+LaF3en5Z3gxz2fMWPChziobbdy+fXwcFDx\n",
1077 1077 "wdhI0kvqeH9nNkbz1Ue2JK0GzfsvIw+LQn3vEyLJ+i8ymYxeg8K56a5ubFx1ir1bzmK+zPdUZzTy\n",
1078 1078 "wpZtHCsq4pt/jcfPuW3+Dl4LvzGD6LdpKaW7DnN44vR/1NzKrdQybU0aMmDBzTEEi156TaYwr5Jv\n",
1079 1079 "P92Hps7A/dP6ExrhZemQWhVjdS1n3vyEg7dMwWdEf/puWIxbfAdLh9UsWkWiZdLqSHnlIzq89Qxy\n",
1080 1080 "u9Y9SjM6MoKnevbgobW/U1Dd8L6I5TXFzF/9PI+NfpVAz7DmC9AGONspmTMmkhqdiTe3nENnvHzV\n",
1081 1081 "c0mnRfvhv5EHhGB3/1MiybqMkHBPJj3Zj9ysclYuO0Jdzd+LxZZrNDy09g8MZjNLxo/D3V4kBA1l\n",
1082 1082 "H+hLz58X4jWwB/tGTKZg9RYkSWJPZgXPrD3LzXE+zLyhHfaiX2GTMBpM7NqYxsplR+k7JIJxd3TF\n",
1083 1083 "3sE2RlhswV/ThLsH3oWhrJIBO5YT9sjtVtUEuqnJpJYqP34VW7duJSEhoVFfm/HRMiqPp5Cw7N0m\n",
1084 1084 "jsp6LT12nF9On+HbW8bj6XDlnXRGk4HZPzxO57De3Nb/0RaK0PoZzRIf7MymuFbPmyMjcPqfBd2S\n",
1085 1085 "Xo/2o1eRubpj99hMZDbamqglmU1m9m5N53RSPuPu7EpQOw+yKip4/I/1jIpoz/TevUQtp+tQkZjM\n",
1086 1086 "yafnUOzhzfobb2fmhHiifRq3jED4p9yscjauOomPnwvDxsfhZIGeqa1Z1ak0Ul7+CJNWR9ycZ3Hv\n",
1087 1087 "btvlXBITExk27Oo7z60qhZR0WmR21/ZOV5NTSNZ/fqDfpqXNFJV1eqBbV6p1eh5Zu45lN4/Dxe7y\n",
1088 1088 "TwjfbPsQZ3tXJvSzvWbRzUkplzFrcDu+OJDH02vSeHNkewJc67+PktGAduGbyBydsHtUJFkNJVfI\n",
1089 1089 "GTgymqBQd1Z/l0RAV2/mFR1jep+e3BbXOqcFWpIpNprVz7xM9Pq13LHwbRzdpiDdMVaMtF4nvc7I\n",
1090 1090 "7k1ppJ0qYthNHYju5G/pkFoVfXkV6e99SeHabUS98CjBd41Dpmg7z6lWNdas/eI9pGtspnzmtQW0\n",
1091 1091 "e/h2HEKarqq8rZjaqwcJAf48sW4DGoPhksdsP7GaU9mHeXLcm8hlVvXjtgpymYwpfYO5Kc6bp9em\n",
1092 1092 "caKgGsloRPvJ26BQYvfEi23qCaGptI/1xW+UH0eOZPOAKZKb2kdaOiSbdziniid/O0PXdh48vGgW\n",
1093 1093 "vX6cz/nFv3DkrmfQ5BRaOjyblXW2hGUL96LXmZg8vb9IspqQZDKRs3w1ewbdDZLEgN0rCLn35jb3\n",
1094 1094 "nGpVr7xSVTn6X5Y1+PjibQeoSk4n/Ml7mi8oKyaTyXhxQD9CXF2Zun7TP5Kt9IJTfL9zIc/d8gGO\n",
1095 1095 "di4WitI2jI/zYdbgdry1NYvfv/wOjAbsn3oJWStsatzcJEnik0NH+OL0ce57oi+hfu58++l+LuRX\n",
1096 1096 "WTo0m6Q3mvniQC7z95znxSFhTEoIQC6T4dopmj7rvsKzXwL7Rj1A9tKV1/xGtS3TagxsWHmSTb+e\n",
1097 1097 "YsTNcYy5rTMOjq17jW9LqkhMZv/YR8j7aT09Vswjbu4M1B5tc5dxo9doZWdns2TJEuRyOWq1mqlT\n",
1098 1098 "p+Ls/PdtxSUlJXz++eeYzWaMRiMTJ06kS5culzzf1q1biY+KoO71aahvvhvVoFFXvL5Zp2fP4HuJ\n",
1099 1099 "nT0d3+G218+wKRnNZl7ZtoO86mo+HzsGZ7WaitpSXv5mEpOHz6Rn1BBLh2gTJLOJjP98xluyrvTp\n",
1100 1100 "FMYjfUNELaJrpDeZeGX7TrIrKvn0xlEXy5CkHMtn2+8pDBodQ+cerbcTQVPLLtfwzvYsglztmT4g\n",
1101 1101 "BFf7Syf+NWezOfXsHGQKOZ0+fBGniNbX4LwpnT1dxNY1p4mM82PQqGjUotF2k6nLyiVtziLKDx0n\n",
1102 1102 "5pUpBNw6qtVObTd0jVaj62i99957PPfcc4wePRovLy9WrVpF795/r8a+bds2+vfvz8SJE+nRowef\n",
1103 1103 "ffYZw4cPv+T5MjMzCQwLR9m5O7rP5qJoH4Pc5/JDuOc+XY5ZZyDquYcaE36rIpfJGBoexqkLxSxO\n",
1104 1104 "Os7QdiEsXD2DntGDGRk/0dLh2QTJbEa3ZAEuxTmMfOge1p6tZFdmBb1D3VCLujkNUq7R8Pgf67FT\n",
1105 1105 "KPhkzCjc/mtnoY+/C+1jfdnxewoFOZWEtPcUDXiv4K8CpO/vOs/d3fx5sGcA9lf4fqm93Am640ZM\n",
1106 1106 "dRpOTJsNgFtC3CXrbrVltdU6Nqw6RUpSPmMmdiG+TygKsVuzSehKykh763NS/j0fv9ED6fLZ67h1\n",
1107 1107 "7dBqkyxo5jpaeXl5BAQE4PFn7724uDgKC/+5RmDcuHHExdW3eNHr9Xh6Xr2xqTwwFLspL6L95G3M\n",
1108 1108 "hbmXPEaTU0jWFyvoMLt1VYC/HnKZjFcHDaB7gD8TVnwDSldu6/+YpcOyCZIkof/mU8x557F/7i3c\n",
1109 1109 "XJ14e3QEfs5qnl6TRkGV7uonaeOyKyq5a9VvxPv7MW/UCBxU/9wO7+3rzL1P9kVtr+TrhXvJTCu+\n",
1110 1110 "xJmESq2R1zdnsiG1lHnjohgd49WgFyuZQkG7h2+n7/qvKN1xiAPjHqUq+WwLRGz9zGaJE4dz+Prj\n",
1111 1111 "vbh5OHDftP6EhItG203BWFtH+odL2DPoHmQKOQN3ryDi6ckoHa+/r2xrccXx0oqKChYsWPCPz3fs\n",
1112 1112 "2BFX17/PtSqVSkwmE4pLLHK7cOECixYt4rHHGvbCr+yUgHTr/Wg+eAXH1xcic/77tVJenU+7hybi\n",
1113 1113 "2O76+/61JjKZjF6uxewynuOgoSfFtRpRFPIqJElCv/xzTOdScXjhXWT29U8OSrmMqf1DWHO6mKfX\n",
1114 1114 "pvHy0DC6BIh1bpdyNL+AZzZuZmrvnky8ys5ClVrJ8PFxRMX5sXHVScKivBl8Y6yYuvlTYl4VH+w8\n",
1115 1115 "z5BID14ZFoaqEaOpju2C6PHTAnK/X8uRO57Gb+xgomY+jNq76ZrS25KCnAq2rjmNXCHn1sk98Ats\n",
1116 1116 "m+uEmprZYCT3+7VkzFuKZ794+q7/SrwmX8YVn93c3d157bXX/vH5/Px8Vq5c+bfPGQyGSyZZGRkZ\n",
1117 1117 "rFixgilTpuDl1fDKuqqhYzEX5KJd8Cb2z7+DTFn/Drlo3U5q0rLo+vkbDT5XW3GuMIXvdizg87v+\n",
1118 1118 "w6acaib9tpol48cR7CqeWC5FMpvQLVmAOTcLh+fnInP8Z1I6Ps6HIDc7Zm/N4qGegYyOEdWh/yJJ\n",
1119 1119 "Ej8mn+aTw0d4b/gw+oU0fO1Vu0gv7p82gB3rzrBs4V7G3NqZkPZtd4TBYDKz7GgB29PLmXFDKAlB\n",
1120 1120 "1/c3K5PJCLlnPH43Dibjw8XsvuEe2k+dRLsHb7OZ9ibXq65Gx66NaWSmlTBodDRx3QJb9TRWS5Ek\n",
1121 1121 "iaI/dpD2ziIcAn1J+OY93LrGWjosq9aoNVouLi6sWbOGhIQEHBwcSElJoaSkhF69ev3tuCNHjrBh\n",
1122 1122 "wwamT5/+jxGw/3WpXoeKTvEYj+7DdPo4ioS+mGrqSLxvJp3nv4RTeMi1ht2qVdaW8fZPT/DA8FnE\n",
1123 1123 "hXYnIcAfhUzGqzt2MSg0FA8HUYn7v0lGI7pF7yOVFuMwc84lk6y/BLra0TfUjU/25VJYrSM+0KXN\n",
1124 1124 "F93UGo28vnM32zKz+Wr82EY1hlYq5UR28MXDy5ENK09SVaElOMwTRRtbE5dToeWVjRkYzfD26AjC\n",
1125 1125 "PZtuykXhYIfP0L74juhPzje/kbHgaxxCA3BsH9Jqkw6zyUzSgfOsXXGMwFB3xt8dT0CIe6v9/7ak\n",
1126 1126 "sv3HOP7Yq5TtPUqHN6YROfNh7P19LB2WxTR0jVajdx1mZWWxePFiFAoFarWaadOm4ezsTGJiInq9\n",
1127 1127 "nj59+vDggw8SEhKC/M8FmXK5nH//+9+XPN/lKsNLWg2a2c+g7DuE9H15mDRaOn/0UmNCbrWMJgNz\n",
1128 1128 "fnqS6KCu3Dnoyb/9269nUpl/4BD/GXcjMd5iNAZAMujRfjIHTAbsp72KTN2w6s9VWiNvb8tCIYdZ\n",
1129 1129 "N7TDvY225cirqmb6xk2Eubnx5pAbcLzEeqxrpanTs21tCoV5lYy5rTOBoa1/msssSaw5XcJ3SYXc\n",
1130 1130 "l+DPuA7ezZ4MFG/dz5nXF2If6Efsm9Nwibn6i4Qtyc0qY+uaFOwdVQy7qQPefmK6vymU7T9GxoJl\n",
1131 1131 "1GWcJ+r5RwmYMFJstKDhuw5togWPuayY2pemkH6qlo5rf2iztTguRZIkFm+eS3FlPs/fOh/5JSqY\n",
1132 1132 "rz+bzpw9+/hs7OhGjTy0JpJOi3b+62DviP2TL16ckm4oo1li2ZF8tqWXM2twO7oFtq0n8n05ubyw\n",
1133 1133 "ZRsPJXTjvi6dmzwxSDtVyJY1p+mUEES/4VEoW+mOsPPlWubtOY8ceGZgKCHuLTfibDYYyfl6FRkf\n",
1134 1134 "fY3/+KFEznwYtadbi12/OdRUadm5IZXczHIGj4khurO/GMG6TpIkUbrzEBnzl6ErLCF86iSCJo5p\n",
1135 1135 "M1PPDWGTLXguy8WDtAw5UdFKFOWFIBKti9Yd+Y60vGO8fvfiSyZZAGOiIrFXqXjij/UsGD2S7gFt\n",
1136 1136 "r4o+gKSpRfPBv5H7+GH3yIxGVSdWymU83CuI+CAX5u7IYmSUF/d1D0DZyuttSZLEV0nHWH7iFB+M\n",
1137 1137 "HE6voMBmuU50J3+CwzzY/Ntpln+6jzG3dcYvyLaTgP9mNEv8fKKIlScvcF/3AMZ18G7xaWi5Skm7\n",
1138 1138 "h28nYMIo0j9YzJ6Bd9P+6fsJnTzB5hr7moxmEvdnc2jnObr0DOGBpzuKjRXXSTKbubBpDxnzl2Gq\n",
1139 1139 "0xIx/X78bx6GXBRvbjSbGNE69/G3lO1LpOuzt6L/5lMc3liI3LPtzgv/5VDadpZueZfZ9y7F2/Xq\n",
1140 1140 "ydP+nFxmbtl6zQuXWwOppgrN+y8jD4vE7v6pTTLsXaEx8P7ObGr0Jl4cEoZ/K21AW6PX8/K2HRTV\n",
1141 1141 "1jJ/1Aj8/6cwcXOQJImU4wVs/+MMMZ396T880uardp8tqWPe7vN4OCiZ3j8UPxfr+P9Up57jzGsL\n",
1142 1142 "0eYWEvHsg/iPH2r1L6qSWeLMiQL2bknHw9uRIeM64OktdlhfD8lkonDtNjIWfINcqaD905PxGzNI\n",
1143 1143 "TBFeQauZOqzNzOXA2Efou2ExjqGB6P/4CePebTi8+tHFrfhtUUZBMnN/mcaLEz+hvX/Dm/UeLShg\n",
1144 1144 "+oZNzOrXl/Ex0c0YofUwV5ajffcFFJ0SUN/1aJNOKZgliV9PFfPD8SKe7BfM4Pata23RufJypq3f\n",
1145 1145 "RI+gAF4a0B91C/co09Tp2bv5LGnJRfQdGknXnsHIbWyxvM5oZnlSIRtTS3mkdxDDIz2sblpLkiRK\n",
1146 1146 "dx0m46Ol6IpKaT/9PgJvHW11I1ySJHEutZg9m86iUMoZNCqa0Aix9vR6mA1GClZtJGPht6g9XIl4\n",
1147 1147 "ejLew/pa3e+oNWoViZYkSRy5fTreQ/oQPuXui5/TLZmPVJSP/Yy3GryQuTUprizg1e8e4KERL9Aj\n",
1148 1148 "avA1f316WRlT1m1gdEQET/fp1ap30JnLitG88zyqvoNR3TKp2Z480krqmLMtiy4BzkzpE3TFKt62\n",
1149 1149 "Ysu5TF7fuYtn+vTm1g6W3b5dXFDNtj9S0NTpGTYuzmZKQZwqrGHe7vOEezrwVL9gPGxgA0XZ/mNk\n",
1150 1150 "fLSUuswcwp+8l6A7x6Kwt/zzbE5mGbs3pqHTGRk4IoqIDr4iGbgOxupa8n5eT9bn3+PQLoiIZybj\n",
1151 1151 "2S9BfE+vQatItPJ+3kDWohX03bD4b0PZktmE7ov3kKorsX/mTWRq6xiCbwl1umpe++5hBncez9ie\n",
1152 1152 "jW+mXa7R8PTGzTir1bw3fChOrfB7aL5QgOadWaiG34R67O3Nfr06vYlP9+dy5kItLw0NI8LLsdmv\n",
1153 1153 "2RxMZjMLDx3h97SzLBg9kk6+1jFNL0kSaclF7FyXin+wKzeMicXNwzpHtev0JpYcyWdvViVP9g1m\n",
1154 1154 "QLi7pUO6ZhVHT5Ex/2uqTqUR/sTdhNx7MwrHli8TU5RfxZ5NaZQW19J/eCQdugYib+VrIptTdeo5\n",
1155 1155 "cpauouC3zXgO6E7Y43fh0aOzpcOySTafaOlLK9hzwz10//YD3OL/OTUmmUzoPpuDpNNh//Rr17x7\n",
1156 1156 "zBYZTQbeXfk0AR4hPDD8+et+56E3mZizey9JhUV8euOoVlXY1Jx/Hs3cF1CPvxPV8PEteu2t6WV8\n",
1157 1157 "cSCPe+L9uTmu+bfsN6Xcqipe2LIdO6WC90cMw9PB+hIZg8HE4d20Xun0AAAgAElEQVSZJO7NJr5P\n",
1158 1158 "KL1uCEelto4pLkmSOJhTxSf7cogPdOHR3kG42Pji7KqTaWQsWEb5wROEPXYHoZMnoGyBjhNlJbXs\n",
1159 1159 "3XyW3Kxy+gxuT5eeIaIvYSOZDUYurN/F+WUrqc3IIfje8YTcezP2AdbxJspW2XyidWLabFTurnR4\n",
1160 1160 "8/L9DCWjEe3HbwFgP/UVZFa+gPN6SJLEl5vepqz6AjMnzEMhb5r/qyRJfH8qmUVHk5g3cjg9Am1/\n",
1161 1161 "R6IpPQXt/NdR3/EQqoEjLRJDXqWOd7Zn4emo5OkBoXg6WvcbAUmSWJN2lvf27ufhhG7c37WL1U8p\n",
1162 1162 "V1Vo2LUhjbzscm4YHUNMF8tu6c8q17DoQB4XavRM6RdM9+us7m5tqlPPcW7BN5TsPES7B24l9MHb\n",
1163 1163 "mqUsRHWllv3b0jmbXESPAWEk9GtnNYm0rdEWFpO7fA05y1fjGB5M6AO34jfmBqtbe2erbDrRKt19\n",
1164 1164 "hJPPvM2And+hdLry9ItkNKCd/wYyOzvsprzUqC37tmDtoW/YnbyON+5ZjIO66d9N7s/JZdaWbUxr\n",
1165 1165 "QL86a2Y8tAvt0oXYPzoDZXwfi8ZiMJn5NrGQ9amlTErwZ2ysNwornPKo0Gp5c9ce0svKeG/4MGJt\n",
1166 1166 "rLBtblYZ29amoFIrGTQ6mqB2LbshoVJr5JujBezKrOCeeD/GdfBp1eU+as/lcO7jbyn6Ywc+Q/sQ\n",
1167 1167 "fO/4+rU917k7raSwmsN7sshIuUCXnsH0HBRu8ztNLUGSJMr3J5G9dCWlu44QcMtwQidPwCU2wtKh\n",
1168 1168 "tTo2m2iZNDr2DrmX2NlP4zuif4O+VtLr0X70KjIXd+wen4nsMvWkbNWB1C18s/VDZk9ahpeLX7Nd\n",
1169 1169 "J6uigifXbaR/SDCz+vdFaUPbeiVJwvDHTxg2rcb+2TdRhEVaOqSLsso1fLw3F63RxPT+oUT7WM/a\n",
1170 1170 "rf25eby8bTsj2rfn2T69sLPRUWGzWSI5MY8D2zNwdXeg9+D2tIv0atYRLoPJzJrTJfxwvIjB7T2Y\n",
1171 1171 "lOCPq71tfv8aw1BRRf6qTeQuX4OpTkPQ3TcRdMeN2Pt5N/gckiRxPqOUw7uzKC6sJr5vKF17hYgE\n",
1172 1172 "qxHqzudTuHor+T9vQEIi9IFbCbptNEoXUfaiudhsopX2ziLqzuXQ7cu3runrJb0O7QevIPP2xe7h\n",
1173 1173 "51pN7Y+z+Sd5b+XTvDTxE8KvoYxDY1XpdMzYtAWzBB+OHI6bFew2uhrJaET39ceYM1KxnzHbKmus\n",
1174 1174 "SZLE5rNlLD6cz8BwdyZ3D8DZgmt3dEYjCw4eZn16Bm8NvYH+Ia2jd6jZZObMiUIO7jyHSiWn9+AI\n",
1175 1175 "Ijv4ImvCESZJkjh4vopFB/MIdLXjsd5BhHq03V6ikiRReSyF3OVrKPx9O5794gm+5yZ8hvS57AyD\n",
1176 1176 "yWjmzMkCjuzJwmyS6DEgjA7dAlttJ4Dmoi0opnDtNgp+20Jddh7+44YQ8K8RePTpalNrQ22VTSZa\n",
1177 1177 "UQ5uHLptKv23fXNN74r+Imk19UUpA0Owe2C6zSdbxZX5vLr8AR4Z9QoJkQNb7LpGs5kP9h1g1/nz\n",
1178 1178 "fHbjaMLcrXfHlFRXi3bhbFAqsH/yZWQO1jNadClVWiNLj+Sz/3wlj/QKYmhEy9dUSistZdaWbbRz\n",
1179 1179 "c+ONwYNwt299SYJklkhPucCBHRkYDWZ639Ce2C7+112DK6tMwxcH8yiu1fNY72B6hbSudVjXy1hT\n",
1180 1180 "S8HqreQuX4OuqISgu8YRfOc4HEL8AdBqDJw4nEPivmw8fZzoMSCc8Gjb2jBiafqScgp/307B6i3U\n",
1181 1181 "pGTgO3oQATcPx3NAd7H2qoXZZKKl//cXBN1xIyH3/avR55E0dWjeexFFWCTq+56y2T/gWm01r333\n",
1182 1182 "IMO6TWBM97ssEsPKlDPMP3CI2UNuYHBYO4vEcCXmkiK0H7yCokMX1PdOsan1eSkXalm4NwcXOwVP\n",
1183 1183 "9QshtAV63ZklieUnTrLoaBLP9e3NLbExNvv30VCSJJGdXsqB7RlUV2rpdUN7OsYHorzGOmcVGgPf\n",
1184 1184 "JhayK7OCe+P9GdvBu1Wvw2oK1afTyVm+hoJfN+EYG0lteAfSFX6E9Iyix4Bw/AJFktpQhspqitbv\n",
1185 1185 "pOC3LVQmnsZnWF8C/jUc78G9kduJaVZLsc1E6/X/0Pu3z657JEqqq0Uz93kUMZ1Q3/2Yzb2Y6A1a\n",
1186 1186 "5v4ynRCfCB4YPsuisSQWFPL8lm30DwlmZv++OKmsY/ec6Vwq2o9eQzX2dlSjbrG5nzGAySyx5nQx\n",
1187 1187 "3yUVMraDN3d188e+maZOimpqeWnbdjRGI3OHDSHUrfX0D2yo3KxyDu7IoLiwmh4DwujSM+SqffEq\n",
1188 1188 "NAZWnSpm3ZkShkZ6cm9821qHdT2MBhMZKRdIPpRF5Z7DBNfkIDudjL2vJ74j+uMzoj/u3Tva1Buk\n",
1189 1189 "liKZTFSdOkvpniOU7j5CxZFTeA/qif+/huMzvB9KR+sru9IW2WSiFe3kgXNMeJOcT6qtRvPOLBSd\n",
1190 1190 "uqO+4yGbeSE2mgx8+OsMHO2ceXLsm5dtFN2SavR65u7Zx+H8AuYMG2zxptTGI3vQLp6P/cPPouze\n",
1191 1191 "z6KxNIXSWgNfHMwltbiOR3sF0S/MrclKKxjNZr4/eYovjiZxT+eOPNY9waY2OTSHovwqDu7I4HxG\n",
1192 1192 "GVEd/eiYEEhQu79P4RbX6vnlxAW2pJdxQ3sPbu/i22p7WTYlSZLIy67gdFIeaaeK8A10pWN8IFEd\n",
1193 1193 "/VDbKZFMJiqPpXBh816KN+1FW1SCz9A++I4YgNfgXqhcm7+PpjWSJIm6zFxKdx+hdPdhyvYmovZy\n",
1194 1194 "x2tgT7wG9sBzQPc2+72xZjaZaF2uqXRjSdVVaObMQBHfB/XEB6w+2TKZjSxc8xJmycT08XNRKqxj\n",
1195 1195 "9Ogv2zKzeGPnbm6KjmJqrx4tvkNNkiQM63/BsH4V9s++gSK8dfVqPJpXxZJD+RjNEnfH+zMgzP26\n",
1196 1196 "ykEkFhQye9duPOzteXnQACI8WlcfxutVU6Xl9LF8khPzMRpMdEwIwjvKm3XZVezOqmBklBe3dfbF\n",
1197 1197 "y8m6/g6tUUVZHaeT8klOykOpkBOXEESHrgG4ul955EWTW0jxln1c2LyX8oPHcevWAd8R/XHv1QWX\n",
1198 1198 "DhFW0fqnuegulP6ZWNV/SCYTXgN71CdXA7pjH+hr6RCFqxCJ1p/MleVoP/w38oBg7B5+FpnKOuez\n",
1199 1199 "zZKZz/94jSpNOTNumYdKaZ1xlmk0vLFzN1kVlcwdPoQO3te+aaExJJMJ3TefYE5Lxv65t5B7t84n\n",
1200 1200 "IUmSOJRTxXdJhdQaTNzdzZ/B7T2uKeEqrdMw78BB9ubkMKtfX8ZERlj9mwxLkiSJY2eK2bwjE1N+\n",
1201 1201 "JQ7uDvTtF0q3+EDs7EWSdTlajYG0U4UkJ+ZTVlJLbBd/OsYH4Rfk2qjfN2OdhrLdR7iwZR+Viaep\n",
1202 1202 "PXcep4hQ3LrE4to1FrcusbjERdjcmiRJktDmFVGdkkF1SgY1p9OpSj6L7kIZnv3iLyZXTpGh4u/U\n",
1203 1203 "xohE679IOi3aL95DqirH4enXkblY1/oUSZL4atMc8suyeOG2hdiprHv+XZIkfk87y7v79jOpS2ce\n",
1204 1204 "iu/WrNNR5rJitJ++g8zOHvupLyNzaP11YSRJIjG/mu+TCimtM3JXNz+GRXpecQG2yWzm59MpfHL4\n",
1205 1205 "CDdFR/Fkzx44t8Ielk0praSOFccKSS6sZUInH26M8aIos4zkxDzOZ5TRPtaHjvFBtIv0Ev31qB+5\n",
1206 1206 "yjpbQtbZEs5nlBEW6UVcQhDhUd5N3h7HpNFRnZJO1fFUKo+nUHUildrMHJwj2+HaJRa3rrG4donB\n",
1207 1207 "OTrcIj0YL8VQVUPNmXNUn06n+kwGNSnnqE7JQGFvh3NcBC4dInDpEIlLhwicO7T/Ww9fwfaIROt/\n",
1208 1208 "SGYz+p+XYjy0C4cZbyEPsI66QZIk8e32eaTlneDlOz5rlqrvzaWguoaXt++gzmBg7rAhzVIGwnjs\n",
1209 1209 "ILovP0Q18l+obrrT5kt2NMaJgmqWJxVSUKXnzq5+jIj2RP0/ZQpOXrjA7J17UCsVvDpoANFetlXd\n",
1210 1210 "vSWZzBJH86r4LbmY7HItt3X2ZUys9z82ItTV6kk9UUByYh7VVTrCorwJjfAktL0XLm7W8cLe3PQ6\n",
1211 1211 "I+fPldUnV2klGAwmwiK9aBflTXi0d4sXFjVpdFSfPkvl8TMXE7C6zFzk9nbY+/tg5+998fa/79v7\n",
1212 1212 "+6D28WhUYiNJEsbqWvQl5ehLytEVl9Xf//NWV1p/X5NbiKGsCufoMFziInHuEIFLXAQusRGovay3\n",
1213 1213 "RI7QeCLRugzDzg3of1yM3VMvo4zr1uzXu5ofd39GUsYeXrnzC5ztbW+7s1mSWHEqmU8PH+Wpnt25\n",
1214 1214 "s1PHJlnILRmN9Ynx/u3YT3kRRazoLp9cVMP3SYVklWu5vYsfo2O80Bj1zD94iG2Z2TzXtzfjo6PE\n",
1215 1215 "9MNl5FZq2ZhWxpazZXg7qRgb683QSI9/JK2XUl5SS3ZGKefTSzl/rgxHJzWhEZ6ERHgR2t6z1VQy\n",
1216 1216 "l8wSRflVF0etivKrCAx1p12kN+FR3nj7O1vd75ckSRjKq9AVlaAtKL7kra6wBH1ZBSpXF2QqRf0b\n",
1217 1217 "Nrms/v8ik9cXtJX/eSuTIZPJQSbDWFOfYMlUSuy8PVB7e6D28UTt7fG3x3beHtgF+OIYGiB2UbYh\n",
1218 1218 "ItG6AuPpY+g+eRv1HQ+jumFUi1zzUn47sJTdyX/w2l1f4upo2wuVM8sreGHrdpxUSmb173dd/fLM\n",
1219 1219 "JUVoP3kbmZML9o/PsrqpXktLLa7lu6RCjhdUUW0spleIMy8OSsCtFRYevV61ehO7zpWz8WwZBVU6\n",
1220 1220 "hkd6MiLakzCPxk/PS2aJ4sLq+sTrXBl5WeW4ezoQGuFFaIQXwWEeVy0bYQ0kSaK6UktJYTXFRTVc\n",
1221 1221 "yK/ifEYpjs52hEV5ERblTXCYJyp160gczEYjhrJKJJMZyWwGs4QkmUGSkMwSmM3/f4sEZgmlsxNq\n",
1222 1222 "L3ermZoUrItItK7CnH8ezYf/RtlrUP2OxBaeklp/dAUbjv7Aa3d/haez9bWMaQyj2cwPp07zn6OJ\n",
1223 1223 "9A0JZlqvngS5ulzbOY7uQ7f4I1RjJ6Iac1ubnCq8EqPZzB9n01l0NBFXtQs9fGM4nq/DXiVnWKQn\n",
1224 1224 "QyM88HVuHaMrjWWWJE4W1rAprYx92ZV0DXBmVLQXPUNcm6XIqMlkpjC3kvPnyjifUUphbiVung54\n",
1225 1225 "eDnh4e2Ep7cj7l71tw5OaouMCOm0BooLaygpqq5PrAqrKSmqQalS4O3njI+/Cz7+LoS097zqTkFB\n",
1226 1226 "EOqJRKsBpOpKNB+9hszNs37kxK5l3rVsP/EbK/d9yWt3fYWPm2VrUjWHWr2eZcdPsPzEKcbHRPNY\n",
1227 1227 "93g8Ha785C0ZDehXfInx6D7sn3wJRVRcC0VrGwwmE2vTzrLoaBL+zk5M6dmdXoGByGQyJEkiuaiW\n",
1228 1228 "rell7M6sINzTgWGRngwIc7NoP8WWVlitY2t6OZvSSrFTyhkV7cWwSA/cHVp256DBYKKsuJbykr8+\n",
1229 1229 "6igvraWsuBYADy9HPLzrkzAPL0fcPB1QqZQo1XKUSgVKlRylSoFSKb9iUmY2mdFqjWjrDGjq9Gg1\n",
1230 1230 "BjR1BrR1BrR/Pq6sqB+x0moMePnWJ1R/JVbe/i44OrXtpFwQrodItBpIMujRfTkPc2Eu9s++idzd\n",
1231 1231 "s1mvt+f0er7bsYBX71xEgKf1tbVpSiV1dSw6msjvaenc17Uz93XtcsnK8uYLBWg/fguZpzf2jzyH\n",
1232 1232 "zNn21qo1F73JxG9nUvky8Rihbq480aM7PQIvn5zrTWYO51SxNb2MpPwauge5MCzSkx7BLqius8+f\n",
1233 1233 "tanVmziWX01iXv1Hrd7EwHB3RkV7EeXtYJVriTR1BipKaykrqatPwkrrqCrXYDCYMBpMGA3mP29N\n",
1234 1234 "mMwSSuX/J18qlQKFSo5Bb0JbZ0CvN2Fnp8TBUYW9owp7RzUODn/dV+HgoMLZ1R5vf2fcPRybtLG2\n",
1235 1235 "IAgi0bomkiRh+G05hp0bsX9uNoqQpqlO/78OpW1n8eZ3eOX2zwjxiWyWa1ij85WVfHzoCIfy8nm8\n",
1236 1236 "RwK3dYhF9eeCUeOhXeiWfYxq/F0220qnOeiMRladSeWrxGNEenrwePcE4gP8r+kc1TojuzMr2Jpe\n",
1237 1237 "xvkKHfGBLnT0c6KjnxPhng7XVQzVEoxmidQLtSTmV3M0r5rMMg0dfJ3oHuRCQpAr4Z72TVZR3xqY\n",
1238 1238 "zRImownDxeTLjNFoQqVWYO+gwt5eJZInQbAgkWg1gmHfNvTLP0d91yMoB4xo0hf9/Wc2s3TLu7xw\n",
1239 1239 "28e09+/QZOe1JaeLi/nowCFyqqqY1rULgw9sQjqdhP1Tr6Bo37qqvDeW1mjk59MpLEk6TgdvLx7v\n",
1240 1240 "0Z0uftdfnLWoWs+xgmqSi2pJLqqhtNZArI8THf2diPNzooOPE45WtujZLEnkVepI+nPU6nhBDf4u\n",
1241 1241 "ahKCXOge5EJHP2fsmqk3pCAIwtWIRKuRTNnp6BZ9gMzTG7sHn0buef2Vz9cfXcHag9/w/G0LaOfb\n",
1242 1242 "thMKSZLYs3Et85NTwdGZBwYOYkRsTIu387E2OZVVrElL48fkFLr6+fJ49wQ6+jbfJokqrZHTF2pJ\n",
1243 1243 "LqrldFENZ0s0BLraXRzxivZxxNtRhb2q+ZOvWr2JnAotuZU6ciu15FTqyK3Qkl+lw91BRdcAZ7oH\n",
1244 1244 "uxAf6NLi660EQRAuRyRa10EyGjCsWYFhy9rrGt2SJIkVuz7hyNkdvDjxY3zcApshWtthzstGt2wh\n",
1245 1245 "kqYO1f1T2S6356fkFJKLi7kxKpIJsTHE+Xi3menDKp2OjRnnWJ2aRlZFBWMiI7mtQywx11Eao7EM\n",
1246 1246 "JjPppRpO/znilVGqobTOgFIuw9NRhZejCk9HFZ4OKryclH/e1j/2cKhPkg1mCb1RwmA2ozdJGEz/\n",
1247 1247 "f2swSRfvl2uM5FTWJ1Y5FVo0BjPBbnYEu9kT4m538X6wmx0OLZDoCYIgNIZItJrA/49ueWH34DPX\n",
1248 1248 "NLplNBn4z4a3yC/LYtat822+Ttb1kLQa9L99h2HHetQTJqEadtPfivrlV1fz25k0fj2TipNaxYTY\n",
1249 1249 "GMZFR111p6ItMphM7M3JZXVqGntzcukXHMT4mGgGhIagtrJCh5IkUas3UVpnoKzOSJnGQGmtof62\n",
1250 1250 "zkBZnYHSOiPlGgMyQK2Qo1LILt7+7b5cjlpZf+vuoCTYzY4QN3uC3e3wdlS1meRaEITWQyRaTaR+\n",
1251 1251 "dOsHDFvWoL7zYZQDR171RUGrr+Oj1c8jl8uZftNc7NWtL2FoCEmSMCXuR/ftZyiiO6K+61HkHpcf\n",
1252 1252 "rTFLEofz81mVksqOrGz6BgcxoUMs/UKCm7WXYnOTJImUkhJWp55l3dl0Qt1cGR8TzeiICNzs7Swd\n",
1253 1253 "niAIgtAIItFqYqbsDHT/eR+Zx5VHt6rqynn3l+mE+ETyyKiXUMjb5toj84UCdN9+hrkwD7vJU1F2\n",
1254 1254 "jL+mr6/W6ViXnsGvZ1IprKnh5phoRkdGEO3picIGki6t0cipC8UcyS9gXXo6GoORm2OiuSk6inbu\n",
1255 1255 "otK9IAiCrROJVjOQjEYMa1dg2LwG9R0Poxz099Gtoopc3vl5Kv1iRzJxwONtcjpEMugxrPsF/fqV\n",
1256 1256 "qMfciurG25Cprq8oYnpZGavOpLI9M5tSjYbOvj508/ejm78/Xf18cbWz/KhQSV0dSYVFJBUUklhY\n",
1257 1257 "yNnSMiI9PYj392dE+3DiA/xbVekBQRCEtk4kWs3IlJ2B7ssPkLl5YvfANOTefmQWpvDeqme4pe9D\n",
1258 1258 "jIyfaOkQW5xkNGI8uBP9b98h9w/CbtIU5L5NX/W+XKPheNEFkgqLOF5YxKniYgKcnenm70e8vx9d\n",
1259 1259 "/f0Id3dv1qTGLElklJWTVFh4Mbmq0Gnp6udHQoA/8f7+dPb1weESxVkFQRCE1kEkWs1MMhox/P4j\n",
1260 1260 "+g0rqY6O4lPTUcbf/BK9oodaOrQWJWk1GHasx7B+JXJff1Tj7kTRpUeLjeYZzWbSSks5VlhU/1FU\n",
1261 1261 "RLVOTydfH3wcHXG1s8PVzg43+z9v//xwvfihRqVQ1C/8Nhgo1Wgo12j/vNVQptFQqtFSrtFQ+ufj\n",
1262 1262 "gpoa3Ozsiff3Iz7AnwR/fyI8PcSIlSAIQhvS0ESrbS4gagIypRL1v+4hMcSRnJ8/Y2aFC+r1uzEp\n",
1263 1263 "g1C0j7F0eM3OXFGGYdNvGLavQxnXFfvpr1rk/62Uy4nz8SHOx4e7O3cCoLiujuQLxZRpNFTp9FTq\n",
1264 1264 "tJwrr6BKp6NSq6VSp6+/r9NRrdNhp1RiNJtRymR4Ojrg6eCAp719/a2DAwHOznTy8cbDwQEvBwf8\n",
1265 1265 "nJ1a5Y5IQRAEoemJRKuRzGYTvx5Ywrbjv/HCc5/j6hKEYecGtAveQO4fjGr8XSjiurW6dVrmghz0\n",
1266 1266 "637BeGg3qr5DcHx9IXI/66oP5uPoyOCwhvWR/GskSyGTiak+QRAEocmJRKsRSquL+PT3fyOTyZh9\n",
1267 1267 "71I8XepbpKhH3YJq2E0Y929D9/UnyOwdUN90J4ru/ZDZwE65KzGdPY3+958wn01GNfwmnN5fgszV\n",
1268 1268 "3dJhXTeZTIaz+voW6wuCIAjC5YhE6xodStvO4k1zGNPjbsb3ug+5/O9FJmVKJaqBI1H2H44pcT/6\n",
1269 1269 "tT8g/bQE9bg7UPYfikxpO6MmUnUlxhOHMWz9HamiDNWYW7Gf8gIyO3tLhyYIgiAINkEkWg2kM2j4\n",
1270 1270 "dvt8TmTuZ8aEeUQFdr7i8TK5HGWP/ii698OUchzDmh/Q/7wERddeKDp3R9kxAZmLawtF3zCSJGHO\n",
1271 1271 "zsB07CDGYwcx52WjiItHNfIWlD0H/K2auyAIgiAIVycSrQbIvnCWj9e+RDvfaOZO/g5HO5cGf61M\n",
1272 1272 "JkMZ1w1lXDfMBbkYTx7FuHcruq8+Qh4QXJ90de6OPCrOIqNdkqYOU3IixmOHMB07CPYOKLv1Rn3r\n",
1273 1273 "/ShiO193DSxBEARBaMtEonUFkiSxMfFHVu77kklDnmFgx7HXtbhdHhCMOiAYRt6MZDRgPnsa48mj\n",
1274 1274 "6L7/D+bCXBSxXVB07oGyc3dk/kHNspBe0mkxXyjAdCoR07GDmDLOoIiMQ9GtF+pxtyP3D27yawqC\n",
1275 1275 "IAhCWyUSrcuoqivni/VvUFFbyux7l+HvEdKk55cpVSg6dEXRoSvc/mD9eqjkJEwnj6L5/UeQy5EH\n",
1276 1276 "hiBzdkPm4orMxe3Pj/r7OP/5OWdXZMr6H6Ok1yGVFWMuK0EqLa6/X3oBqazkz/vFoNci8/JF0aEr\n",
1277 1277 "qpH/wr5jPDJ7UapAEARBEJqDSLQu4VT2IT774zUGxI3h2X+9j1LR/FN6Mhc3VH0Go+ozGEmSkApy\n",
1278 1278 "MBcXIlVXIVVXIlVXYs5KR6qpgprK//98TRWo7UChBK0GmYcXMi9f5J7eyDx9kIeEI+/aq/6+lw+4\n",
1279 1279 "uLW6khOCIAiCYK1EovVf6nTVrNr3FXtTNvLEja/TJayPReKQyWTIAkORB4Ze9VjJbAZNHZLRUD/C\n",
1280 1280 "ZeNlJARBEAShNRGJFqDVa9iY9CO/H/qWhIiBvDt5Ba6OHpYOq0Fkcjk4OSPGqARBEATB+rTpRMtg\n",
1281 1281 "1LPtxK/8tn8JMcHdeP3urwjyCrd0WIIgCIIgtBJtMtEymY3sSV7PL3sXEewdwazbFhDuF2vpsARB\n",
1282 1282 "EARBaGXaVKJllswcSt3KT3u+wNXRgyfHzSY2ON7SYQmCIAiC0Eq1iURLkiSOZ+7jh92fIUfG/cNm\n",
1283 1283 "0CWsj9h9JwiCIAhCs2rViVZVXTlJ5/aw/cRvVGsquWPgFHpGDREJVjNITU0lJibG0mEIjSR+frZL\n",
1284 1284 "/Oxsm/j5tX6tKtGSJImcknSOpu8mKWM3OSXn6BzWi5Hxt9MnZvg/GkALTSctLU08Wdgw8fOzXeJn\n",
1285 1285 "Z9vEz6/1a3SilZ2dzZIlS5DL5ajVaqZOnYqzs/Mlj921axdLly7liy++wM7OrtHBXorBqOd0zlGO\n",
1286 1286 "pu8iKWM3yGR0jxjEbf0fpUNId1RK0atPEARBEATLaHSitWjRImbOnImHhwenT59m6dKlTJ069R/H\n",
1287 1287 "ZWVlkZeXR1hYGJIkNTpQSZLQG7XU6Wqo09WQlneCxIzdnMo+TIhPBN0jBjLrtgUEe7UXU4OCIAiC\n",
1288 1288 "IFiFRiVaeXl5BAQE4OFRX9QzLi6O77777h/H1dTUsHbtWqZMmcJbb7111QRoyea51Olq0OhqqdPX\n",
1289 1289 "/P99XQ0afS1yuQJHtRMOds60842mZ9RgHhn1ss0UFxUEQRAEoW25YqJVUVHBggUL/vH5jh074urq\n",
1290 1290 "+vcTKZWYTCYUivp1UGazma+//pp77rnn4ueuNqIV5BWOg9oJRztnHO2cL953+PNxS/QcFARBEARB\n",
1291 1291 "aCoyqRHzefn5+axcufJvU4UvvfQSc+bMufi4rKyMefPm4ebmBsCZM2eIiYnhwQcfxNvb+x/n3Lp1\n",
1292 1292 "a2PiFwRBEARBsIhhw4Zd9ZhGTR0GBgZSWFhIeXk5Hh4epKSkEBgY+LdjPD09eeutty4+fuONN5g+\n",
1293 1293 "ffplF8M3JFhBEARBEARb0ujF8I888gjz5s1DoVCgVquZNm0aAImJiej1evr06dNkQQqCIAiCINii\n",
1294 1294 "Rk0dCoIgCIIgCFcnt3QAgiAIgiAIrZVItARBEARBEJqJSLQEQRAEQRCaiVX0OlyzZg2HDx8GICEh\n",
1295 1295 "gVtuucXCEQnXwmg08v3335OSksI777xj6XCEa7Bu3Tr27NmDUqkkICCARx55BKXSKp4WhAb4+uuv\n",
1296 1296 "SU1NRaVS0atXL8aOHWvpkIRroNPpmDNnDpGRkUyaNMnS4QjXYNq0aXh5eV18PHXqVDw9PS95rMWf\n",
1297 1297 "UVNSUsjMzGT27NkAfP7555w8eZLOnTtbODKhoVasWEGnTp1ISUmxdCjCNaipqeH8+fO8/fbbyGQy\n",
1298 1298 "li9fzqFDh+jXr5+lQxMaQKvV0rFjR+6//36gvoTOwIED/1FMWrBey5cvZ8iQIeTk5Fg6FOEaOTk5\n",
1299 1299 "8dprrzXoWItPHSYlJf2thtawYcNITEy0YETCtZo0aRIJCQmWDkO4Rs7Ozjz++OMXW2PpdDp8fHws\n",
1300 1300 "HJXQUPb29vTo0QOAurq6i58TbMP69euJj4/H19fX0qEIjWAwGJg9ezazZs1iw4YNVzzW4iNa1dXV\n",
1301 1301 "uLi4XHzs6upKZWWlBSMShLbn119/xdHRkaioKEuHIlyjZQL/KLAAAAHbSURBVMuWsXv3bu655x7U\n",
1302 1302 "arWlwxEaICUlhaqqKsaMGUNycrKlwxEa4Z133kGlUmEwGJg7dy6xsbGEhYVd8liLj2i5uLhQVVV1\n",
1303 1303 "8XFVVZUY+haEFmI2m/nqq69QqVTcddddlg5HaITJkyfz+eefc/ToUbKysiwdjtAAx44dIysri/ff\n",
1304 1304 "f58ff/yRI0eOsGbNGkuHJVwDlUp18bZnz55kZ2df9liLj2glJCSwcePGi2uytm3bRv/+/S0clSC0\n",
1305 1305 "flqtlk8//ZSBAwfSq1cvS4cjXKOMjAzKysro2bMnarUaNze3v71pFazXf7+pOX36NEePHmX8+PEW\n",
1306 1306 "jEi4Frm5uRw7doxx48ZhNBpJSkrivvvuu+zxFk+0YmNjSU1N5ZVXXgHqEy+xEF4Qmt+2bdtIT0+n\n",
1307 1307 "pqaG9evXAzBkyBAGDRpk4ciEhvD392fNmjX8/vvvAMTExNClSxcLRyU0xl/rJAXb4O/vT15eHq+8\n",
1308 1308 "8gpyuZyRI0cSFBR02eNFCx5BEARBEIRmYvE1WoIgCIIgCK2VSLQEQRAEQRCaiUi0BEEQBEEQmolI\n",
1309 1309 "tARBEARBEJqJSLQEQRAEQRCaiUi0BEEQBEEQmolItARBEARBEJqJSLQEQRAEQRCaiUi0BEEQBEEQ\n",
1310 1310 "msn/AbPOyGwnPY5DAAAAAElFTkSuQmCC\n"
1311 1311 ],
1312 1312 "text/plain": [
1313 1313 "<matplotlib.figure.Figure at 0x10f01b310>"
1314 1314 ]
1315 1315 },
1316 1316 "metadata": {},
1317 1317 "output_type": "display_data"
1318 1318 }
1319 1319 ],
1320 1320 "source": [
1321 1321 "from scipy.special import jn\n",
1322 1322 "x = np.linspace(0,5)\n",
1323 1323 "f, ax = plt.subplots()\n",
1324 1324 "ax.set_title(\"Bessel functions\")\n",
1325 1325 "\n",
1326 1326 "for n in range(1,10):\n",
1327 1327 " time.sleep(1)\n",
1328 1328 " ax.plot(x, jn(x,n))\n",
1329 1329 " clear_output(wait=True)\n",
1330 1330 " display(f)\n",
1331 1331 "\n",
1332 1332 "# close the figure at the end, so we don't get a duplicate\n",
1333 1333 "# of the last plot\n",
1334 1334 "plt.close()"
1335 1335 ]
1336 1336 }
1337 1337 ],
1338 "metadata": {},
1338 "metadata": {
1339 "kernelspec": {
1340 "display_name": "Python 3",
1341 "language": "python",
1342 "name": "python3"
1343 },
1344 "language_info": {
1345 "codemirror_mode": {
1346 "name": "ipython",
1347 "version": 3
1348 },
1349 "file_extension": ".py",
1350 "mimetype": "text/x-python",
1351 "name": "python",
1352 "nbconvert_exporter": "python",
1353 "pygments_lexer": "ipython3",
1354 "version": "3.4.2"
1355 }
1356 },
1339 1357 "nbformat": 4,
1340 1358 "nbformat_minor": 0
1341 } No newline at end of file
1359 }
@@ -1,386 +1,404 b''
1 1 {
2 2 "cells": [
3 3 {
4 4 "cell_type": "markdown",
5 5 "metadata": {},
6 6 "source": [
7 7 "# Simple interactive bacgkround jobs with IPython\n",
8 8 "\n",
9 9 "We start by loading the `backgroundjobs` library and defining a few trivial functions to illustrate things with."
10 10 ]
11 11 },
12 12 {
13 13 "cell_type": "code",
14 14 "execution_count": 1,
15 15 "metadata": {
16 16 "collapsed": false
17 17 },
18 18 "outputs": [],
19 19 "source": [
20 20 "from IPython.lib import backgroundjobs as bg\n",
21 21 "\n",
22 22 "import sys\n",
23 23 "import time\n",
24 24 "\n",
25 25 "def sleepfunc(interval=2, *a, **kw):\n",
26 26 " args = dict(interval=interval,\n",
27 27 " args=a,\n",
28 28 " kwargs=kw)\n",
29 29 " time.sleep(interval)\n",
30 30 " return args\n",
31 31 "\n",
32 32 "def diefunc(interval=2, *a, **kw):\n",
33 33 " time.sleep(interval)\n",
34 34 " raise Exception(\"Dead job with interval %s\" % interval)\n",
35 35 "\n",
36 36 "def printfunc(interval=1, reps=5):\n",
37 37 " for n in range(reps):\n",
38 38 " time.sleep(interval)\n",
39 39 " print 'In the background...', n\n",
40 40 " sys.stdout.flush()\n",
41 41 " print 'All done!'\n",
42 42 " sys.stdout.flush()"
43 43 ]
44 44 },
45 45 {
46 46 "cell_type": "markdown",
47 47 "metadata": {},
48 48 "source": [
49 49 "Now, we can create a job manager (called simply `jobs`) and use it to submit new jobs.\n",
50 50 "\n",
51 51 "Run the cell below, it will show when the jobs start. Wait a few seconds until you see the 'all done' completion message:"
52 52 ]
53 53 },
54 54 {
55 55 "cell_type": "code",
56 56 "execution_count": 10,
57 57 "metadata": {
58 58 "collapsed": false
59 59 },
60 60 "outputs": [
61 61 {
62 62 "name": "stdout",
63 63 "output_type": "stream",
64 64 "text": [
65 65 "Starting job # 0 in a separate thread.\n",
66 66 "Starting job # 2 in a separate thread.\n",
67 67 "Starting job # 3 in a separate thread.\n"
68 68 ]
69 69 },
70 70 {
71 71 "data": {
72 72 "text/plain": [
73 73 "<BackgroundJob #3: printfunc(1,3)>"
74 74 ]
75 75 },
76 76 "execution_count": 10,
77 77 "metadata": {},
78 78 "output_type": "execute_result"
79 79 },
80 80 {
81 81 "name": "stdout",
82 82 "output_type": "stream",
83 83 "text": [
84 84 "In the background... 0\n",
85 85 "In the background... 1\n",
86 86 "In the background... 2\n",
87 87 "All done!\n"
88 88 ]
89 89 }
90 90 ],
91 91 "source": [
92 92 "jobs = bg.BackgroundJobManager()\n",
93 93 "\n",
94 94 "# Start a few jobs, the first one will have ID # 0\n",
95 95 "jobs.new(sleepfunc, 4)\n",
96 96 "jobs.new(sleepfunc, kw={'reps':2})\n",
97 97 "jobs.new('printfunc(1,3)')"
98 98 ]
99 99 },
100 100 {
101 101 "cell_type": "markdown",
102 102 "metadata": {},
103 103 "source": [
104 104 "You can check the status of your jobs at any time:"
105 105 ]
106 106 },
107 107 {
108 108 "cell_type": "code",
109 109 "execution_count": 11,
110 110 "metadata": {
111 111 "collapsed": false
112 112 },
113 113 "outputs": [
114 114 {
115 115 "name": "stdout",
116 116 "output_type": "stream",
117 117 "text": [
118 118 "Completed jobs:\n",
119 119 "0 : <function sleepfunc at 0x314f848>\n",
120 120 "2 : <function sleepfunc at 0x314f848>\n",
121 121 "3 : printfunc(1,3)\n",
122 122 "\n"
123 123 ]
124 124 }
125 125 ],
126 126 "source": [
127 127 "jobs.status()"
128 128 ]
129 129 },
130 130 {
131 131 "cell_type": "markdown",
132 132 "metadata": {},
133 133 "source": [
134 134 "For any completed job, you can get its result easily:"
135 135 ]
136 136 },
137 137 {
138 138 "cell_type": "code",
139 139 "execution_count": 12,
140 140 "metadata": {
141 141 "collapsed": false
142 142 },
143 143 "outputs": [
144 144 {
145 145 "data": {
146 146 "text/plain": [
147 147 "{'args': (), 'interval': 4, 'kwargs': {}}"
148 148 ]
149 149 },
150 150 "execution_count": 12,
151 151 "metadata": {},
152 152 "output_type": "execute_result"
153 153 }
154 154 ],
155 155 "source": [
156 156 "jobs[0].result"
157 157 ]
158 158 },
159 159 {
160 160 "cell_type": "markdown",
161 161 "metadata": {},
162 162 "source": [
163 163 "## Errors and tracebacks"
164 164 ]
165 165 },
166 166 {
167 167 "cell_type": "markdown",
168 168 "metadata": {},
169 169 "source": [
170 170 "The jobs manager tries to help you with debugging:"
171 171 ]
172 172 },
173 173 {
174 174 "cell_type": "code",
175 175 "execution_count": 13,
176 176 "metadata": {
177 177 "collapsed": false
178 178 },
179 179 "outputs": [
180 180 {
181 181 "name": "stdout",
182 182 "output_type": "stream",
183 183 "text": [
184 184 "Starting job # 4 in a separate thread.\n",
185 185 "Starting job # 5 in a separate thread.\n"
186 186 ]
187 187 }
188 188 ],
189 189 "source": [
190 190 "# This makes a couple of jobs which will die. Let's keep a reference to\n",
191 191 "# them for easier traceback reporting later\n",
192 192 "diejob1 = jobs.new(diefunc, 1)\n",
193 193 "diejob2 = jobs.new(diefunc, 2)"
194 194 ]
195 195 },
196 196 {
197 197 "cell_type": "markdown",
198 198 "metadata": {},
199 199 "source": [
200 200 "You can get the traceback of any dead job. Run the line\n",
201 201 "below again interactively until it prints a traceback (check the status\n",
202 202 "of the job):\n"
203 203 ]
204 204 },
205 205 {
206 206 "cell_type": "code",
207 207 "execution_count": 14,
208 208 "metadata": {
209 209 "collapsed": false
210 210 },
211 211 "outputs": [
212 212 {
213 213 "name": "stdout",
214 214 "output_type": "stream",
215 215 "text": [
216 216 "Status of diejob1: Dead (Exception), call jobs.traceback() for details\n",
217 217 "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n",
218 218 "\u001b[1;31mException\u001b[0m Traceback (most recent call last)\n",
219 219 "\u001b[1;32m/home/fperez/usr/opt/virtualenv/ipython-0.13.2/lib/python2.7/site-packages/IPython/lib/backgroundjobs.pyc\u001b[0m in \u001b[0;36mcall\u001b[1;34m(self)\u001b[0m\n",
220 220 "\u001b[0;32m 482\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
221 221 "\u001b[0;32m 483\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mcall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
222 222 "\u001b[1;32m--> 484\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
223 223 "\u001b[0m\n",
224 224 "\u001b[1;32m<ipython-input-1-fbbbd0d2a1c3>\u001b[0m in \u001b[0;36mdiefunc\u001b[1;34m(interval, *a, **kw)\u001b[0m\n",
225 225 "\u001b[0;32m 13\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdiefunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkw\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
226 226 "\u001b[0;32m 14\u001b[0m \u001b[0mtime\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
227 227 "\u001b[1;32m---> 15\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mException\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Dead job with interval %s\"\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
228 228 "\u001b[0m\u001b[0;32m 16\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
229 229 "\u001b[0;32m 17\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mprintfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreps\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
230 230 "\n",
231 231 "\u001b[1;31mException\u001b[0m: Dead job with interval 1\n"
232 232 ]
233 233 }
234 234 ],
235 235 "source": [
236 236 "print \"Status of diejob1:\", diejob1.status\n",
237 237 "diejob1.traceback() # jobs.traceback(4) would also work here, with the job number"
238 238 ]
239 239 },
240 240 {
241 241 "cell_type": "markdown",
242 242 "metadata": {},
243 243 "source": [
244 244 "This will print all tracebacks for all dead jobs:"
245 245 ]
246 246 },
247 247 {
248 248 "cell_type": "code",
249 249 "execution_count": 15,
250 250 "metadata": {
251 251 "collapsed": false
252 252 },
253 253 "outputs": [
254 254 {
255 255 "name": "stdout",
256 256 "output_type": "stream",
257 257 "text": [
258 258 "Traceback for: <BackgroundJob #4: <function diefunc at 0x314f668>>\n",
259 259 "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n",
260 260 "\u001b[1;31mException\u001b[0m Traceback (most recent call last)\n",
261 261 "\u001b[1;32m/home/fperez/usr/opt/virtualenv/ipython-0.13.2/lib/python2.7/site-packages/IPython/lib/backgroundjobs.pyc\u001b[0m in \u001b[0;36mcall\u001b[1;34m(self)\u001b[0m\n",
262 262 "\u001b[0;32m 482\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
263 263 "\u001b[0;32m 483\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mcall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
264 264 "\u001b[1;32m--> 484\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
265 265 "\u001b[0m\n",
266 266 "\u001b[1;32m<ipython-input-1-fbbbd0d2a1c3>\u001b[0m in \u001b[0;36mdiefunc\u001b[1;34m(interval, *a, **kw)\u001b[0m\n",
267 267 "\u001b[0;32m 13\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdiefunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkw\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
268 268 "\u001b[0;32m 14\u001b[0m \u001b[0mtime\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
269 269 "\u001b[1;32m---> 15\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mException\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Dead job with interval %s\"\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
270 270 "\u001b[0m\u001b[0;32m 16\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
271 271 "\u001b[0;32m 17\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mprintfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreps\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
272 272 "\n",
273 273 "\u001b[1;31mException\u001b[0m: Dead job with interval 1\n",
274 274 "\n",
275 275 "Traceback for: <BackgroundJob #5: <function diefunc at 0x314f668>>\n",
276 276 "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n",
277 277 "\u001b[1;31mException\u001b[0m Traceback (most recent call last)\n",
278 278 "\u001b[1;32m/home/fperez/usr/opt/virtualenv/ipython-0.13.2/lib/python2.7/site-packages/IPython/lib/backgroundjobs.pyc\u001b[0m in \u001b[0;36mcall\u001b[1;34m(self)\u001b[0m\n",
279 279 "\u001b[0;32m 482\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
280 280 "\u001b[0;32m 483\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mcall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
281 281 "\u001b[1;32m--> 484\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
282 282 "\u001b[0m\n",
283 283 "\u001b[1;32m<ipython-input-1-fbbbd0d2a1c3>\u001b[0m in \u001b[0;36mdiefunc\u001b[1;34m(interval, *a, **kw)\u001b[0m\n",
284 284 "\u001b[0;32m 13\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdiefunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkw\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
285 285 "\u001b[0;32m 14\u001b[0m \u001b[0mtime\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
286 286 "\u001b[1;32m---> 15\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mException\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Dead job with interval %s\"\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
287 287 "\u001b[0m\u001b[0;32m 16\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
288 288 "\u001b[0;32m 17\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mprintfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreps\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
289 289 "\n",
290 290 "\u001b[1;31mException\u001b[0m: Dead job with interval 2\n",
291 291 "\n"
292 292 ]
293 293 }
294 294 ],
295 295 "source": [
296 296 "jobs.traceback()"
297 297 ]
298 298 },
299 299 {
300 300 "cell_type": "markdown",
301 301 "metadata": {},
302 302 "source": [
303 303 "The job manager can be flushed of all completed jobs at any time:"
304 304 ]
305 305 },
306 306 {
307 307 "cell_type": "code",
308 308 "execution_count": 16,
309 309 "metadata": {
310 310 "collapsed": false
311 311 },
312 312 "outputs": [
313 313 {
314 314 "name": "stdout",
315 315 "output_type": "stream",
316 316 "text": [
317 317 "Flushing 3 Completed jobs.\n",
318 318 "Flushing 2 Dead jobs.\n"
319 319 ]
320 320 }
321 321 ],
322 322 "source": [
323 323 "jobs.flush()"
324 324 ]
325 325 },
326 326 {
327 327 "cell_type": "markdown",
328 328 "metadata": {},
329 329 "source": [
330 330 "After that, the status is simply empty:"
331 331 ]
332 332 },
333 333 {
334 334 "cell_type": "code",
335 335 "execution_count": 17,
336 336 "metadata": {
337 337 "collapsed": true
338 338 },
339 339 "outputs": [],
340 340 "source": [
341 341 "jobs.status()"
342 342 ]
343 343 },
344 344 {
345 345 "cell_type": "markdown",
346 346 "metadata": {},
347 347 "source": [
348 348 "Jobs have a `.join` method that lets you wait on their thread for completion:"
349 349 ]
350 350 },
351 351 {
352 352 "cell_type": "code",
353 353 "execution_count": 18,
354 354 "metadata": {
355 355 "collapsed": false
356 356 },
357 357 "outputs": [
358 358 {
359 359 "name": "stdout",
360 360 "output_type": "stream",
361 361 "text": [
362 362 "Starting job # 0 in a separate thread.\n"
363 363 ]
364 364 }
365 365 ],
366 366 "source": [
367 367 "j = jobs.new(sleepfunc, 2)\n",
368 368 "j.join?"
369 369 ]
370 370 },
371 371 {
372 372 "cell_type": "markdown",
373 373 "metadata": {},
374 374 "source": [
375 375 "## Exercise\n",
376 376 "\n",
377 377 "1. Start a new job that calls `sleepfunc` with a 5-second wait\n",
378 378 "2. Print a short message that indicates you are waiting (note: you'll need to flush stdout to see that print output appear).\n",
379 379 "3. Wait on the job and then print its result."
380 380 ]
381 381 }
382 382 ],
383 "metadata": {},
383 "metadata": {
384 "kernelspec": {
385 "display_name": "Python 3",
386 "language": "python",
387 "name": "python3"
388 },
389 "language_info": {
390 "codemirror_mode": {
391 "name": "ipython",
392 "version": 3
393 },
394 "file_extension": ".py",
395 "mimetype": "text/x-python",
396 "name": "python",
397 "nbconvert_exporter": "python",
398 "pygments_lexer": "ipython3",
399 "version": "3.4.2"
400 }
401 },
384 402 "nbformat": 4,
385 403 "nbformat_minor": 0
386 } No newline at end of file
404 }
@@ -1,1805 +1,1823 b''
1 1 {
2 2 "cells": [
3 3 {
4 4 "cell_type": "markdown",
5 5 "metadata": {
6 6 "slideshow": {
7 7 "slide_type": "slide"
8 8 }
9 9 },
10 10 "source": [
11 11 "# IPython: beyond plain Python"
12 12 ]
13 13 },
14 14 {
15 15 "cell_type": "markdown",
16 16 "metadata": {},
17 17 "source": [
18 18 "When executing code in IPython, all valid Python syntax works as-is, but IPython provides a number of features designed to make the interactive experience more fluid and efficient."
19 19 ]
20 20 },
21 21 {
22 22 "cell_type": "markdown",
23 23 "metadata": {
24 24 "slideshow": {
25 25 "slide_type": "slide"
26 26 }
27 27 },
28 28 "source": [
29 29 "## First things first: running code, getting help"
30 30 ]
31 31 },
32 32 {
33 33 "cell_type": "markdown",
34 34 "metadata": {},
35 35 "source": [
36 36 "In the notebook, to run a cell of code, hit `Shift-Enter`. This executes the cell and puts the cursor in the next cell below, or makes a new one if you are at the end. Alternately, you can use:\n",
37 37 " \n",
38 38 "- `Alt-Enter` to force the creation of a new cell unconditionally (useful when inserting new content in the middle of an existing notebook).\n",
39 39 "- `Control-Enter` executes the cell and keeps the cursor in the same cell, useful for quick experimentation of snippets that you don't need to keep permanently."
40 40 ]
41 41 },
42 42 {
43 43 "cell_type": "code",
44 44 "execution_count": 1,
45 45 "metadata": {
46 46 "collapsed": false
47 47 },
48 48 "outputs": [
49 49 {
50 50 "name": "stdout",
51 51 "output_type": "stream",
52 52 "text": [
53 53 "Hi\n"
54 54 ]
55 55 }
56 56 ],
57 57 "source": [
58 58 "print \"Hi\""
59 59 ]
60 60 },
61 61 {
62 62 "cell_type": "markdown",
63 63 "metadata": {
64 64 "slideshow": {
65 65 "slide_type": "slide"
66 66 }
67 67 },
68 68 "source": [
69 69 "Getting help:"
70 70 ]
71 71 },
72 72 {
73 73 "cell_type": "code",
74 74 "execution_count": 2,
75 75 "metadata": {
76 76 "collapsed": false
77 77 },
78 78 "outputs": [],
79 79 "source": [
80 80 "?"
81 81 ]
82 82 },
83 83 {
84 84 "cell_type": "markdown",
85 85 "metadata": {
86 86 "slideshow": {
87 87 "slide_type": "slide"
88 88 }
89 89 },
90 90 "source": [
91 91 "Typing `object_name?` will print all sorts of details about any object, including docstrings, function definition lines (for call arguments) and constructor details for classes."
92 92 ]
93 93 },
94 94 {
95 95 "cell_type": "code",
96 96 "execution_count": 3,
97 97 "metadata": {
98 98 "collapsed": false
99 99 },
100 100 "outputs": [],
101 101 "source": [
102 102 "import collections\n",
103 103 "collections.namedtuple?"
104 104 ]
105 105 },
106 106 {
107 107 "cell_type": "code",
108 108 "execution_count": 4,
109 109 "metadata": {
110 110 "collapsed": false
111 111 },
112 112 "outputs": [],
113 113 "source": [
114 114 "collections.Counter??"
115 115 ]
116 116 },
117 117 {
118 118 "cell_type": "code",
119 119 "execution_count": 5,
120 120 "metadata": {
121 121 "collapsed": false
122 122 },
123 123 "outputs": [],
124 124 "source": [
125 125 "*int*?"
126 126 ]
127 127 },
128 128 {
129 129 "cell_type": "markdown",
130 130 "metadata": {
131 131 "slideshow": {
132 132 "slide_type": "slide"
133 133 }
134 134 },
135 135 "source": [
136 136 "An IPython quick reference card:"
137 137 ]
138 138 },
139 139 {
140 140 "cell_type": "code",
141 141 "execution_count": 6,
142 142 "metadata": {
143 143 "collapsed": false
144 144 },
145 145 "outputs": [],
146 146 "source": [
147 147 "%quickref"
148 148 ]
149 149 },
150 150 {
151 151 "cell_type": "markdown",
152 152 "metadata": {
153 153 "slideshow": {
154 154 "slide_type": "slide"
155 155 }
156 156 },
157 157 "source": [
158 158 "## Tab completion"
159 159 ]
160 160 },
161 161 {
162 162 "cell_type": "markdown",
163 163 "metadata": {},
164 164 "source": [
165 "Tab completion, especially for attributes, is a convenient way to explore the structure of any object you\u2019re dealing with. Simply type `object_name.<TAB>` to view the object\u2019s attributes. Besides Python objects and keywords, tab completion also works on file and directory names."
165 "Tab completion, especially for attributes, is a convenient way to explore the structure of any object youre dealing with. Simply type `object_name.<TAB>` to view the objects attributes. Besides Python objects and keywords, tab completion also works on file and directory names."
166 166 ]
167 167 },
168 168 {
169 169 "cell_type": "code",
170 170 "execution_count": 8,
171 171 "metadata": {
172 172 "collapsed": false
173 173 },
174 174 "outputs": [],
175 175 "source": [
176 176 "collections."
177 177 ]
178 178 },
179 179 {
180 180 "cell_type": "markdown",
181 181 "metadata": {
182 182 "slideshow": {
183 183 "slide_type": "slide"
184 184 }
185 185 },
186 186 "source": [
187 187 "## The interactive workflow: input, output, history"
188 188 ]
189 189 },
190 190 {
191 191 "cell_type": "code",
192 192 "execution_count": 7,
193 193 "metadata": {
194 194 "collapsed": false
195 195 },
196 196 "outputs": [
197 197 {
198 198 "data": {
199 199 "text/plain": [
200 200 "12"
201 201 ]
202 202 },
203 203 "execution_count": 7,
204 204 "metadata": {},
205 205 "output_type": "execute_result"
206 206 }
207 207 ],
208 208 "source": [
209 209 "2+10"
210 210 ]
211 211 },
212 212 {
213 213 "cell_type": "code",
214 214 "execution_count": 8,
215 215 "metadata": {
216 216 "collapsed": false
217 217 },
218 218 "outputs": [
219 219 {
220 220 "data": {
221 221 "text/plain": [
222 222 "22"
223 223 ]
224 224 },
225 225 "execution_count": 8,
226 226 "metadata": {},
227 227 "output_type": "execute_result"
228 228 }
229 229 ],
230 230 "source": [
231 231 "_+10"
232 232 ]
233 233 },
234 234 {
235 235 "cell_type": "markdown",
236 236 "metadata": {
237 237 "slideshow": {
238 238 "slide_type": "slide"
239 239 }
240 240 },
241 241 "source": [
242 242 "You can suppress the storage and rendering of output if you append `;` to the last cell (this comes in handy when plotting with matplotlib, for example):"
243 243 ]
244 244 },
245 245 {
246 246 "cell_type": "code",
247 247 "execution_count": 9,
248 248 "metadata": {
249 249 "collapsed": false
250 250 },
251 251 "outputs": [],
252 252 "source": [
253 253 "10+20;"
254 254 ]
255 255 },
256 256 {
257 257 "cell_type": "code",
258 258 "execution_count": 10,
259 259 "metadata": {
260 260 "collapsed": false
261 261 },
262 262 "outputs": [
263 263 {
264 264 "data": {
265 265 "text/plain": [
266 266 "22"
267 267 ]
268 268 },
269 269 "execution_count": 10,
270 270 "metadata": {},
271 271 "output_type": "execute_result"
272 272 }
273 273 ],
274 274 "source": [
275 275 "_"
276 276 ]
277 277 },
278 278 {
279 279 "cell_type": "markdown",
280 280 "metadata": {
281 281 "slideshow": {
282 282 "slide_type": "slide"
283 283 }
284 284 },
285 285 "source": [
286 286 "The output is stored in `_N` and `Out[N]` variables:"
287 287 ]
288 288 },
289 289 {
290 290 "cell_type": "code",
291 291 "execution_count": 11,
292 292 "metadata": {
293 293 "collapsed": false
294 294 },
295 295 "outputs": [
296 296 {
297 297 "data": {
298 298 "text/plain": [
299 299 "True"
300 300 ]
301 301 },
302 302 "execution_count": 11,
303 303 "metadata": {},
304 304 "output_type": "execute_result"
305 305 }
306 306 ],
307 307 "source": [
308 308 "_10 == Out[10]"
309 309 ]
310 310 },
311 311 {
312 312 "cell_type": "markdown",
313 313 "metadata": {
314 314 "slideshow": {
315 315 "slide_type": "slide"
316 316 }
317 317 },
318 318 "source": [
319 319 "And the last three have shorthands for convenience:"
320 320 ]
321 321 },
322 322 {
323 323 "cell_type": "code",
324 324 "execution_count": 12,
325 325 "metadata": {
326 326 "collapsed": false
327 327 },
328 328 "outputs": [
329 329 {
330 330 "name": "stdout",
331 331 "output_type": "stream",
332 332 "text": [
333 333 "last output: True\n",
334 334 "next one : 22\n",
335 335 "and next : 22\n"
336 336 ]
337 337 }
338 338 ],
339 339 "source": [
340 340 "print 'last output:', _\n",
341 341 "print 'next one :', __\n",
342 342 "print 'and next :', ___"
343 343 ]
344 344 },
345 345 {
346 346 "cell_type": "code",
347 347 "execution_count": 13,
348 348 "metadata": {
349 349 "collapsed": false,
350 350 "slideshow": {
351 351 "slide_type": "-"
352 352 }
353 353 },
354 354 "outputs": [
355 355 {
356 356 "data": {
357 357 "text/plain": [
358 358 "u'_10 == Out[10]'"
359 359 ]
360 360 },
361 361 "execution_count": 13,
362 362 "metadata": {},
363 363 "output_type": "execute_result"
364 364 }
365 365 ],
366 366 "source": [
367 367 "In[11]"
368 368 ]
369 369 },
370 370 {
371 371 "cell_type": "code",
372 372 "execution_count": 14,
373 373 "metadata": {
374 374 "collapsed": false
375 375 },
376 376 "outputs": [
377 377 {
378 378 "data": {
379 379 "text/plain": [
380 380 "u'In[11]'"
381 381 ]
382 382 },
383 383 "execution_count": 14,
384 384 "metadata": {},
385 385 "output_type": "execute_result"
386 386 }
387 387 ],
388 388 "source": [
389 389 "_i"
390 390 ]
391 391 },
392 392 {
393 393 "cell_type": "code",
394 394 "execution_count": 15,
395 395 "metadata": {
396 396 "collapsed": false
397 397 },
398 398 "outputs": [
399 399 {
400 400 "data": {
401 401 "text/plain": [
402 402 "u'In[11]'"
403 403 ]
404 404 },
405 405 "execution_count": 15,
406 406 "metadata": {},
407 407 "output_type": "execute_result"
408 408 }
409 409 ],
410 410 "source": [
411 411 "_ii"
412 412 ]
413 413 },
414 414 {
415 415 "cell_type": "code",
416 416 "execution_count": 16,
417 417 "metadata": {
418 418 "collapsed": false,
419 419 "slideshow": {
420 420 "slide_type": "subslide"
421 421 }
422 422 },
423 423 "outputs": [
424 424 {
425 425 "name": "stdout",
426 426 "output_type": "stream",
427 427 "text": [
428 428 "last input: _ii\n",
429 429 "next one : _i\n",
430 430 "and next : In[11]\n"
431 431 ]
432 432 }
433 433 ],
434 434 "source": [
435 435 "print 'last input:', _i\n",
436 436 "print 'next one :', _ii\n",
437 437 "print 'and next :', _iii"
438 438 ]
439 439 },
440 440 {
441 441 "cell_type": "code",
442 442 "execution_count": 17,
443 443 "metadata": {
444 444 "collapsed": false
445 445 },
446 446 "outputs": [
447 447 {
448 448 "name": "stdout",
449 449 "output_type": "stream",
450 450 "text": [
451 451 " 1: print \"Hi\"\n",
452 452 " 2: ?\n",
453 453 " 3:\n",
454 454 "import collections\n",
455 455 "collections.namedtuple?\n",
456 456 " 4: collections.Counter??\n",
457 457 " 5: *int*?\n"
458 458 ]
459 459 }
460 460 ],
461 461 "source": [
462 462 "%history -n 1-5"
463 463 ]
464 464 },
465 465 {
466 466 "cell_type": "markdown",
467 467 "metadata": {
468 468 "slideshow": {
469 469 "slide_type": "subslide"
470 470 }
471 471 },
472 472 "source": [
473 473 "**Exercise**\n",
474 474 "\n",
475 475 "Write the last 10 lines of history to a file named `log.py`."
476 476 ]
477 477 },
478 478 {
479 479 "cell_type": "markdown",
480 480 "metadata": {
481 481 "slideshow": {
482 482 "slide_type": "slide"
483 483 }
484 484 },
485 485 "source": [
486 486 "## Accessing the underlying operating system"
487 487 ]
488 488 },
489 489 {
490 490 "cell_type": "code",
491 491 "execution_count": 18,
492 492 "metadata": {
493 493 "collapsed": false
494 494 },
495 495 "outputs": [
496 496 {
497 497 "name": "stdout",
498 498 "output_type": "stream",
499 499 "text": [
500 500 "/home/fperez/ipython/tutorial/notebooks\r\n"
501 501 ]
502 502 }
503 503 ],
504 504 "source": [
505 505 "!pwd"
506 506 ]
507 507 },
508 508 {
509 509 "cell_type": "code",
510 510 "execution_count": 19,
511 511 "metadata": {
512 512 "collapsed": false
513 513 },
514 514 "outputs": [
515 515 {
516 516 "name": "stdout",
517 517 "output_type": "stream",
518 518 "text": [
519 519 "My current directory's files:\n",
520 520 "['BackgroundJobs.ipynb', 'Custom Display Logic.ipynb', 'Customizing IPython - Condensed.ipynb', 'Customizing IPython - Config.ipynb', 'Customizing IPython - Extensions.ipynb', 'Customizing IPython - Magics.ipynb', 'data', 'figs', 'flare.json', 'Index.ipynb', 'Interactive Widgets.ipynb', 'IPython - beyond plain Python.ipynb', 'kernel-embedding', 'Markdown Cells.ipynb', 'myscript.py', 'nbconvert_arch.png', 'NbConvert from command line.ipynb', 'NbConvert Python library.ipynb', 'Notebook and javascript extension.ipynb', 'Notebook Basics.ipynb', 'Overview of IPython.parallel.ipynb', 'parallel', 'Rich Display System.ipynb', 'Running a Secure Public Notebook.ipynb', 'Running Code.ipynb', 'Sample.ipynb', 'soln', 'Terminal usage.ipynb', 'text_analysis.py', 'Typesetting Math Using MathJax.ipynb']\n"
521 521 ]
522 522 }
523 523 ],
524 524 "source": [
525 525 "files = !ls\n",
526 526 "print \"My current directory's files:\"\n",
527 527 "print files"
528 528 ]
529 529 },
530 530 {
531 531 "cell_type": "code",
532 532 "execution_count": 20,
533 533 "metadata": {
534 534 "collapsed": false
535 535 },
536 536 "outputs": [
537 537 {
538 538 "name": "stdout",
539 539 "output_type": "stream",
540 540 "text": [
541 541 "[BackgroundJobs.ipynb, Custom Display Logic.ipynb, Customizing IPython - Condensed.ipynb, Customizing IPython - Config.ipynb, Customizing IPython - Extensions.ipynb, Customizing IPython - Magics.ipynb, data, figs, flare.json, Index.ipynb, Interactive Widgets.ipynb, IPython - beyond plain Python.ipynb, kernel-embedding, Markdown Cells.ipynb, myscript.py, nbconvert_arch.png, NbConvert from command line.ipynb, NbConvert Python library.ipynb, Notebook and javascript extension.ipynb, Notebook Basics.ipynb, Overview of IPython.parallel.ipynb, parallel, Rich Display System.ipynb, Running a Secure Public Notebook.ipynb, Running Code.ipynb, Sample.ipynb, soln, Terminal usage.ipynb, text_analysis.py, Typesetting Math Using MathJax.ipynb]\r\n"
542 542 ]
543 543 }
544 544 ],
545 545 "source": [
546 546 "!echo $files"
547 547 ]
548 548 },
549 549 {
550 550 "cell_type": "code",
551 551 "execution_count": 21,
552 552 "metadata": {
553 553 "collapsed": false
554 554 },
555 555 "outputs": [
556 556 {
557 557 "name": "stdout",
558 558 "output_type": "stream",
559 559 "text": [
560 560 "BACKGROUNDJOBS.IPYNB\r\n"
561 561 ]
562 562 }
563 563 ],
564 564 "source": [
565 565 "!echo {files[0].upper()}"
566 566 ]
567 567 },
568 568 {
569 569 "cell_type": "markdown",
570 570 "metadata": {},
571 571 "source": [
572 572 "Note that all this is available even in multiline blocks:"
573 573 ]
574 574 },
575 575 {
576 576 "cell_type": "code",
577 577 "execution_count": 27,
578 578 "metadata": {
579 579 "collapsed": false
580 580 },
581 581 "outputs": [
582 582 {
583 583 "name": "stdout",
584 584 "output_type": "stream",
585 585 "text": [
586 586 "00 - BackgroundJobs\r\n",
587 587 "01 - Custom Display Logic\r\n",
588 588 "02 - Customizing IPython - Condensed\r\n",
589 589 "03 - Customizing IPython - Config\r\n",
590 590 "04 - Customizing IPython - Extensions\r\n",
591 591 "05 - Customizing IPython - Magics\r\n",
592 592 "--\n",
593 593 "--\n",
594 594 "--\n",
595 595 "09 - Index\r\n",
596 596 "10 - Interactive Widgets\r\n",
597 597 "11 - IPython - beyond plain Python\r\n",
598 598 "--\n",
599 599 "13 - Markdown Cells\r\n",
600 600 "--\n",
601 601 "--\n",
602 602 "16 - NbConvert from command line\r\n",
603 603 "17 - NbConvert Python library\r\n",
604 604 "18 - Notebook and javascript extension\r\n",
605 605 "19 - Notebook Basics\r\n",
606 606 "20 - Overview of IPython.parallel\r\n",
607 607 "--\n",
608 608 "22 - Rich Display System\r\n",
609 609 "23 - Running a Secure Public Notebook\r\n",
610 610 "24 - Running Code\r\n",
611 611 "25 - Sample\r\n",
612 612 "--\n",
613 613 "27 - Terminal usage\r\n",
614 614 "--\n",
615 615 "29 - Typesetting Math Using MathJax\r\n"
616 616 ]
617 617 }
618 618 ],
619 619 "source": [
620 620 "import os\n",
621 621 "for i,f in enumerate(files):\n",
622 622 " if f.endswith('ipynb'):\n",
623 623 " !echo {\"%02d\" % i} - \"{os.path.splitext(f)[0]}\"\n",
624 624 " else:\n",
625 625 " print '--'"
626 626 ]
627 627 },
628 628 {
629 629 "cell_type": "markdown",
630 630 "metadata": {},
631 631 "source": [
632 632 "## Beyond Python: magic functions"
633 633 ]
634 634 },
635 635 {
636 636 "cell_type": "markdown",
637 637 "metadata": {},
638 638 "source": [
639 639 "The IPyhton 'magic' functions are a set of commands, invoked by prepending one or two `%` signs to their name, that live in a namespace separate from your normal Python variables and provide a more command-like interface. They take flags with `--` and arguments without quotes, parentheses or commas. The motivation behind this system is two-fold:\n",
640 640 " \n",
641 641 "- To provide an orthogonal namespace for controlling IPython itself and exposing other system-oriented functionality.\n",
642 642 "\n",
643 643 "- To expose a calling mode that requires minimal verbosity and typing while working interactively. Thus the inspiration taken from the classic Unix shell style for commands."
644 644 ]
645 645 },
646 646 {
647 647 "cell_type": "code",
648 648 "execution_count": 28,
649 649 "metadata": {
650 650 "collapsed": false
651 651 },
652 652 "outputs": [],
653 653 "source": [
654 654 "%magic"
655 655 ]
656 656 },
657 657 {
658 658 "cell_type": "markdown",
659 659 "metadata": {},
660 660 "source": [
661 661 "Line vs cell magics:"
662 662 ]
663 663 },
664 664 {
665 665 "cell_type": "code",
666 666 "execution_count": 29,
667 667 "metadata": {
668 668 "collapsed": false
669 669 },
670 670 "outputs": [
671 671 {
672 672 "name": "stdout",
673 673 "output_type": "stream",
674 674 "text": [
675 675 "10000000 loops, best of 3: 190 ns per loop\n"
676 676 ]
677 677 }
678 678 ],
679 679 "source": [
680 680 "%timeit range(10)"
681 681 ]
682 682 },
683 683 {
684 684 "cell_type": "code",
685 685 "execution_count": 30,
686 686 "metadata": {
687 687 "collapsed": false
688 688 },
689 689 "outputs": [
690 690 {
691 691 "name": "stdout",
692 692 "output_type": "stream",
693 693 "text": [
694 694 "1000000 loops, best of 3: 888 ns per loop\n"
695 695 ]
696 696 }
697 697 ],
698 698 "source": [
699 699 "%%timeit\n",
700 700 "range(10)\n",
701 701 "range(100)"
702 702 ]
703 703 },
704 704 {
705 705 "cell_type": "markdown",
706 706 "metadata": {},
707 707 "source": [
708 708 "Line magics can be used even inside code blocks:"
709 709 ]
710 710 },
711 711 {
712 712 "cell_type": "code",
713 713 "execution_count": 31,
714 714 "metadata": {
715 715 "collapsed": false
716 716 },
717 717 "outputs": [
718 718 {
719 719 "name": "stdout",
720 720 "output_type": "stream",
721 721 "text": [
722 722 "size: 010000000 loops, best of 3: 129 ns per loop\n",
723 723 " size: 1001000000 loops, best of 3: 649 ns per loop\n",
724 " size: 2001000000 loops, best of 3: 1.09 \u00b5s per loop\n",
725 " size: 3001000000 loops, best of 3: 1.74 \u00b5s per loop\n",
726 " size: 400100000 loops, best of 3: 2.72 \u00b5s per loop\n",
724 " size: 2001000000 loops, best of 3: 1.09 µs per loop\n",
725 " size: 3001000000 loops, best of 3: 1.74 µs per loop\n",
726 " size: 400100000 loops, best of 3: 2.72 µs per loop\n",
727 727 "\n"
728 728 ]
729 729 }
730 730 ],
731 731 "source": [
732 732 "for i in range(5):\n",
733 733 " size = i*100\n",
734 734 " print 'size:',size, \n",
735 735 " %timeit range(size)"
736 736 ]
737 737 },
738 738 {
739 739 "cell_type": "markdown",
740 740 "metadata": {},
741 741 "source": [
742 742 "Magics can do anything they want with their input, so it doesn't have to be valid Python:"
743 743 ]
744 744 },
745 745 {
746 746 "cell_type": "code",
747 747 "execution_count": 32,
748 748 "metadata": {
749 749 "collapsed": false
750 750 },
751 751 "outputs": [
752 752 {
753 753 "name": "stdout",
754 754 "output_type": "stream",
755 755 "text": [
756 756 "My shell is: /bin/bash\n",
757 757 "My memory status is:\n",
758 758 " total used free shared buffers cached\n",
759 759 "Mem: 7870888 6389328 1481560 0 662860 2505172\n",
760 760 "-/+ buffers/cache: 3221296 4649592\n",
761 761 "Swap: 3905532 4852 3900680\n"
762 762 ]
763 763 }
764 764 ],
765 765 "source": [
766 766 "%%bash\n",
767 767 "echo \"My shell is:\" $SHELL\n",
768 768 "echo \"My memory status is:\"\n",
769 769 "free"
770 770 ]
771 771 },
772 772 {
773 773 "cell_type": "markdown",
774 774 "metadata": {},
775 775 "source": [
776 776 "Another interesting cell magic: create any file you want locally from the notebook:"
777 777 ]
778 778 },
779 779 {
780 780 "cell_type": "code",
781 781 "execution_count": 33,
782 782 "metadata": {
783 783 "collapsed": false
784 784 },
785 785 "outputs": [
786 786 {
787 787 "name": "stdout",
788 788 "output_type": "stream",
789 789 "text": [
790 790 "Writing test.txt\n"
791 791 ]
792 792 }
793 793 ],
794 794 "source": [
795 795 "%%writefile test.txt\n",
796 796 "This is a test file!\n",
797 797 "It can contain anything I want...\n",
798 798 "\n",
799 799 "And more..."
800 800 ]
801 801 },
802 802 {
803 803 "cell_type": "code",
804 804 "execution_count": 34,
805 805 "metadata": {
806 806 "collapsed": false
807 807 },
808 808 "outputs": [
809 809 {
810 810 "name": "stdout",
811 811 "output_type": "stream",
812 812 "text": [
813 813 "This is a test file!\r\n",
814 814 "It can contain anything I want...\r\n",
815 815 "\r\n",
816 816 "And more..."
817 817 ]
818 818 }
819 819 ],
820 820 "source": [
821 821 "!cat test.txt"
822 822 ]
823 823 },
824 824 {
825 825 "cell_type": "markdown",
826 826 "metadata": {},
827 827 "source": [
828 828 "Let's see what other magics are currently defined in the system:"
829 829 ]
830 830 },
831 831 {
832 832 "cell_type": "code",
833 833 "execution_count": 35,
834 834 "metadata": {
835 835 "collapsed": false
836 836 },
837 837 "outputs": [
838 838 {
839 839 "data": {
840 840 "application/json": {
841 841 "cell": {
842 842 "!": "OSMagics",
843 843 "HTML": "Other",
844 844 "SVG": "Other",
845 845 "bash": "Other",
846 846 "capture": "ExecutionMagics",
847 847 "debug": "ExecutionMagics",
848 848 "file": "Other",
849 849 "html": "DisplayMagics",
850 850 "javascript": "DisplayMagics",
851 851 "latex": "DisplayMagics",
852 852 "perl": "Other",
853 853 "prun": "ExecutionMagics",
854 854 "pypy": "Other",
855 855 "python": "Other",
856 856 "python2": "Other",
857 857 "python3": "Other",
858 858 "ruby": "Other",
859 859 "script": "ScriptMagics",
860 860 "sh": "Other",
861 861 "svg": "DisplayMagics",
862 862 "sx": "OSMagics",
863 863 "system": "OSMagics",
864 864 "time": "ExecutionMagics",
865 865 "timeit": "ExecutionMagics",
866 866 "writefile": "OSMagics"
867 867 },
868 868 "line": {
869 869 "alias": "OSMagics",
870 870 "alias_magic": "BasicMagics",
871 871 "autocall": "AutoMagics",
872 872 "automagic": "AutoMagics",
873 873 "autosave": "KernelMagics",
874 874 "bookmark": "OSMagics",
875 875 "cat": "Other",
876 876 "cd": "OSMagics",
877 877 "cl": "Other",
878 878 "clear": "KernelMagics",
879 879 "clk": "Other",
880 880 "colors": "BasicMagics",
881 881 "config": "ConfigMagics",
882 882 "connect_info": "KernelMagics",
883 883 "cp": "Other",
884 884 "d": "Other",
885 885 "dd": "Other",
886 886 "debug": "ExecutionMagics",
887 887 "dhist": "OSMagics",
888 888 "dirs": "OSMagics",
889 889 "dl": "Other",
890 890 "doctest_mode": "KernelMagics",
891 891 "dx": "Other",
892 892 "ed": "Other",
893 893 "edit": "KernelMagics",
894 894 "env": "OSMagics",
895 895 "gui": "BasicMagics",
896 896 "hist": "Other",
897 897 "history": "HistoryMagics",
898 898 "install_default_config": "DeprecatedMagics",
899 899 "install_ext": "ExtensionMagics",
900 900 "install_profiles": "DeprecatedMagics",
901 901 "killbgscripts": "ScriptMagics",
902 902 "ldir": "Other",
903 903 "less": "KernelMagics",
904 904 "lf": "Other",
905 905 "lk": "Other",
906 906 "ll": "Other",
907 907 "load": "CodeMagics",
908 908 "load_ext": "ExtensionMagics",
909 909 "loadpy": "CodeMagics",
910 910 "logoff": "LoggingMagics",
911 911 "logon": "LoggingMagics",
912 912 "logstart": "LoggingMagics",
913 913 "logstate": "LoggingMagics",
914 914 "logstop": "LoggingMagics",
915 915 "ls": "Other",
916 916 "lsmagic": "BasicMagics",
917 917 "lx": "Other",
918 918 "macro": "ExecutionMagics",
919 919 "magic": "BasicMagics",
920 920 "man": "KernelMagics",
921 921 "matplotlib": "PylabMagics",
922 922 "mkdir": "Other",
923 923 "more": "KernelMagics",
924 924 "mv": "Other",
925 925 "notebook": "BasicMagics",
926 926 "page": "BasicMagics",
927 927 "pastebin": "CodeMagics",
928 928 "pdb": "ExecutionMagics",
929 929 "pdef": "NamespaceMagics",
930 930 "pdoc": "NamespaceMagics",
931 931 "pfile": "NamespaceMagics",
932 932 "pinfo": "NamespaceMagics",
933 933 "pinfo2": "NamespaceMagics",
934 934 "popd": "OSMagics",
935 935 "pprint": "BasicMagics",
936 936 "precision": "BasicMagics",
937 937 "profile": "BasicMagics",
938 938 "prun": "ExecutionMagics",
939 939 "psearch": "NamespaceMagics",
940 940 "psource": "NamespaceMagics",
941 941 "pushd": "OSMagics",
942 942 "pwd": "OSMagics",
943 943 "pycat": "OSMagics",
944 944 "pylab": "PylabMagics",
945 945 "qtconsole": "KernelMagics",
946 946 "quickref": "BasicMagics",
947 947 "recall": "HistoryMagics",
948 948 "rehashx": "OSMagics",
949 949 "reload_ext": "ExtensionMagics",
950 950 "rep": "Other",
951 951 "rerun": "HistoryMagics",
952 952 "reset": "NamespaceMagics",
953 953 "reset_selective": "NamespaceMagics",
954 954 "rm": "Other",
955 955 "rmdir": "Other",
956 956 "run": "ExecutionMagics",
957 957 "save": "CodeMagics",
958 958 "sc": "OSMagics",
959 959 "store": "StoreMagics",
960 960 "sx": "OSMagics",
961 961 "system": "OSMagics",
962 962 "tb": "ExecutionMagics",
963 963 "time": "ExecutionMagics",
964 964 "timeit": "ExecutionMagics",
965 965 "unalias": "OSMagics",
966 966 "unload_ext": "ExtensionMagics",
967 967 "who": "NamespaceMagics",
968 968 "who_ls": "NamespaceMagics",
969 969 "whos": "NamespaceMagics",
970 970 "xdel": "NamespaceMagics",
971 971 "xmode": "BasicMagics"
972 972 }
973 973 },
974 974 "text/plain": [
975 975 "Available line magics:\n",
976 976 "%alias %alias_magic %autocall %automagic %autosave %bookmark %cat %cd %cl %clear %clk %colors %config %connect_info %cp %d %dd %debug %dhist %dirs %dl %doctest_mode %dx %ed %edit %env %gui %hist %history %install_default_config %install_ext %install_profiles %killbgscripts %ldir %less %lf %lk %ll %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %ls %lsmagic %lx %macro %magic %man %matplotlib %mkdir %more %mv %notebook %page %pastebin %pdb %pdef %pdoc %pfile %pinfo %pinfo2 %popd %pprint %precision %profile %prun %psearch %psource %pushd %pwd %pycat %pylab %qtconsole %quickref %recall %rehashx %reload_ext %rep %rerun %reset %reset_selective %rm %rmdir %run %save %sc %store %sx %system %tb %time %timeit %unalias %unload_ext %who %who_ls %whos %xdel %xmode\n",
977 977 "\n",
978 978 "Available cell magics:\n",
979 979 "%%! %%HTML %%SVG %%bash %%capture %%debug %%file %%html %%javascript %%latex %%perl %%prun %%pypy %%python %%python2 %%python3 %%ruby %%script %%sh %%svg %%sx %%system %%time %%timeit %%writefile\n",
980 980 "\n",
981 981 "Automagic is ON, % prefix IS NOT needed for line magics."
982 982 ]
983 983 },
984 984 "execution_count": 35,
985 985 "metadata": {},
986 986 "output_type": "execute_result"
987 987 }
988 988 ],
989 989 "source": [
990 990 "%lsmagic"
991 991 ]
992 992 },
993 993 {
994 994 "cell_type": "markdown",
995 995 "metadata": {},
996 996 "source": [
997 997 "## Running normal Python code: execution and errors"
998 998 ]
999 999 },
1000 1000 {
1001 1001 "cell_type": "markdown",
1002 1002 "metadata": {},
1003 1003 "source": [
1004 1004 "Not only can you input normal Python code, you can even paste straight from a Python or IPython shell session:"
1005 1005 ]
1006 1006 },
1007 1007 {
1008 1008 "cell_type": "code",
1009 1009 "execution_count": 36,
1010 1010 "metadata": {
1011 1011 "collapsed": false
1012 1012 },
1013 1013 "outputs": [
1014 1014 {
1015 1015 "name": "stdout",
1016 1016 "output_type": "stream",
1017 1017 "text": [
1018 1018 "1\n",
1019 1019 "1\n",
1020 1020 "2\n",
1021 1021 "3\n",
1022 1022 "5\n",
1023 1023 "8\n"
1024 1024 ]
1025 1025 }
1026 1026 ],
1027 1027 "source": [
1028 1028 ">>> # Fibonacci series:\n",
1029 1029 "... # the sum of two elements defines the next\n",
1030 1030 "... a, b = 0, 1\n",
1031 1031 ">>> while b < 10:\n",
1032 1032 "... print b\n",
1033 1033 "... a, b = b, a+b"
1034 1034 ]
1035 1035 },
1036 1036 {
1037 1037 "cell_type": "code",
1038 1038 "execution_count": 37,
1039 1039 "metadata": {
1040 1040 "collapsed": false
1041 1041 },
1042 1042 "outputs": [
1043 1043 {
1044 1044 "name": "stdout",
1045 1045 "output_type": "stream",
1046 1046 "text": [
1047 1047 "0 1 2 3 4 5 6 7 8 9\n"
1048 1048 ]
1049 1049 }
1050 1050 ],
1051 1051 "source": [
1052 1052 "In [1]: for i in range(10):\n",
1053 1053 " ...: print i,\n",
1054 1054 " ...: "
1055 1055 ]
1056 1056 },
1057 1057 {
1058 1058 "cell_type": "markdown",
1059 1059 "metadata": {},
1060 1060 "source": [
1061 1061 "And when your code produces errors, you can control how they are displayed with the `%xmode` magic:"
1062 1062 ]
1063 1063 },
1064 1064 {
1065 1065 "cell_type": "code",
1066 1066 "execution_count": 38,
1067 1067 "metadata": {
1068 1068 "collapsed": false
1069 1069 },
1070 1070 "outputs": [
1071 1071 {
1072 1072 "name": "stdout",
1073 1073 "output_type": "stream",
1074 1074 "text": [
1075 1075 "Writing mod.py\n"
1076 1076 ]
1077 1077 }
1078 1078 ],
1079 1079 "source": [
1080 1080 "%%writefile mod.py\n",
1081 1081 "\n",
1082 1082 "def f(x):\n",
1083 1083 " return 1.0/(x-1)\n",
1084 1084 "\n",
1085 1085 "def g(y):\n",
1086 1086 " return f(y+1)"
1087 1087 ]
1088 1088 },
1089 1089 {
1090 1090 "cell_type": "markdown",
1091 1091 "metadata": {},
1092 1092 "source": [
1093 1093 "Now let's call the function `g` with an argument that would produce an error:"
1094 1094 ]
1095 1095 },
1096 1096 {
1097 1097 "cell_type": "code",
1098 1098 "execution_count": 39,
1099 1099 "metadata": {
1100 1100 "collapsed": false
1101 1101 },
1102 1102 "outputs": [
1103 1103 {
1104 1104 "ename": "ZeroDivisionError",
1105 1105 "evalue": "float division by zero",
1106 1106 "output_type": "error",
1107 1107 "traceback": [
1108 1108 "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)",
1109 1109 "\u001b[1;32m<ipython-input-39-a54c5799f57e>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mmod\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mmod\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
1110 1110 "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mg\u001b[1;34m(y)\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
1111 1111 "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mf\u001b[1;34m(x)\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[1;36m1.0\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
1112 1112 "\u001b[1;31mZeroDivisionError\u001b[0m: float division by zero"
1113 1113 ]
1114 1114 }
1115 1115 ],
1116 1116 "source": [
1117 1117 "import mod\n",
1118 1118 "mod.g(0)"
1119 1119 ]
1120 1120 },
1121 1121 {
1122 1122 "cell_type": "code",
1123 1123 "execution_count": 40,
1124 1124 "metadata": {
1125 1125 "collapsed": false
1126 1126 },
1127 1127 "outputs": [
1128 1128 {
1129 1129 "name": "stdout",
1130 1130 "output_type": "stream",
1131 1131 "text": [
1132 1132 "Exception reporting mode: Plain\n"
1133 1133 ]
1134 1134 },
1135 1135 {
1136 1136 "ename": "ZeroDivisionError",
1137 1137 "evalue": "float division by zero",
1138 1138 "output_type": "error",
1139 1139 "traceback": [
1140 1140 "Traceback \u001b[1;36m(most recent call last)\u001b[0m:\n",
1141 1141 " File \u001b[0;32m\"<ipython-input-40-5a5bcec1553f>\"\u001b[0m, line \u001b[0;32m2\u001b[0m, in \u001b[0;35m<module>\u001b[0m\n mod.g(0)\n",
1142 1142 " File \u001b[0;32m\"mod.py\"\u001b[0m, line \u001b[0;32m6\u001b[0m, in \u001b[0;35mg\u001b[0m\n return f(y+1)\n",
1143 1143 "\u001b[1;36m File \u001b[1;32m\"mod.py\"\u001b[1;36m, line \u001b[1;32m3\u001b[1;36m, in \u001b[1;35mf\u001b[1;36m\u001b[0m\n\u001b[1;33m return 1.0/(x-1)\u001b[0m\n",
1144 1144 "\u001b[1;31mZeroDivisionError\u001b[0m\u001b[1;31m:\u001b[0m float division by zero\n"
1145 1145 ]
1146 1146 }
1147 1147 ],
1148 1148 "source": [
1149 1149 "%xmode plain\n",
1150 1150 "mod.g(0)"
1151 1151 ]
1152 1152 },
1153 1153 {
1154 1154 "cell_type": "code",
1155 1155 "execution_count": 41,
1156 1156 "metadata": {
1157 1157 "collapsed": false
1158 1158 },
1159 1159 "outputs": [
1160 1160 {
1161 1161 "name": "stdout",
1162 1162 "output_type": "stream",
1163 1163 "text": [
1164 1164 "Exception reporting mode: Verbose\n"
1165 1165 ]
1166 1166 },
1167 1167 {
1168 1168 "ename": "ZeroDivisionError",
1169 1169 "evalue": "float division by zero",
1170 1170 "output_type": "error",
1171 1171 "traceback": [
1172 1172 "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)",
1173 1173 "\u001b[1;32m<ipython-input-41-81967cfaa0c3>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0mget_ipython\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmagic\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34mu'xmode verbose'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mmod\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m \u001b[1;36mglobal\u001b[0m \u001b[0;36mmod.g\u001b[0m \u001b[1;34m= <function g at 0x237fc08>\u001b[0m\n",
1174 1174 "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mg\u001b[1;34m(y=0)\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m \u001b[1;36mglobal\u001b[0m \u001b[0;36mf\u001b[0m \u001b[1;34m= <function f at 0x2367c08>\u001b[0m\u001b[1;34m\n \u001b[0m\u001b[0;36my\u001b[0m \u001b[1;34m= 0\u001b[0m\n",
1175 1175 "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mf\u001b[1;34m(x=1)\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[1;36m1.0\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m \u001b[0;36mx\u001b[0m \u001b[1;34m= 1\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
1176 1176 "\u001b[1;31mZeroDivisionError\u001b[0m: float division by zero"
1177 1177 ]
1178 1178 }
1179 1179 ],
1180 1180 "source": [
1181 1181 "%xmode verbose\n",
1182 1182 "mod.g(0)"
1183 1183 ]
1184 1184 },
1185 1185 {
1186 1186 "cell_type": "markdown",
1187 1187 "metadata": {},
1188 1188 "source": [
1189 1189 "The default `%xmode` is \"context\", which shows additional context but not all local variables. Let's restore that one for the rest of our session."
1190 1190 ]
1191 1191 },
1192 1192 {
1193 1193 "cell_type": "code",
1194 1194 "execution_count": 42,
1195 1195 "metadata": {
1196 1196 "collapsed": false
1197 1197 },
1198 1198 "outputs": [
1199 1199 {
1200 1200 "name": "stdout",
1201 1201 "output_type": "stream",
1202 1202 "text": [
1203 1203 "Exception reporting mode: Context\n"
1204 1204 ]
1205 1205 }
1206 1206 ],
1207 1207 "source": [
1208 1208 "%xmode context"
1209 1209 ]
1210 1210 },
1211 1211 {
1212 1212 "cell_type": "markdown",
1213 1213 "metadata": {},
1214 1214 "source": [
1215 1215 "## Running code in other languages with special `%%` magics"
1216 1216 ]
1217 1217 },
1218 1218 {
1219 1219 "cell_type": "code",
1220 1220 "execution_count": 43,
1221 1221 "metadata": {
1222 1222 "collapsed": false
1223 1223 },
1224 1224 "outputs": [
1225 1225 {
1226 1226 "name": "stdout",
1227 1227 "output_type": "stream",
1228 1228 "text": [
1229 1229 "July"
1230 1230 ]
1231 1231 }
1232 1232 ],
1233 1233 "source": [
1234 1234 "%%perl\n",
1235 1235 "@months = (\"July\", \"August\", \"September\");\n",
1236 1236 "print $months[0];"
1237 1237 ]
1238 1238 },
1239 1239 {
1240 1240 "cell_type": "code",
1241 1241 "execution_count": 44,
1242 1242 "metadata": {
1243 1243 "collapsed": false
1244 1244 },
1245 1245 "outputs": [
1246 1246 {
1247 1247 "name": "stdout",
1248 1248 "output_type": "stream",
1249 1249 "text": [
1250 1250 "Hello World!\n"
1251 1251 ]
1252 1252 }
1253 1253 ],
1254 1254 "source": [
1255 1255 "%%ruby\n",
1256 1256 "name = \"world\"\n",
1257 1257 "puts \"Hello #{name.capitalize}!\""
1258 1258 ]
1259 1259 },
1260 1260 {
1261 1261 "cell_type": "markdown",
1262 1262 "metadata": {},
1263 1263 "source": [
1264 1264 "### Exercise"
1265 1265 ]
1266 1266 },
1267 1267 {
1268 1268 "cell_type": "markdown",
1269 1269 "metadata": {},
1270 1270 "source": [
1271 1271 "Write a cell that executes in Bash and prints your current working directory as well as the date.\n",
1272 1272 "\n",
1273 1273 "Apologies to Windows users who may not have Bash available, not sure how to obtain the equivalent result with `cmd.exe` or Powershell."
1274 1274 ]
1275 1275 },
1276 1276 {
1277 1277 "cell_type": "code",
1278 1278 "execution_count": null,
1279 1279 "metadata": {
1280 1280 "collapsed": false
1281 1281 },
1282 1282 "outputs": [],
1283 1283 "source": [
1284 1284 "%load soln/bash-script"
1285 1285 ]
1286 1286 },
1287 1287 {
1288 1288 "cell_type": "markdown",
1289 1289 "metadata": {},
1290 1290 "source": [
1291 1291 "## Raw Input in the notebook"
1292 1292 ]
1293 1293 },
1294 1294 {
1295 1295 "cell_type": "markdown",
1296 1296 "metadata": {},
1297 1297 "source": [
1298 1298 "Since 1.0 the IPython notebook web application support `raw_input` which for example allow us to invoke the `%debug` magic in the notebook:"
1299 1299 ]
1300 1300 },
1301 1301 {
1302 1302 "cell_type": "code",
1303 1303 "execution_count": 45,
1304 1304 "metadata": {
1305 1305 "collapsed": false
1306 1306 },
1307 1307 "outputs": [
1308 1308 {
1309 1309 "ename": "ZeroDivisionError",
1310 1310 "evalue": "float division by zero",
1311 1311 "output_type": "error",
1312 1312 "traceback": [
1313 1313 "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)",
1314 1314 "\u001b[1;32m<ipython-input-45-5e708f13c839>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mmod\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
1315 1315 "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mg\u001b[1;34m(y)\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
1316 1316 "\u001b[1;32m/home/fperez/ipython/tutorial/notebooks/mod.py\u001b[0m in \u001b[0;36mf\u001b[1;34m(x)\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[1;36m1.0\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
1317 1317 "\u001b[1;31mZeroDivisionError\u001b[0m: float division by zero"
1318 1318 ]
1319 1319 }
1320 1320 ],
1321 1321 "source": [
1322 1322 "mod.g(0)"
1323 1323 ]
1324 1324 },
1325 1325 {
1326 1326 "cell_type": "code",
1327 1327 "execution_count": 38,
1328 1328 "metadata": {
1329 1329 "collapsed": false
1330 1330 },
1331 1331 "outputs": [
1332 1332 {
1333 1333 "name": "stdout",
1334 1334 "output_type": "stream",
1335 1335 "text": [
1336 1336 "> \u001b[0;32m/Users/bussonniermatthias/ipython-in-depth/notebooks/mod.py\u001b[0m(3)\u001b[0;36mf\u001b[0;34m()\u001b[0m\n",
1337 1337 "\u001b[0;32m 2 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
1338 1338 "\u001b[0m\u001b[0;32m----> 3 \u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1.0\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
1339 1339 "\u001b[0m\u001b[0;32m 4 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n",
1340 1340 "\u001b[0m\n",
1341 1341 "ipdb> x\n",
1342 1342 "1\n",
1343 1343 "ipdb> up\n",
1344 1344 "> \u001b[0;32m/Users/bussonniermatthias/ipython-in-depth/notebooks/mod.py\u001b[0m(6)\u001b[0;36mg\u001b[0;34m()\u001b[0m\n",
1345 1345 "\u001b[0;32m 4 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n",
1346 1346 "\u001b[0m\u001b[0;32m 5 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mg\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
1347 1347 "\u001b[0m\u001b[0;32m----> 6 \u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
1348 1348 "\u001b[0m\n",
1349 1349 "ipdb> y\n",
1350 1350 "0\n",
1351 1351 "ipdb> up\n",
1352 1352 "> \u001b[0;32m<ipython-input-37-5e708f13c839>\u001b[0m(1)\u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n",
1353 1353 "\u001b[0;32m----> 1 \u001b[0;31m\u001b[0mmod\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mg\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
1354 1354 "\u001b[0m\n",
1355 1355 "ipdb> exit\n"
1356 1356 ]
1357 1357 }
1358 1358 ],
1359 1359 "source": [
1360 1360 "%debug"
1361 1361 ]
1362 1362 },
1363 1363 {
1364 1364 "cell_type": "markdown",
1365 1365 "metadata": {},
1366 1366 "source": [
1367 1367 "Don't foget to exit your debugging session. Raw input can of course be use to ask for user input:"
1368 1368 ]
1369 1369 },
1370 1370 {
1371 1371 "cell_type": "code",
1372 1372 "execution_count": 39,
1373 1373 "metadata": {
1374 1374 "collapsed": false
1375 1375 },
1376 1376 "outputs": [
1377 1377 {
1378 1378 "name": "stdout",
1379 1379 "output_type": "stream",
1380 1380 "text": [
1381 1381 "Are you enjoying this tutorial ?Yes !\n",
1382 1382 "enjoy is : Yes !\n"
1383 1383 ]
1384 1384 }
1385 1385 ],
1386 1386 "source": [
1387 1387 "enjoy = raw_input('Are you enjoying this tutorial ?')\n",
1388 1388 "print 'enjoy is :', enjoy"
1389 1389 ]
1390 1390 },
1391 1391 {
1392 1392 "cell_type": "markdown",
1393 1393 "metadata": {},
1394 1394 "source": [
1395 1395 "## Plotting in the notebook"
1396 1396 ]
1397 1397 },
1398 1398 {
1399 1399 "cell_type": "markdown",
1400 1400 "metadata": {},
1401 1401 "source": [
1402 1402 "This magic configures matplotlib to render its figures inline:"
1403 1403 ]
1404 1404 },
1405 1405 {
1406 1406 "cell_type": "code",
1407 1407 "execution_count": 46,
1408 1408 "metadata": {
1409 1409 "collapsed": false
1410 1410 },
1411 1411 "outputs": [],
1412 1412 "source": [
1413 1413 "%matplotlib inline"
1414 1414 ]
1415 1415 },
1416 1416 {
1417 1417 "cell_type": "code",
1418 1418 "execution_count": 47,
1419 1419 "metadata": {
1420 1420 "collapsed": false
1421 1421 },
1422 1422 "outputs": [],
1423 1423 "source": [
1424 1424 "import numpy as np\n",
1425 1425 "import matplotlib.pyplot as plt"
1426 1426 ]
1427 1427 },
1428 1428 {
1429 1429 "cell_type": "code",
1430 1430 "execution_count": 48,
1431 1431 "metadata": {
1432 1432 "collapsed": false
1433 1433 },
1434 1434 "outputs": [
1435 1435 {
1436 1436 "data": {
1437 1437 "image/png": [
1438 1438 "iVBORw0KGgoAAAANSUhEUgAAAXoAAAEKCAYAAAAcgp5RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
1439 1439 "AAALEgAACxIB0t1+/AAAIABJREFUeJztnXt4VdWZ/78nJBDCJRBCEkgCIQmXgNwsmCkaDQpSQPF+\n",
1440 1440 "QQtUcEpVtNP2acfO/KZFn9Zi1c5MSzti6wXqCIhWwQoolIkgFFMFQQUhIIHcSCAQCJCQ5Jz9+2O5\n",
1441 1441 "ITk5l31Za+2193k/z5NHQvY5exmS7/me7/uud/k0TdNAEARBeJY4pxdAEARBiIWEniAIwuOQ0BME\n",
1442 1442 "QXgcEnqCIAiPQ0JPEAThcUjoCYIgPA4JPeEJiouL8eKLLwIA/vd//xfTpk0z9fjFixdjzpw5XNf0\n",
1443 1443 "yiuvoKioKOzXZ8yYgT//+c9c70kQoSChJ5SmuLgYKSkpaGlpiXidz+eDz+cDANx///147733Ln0t\n",
1444 1444 "Li4OX3311aXPS0pKkJ2d3enxslm/fj33FxeCCAUJPaEs5eXlKC0tRVpaGtatW2fruaLtC1Rt36Df\n",
1445 1445 "73d6CYSHIKEnlGXFihWYMmUK5syZg+XLlxt+XPvI5NprrwUAjB07Fr1798aKFSswY8YMVFdXo1ev\n",
1446 1446 "Xujduzdqamo6PcfOnTsxadIk9O3bF+PGjcMHH3wQ9n4VFRW4/fbbkZaWhtTUVDz66KMdvv7jH/8Y\n",
1447 1447 "KSkpyM3NxcaNGy/9ffu46ZVXXsHVV1+NH/7wh0hNTcXixYuxfPlyXH311Xj00UfRp08fFBQUYMuW\n",
1448 1448 "LYa/DwShQ0JPKMuKFStwzz334O6778Z7772Huro608+xdetWAMDevXtx9uxZzJ07Fxs2bMDAgQPR\n",
1449 1449 "2NiIs2fPYsCAAR0eU1VVhZtuugk/+9nPcPr0aTz77LO44447cPLkyU7P7/f7cdNNN2HIkCE4evQo\n",
1450 1450 "qqqqMHv27Etf/+ijjzBixAjU19fjJz/5CRYsWHDpa+3jJgAoLS1FXl4e6urq8O///u/QNA2lpaXI\n",
1451 1451 "z89HfX09nnjiCdx+++04ffq06e8DEduQ0BNK8uGHH6KqqgqzZs3C0KFDMXLkSLz22mtcnjtaTPPq\n",
1452 1452 "q69ixowZ+Na3vgUAmDJlCiZMmID169d3ura0tBQ1NTV45pln0L17d3Tr1g2TJk269PXBgwdjwYIF\n",
1453 1453 "8Pl8mDt3LmpqasK+YA0cOBCPPPII4uLikJiYCABIS0vD97//fXTp0gV33303hg8fjnfffdfq/zoR\n",
1454 1454 "o5DQE0qyfPly3HjjjejVqxcA4K677jIV39jh6NGjWLNmDfr27XvpY/v27Th+/HinaysqKjB48GDE\n",
1455 1455 "xYX+VcrIyLj056SkJADAuXPnQl4bXCAGgMzMzA6fDx48GNXV1Yb/XwgCAOKdXgBBBNPU1ITXX38d\n",
1456 1456 "gUDgUqxy8eJFNDQ0YO/evRgzZoyt54/WYTNo0CDMmTMHL7zwQtTnys7OxrFjx+D3+9GlSxfu66qq\n",
1457 1457 "qurw+dGjR3HLLbfYug8Re5CjJ5Tj7bffRnx8PPbv3489e/Zgz5492L9/P4qKirBixQrTz5eeno7D\n",
1458 1458 "hw93+Ly+vh5nz54Nef23v/1tvPPOO3j//ffh9/vR3NyMkpKSTqILAIWFhRgwYAAef/xxXLhwAc3N\n",
1459 1459 "zdixY4fpNYajrq4Ov/3tb9Ha2oo1a9bgwIEDmDFjBrfnJ2IDEnpCOVasWIH58+cjKysLaWlpSEtL\n",
1460 1460 "Q3p6OhYtWoTXXnsNgUAg4uODi5yLFy/GvHnz0LdvX7zxxhsYMWIEZs+ejdzcXKSkpKCmpqbDY7Ky\n",
1461 1461 "srB27Vo89dRTSEtLw6BBg/Dcc8+FvG9cXBzeeecdHDp0CIMGDUJ2djZef/31kOvQ/87ImnUKCwtR\n",
1462 1462 "VlaG/v374z/+4z/wxhtvoG/fvpG/gQQRhM/uwSPz58/Hu+++i7S0NHz22Wchr3nsscewYcMGJCUl\n",
1463 1463 "4ZVXXsH48ePt3JIgYoJXXnkFL774IrZt2+b0UgiXY9vRP/DAAx16g4NZv349Dh06hLKyMrzwwgt4\n",
1464 1464 "6KGH7N6SIAiCMIFtoS8qKor4VnLdunWYN28eAPY2tKGhAbW1tXZvSxCeJ1ycQxBmEZ7RV1VVdWgb\n",
1465 1465 "y8rKQmVlpejbEoTrmTdv3qUNXwRhBynF2OAyALkUgiAIeQjvo8/MzERFRcWlzysrKzttAgGA/Pz8\n",
1466 1466 "Di1wBEEQRHTy8vJw6NChiNcId/SzZs261Pu8c+dO9OnTB+np6Z2uO3z4MDRNc+3Hz3/+85B/7/dr\n",
1467 1467 "uP9+DVOmaDhzpuPXWls1zJ2rYcYMdp1qa3fq4803NRQVaQgENLz7roaRI9mfVV//8eMakpM1tLRo\n",
1468 1468 "GDZMQ2mp89//Bx/U8MtfarjmGg1vvSX35+fZZzXcc4+Gvn01VFaK//5Pm6bh5ps13H03n/WH+35m\n",
1469 1469 "ZGj40Y/k/VxF+zBikG0L/ezZszFp0iQcOHAA2dnZeOmll7Bs2TIsW7YMADtcITc3F/n5+Vi4cCH+\n",
1470 1470 "8Ic/2L2lq3jySeCrr4B164DevTt+LT4e+NOfgDNngGefdWZ9KvLqq8B3vgP4fMD06UBjI7B/v9Or\n",
1471 1471 "is7//R9w3XVAQgIweTLAcd+UZXbsAGbOBK69FtizR+69P/4YuOkmdv933hF7L00Ddu8G5swBjhwR\n",
1472 1472 "d589e4D//E9g6FBx9xCB7ehm5cqVUa9ZunSp3du4kg8+AJYtA3btArp3D31NQgLw5z8DEycC994L\n",
1473 1473 "DBokd42q0dAA/O1vwMsvs899PiYW77wDjBzp7NqisWULcMMN7M9XX83W/P3vO7ee1lZmMoYPB664\n",
1474 1474 "AvjLX+Te/9AhID8fqKsT/0JdUwMEAkBREfDww2Lu0dYGfPEFe+H6egSTa6CdsZwoLi7u8HlLC/Dd\n",
1475 1475 "7wLPPw8ETcHtxJAhwKJFwL/9m7j1RSJ47U6ybRtw1VVAcvLlv7v55siOUJX1l5QwJw8AkyYB27cz\n",
1476 1476 "pxkNUesvKwOys4HERCb0n38u5DZh13/4MBP6wYOBo0fF3Ftn925g/HggPR24cIG9CzSK0e9/WRn7\n",
1477 1477 "XXabyAMk9NwI/mH5r/9ib++Mzp/64Q+B995jP0yyUUUoASb0wcesFhezd0XNzaEfo8L6m5qAY8eA\n",
1478 1478 "ggL2eW4uc4BGOolFrX/fvsvvgoYPB8rLw38P7RBq/adOAX4/0K+fHKE/eJB9730+ZpzMxDdGv/8H\n",
1479 1479 "DwIjRlhbn9OQ0Augqgr49a+Z2Buld2/gkUeAZ54Rty43EErou3cHhg0D9u51Zk1GKCsD8vJY3QVg\n",
1480 1480 "glNQwMTBKb74Ahg1iv25a1f24nPggJx7627e55Mj9LW1gD4ROjeXRVa8OXkSSEvj/7wyIKEXwM9+\n",
1481 1481 "xmKb/Hxzj/ve94A1a1hxNha5cAH47DOgsLDz1yZOBP7xD/lrMsqXX3Z2e/n5LKd2ivaOHmDr+/JL\n",
1482 1482 "Ofc+dIi98AFAaipw8aK5OMUstbWXRVik0Kem8n9eGZDQc6a8HHj7beDHPzb/2IwMYNo0wMIkXk+w\n",
1483 1483 "Zw8To6/P5+jAhAmsi0NVVBT6o0dZjKGTlcXebcpAd/SAHFdfW8vyecB8dGOUEydI6ImvWbIEWLgQ\n",
1484 1484 "sDpJdsGC2BX6vXuBsWNDf82Njn7oUGeFvqoKaL83MTMTkHU4VWUle2HRkSn0GRms04c3J08C/fvz\n",
1485 1485 "f14ZkNBzpLISeP114Ac/sP4ckyez53Ey23WKPXuAcIdHjRrFRLO1Ve6ajHLggFqOPhBg4te+4ysz\n",
1486 1486 "U56jr6u7LLyAXKHv1w+or+d/D4puCADAb34DPPCAvVf9+HjgnnsAA9sTPMeePeEdfbdurFVQ1SkZ\n",
1487 1487 "7TNpnbw8tt4o56QIoa4O6NOHFWF1Bg6U5+hPnOj4ezBwIBDiyF0uaBr7/9Uz+pQUMUIf/P/kJkjo\n",
1488 1488 "OXHuHLB8OfDYY/af6847gbfesv88biIQYIXYSMfByiwmmuHsWdZKGBzX9ezJ9gPU1MhfU3BsA8h3\n",
1489 1489 "9O07VFJTmSMWQUMD68xKTGSfk6PvDAk9J/78Z9bvPXiw/ef65jeZ8xK5lVs1jh1jLaYpKeGvUVXo\n",
1490 1490 "KyrYu41QQ1mzs9nXZVNdzVx0e3RHb2QTl11OnOgo9P36iRP69rGNfi8S+o6Q0HNA04Df/Q549FE+\n",
1491 1491 "z9elC9sNum4dn+dzA6GKmcGoLvShkFkAbU8oR9+zJxu50dAg9t4tLayVsk+fy38n0tEHC32PHmyz\n",
1492 1492 "Gs/NYRcvsk1x7XdsuwkSeg787W9MnK+7jt9zzpjBdsrGCgcPsk1RkXCj0A8cKC8uaU8oodfXI/qF\n",
1493 1493 "R3e+ce3UJTVVjMsGOgu9z8feGZ46xe8e9fXsnYJbj9IgoefA88+zXa08fwgmTwY+/JC5o1jg4EG2\n",
1494 1494 "TT8Sw4fL29lphmPH1HP0oaIbfT2iX3hCFS1FRjfh7sfzhcXNsQ1AQm+bkyeBzZuB2bP5Pm9KCuvD\n",
1495 1495 "Li3l+7yqYsTR9+vH3pKLjh7MoqKjDyf06enMAYskuBALXBZ6EfWBhobOhXAS+o6Q0NvktddYni4i\n",
1496 1496 "u7v+ejb6NhYwIvT6wKrycilLMoyKGX24zT0iIxSd4EIswLpiEhKA8+f536+hofPvH2+hD/Vi4iZI\n",
1497 1497 "6G3y0kusd14EN9zA8n+v09TEeqyNdCzl5KjXjaSiow/nQEV1pLSnri70i4yo+ObMmY6FX/1ePP8/\n",
1498 1498 "z55153hiHRJ6G+zezX7IRE3JLSoCPvlEjAtSia++YiIfb+AYHBUdfbiYBJDbu96ecEIvsvtFJ5zQ\n",
1499 1499 "i7r3mTOdHT3vYmxjY+cT4twECb0NXnqJHXkXJ+i72KMHcOWVrCjrZY4eZU7dCKo5+nPn2GapcCKQ\n",
1500 1500 "nMzqCiInNwbT3MzaAUM5UBmO/tQpdp9gRMVGDQ1yHD0JfQzS3MzGFMybJ/Y+sZDTHz1qfKOZqMmE\n",
1501 1501 "VtHnoIfruPL5mNuXuTu2vp6Jaqg1yXD04fJskdGNaEdP0U2Msm4dm8ti1Ila5eqrgb//Xew9nObo\n",
1502 1502 "UeNn5ebkqBXdBPdwhyItTcw0xXBE6hCR4ehDOWxA3ItMqPslJzNx5gVFNzHKq6+Kd/MAG8+7axd7\n",
1503 1503 "++9Vjh0z7uhVE/rjxy+fbBSO/v1ZJ4osIgm9LEcfSuh5u2ydUI6+Vy++Qk+OPgZpaAA++AC49Vbx\n",
1504 1504 "9+rTh3V0iDrYWQXMRDfJyawXm+cvsR2OH4/u6FUSet3Ri5x3E07oe/cW8+8W6n69e/Oti1BGH4O8\n",
1505 1505 "/TbLzmX9wxcWAh99JOdeTmBG6H0+dqCFkUO3ZdD+rNJwqBTddO/OmgcuXBB3/3BCn5zM/5jMixfZ\n",
1506 1506 "u93u3Tv+PW9HT9FNDLJ6NZsZLwsvC31LCxPBUHNZwqGS0LvN0QPi4xuZQq/30AcXnkU4eopuYoj6\n",
1507 1507 "emDHDuCmm+Td08tCX1nJTkEy0kOvI/Ps02gYcfSqCb3IgmxTE/uvPhu+PaKEPtSudHL0HSGhN8lf\n",
1508 1508 "/sIO8O7ZU949R49m8YYquTRPzHTc6GRmusvRqxTdAOIPAQnl5gH+nTBA6F2xABP6xkZ+tQhy9DGG\n",
1509 1509 "7NgGYDNCxo1T+3Bsq5jpuNFRKbox0l7phKMPtWFJR9RRe0Bkoe/dm7+jDzXnBmC/MwkJl99h2IWK\n",
1510 1510 "sTFEbS3w8cdsVrxsvBrfmCnE6qgk9KEGeAUjW+ijDeDq04e/4La/dyRHLyqjDwWvLp+2Nlb0TUqy\n",
1511 1511 "/1xOQUJvgjfeAGbO7Fzhl8GECWzujdewKvQqZPQXL7JicrS39LrQyzjCDwBOnw4vfoC3hD6cowf4\n",
1512 1512 "FWQbG9m/sVsPHQFI6E3hRGyjM24csGePM/cWiRWhVyWjr69nMUg0AejWjblBWXP0jTh6UWuJJPTd\n",
1513 1513 "uzN3zPMwnUiRCq+CrNsLsQAJvWGqqtimpWnTnLn/0KFsXorM4VgysCL0qanMGba2ilmTUfTj5Ywg\n",
1514 1514 "K77RtMhiCzgn9D4f/4LsuXPh31HxcvRuL8QCJPSGWbMGuOUW5s6cID4eGDkS+OwzZ+4vgkAg8iz3\n",
1515 1515 "cMTFMbGX2ckSCjNC36+fmO3/wZw7x1obExLCX5Oc7IzQA/wLsufOhe+A4+Xo3V6IBUjoDeNkbKMz\n",
1516 1516 "dqy34pu6OvbL2KOH+cdmZIg/Ei8aZoRe1JyXYKLl84Bzjh7gn9NHEnpexVg9o3czJPQGOHoUOHSI\n",
1517 1517 "nfjkJF4T+spKVli1goyzT6OhotAbOfJOZDE23AYmHd5CH0mE9V56u0R6MXELJPQGeP114LbbIr8d\n",
1518 1518 "lsHYscCnnzq7Bp5UV5sbfdAeNwq96PHAgPOOPpr7daOjP3/e3a2VAAm9IVSIbQBgzBhWEPb7nV4J\n",
1519 1519 "H2pq2PgDK6Sns12pTqJiRm/E0YvM6KMVLkUUYyNl9Dwc/YUL1uJFlSChj8KhQyxiuO46p1fCnFhq\n",
1520 1520 "KnD4sNMr4UOks1ajQRl9aFRw9JEKlyKiGxmOnoTe47z+OnDHHeaGbonESzm9HaF3Y3Qjy9FHE/qk\n",
1521 1521 "JNaaevEi//tHi25EdN1EyuhJ6Bkk9FFQJbbR8ZLQ241uSOg7YyS68fnEFWSjRTe9ejFx5kWk6KZH\n",
1522 1522 "DybSdiGh9zhffskGRF1zjdMruczo0d45bcquo3dTRq9SdAOIGUcARI9uevbkK/SRohueQk/FWA+z\n",
1523 1523 "ejVw111sg44qjBwJ7N/v9Cr4EEvRjUrFWEBcTh8tuuFVINWR4eipGOthNE292AZgoxCOHhWTr8qk\n",
1524 1524 "rY0JZbTJj+Ho18/ZMQiBAHPPKSnGrlfN0YsQ+rY2oLk5sijydPStreyeoQ45ASi6aQ8JfRg+/5z9\n",
1525 1525 "A//TPzm9ko507Qrk5ABlZU6vxB61tayDyGqRu0sX9niZ43/bc+YM++U3urdCz8RFt8ZG27CkI6LF\n",
1526 1526 "8tw59j2JNOStZ09+jv78efZ84e5HQn8ZEvowrF4N3H23mqNJCwrcH9/YKcTqOJnT19dHPsUpmC5d\n",
1527 1527 "WGwhakeqjtHt+rzPVNXvHW0mDM9ibKR8HmBfo4yeQUIfAk0DVq1SL7bRKSgA9u1zehX2sJPP6ziZ\n",
1528 1528 "05vJ53VkxDdGhZ53Vm703jyjm2ijCSijvwwJfQh27WJi/41vOL2S0HihIBuLQi9yo5KO0dnpIoTe\n",
1529 1529 "yDhfntFNpB56gKKb9pDQh2D1auDee9WMbQCKbnSc3B1rVehViW5EOXqVopvERFawtVsXIaEHsHHj\n",
1530 1530 "RowYMQJDhw7F008/3enrJSUlSE5Oxvjx4zF+/Hj84he/sHtLoWga2w2ramwDACNGAAcPunvmTSw6\n",
1531 1531 "epEzZgBjXS86sRDd+HwsW7fr6r2Q0dva2O/3+7Fo0SJs3rwZmZmZmDhxImbNmoWCgoIO11133XVY\n",
1532 1532 "t26drYXK4qOP2JFno0c7vZLw9OjBRO7IESA/3+nVWIOX0Dt1jq6Kjt5I14uOU9GN7rLb2uyPFTEy\n",
1533 1533 "PliPb+wcHBLzGX1paSny8/ORk5ODhIQE3HvvvVi7dm2n6zRZpyJzQO+dVzW20Rk50t0FWV5dN+To\n",
1534 1534 "L2PmbFOnohufj5+rj5bRA/Zzek1jQu92R29L6KuqqpDd7hy4rKwsVFVVdbjG5/Nhx44dGDt2LGbM\n",
1535 1535 "mIF9CquT3385n1cdt+f0PBy9GzN60UJv9CQkp6IbgF9B9ty56AJsV+ibmtjxoV26WH8OFbD15sln\n",
1536 1536 "wPZeeeWVqKioQFJSEjZs2IBbb70VBw8eDHnt4sWLL/25uLgYxcXFdpZnmq1bmXiMGCH1tpYoKAA+\n",
1537 1537 "/NDpVVijrY21GVrdFavjRkd/5IiY9QDmDrEWFd0YeUfBy9EbiVTsCr2K+XxJSQlKSkpMPcaW0Gdm\n",
1538 1538 "ZqKiouLS5xUVFcgKOhuuV7ufvOnTp+Phhx/GqVOnkBJi73h7oXeC114DZs92dAmGGTYMePllp1dh\n",
1539 1539 "jdpaJpJ2M9qUFOaQ/X75joscfWfOnTN2YhivzhujQm/nXirm88Em+Iknnoj6GFvRzYQJE1BWVoby\n",
1540 1540 "8nK0tLRg9erVmDVrVodramtrL2X0paWl0DQtpMg7zcWLwF/+ona3TXuGDnXvGITjx9k7J7vExzPR\n",
1541 1541 "EN2bHgqrjl5kMVYFoTciiryiGyPZOQ9Hr5rQW8GWp4qPj8fSpUsxbdo0+P1+LFiwAAUFBVi2bBkA\n",
1542 1542 "YOHChXjjjTfwP//zP4iPj0dSUhJWrVrFZeG8ee89YNQoYNAgp1dijIwMlh8aOWhCNWprWezCg9RU\n",
1543 1543 "NkrarOjaxcxAMx0Zjt7JYqw+eyYabotuYl7oARbHTJ8+vcPfLVy48NKfH3nkETzyyCN2byOclSvd\n",
1544 1544 "E9sArHshP5+5+okTnV6NOUQI/fDhfJ7PCG1t7EXWiKi1RyVHr4utpvHrMDMqijzPcpXh6FXL6K1A\n",
1545 1545 "O2PBfuA3bGCz593EsGHujG9ECL1M9AmRZgVStKM3U4yNj2fdJBcu8Lu/meiGl6MXLfQqZvRWIKEH\n",
1546 1546 "sG4dMGmSuWmEKjB0KNsh6zbq6ux33Og4IfRW4zKVHD3AP74xGt3wLMbKEHpy9B7BbbGNjlsLsjwd\n",
1547 1547 "fb9+rDAqk4YGYzPfg0lOZq5b1P5BMxk9wO/wbB2j0U2PHnxeYIzEKnZHFTc1sZ3ybifmhb6+nvXP\n",
1548 1548 "33qr0ysxDwm9uxx9fDwbAcDzzNT2qODojQo9j8hIhqMnofcIb74JTJtm7hdEFfSM3kUTJgDErtAD\n",
1549 1549 "YnN6p4XeyOwZgO+ceBJ6Y8S80L/6KnDffU6vwhp6S6FsobOL2zP6M2esC73InN5MMRZw1tHLEvqk\n",
1550 1550 "JHvvHiij9wCHDwNffgnMmOH0Sqzh87kvvvH72fiD/v35PB85+ss46ehbWtiB6V27Rr/WrvjqGOmI\n",
1551 1551 "SUpirtwq5Og9wIoVrAhr5IdTVdwm9CdPMrGzO/5Ap18/dwm9SEdvpRjL86BuoyOSZTr67t3tvaiQ\n",
1552 1552 "0LucQABYvhz4znecXok9hg1zV4tlXR2/fB4gR98eJx290dZKgI/Qa5oxEbb77oGE3uVs3crcz7hx\n",
1553 1553 "Tq/EHvn5wKFDTq/COLW1/PJ5AOjbl2XTbW38njMaqjp6JzN6M6MCeAh9czPb8BUXRcF4ZPQk9C7m\n",
1554 1554 "lVeYm1f9gJFo5OaKHX3LG54dNwCbWtmnD5s9IwsVHb2mGTuIoz08hd7orliAT0ZvdDQBj4yeirEu\n",
1555 1555 "5dw54O23gfvvd3ol9snNBb76yulVGIe30APy4xsVHf2FC6zWZKb24eboxmg3DGX0jJgU+jffBIqK\n",
1556 1556 "+AuOE6SlsR9GkVvrecI7owecEXorO2MBcY7ebCEWcHd0Y1ToKaNnxKTQv/SS+4uwOj6fu+Ib3hk9\n",
1557 1557 "IL/zRkVHb7YQC7g7ujE6bIyEnhFzQr9vH+tSCTofxdW4Tei94OhVy+jNFmIB56IbPTcPBKzfz0x0\n",
1558 1558 "09xsffc4bZhyKS+8AMyfDyQkOL0SfgwZ4p6cXpTQyxps5vczUbM6MiM5WVx047TQG3X0cXFs5o+d\n",
1559 1559 "IqlRAY6LY7WL5mZr9/GKo+e0bcUdNDWxkQcff+z0SviSmwscOOD0KowhKqOXdUi4fgB2tLa+cPTp\n",
1560 1560 "Iy66cUtGD1zO6a3OejfjtPX4xopge0XoY8rRv/46cNVVQE6O0yvhi1s6bzSN75wbHZnRjd2jG73q\n",
1561 1561 "6I0ONNOROYPGToslCb0LWbYM+N73nF4Ff9wi9A0N7C17YiLf55VZjLUr9KIcvQoZvRVHb+d+Zh29\n",
1562 1562 "FWjDlMvYuxeoqHDvALNI5OQAR4/aK27JQEQ+D7jL0SclsQFgLS381gRYc/Q9egAXL/LZVSxb6M04\n",
1563 1563 "eju99LRhymU8/zzw4IP8hmmpRFISGwVQXe30SiIjIp8H3CX0Pp8YV29F6H0+Jrg8DkIx014J2D98\n",
1564 1564 "xMxZrlYdvd/PXgTdPPRQJyaE/tQpYNUq4LvfdXol4nBDfCOihx6QL/RWN0vpiMjprRRjAX7xjZn2\n",
1565 1565 "SoCJryxHbzWj1/N5t49JAWJE6JctA265BRgwwOmViMMtQi/C0ScnM7GSMdjMrqMHLp8dyxMrjh7g\n",
1566 1566 "K/Rei268UogFYqC9sqUF+N3vgI0bnV6JWNywaUqU0LcfbMbrQJNw8BD63r35RzdWirEAP6G3Et3I\n",
1567 1567 "dPRWhN4rm6WAGHD0q1YBo0YBY8Y4vRKxuMHRi8roAdZ5I2PTFDn60JiNbnhk9KKF3kuO3tNCr2nA\n",
1568 1568 "c88BP/qR0ysRjxt2x4rK6AEgJYXVYkTDy9GLEHqnM3ozjt5NGb0X8LTQb9nCcttp05xeiXjc4OhF\n",
1569 1569 "RTeA+xy9Cl03AHsMj64blfvoKaP3uND/+tfAD3/ojap5NAYOZBk1j0OXReEFoT9zRk1Hbyej59Ve\n",
1570 1570 "KTu6Ed1e6ZXNUoCHhf6jj4D9+4E5c5xeiRzi4tjGqfJyp1cSHpEZPUU31oS+Z0/7Qq9p5oQXcEcx\n",
1571 1571 "1iubpQAPC/2TTwI//ak3NjsYReX45vx5tgHFjOszA0U31oXebkbf3MymwXbpYvwxlNHLxZNC/49/\n",
1572 1572 "sJEH8+c7vRK5qFyQ1WMbUTGam4Set6NvaWHjL6zMEOLh6M3GNgD10cvGk0K/eDHw+OPslPhYIjcX\n",
1573 1573 "OHzY6VWERsTUyvbIiG4CAevOuT28hV5fk5UXUR5Cb2XcMLVXysVzQl9SwrL5Bx90eiXyGTJE3Yxe\n",
1574 1574 "ZD4PyHH0Z88yYTQTUYSCd3RjtRALOCv0qkc3tGFKUTQN+MlPgF/+MvbcPAAMHsymWKqIaEcvQ+h5\n",
1575 1575 "xDaAOEdvBV7RjVmht5PR68Vfo26bHL3HhH7NGvb2+p57nF6JM8Sy0MuIblQWeiubpQA+7ZVmd8UC\n",
1576 1576 "9hx9SwvrMjN6HChl9B4S+gsXgH/9V9Y7b/WYN7fTrx/7JeDduscDcvSX4R3dOO3oZWf0Zls5ydF7\n",
1577 1577 "SOifeoodE3j99U6vxDl8vsuHkKiGaKHv2RNobbV+CLQReAl9r17sxVjT7D8X4LzQW4lu7Dh6s9m5\n",
1578 1578 "nYyehF4hDh5kB4v85jdOr8R5Bg9WsyArWuh9PvHxDS+h79qVxQ68djHbLcba7aO3Et3YyejNCr2d\n",
1579 1579 "6IaKsYoQCAAPPcQ2R2VmOr0a51E1pxc5/kBHdHzDY/yBDs8Jlk47eivRTfful/v/zWLF0VN043L+\n",
1580 1580 "8Af2g/b97zu9EjVQVehFO3pAvNDzcvQA34KsnWKsLvR2YiQrQu/zWXfaJPTmcbXQl5WxzVHLl3vz\n",
1581 1581 "LFgrqCj0fj+LVFJTxd7HLdENwLcga8fRd+3KRNfOYeVWdsYC1uMbK9FNU5P5FzMSegW4eBG4/37g\n",
1582 1582 "Zz8Dhg93ejXqoGIx9tQpJmyiX4xlOHq758Xq8HT0djJ6wH6LpRVHD1gvyJoV+oQE9mLW2ir2Pirj\n",
1583 1583 "WqF/7DGBCpV3AAAezUlEQVRg0CDg0UedXolaqFiMlRHbALEd3dgRers5vR2htxKpWLmflfjGS47e\n",
1584 1584 "lYHHn/4EbN0KlJbGxqx5M2RksEhApR9SWUIfy9GN1YwesC/0VtorAXmOHrgs9Gb+/VT6HbKL6xz9\n",
1585 1585 "X/8K/L//B7z1lv3hUl4kLg7IygKOHXN6JZchR98Zrzl6lTN6/V5me+lJ6B1i61bggQeAtWuBESOc\n",
1586 1586 "Xo26qFaQJaHvjGpCb6eXXnZ0Y0XorXT40IYpB3j3XeDOO4GVK4HCQqdXozaqFWQpuukMz+jGbjE2\n",
1587 1587 "lqIbM9CGqXZs3LgRI0aMwNChQ/H000+HvOaxxx7D0KFDMXbsWOzevdvU82sa65V/8EHgnXeAKVPs\n",
1588 1588 "rtj7qFaQ9YKjDwSYoNrJwtujmqN3IrqRLfQU3VjE7/dj0aJF2LhxI/bt24eVK1di//79Ha5Zv349\n",
1589 1589 "Dh06hLKyMrzwwgt46KGHDD//8ePArFms+LptGzl5o6gW3cjYFQswoRfl6BsbmTDxahFVZcMU4Fx7\n",
1590 1590 "peyM3oyj11sxjU7IVB1bQl9aWor8/Hzk5OQgISEB9957L9auXdvhmnXr1mHevHkAgMLCQjQ0NKC2\n",
1591 1591 "tjbi8544AfzbvwGjRgFjxwI7dwL5+XZWGluoJvQyo5v6en7DwtrDc/wBwC+68fuZ87QitDpORjdW\n",
1592 1592 "M3orIxfM3MtLbh6wKfRVVVXIzs6+9HlWVhaqqqqiXlNZWRny+Z58Epg8GcjLA06fBj75BPjFL2Lr\n",
1593 1593 "gG8exKrQJyYyB2Z3dksoeG6WAvg5+nPnmFu1M5rbbdHN+fPiHb2XNksBNvvofQab2LUgixXucZs2\n",
1594 1594 "LUZ2NtsENXVqMXJyiu0sL2bJymJxSWurGm89ZQk9cDm+4d16y7MQC/AbasbjDNuePVlMagW/n+1S\n",
1595 1595 "t+J+k5KAmhrzj5OR0avs6EtKSlBSUmLqMbaEPjMzExUVFZc+r6ioQFZWVsRrKisrkRlmzOS2bYvt\n",
1596 1596 "LIf4moQElolXVbEOHCdpamJCwKuIGQ09vhk8mO/z8hb63r35RDd283nAXnulLrpWNi6q3F6pstAX\n",
1597 1597 "FxejuLj40udPPPFE1MfYim4mTJiAsrIylJeXo6WlBatXr8asWbM6XDNr1iysWLECALBz50706dMH\n",
1598 1598 "6TIqczGOKp03J04wNy9rB7OozhsRQq+So7ca3VgdaAao3V6pstBbwZajj4+Px9KlSzFt2jT4/X4s\n",
1599 1599 "WLAABQUFWLZsGQBg4cKFmDFjBtavX4/8/Hz06NEDL7/8MpeFE5FRJaeXGdsA4jpvRAh9YyMrHNt5\n",
1600 1600 "EXRa6K123ADWxwfLEHovbZYCOMy6mT59OqZPn97h7xYuXNjh86VLl9q9DWGSWBV6PbrhDW+h79KF\n",
1601 1601 "Ccm5c/aE2u5mKcBee6UdoZft6M0YAC9tlgJctDOWMIcqu2OdcPRuEHqAT3zjtKO32loJ2Oujp/ZK\n",
1602 1602 "c5DQexRVHH1tLUU34eDRecOrGGvH0dvJ6FWNbsjRE65AlWJsXZ2cXbE6boluAD6dN047eieiG1l9\n",
1603 1603 "9OToCeUZNAiorLR2+DJPKLoJD4/ohkdG72R0Y9bRt7ayn2mz+0Os9NGToyeUp3t3Fg1Y3QjDC690\n",
1604 1604 "3Zw5w3dnLMBnDAIvR2+1j95udGPW0esCbLZTyWxGT46ecA0qFGSp6yY8qhRju3ZlbZ5WDgi3215p\n",
1605 1605 "VuitjiagjJ7wLCoUZL0U3fB29LyE3m4x1uez3mJpJ7rp3p29uJiJF+0IvZnohhw94RqcLshqGtsZ\n",
1606 1606 "27+/vHv27cviEJ61CU3jP70SUCe6Aazn9HaiG5/PWqRCjt48JPQexmlH39DAflm6dZN3z/h4JjwN\n",
1607 1607 "Dfyes7GRCRLvAXGqFGMBe0JvZ0Sy2fjGSg89QBk9Cb2HcVroZcc2OrzjGxH5PMCvj95Jobcz6wYw\n",
1608 1608 "30tPjt4aJPQexulirJNCz7PzRpTQ8+qj5zEZ1InoBjDv6K300Ov3oYye8CR6Ri/ixCUjyDpCMBje\n",
1609 1609 "nTcihV4lR2+lxdJOMRaQ5+i7dmU9+G1txq4nR0+4ht692Q+4qAOzo0HRTWTsRjea5o3oxmxGb0WA\n",
1610 1610 "fT5zrp4cPeEqnMzpvRLdnD7Nunl4Yze6aWpixWceRWI77ZUyoxs7R/yZyenJ0ROuwsmc3imhj5Xo\n",
1611 1611 "hpebB5zL6M1GN1YzeoAcPeFhnOylp+gmMnajG16FWMBedOOG9krAXIslOXrCVVB0Yx9RQt+zJxM5\n",
1612 1612 "v9/a41Vw9LIzelknWpGjJ1wFRTf2ESX0cXFMtKxOjuS1WQqwJvSaZs9hA9aiGxlCT46ecBXk6O3T\n",
1613 1613 "0CCmGAvYi2+cdvRNTayrq0sX6/e10kdvR+gpoyc8iVMZfUsLEyJRAhkJ3hn96dNiHD1gr/OGd0Zv\n",
1614 1614 "to/ebmwDyC3GGs3o29pYnNa1q7X7qAgJvcfp14+Jrt2NOWY5cQJITWXxhGzcEt0A9jpveDp6K+2V\n",
1615 1615 "djtuAPmO3ojQ6+fFmp15rzIk9B7H53Mmp3cqtgFYHNLUxHZC8kCk0Ls5uuHl6GV13RiNbryWzwMk\n",
1616 1616 "9DGBEzn98eNARobce+r4fCwy4pXTi3b0VqMbp4uxdlsrATWLsV7L5wES+pjAiZzeSaEH+MU3gQAT\n",
1617 1617 "NN6HjujEuqOXGd0YzejJ0ROuxAlHX1vrrNDz6rw5e5aJmahag92M3skNUzwyetk7Y8nRE57FiYze\n",
1618 1618 "aUfPq/NGZMcNYL/rhhy9uXtRRk94lljL6AF+0Y3IfB6wF93wzOi7dWNthWYK2LwyetVGIJCjJ1xJ\n",
1619 1619 "LGb0vKIb0UKviqO3ckC47OgmEACam62LsJn2SnL0hOvIyGBiYuaEHbuoIPS8HL3ITV92MvqzZ/kW\n",
1620 1620 "ic3GN7Kjm6YmIDHRer2EMnrC08TFAdnZwLFj8u7ptNDHQnRz5oz7hd5MdGOnEAtQRk/EADJz+qYm\n",
1621 1621 "9iFSIKPBK7pRuRh79iy/rhvAmtDbzei7d2dxTCAQ/Vo7hVj9XuToCU8jM6fXWyud3ELOM7oRLfRW\n",
1622 1622 "HL2mOS/0PDL6uDgWxxhx2naFnjJ6wvPIdPROxzaA96ObCxfY0C0exwjqOBHdAMYLsnZHIpvJ6Eno\n",
1623 1623 "CVcis5deBaHn2XUjuhhrJbrh7eYBZ6IbwHhBloejN5rRU3RDuBKZ0Y0qQu8GR9+jB8uo29rMPY53\n",
1624 1624 "IRZg7ZVmRhXziG4A4wVZu8VYMxk9OXrClciObtLT5dwrHN27Xz4ByQ6ihd7nY87c7Cx4VRw9D6E3\n",
1625 1625 "GqnIzOjJ0ROuJDOTFUl5je6NhAqO3ufjE9+I7roBrMU3Ihy9kxm9StENOXrCtSQkAAMGAJWV4u+l\n",
1626 1626 "gtADfOIb0Y4esFaQVcXR88joZQl9YqKxVk5y9ISrkZXTqyL0PDpvZAi9lRZLFRw9r4zeTDeMHaGP\n",
1627 1627 "i2MzfZqbo9+HHD3hWmTl9KoIvd3opqUFuHiR3zyZcFiJbpx29IEAv35zWcVYwNiLCjl6wtXIEHpN\n",
1628 1628 "Y7UAp4uxgP3o5tQp9q5A9MYvq9GNk45e3z3KY06/rGKsfq9oOT05esLVyOilP3uW1QN4ZLd2sRvd\n",
1629 1629 "1Nez5xCN1eiGt6M3M72Sh+jqyMroAWMtluToCVcjI6NXJbYB7Ec39fXsOURjNboR4eiNtnny6rgB\n",
1630 1630 "5Aq9kXcP5OgJVyMjuqmuVkvoeUQ3orES3Yhw9GaiG55C37OnWkJPjp5wNYMGsfZKI5MCrVJVxXr2\n",
1631 1631 "VYBHdCPL0butvZK30Bu5Lw+nTRk94XkSE5n41dSIu4dKQm83upHl6N24YYpnRm/0vpTRW4eEPsYQ\n",
1632 1632 "ndNXV6sl9G5w9G7cMOWEo5cR3bS1sXe8PKeCqoBloT916hSmTp2KYcOG4cYbb0RDQ0PI63JycjBm\n",
1633 1633 "zBiMHz8eV111leWFEnwQndOr5OhTUtzj6FVor0xMZCMyjAxY86rQ627eybMURGBZ6JcsWYKpU6fi\n",
1634 1634 "4MGDuOGGG7BkyZKQ1/l8PpSUlGD37t0oLS21vFCCD7Eo9Jpm7fEqd92IKMb6fHILozqyhT5SRu/F\n",
1635 1635 "fB6wIfTr1q3DvHnzAADz5s3D22+/HfZazepvGsEd0b30Kgl9167MpVo9k1VWH73Z6CYQYKInYseu\n",
1636 1636 "0RZLtxZjo2X0XsznARtCX1tbi/Svtz+mp6ejtrY25HU+nw9TpkzBhAkT8Mc//tHq7QhO5OQAR46I\n",
1637 1637 "ee5AgPXRDxgg5vmtYKcge+qUml03jY3M2fLYlRqMUdH1anTjVUcfH+mLU6dOxfHjxzv9/S9/+csO\n",
1638 1638 "n/t8PvjChFrbt2/HgAEDcOLECUydOhUjRoxAUVFRyGsXL1586c/FxcUoLi6OsnzCLLm5wFdfiXnu\n",
1639 1639 "EyeYO+3WTczzW0EvyA4ZYv6xMh29mehGRD6vY0Z0eb2gG7lnWxv7sPuzlZTEBtWFww2OvqSkBCUl\n",
1640 1640 "JaYeE1HoN23aFPZr6enpOH78ODIyMlBTU4O0tLSQ1w34+qehf//+uO2221BaWmpI6Akx5OQAx44B\n",
1641 1641 "fj/QpQvf51YpttGx00svy9EnJjIRa2lhcVM0ROTzOkaFvrERyM+Xd0/dzdstkiYlsc6wcLjB0Qeb\n",
1642 1642 "4CeeeCLqYyy/+Zs1axaWL18OAFi+fDluvfXWTtdcuHABjV8HfufPn8f777+P0aNHW70lwYHERCAt\n",
1643 1643 "Daio4P/cKgq91ejmwgVWxJXh7vRTpozGNyo4+sZGfi82iYnsRS5Stw+v4i9l9CZ5/PHHsWnTJgwb\n",
1644 1644 "NgxbtmzB448/DgCorq7GzJkzAQDHjx9HUVERxo0bh8LCQtx000248cYb+aycsIyo+EZVobfi6HU3\n",
1645 1645 "L6vNzkxBVrSjN1KM5dnHb6Tbh8eIYiD6QeT6VE6vETG6iURKSgo2b97c6e8HDhyId999FwCQm5uL\n",
1646 1646 "Tz/91PrqCCHk5QGHDwPXX8/3eauqgIED+T6nXaxGN7LyeR0zLZYiNku1X4dsoQcuv5MI907F7qEj\n",
1647 1647 "7e8T7QWFV5FZJWhnbAwiytGrtCtWx2p0I6uHXqdvX3Y+rRFERjdGC8OihD4cvKKbaPfh2U2kEiT0\n",
1648 1648 "MQhFN9GRVYjVMSP0IqMbo+8sSOjdBQl9DKJHN7xRUejdEt2Qo1dD6Hnu+FUJEvoYJNYcvZXoJlYd\n",
1649 1649 "vZGisKaxa3juzDUiwDyKseToiZghNZUNrzIqLEZoamIFM5niaASr0U2sOnoj0c3Fi6xThufGuGjH\n",
1650 1650 "GPJ09JGKsST0hGfw+Vh8w9PVV1eznZKqTf2zGt3EsqOPJvROjEjm2XVDjp6IGXjHN5WVQFYWv+fj\n",
1651 1651 "Rd++7Je3tdXc41R39CKLsdGiG56bpXSiCXBjI5+oqGtXNpOppSX01ymjJzxFbi7fgmx5ORuvoBpx\n",
1652 1652 "ccyZnzhh7nGy2yvNzM5vaGAvDCJQ1dHzume0zVnk6AlPwTu6UVXoASA9HairM/cYWYeO6Jhx9KdO\n",
1653 1653 "eU/oe/WK/E6C57uISC8qJPSEp8jLA8rK+D2fykKflgaEmaIdFpU3TJ0+Le5FyEh0I0Loo92XZ5dP\n",
1654 1654 "NKGn6IbwDMOH8xX6o0fZ6VUqkp5uTugDAXUdvd/P3K2orpvERPbf5ubw1/BurQSMCb0MR08jEAhP\n",
1655 1655 "kZ3NXKvRw6CjobKjNxvdNDSwX3aZc/X79GGRSSAQ+Tq940bEoSM60eIbJxw9RTf2IKGPUeLi2Dxx\n",
1656 1656 "Hq6+rY1tlsrOtv9cIjAb3dTVscfIJD6ebQiKNlBMZD6vE62XXoTQG3lxoejGOiT0Mczw4cDBg/af\n",
1657 1657 "p7qabcJS6WSp9piNbmpr5Qs9YCy+EZnP60TbHetURi/a0QcC7jh4xAok9DHMsGHAgQP2n+foUXVj\n",
1658 1658 "G8C80Dvh6AFjLZaqOHrZGb2M6EY/dIT3yWsqQEIfwwwbxsfRq5zPA+YzeqeE3si4htOnxQt9tBil\n",
1659 1659 "oYHVFGTeU0Z049V8HiChj2mGD+fj6FUXejdk9ACLv06ejHyNjG6gaKIr4sVG76PXtM5fa2lh3UZ6\n",
1660 1660 "R5BdIgm9F/N5gIQ+ptEdfahfLjOUl6vbWgkw0T5xInpHi47KQi/D0aekRK4ViFhD166sIB2qrVOP\n",
1661 1661 "bXjNUSJHT8QU/foBCQnmd40Go3pG37UrixqMjkFQWehlOPpotQIR0Q0Q/p2ErJHIXu2hB0joYx4e\n",
1662 1662 "BVnVoxuAnWVbU2Ps2ro6luvLRhVH37dvZKEXtYZwBVneQ9TCHYBO0Q3hWewWZP1+oKICGDSI35pE\n",
1663 1663 "MHAgawM1Ajl6+dENEF7oebdz9uoVXujJ0ROexG4vfU0NEwZehTJRmBX6/v3FricUqalqdN1Eim6a\n",
1664 1664 "m9mLu4hec1nRjb4LOZgzZ8SNlnAaEvoYZ9gw4MsvrT/+yBH1YxvAuNDrJ2XJnHOjY8TRnzgh/kUo\n",
1665 1665 "ktDrLzQiDpiRFd0kJ7M6QzANDST0hEe54grg88+tP76sDBg6lN96RDFggDGhr6lx7qQsI0IvI1aK\n",
1666 1666 "tENX5DsKWdFNJEcvosisAiT0MU5+PusxjzZjJRxlZexdgeoYLcZWV7NrnaBfPyb04dpd/X4mRk52\n",
1667 1667 "3YgWehnRDTl6Iubo0gUoKLDu6g8edI/QG3H0Tgq9vv0+3OlH9fVMZEVv0e/Th4mr39/5ayKFPtyM\n",
1668 1668 "Hd7zffT7BL+gkqMnPM2YMcDevdYe65boxg1CD0SOb2QVibt0YQ46lLsW1UMPsOcNFRnx7jRKSGB7\n",
1669 1669 "K4JfUMnRE55m9Gjgs8/MPy4QYOfOukHo09NZIbOtLfJ1Tgt9//7hN7DJKMTqhMvpRTr6cLN+RLSU\n",
1670 1670 "hsrpydETnsaq0FdVMQfkht7jhARWxIzm6p0W+owM4Pjx0F+T2d8fLqf3itCHyunJ0ROeRo9uzM68\n",
1671 1671 "OXDAHfm8zqBBbFxDJJwW+gEDwgu9TEfvdaHv06ez0JOjJzxNWhrLLKuqzD3uiy9Ye6ZbGDwYOHYs\n",
1672 1672 "8jVOC31GRvjuIBUcfX29uK4f2Y4+OLohR094HisF2c8/B0aNErMeEURz9JrGXuycdvThhF6mo09N\n",
1673 1673 "DT0ErrZW3BygcEIv4sUl2NFrGu2MJWIAKzn9F1+4S+ijOfrTp9lZuk7+skcTelmOPiMj9Ax/kULf\n",
1674 1674 "ty8T3/bjpFtbWXeM6DNqz59n72q7duV7H1UgoScAmHf0muY+oY/m6PUpnE7sitWJJPQyZ/CEKwqL\n",
1675 1675 "nOwZH8/aOts7bb2dM46zUgU7ei+7eYCEnviaK68EPvnE+PWVlWyDT79+4tbEm2iO/sgRYMgQeesJ\n",
1676 1676 "RaRibGUlkJkpZx3p6Z3XEQiIf1cRHN+ImtYZ7OhF7g9QARJ6AgAwciTLpyONp23P3r0s7nETuqMP\n",
1677 1677 "112kwlx9/SDz4DUGAuzfJytLzjpCRTenTrFWWpHxhiyhJ0dPxCTx8czVf/yxses//hiYMEHsmniT\n",
1678 1678 "nMzGKYc7P7a83HlHn5jIDr8ILkqeOMFyalnjoEM5epH5vI5MoW9varzcWgmQ0BPtuOoqoLTU2LWf\n",
1679 1679 "fOI+oQciz99XZeRyqJy+ogLIzpa3hvR0lse3L4zKOHmrX7+ObZ2ihD74HYvItlEVIKEnLlFYCOzc\n",
1680 1680 "aezajz8GvvENsesRQaSjE1Vw9ACrJQQXjSsr5cU2ANCtG3tn0d71OuHoRQlwcLFZH0/tVUjoiUsU\n",
1681 1681 "FQHbt4eeWtie6mqgpYUJktsI5+g1TY2MHgByc9kMofbIdvRAZzGUIfTB/fvV1WIEOHhjGgk9ETOk\n",
1682 1682 "p7OPaG2WO3cCEyc624ZolXBn5B47xjJa3v3aVsjLA776quPfVVTIdfRAaKEX3cefmcneveiIeoHr\n",
1683 1683 "0we4eJGdJgaQ0BMxRnExUFIS+ZoPPmDXuZHhw0NHN59/rs44h1COvrJSvqMPLsjW1DDxF0lwbCVK\n",
1684 1684 "6H2+ji9kJPRETFFcDGzZEvmakhL3Cn1eHhOSixc7/r1K4xxyczs7+mPH5Dv6IUM6ruPQIfb9E8mg\n",
1685 1685 "QR33OoiMrNrvWSChJ2KKqVOZY9ff0gZz6hTrTrnySrnr4kViIotvgsc9qObojxy53PGi70IuKJC7\n",
1686 1686 "juCYS8YhM9nZbL+A388+amrEbRIjR0/ELCkprG1y06bQX9+0iRVtExLkrosnEyd2biNVSeh79GA9\n",
1687 1687 "/3qxsLqafb9FF0KDaV+4bmxkx++J3pnbrRv7GaypYSKcksL+TgR6G+v582ymDm2YImKKW24B3n47\n",
1688 1688 "9NfeeAO44w656+FN8H6B5mYmaCNHOremYIYNA/btY3/+7DNndiHrjl7TWGyTn89/5kwo9JxedKeR\n",
1689 1689 "7uh1N+/G5gKjWP5nW7NmDUaNGoUuXbpg165dYa/buHEjRowYgaFDh+Lpp5+2ejtCInfeCaxdy1xc\n",
1690 1690 "e86fB95/n70QuJlgod++HRg7ljlpVfjmN4EdO9ifnRL6fv2Y+J08KfdsYD2nr6hgfxaF7ui9HtsA\n",
1691 1691 "NoR+9OjReOutt3DttdeGvcbv92PRokXYuHEj9u3bh5UrV2L//v1Wb6k0JdFaVRQmeO2ZmazY+tpr\n",
1692 1692 "Ha9bswaYNEm9QWZmv/ejRrFfbv1YwU2bWG3CKUKt/+qrnRd6n+/yBrNIQs/7Z1939EeOiBX6ggJg\n",
1693 1693 "927g3XdLhN5HBSwL/YgRIzAsyjlypaWlyM/PR05ODhISEnDvvfdi7dq1Vm+pNF4SegBYtAh49lkW\n",
1694 1694 "awCsMParXwE/+YnctRnB7Pc+IQG4/fbLL2Tvv6+e0E+axPYrtLYC27Y5N25i1CjgH/9g74DCdSXx\n",
1695 1695 "/tmfOBH429+A9euByZO5PnUHCgtZJLV6dYmj//4yEJq4VVVVIbtdyJaVlYUqs+fVEY5w/fWsOPnz\n",
1696 1696 "n7OMdskStlnGrW2VwcydCyxfDmzYwKKJwkKnV9SR1FR20tUPfsBm0I8d68w6vvMd4De/AT78ELjt\n",
1697 1697 "Njn3vPlmNmLj00+BG28Ud5+EBNZYUF4OzJwp7j4qEB/pi1OnTsXxEMOxn3rqKdx8881Rn9zn5epG\n",
1698 1698 "DPD737NfgDffZI5++3bvFKyKilhxccYM5hxV7CJ6/nlg+nRg2TLn1nDNNaxoec01bESxDLp3ZwX/\n",
1699 1699 "c+fET+ucOpW9oMjuaJKOZpPi4mLtk08+Cfm1v//979q0adMuff7UU09pS5YsCXltXl6eBoA+6IM+\n",
1700 1700 "6IM+THzk5eVF1emIjt4oWpiTHCZMmICysjKUl5dj4MCBWL16NVauXBny2kOHDvFYCkEQBBGE5Yz+\n",
1701 1701 "rbfeQnZ2Nnbu3ImZM2di+vTpAIDq6mrM/Drwio+Px9KlSzFt2jSMHDkS99xzDwpkb+8jCIKIcXxa\n",
1702 1702 "ODtOEARBeALHd8a6eUPV/PnzkZ6ejtFuOzz1ayoqKjB58mSMGjUKV1xxBX772986vSRTNDc3o7Cw\n",
1703 1703 "EOPGjcPIkSPx05/+1Oklmcbv92P8+PGGmhtUJCcnB2PGjMH48eNx1VVXOb0cUzQ0NODOO+9EQUEB\n",
1704 1704 "Ro4ciZ1GT91RgAMHDmD8+PGXPpKTkyP//lqov3Kjra1Ny8vL044cOaK1tLRoY8eO1fbt2+fkkkyx\n",
1705 1705 "detWbdeuXdoVV1zh9FIsUVNTo+3evVvTNE1rbGzUhg0b5qrvv6Zp2vnz5zVN07TW1latsLBQ27Zt\n",
1706 1706 "m8MrMsdzzz2n3XfffdrNN9/s9FIskZOTo9XX1zu9DEvMnTtXe/HFFzVNYz8/DQ0NDq/IGn6/X8vI\n",
1707 1707 "yNCOHTsW9hpHHb3bN1QVFRWhb9++Ti/DMhkZGRg3bhwAoGfPnigoKEC1vl3UJSQlJQEAWlpa4Pf7\n",
1708 1708 "keKigz8rKyuxfv16PPjgg2EbGtyAG9d+5swZbNu2DfPnzwfA6onJLp1qtnnzZuTl5XXYsxSMo0JP\n",
1709 1709 "G6rUoby8HLt370ahajuHohAIBDBu3Dikp6dj8uTJGKnSZLIo/OAHP8AzzzyDOBmTwgTh8/kwZcoU\n",
1710 1710 "TJgwAX/84x+dXo5hjhw5gv79++OBBx7AlVdeiX/+53/GhXCzuRVn1apVuO+++yJe4+hPGG2oUoNz\n",
1711 1711 "587hzjvvxH//93+jp6xdMZyIi4vDp59+isrKSmzdutU1oyj++te/Ii0tDePHj3elI9bZvn07du/e\n",
1712 1712 "jQ0bNuD3v/89tm3b5vSSDNHW1oZdu3bh4Ycfxq5du9CjRw8sWbLE6WWZpqWlBe+88w7uuuuuiNc5\n",
1713 1713 "KvSZmZmoqKi49HlFRQWyZB+jE+O0trbijjvuwLe//W3ceuutTi/HMsnJyZg5cyY+/vhjp5diiB07\n",
1714 1714 "dmDdunUYMmQIZs+ejS1btmDu3LlOL8s0A74e+9i/f3/cdtttKA0e9K8oWVlZyMrKwsSJEwEAd955\n",
1715 1715 "Z8QpvKqyYcMGfOMb30D//v0jXueo0LffUNXS0oLVq1dj1qxZTi4pptA0DQsWLMDIkSPxL//yL04v\n",
1716 1716 "xzQnT55EQ0MDAKCpqQmbNm3C+PHjHV6VMZ566ilUVFTgyJEjWLVqFa6//nqsWLHC6WWZ4sKFC2j8\n",
1717 1717 "epb1+fPn8f7777umAy0jIwPZ2dk4+PXJKps3b8YoVc6SNMHKlSsxe/bsqNdx2RlrlfYbqvx+PxYs\n",
1718 1718 "WOCqDVWzZ8/GBx98gPr6emRnZ+PJJ5/EAw884PSyDLN9+3a8+uqrl9rjAOBXv/oVvvWtbzm8MmPU\n",
1719 1719 "1NRg3rx5CAQCCAQCmDNnDm644Qanl2UJN8aYtbW1uO3rSWdtbW24//77caPIKWSc+d3vfof7778f\n",
1720 1720 "LS0tyMvLw8svv+z0kkxx/vx5bN682VBthDZMEQRBeBz3lvsJgiAIQ5DQEwRBeBwSeoIgCI9DQk8Q\n",
1721 1721 "BOFxSOgJgiA8Dgk9QRCExyGhJwiC8Dgk9ARBEB7n/wOimSfhIIMDngAAAABJRU5ErkJggg==\n"
1722 1722 ],
1723 1723 "text/plain": [
1724 1724 "<matplotlib.figure.Figure at 0x3436950>"
1725 1725 ]
1726 1726 },
1727 1727 "metadata": {},
1728 1728 "output_type": "display_data"
1729 1729 }
1730 1730 ],
1731 1731 "source": [
1732 1732 "x = np.linspace(0, 2*np.pi, 300)\n",
1733 1733 "y = np.sin(x**2)\n",
1734 1734 "plt.plot(x, y)\n",
1735 1735 "plt.title(\"A little chirp\")\n",
1736 1736 "fig = plt.gcf() # let's keep the figure object around for later..."
1737 1737 ]
1738 1738 },
1739 1739 {
1740 1740 "cell_type": "markdown",
1741 1741 "metadata": {},
1742 1742 "source": [
1743 1743 "## The IPython kernel/client model"
1744 1744 ]
1745 1745 },
1746 1746 {
1747 1747 "cell_type": "code",
1748 1748 "execution_count": 43,
1749 1749 "metadata": {
1750 1750 "collapsed": false
1751 1751 },
1752 1752 "outputs": [
1753 1753 {
1754 1754 "name": "stdout",
1755 1755 "output_type": "stream",
1756 1756 "text": [
1757 1757 "{\n",
1758 1758 " \"stdin_port\": 50023, \n",
1759 1759 " \"ip\": \"127.0.0.1\", \n",
1760 1760 " \"control_port\": 50024, \n",
1761 1761 " \"hb_port\": 50025, \n",
1762 1762 " \"signature_scheme\": \"hmac-sha256\", \n",
1763 1763 " \"key\": \"b54b8859-d64d-48bb-814a-909f9beb3316\", \n",
1764 1764 " \"shell_port\": 50021, \n",
1765 1765 " \"transport\": \"tcp\", \n",
1766 1766 " \"iopub_port\": 50022\n",
1767 1767 "}\n",
1768 1768 "\n",
1769 1769 "Paste the above JSON into a file, and connect with:\n",
1770 1770 " $> ipython <app> --existing <file>\n",
1771 1771 "or, if you are local, you can connect with just:\n",
1772 1772 " $> ipython <app> --existing kernel-30f00f4a-230c-4e64-bea5-0e5f6a52cb40.json \n",
1773 1773 "or even just:\n",
1774 1774 " $> ipython <app> --existing \n",
1775 1775 "if this is the most recent IPython session you have started.\n"
1776 1776 ]
1777 1777 }
1778 1778 ],
1779 1779 "source": [
1780 1780 "%connect_info"
1781 1781 ]
1782 1782 },
1783 1783 {
1784 1784 "cell_type": "markdown",
1785 1785 "metadata": {},
1786 1786 "source": [
1787 1787 "We can connect automatically a Qt Console to the currently running kernel with the `%qtconsole` magic, or by typing `ipython console --existing <kernel-UUID>` in any terminal:"
1788 1788 ]
1789 1789 },
1790 1790 {
1791 1791 "cell_type": "code",
1792 1792 "execution_count": 83,
1793 1793 "metadata": {
1794 1794 "collapsed": false
1795 1795 },
1796 1796 "outputs": [],
1797 1797 "source": [
1798 1798 "%qtconsole"
1799 1799 ]
1800 1800 }
1801 1801 ],
1802 "metadata": {},
1802 "metadata": {
1803 "kernelspec": {
1804 "display_name": "Python 3",
1805 "language": "python",
1806 "name": "python3"
1807 },
1808 "language_info": {
1809 "codemirror_mode": {
1810 "name": "ipython",
1811 "version": 3
1812 },
1813 "file_extension": ".py",
1814 "mimetype": "text/x-python",
1815 "name": "python",
1816 "nbconvert_exporter": "python",
1817 "pygments_lexer": "ipython3",
1818 "version": "3.4.2"
1819 }
1820 },
1803 1821 "nbformat": 4,
1804 1822 "nbformat_minor": 0
1805 } No newline at end of file
1823 }
@@ -1,487 +1,505 b''
1 1 {
2 2 "cells": [
3 3 {
4 4 "cell_type": "markdown",
5 5 "metadata": {},
6 6 "source": [
7 7 "# Capturing Output With <tt>%%capture</tt>"
8 8 ]
9 9 },
10 10 {
11 11 "cell_type": "markdown",
12 12 "metadata": {},
13 13 "source": [
14 14 "IPython has a [cell magic](Cell Magics.ipynb), `%%capture`, which captures the stdout/stderr of a cell. With this magic you can discard these streams or store them in a variable."
15 15 ]
16 16 },
17 17 {
18 18 "cell_type": "code",
19 19 "execution_count": 9,
20 20 "metadata": {
21 21 "collapsed": false
22 22 },
23 23 "outputs": [],
24 24 "source": [
25 25 "from __future__ import print_function\n",
26 26 "import sys"
27 27 ]
28 28 },
29 29 {
30 30 "cell_type": "markdown",
31 31 "metadata": {},
32 32 "source": [
33 33 "By default, `%%capture` discards these streams. This is a simple way to suppress unwanted output."
34 34 ]
35 35 },
36 36 {
37 37 "cell_type": "code",
38 38 "execution_count": 10,
39 39 "metadata": {
40 40 "collapsed": false
41 41 },
42 42 "outputs": [],
43 43 "source": [
44 44 "%%capture\n",
45 45 "print('hi, stdout')\n",
46 46 "print('hi, stderr', file=sys.stderr)"
47 47 ]
48 48 },
49 49 {
50 50 "cell_type": "markdown",
51 51 "metadata": {},
52 52 "source": [
53 53 "If you specify a name, then stdout/stderr will be stored in an object in your namespace."
54 54 ]
55 55 },
56 56 {
57 57 "cell_type": "code",
58 58 "execution_count": 11,
59 59 "metadata": {
60 60 "collapsed": false
61 61 },
62 62 "outputs": [],
63 63 "source": [
64 64 "%%capture captured\n",
65 65 "print('hi, stdout')\n",
66 66 "print('hi, stderr', file=sys.stderr)"
67 67 ]
68 68 },
69 69 {
70 70 "cell_type": "code",
71 71 "execution_count": 12,
72 72 "metadata": {
73 73 "collapsed": false
74 74 },
75 75 "outputs": [
76 76 {
77 77 "data": {
78 78 "text/plain": [
79 79 "<IPython.utils.capture.CapturedIO at 0x1076c9310>"
80 80 ]
81 81 },
82 82 "execution_count": 12,
83 83 "metadata": {},
84 84 "output_type": "execute_result"
85 85 }
86 86 ],
87 87 "source": [
88 88 "captured"
89 89 ]
90 90 },
91 91 {
92 92 "cell_type": "markdown",
93 93 "metadata": {},
94 94 "source": [
95 95 "Calling the object writes the output to stdout/stderr as appropriate."
96 96 ]
97 97 },
98 98 {
99 99 "cell_type": "code",
100 100 "execution_count": 13,
101 101 "metadata": {
102 102 "collapsed": false
103 103 },
104 104 "outputs": [
105 105 {
106 106 "name": "stdout",
107 107 "output_type": "stream",
108 108 "text": [
109 109 "hi, stdout\n"
110 110 ]
111 111 },
112 112 {
113 113 "name": "stderr",
114 114 "output_type": "stream",
115 115 "text": [
116 116 "hi, stderr\n"
117 117 ]
118 118 }
119 119 ],
120 120 "source": [
121 121 "captured()"
122 122 ]
123 123 },
124 124 {
125 125 "cell_type": "code",
126 126 "execution_count": 14,
127 127 "metadata": {
128 128 "collapsed": false
129 129 },
130 130 "outputs": [
131 131 {
132 132 "data": {
133 133 "text/plain": [
134 134 "'hi, stdout\\n'"
135 135 ]
136 136 },
137 137 "execution_count": 14,
138 138 "metadata": {},
139 139 "output_type": "execute_result"
140 140 }
141 141 ],
142 142 "source": [
143 143 "captured.stdout"
144 144 ]
145 145 },
146 146 {
147 147 "cell_type": "code",
148 148 "execution_count": 15,
149 149 "metadata": {
150 150 "collapsed": false
151 151 },
152 152 "outputs": [
153 153 {
154 154 "data": {
155 155 "text/plain": [
156 156 "'hi, stderr\\n'"
157 157 ]
158 158 },
159 159 "execution_count": 15,
160 160 "metadata": {},
161 161 "output_type": "execute_result"
162 162 }
163 163 ],
164 164 "source": [
165 165 "captured.stderr"
166 166 ]
167 167 },
168 168 {
169 169 "cell_type": "markdown",
170 170 "metadata": {},
171 171 "source": [
172 172 "`%%capture` grabs all output types, not just stdout/stderr, so you can do plots and use IPython's display system inside `%%capture`"
173 173 ]
174 174 },
175 175 {
176 176 "cell_type": "code",
177 177 "execution_count": 16,
178 178 "metadata": {
179 179 "collapsed": false
180 180 },
181 181 "outputs": [],
182 182 "source": [
183 183 "%matplotlib inline\n",
184 184 "import matplotlib.pyplot as plt\n",
185 185 "import numpy as np"
186 186 ]
187 187 },
188 188 {
189 189 "cell_type": "code",
190 190 "execution_count": 17,
191 191 "metadata": {
192 192 "collapsed": false
193 193 },
194 194 "outputs": [],
195 195 "source": [
196 196 "%%capture wontshutup\n",
197 197 "\n",
198 198 "print(\"setting up X\")\n",
199 199 "x = np.linspace(0,5,1000)\n",
200 200 "print(\"step 2: constructing y-data\")\n",
201 201 "y = np.sin(x)\n",
202 202 "print(\"step 3: display info about y\")\n",
203 203 "plt.plot(x,y)\n",
204 204 "print(\"okay, I'm done now\")"
205 205 ]
206 206 },
207 207 {
208 208 "cell_type": "code",
209 209 "execution_count": 18,
210 210 "metadata": {
211 211 "collapsed": false
212 212 },
213 213 "outputs": [
214 214 {
215 215 "name": "stdout",
216 216 "output_type": "stream",
217 217 "text": [
218 218 "setting up X\n",
219 219 "step 2: constructing y-data\n",
220 220 "step 3: display info about y\n",
221 221 "okay, I'm done now\n"
222 222 ]
223 223 },
224 224 {
225 225 "data": {
226 226 "image/png": [
227 227 "iVBORw0KGgoAAAANSUhEUgAAAXoAAAEACAYAAAC9Gb03AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
228 228 "AAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt8z3X/x/HHmOqHcupq2HaZy7A5j0nJNKcUWVI/h1Rz\n",
229 229 "qKSEUnT8oStSOlxqV4WrRK5rDv1ySCMp39KYoVXE9UPlalsskgiF+f7+eIewscP3u/fn+/k+77fb\n",
230 230 "98by2b7P28qr917vU4jX6/UiIiKuVc52ABER8S8VehERl1OhFxFxORV6ERGXU6EXEXE5FXoREZcr\n",
231 231 "daEfNGgQYWFhNG3atNBnhg8fTv369WnevDlZWVmlfUsRESmGUhf6gQMHsmzZskL/PC0tje3bt7Nt\n",
232 232 "2zamTZvG0KFDS/uWIiJSDKUu9AkJCVSrVq3QP1+8eDHJyckAtGnThn379pGXl1fatxURkSLye48+\n",
233 233 "NzeXyMjIkx9HRESQk5Pj77cVEZHflclk7JmnLISEhJTF24qICBDq7zcIDw8nOzv75Mc5OTmEh4ef\n",
234 234 "9Vx0dDRff/21v+OIiLhKvXr12L59+zmf8fuIPikpiVmzZgGQkZFB1apVCQsLO+u5r7/+Gq/Xq5fX\n",
235 235 "y9ixY/3ydQ8d8vKvf3lJSvJy8cVe2rf3MnGil08+MX9W2q+/d6+XpUu9PPywl2bNvFx6qZfkZC8f\n",
236 236 "fODl2DFnfS8C8aXvhb4XBb2KMkAu9Yi+X79+fPzxx+zZs4fIyEjGjx/P0aNHARgyZAjdunUjLS2N\n",
237 237 "6OhoKlWqxIwZM0r7llJMX3wBr7wC8+dD69Zw663wxhtQo4Zv36daNbj2WvN6+mn47jt45x0YPRp2\n",
238 238 "74bbb4ehQyEiwrfvKyLnVupCn5qaet5nUlJSSvs2UkxeL7z/Pjz/PGzZAvfcA19+WbZF9s9/hpEj\n",
239 239 "zWvjRvjHP6BZM/M/glGjoFWrsssiEsy0M9aBEhMTS/y5Xi+kpUHLljBmjBlFf/MNPPqo3ZF006Yw\n",
240 240 "ZYrJ0qoV9OwJSUnmp41zKc33wm30vThF34viCfF6vY64eCQkJASHRAlYq1fDww/Dnj0wcSLccAM4\n",
241 241 "dYHTr7/Ca6/BpEmQmGjy/uUvtlOJBJ6i1E6N6F0gLw9uuw369oVBg0ybpGdP5xZ5gIsuMi2d7duh\n",
242 242 "SRMzdzB2LBw+bDuZiPuo0Aew/HwzydqkCdSuDZs3w4ABUL687WRFV7kyPP44ZGWZ/I0awZIltlOJ\n",
243 243 "uItaNwFq+3ZITjZF/dVXoXFj24l8Y8UKuOsuaN8e/vY3qFrVdiIRZ1PrxoW8XtPbvuIK6N0bPB73\n",
244 244 "FHmAzp3N6qCKFc0E7jnOyxORItKIPoD8+KNZRfPDD/DWWxATYzuRf61YYeYc+vQxk7UVKthOJOI8\n",
245 245 "GtG7yNq1Zslk48ZmdY3bizyY0f2J3n379vCf/9hOJBKYVOgdzuuFl1+GHj3MOvRnnw2ukW2NGvDu\n",
246 246 "u9CrF1x+uVo5IiWh1o2D/fYb3HmnWS759ttQr57tRHatWmXmJcaMgREjnL18VKSsFKV2qtA71O7d\n",
247 247 "cOONULMmzJplJifFtG+SkiA+3iwtvfBC24lE7FKPPkBt3gxt2pi+9Lx5KvJ/VKcOpKfD3r2mh//j\n",
248 248 "j7YTiTifCr3DfPKJORJg7Fiz0qSc/g2dpXJl+N//NUtMExLgD9cdiEgB/H7xiBTdu++a5YSpqWa0\n",
249 249 "KoUrVw4mT4ZateCqq2DpUnftJxDxJRV6h5g9Gx58EN57z6wukaJ54AEIC4OOHc3Z91ddZTuRiPNo\n",
250 250 "MtYBXnoJnnvOLB1s1Mh2msD0/vvmYLd580zrSyRYaNVNAJg8GaZNM7tA69SxnSawrVxpll/OmQOd\n",
251 251 "OtlOI1I2tOrG4Z5/3hR5j0dF3hc6dDCTtH37wvLlttOIOIcKvSUvvmhOnVy5EsLDbadxj/btYeFC\n",
252 252 "cy/u0qW204g4g1o3FkyZYvryK1eae1XF99asMTdsqWcvbqfWjQNNn27OWf/oIxV5f7rySpg71/Ts\n",
253 253 "MzNtpxGxSyP6MvTOOzBsmNkUFR1tO01wePddc17QihXmJi4Rt9GI3kFWroS77zbr5FXky06PHmY+\n",
254 254 "pGtXcyuXSDDShqky8Nln5vKM+fMhLs52muDTrx/s32+K/erVZoOVSDBRofezbdvg+uvNMsqrr7ad\n",
255 255 "JngNGQLff29G+CtXQqVKthOJlB316P1ozx4zKThmDNxxh+004vXCwIHm5MsFC8zF6iKBTjtjLfr1\n",
256 256 "V3MwWfv25hRKcYYjR6B7d2jQAFJSdHmJBD4Veku8XrNh5+hRsx1fRw07y88/m+ONb7sNHnrIdhqR\n",
257 257 "0ilK7VSP3g/GjYOvvza9YBV556lSBdLSTFstOtrc5CXiZir0PvbWW+bqv4wM+K//sp1GChMRYfr0\n",
258 258 "111n7uJt1sx2IhH/0XjTh9auNeejL1miJXyBID7eHEVxww3mjl4Rt1Kh95Fdu+Dmm+H113XTUSDp\n",
259 259 "1w9uucX8uztyxHYaEf/QZKwPHDlibjjq0sXc9SqB5fhx06evWRNee00rcSSwaNVNGRk6FHbuNGfZ\n",
260 260 "aPI1MB04AG3bwj33mH+fIoFCq27KwPTp5uKQtWtV5APZxRebydm2baFVK93bK+6iEX0pnDjzfNUq\n",
261 261 "aNjQdhrxhUWLYPhw2LABLr3UdhqR89PplX60Z485qOz111Xk3eSGG05N0Obn204j4hsa0ZfA8eNm\n",
262 262 "G32zZvDMM7bTiK8dOwbXXAPt2sGTT9pOI3JuGtH7yaRJ8Msv8NRTtpOIP4SGQmoqzJhh7g8QCXQa\n",
263 263 "0RfTxx9D376wfr0u9Xa79HTo1ctcRVinju00IgXTiN7H8vKgf3+YOVNFPhhcdZU59KxfP3NAnUig\n",
264 264 "0oi+iPLzzQ1FV14Jf/2r7TRSVk7Mx7RsCRMm2E4jcjZtmPKhJ5806+U/+EAXVgSbH34wV0DOmgWd\n",
265 265 "OtlOI3I6FXofSU+Hm24yd7/Wrm07jdiwYgUkJ0NWFlx2me00IqeoR+8DP/9sLhGZNk1FPph17gwD\n",
266 266 "Bphif/y47TQixaMR/Xn0728uqnjlFdtJxLajR80F7716wYMP2k4jYuism1KaPdv8qL5+ve0k4gQV\n",
267 267 "Kpj19a1bQ2KiOc9eJBCUunWzbNkyYmJiqF+/Ps8UsE3U4/FQpUoV4uLiiIuL46kA2WX0zTdw//3m\n",
268 268 "L3bFirbTiFPUqWMuK7ntNjh0yHYakaIpVesmPz+fhg0bsmLFCsLDw2ndujWpqanExsaefMbj8fDC\n",
269 269 "Cy+wePHicwdxUOvm2DFzeXTv3qbYi5ypf3+oXh1eftl2Egl2fp+MzczMJDo6mqioKCpUqEDfvn1Z\n",
270 270 "tGjRWc85pYAX1ZNPwiWXwIgRtpOIU6WkmJMu33/fdhKR8ytVoc/NzSUyMvLkxxEREeTm5p72TEhI\n",
271 271 "CKtXr6Z58+Z069aNzZs3l+Yt/S4jw6ywefNNnS8vhatWzfw3Mngw/Pij7TQi51aqydiQIty51rJl\n",
272 272 "S7Kzs6lYsSJLly6lZ8+ebN26tcBnx40bd/L3iYmJJCYmliZesR06ZJbPpaRArVpl+tYSgDp2NO29\n",
273 273 "u++GefN0BaGUDY/Hg8fjKdbnlKpHn5GRwbhx41i2bBkATz/9NOXKlWPMmDGFfk7dunXZsGED1atX\n",
274 274 "Pz2IA3r0I0fC7t3wz39ajSEB5NdfzeqbMWPMBK1IWfN7jz4+Pp5t27axY8cOjhw5wty5c0lKSjrt\n",
275 275 "mby8vJMhMjMz8Xq9ZxV5J1i5Et5+W5NrUjwXXWQGBqNGwX/+YzuNSMFK1boJDQ0lJSWFrl27kp+f\n",
276 276 "z+DBg4mNjWXq1KkADBkyhLfffptXX32V0NBQKlasyJw5c3wS3Jf274dBg0xv3oH/DxKHa97cFPpB\n",
277 277 "g8xZSJrbEafRzljgzjvNr9OnW3l7cYH8fHOs8YABpmcvUlZ0qFkRpKXBPffAl1+aJZUiJbVlC7Rv\n",
278 278 "D+vWQVSU7TQSLFToz2PvXnPv61tvQYcOZfrW4lLPPmvW1quFI2VFp1eex333wc03q8iL7zzwgLlP\n",
279 279 "eNo020lETgnaQ80WLTJ3gX7xhe0k4iahoWYjVfv2cO21auGIMwRl62bfPmjSBP71L/MXUsTXTrRw\n",
280 280 "VqzQRirxL/XoC3HHHXDBBTpjXvzn2DGzCmfgQK3CEf9SoS/Ahx+av3ybNmmVjfiXVuFIWdBk7BkO\n",
281 281 "HjRr5l97TUVe/C821txEdddd4IzhlASroCr0jz9ufpzu1s12EgkWo0bBnj1mCa+ILUHTulmzxtz1\n",
282 282 "uWkT1Kjht7cROctnn8F118HGjXDZZbbTiNuodfO7334z54ZPmaIiL2WvZUu4/XbdVib2BMWI/okn\n",
283 283 "zGhqwQItdRM7Dh2Cpk3N6ahqHYovadUNZkNU587m19q1ff7lRYpsxQrzk+WmTXDxxbbTiFsEfaHP\n",
284 284 "z4crroAhQ8zaeRHbBg40K76mTLGdRNwi6Av9yy+by0Q8HrVsxBl+/NHsyl64ENq0sZ1G3CCoC31O\n",
285 285 "DrRoAZ9+CjExPvuyIqU2Zw5MmAAbNpgd2iKlEdSrboYPh3vvVZEX5+nTB+rUMefhiJQFV47oFy2C\n",
286 286 "0aPNBOxFF/nkS4r41HffmWWX6enQsKHtNBLIgrJ1c+AANG4MM2fqnHlxtilTzKDkww81hyQlF5St\n",
287 287 "m7FjoWNHFXlxvnvvNUdmz55tO4m4natG9Ce2mn/1FVx6qY+CifjRunXQowds3gzVq9tOI4EoqFo3\n",
288 288 "+flmudqwYTBggO9yifjbsGFw9ChMnWo7iQSioCr0U6aYtckffaR+pwSWn3+GRo1g/nxo29Z2Ggk0\n",
289 289 "QVPos7MhLk4rGCRwzZ17am19hQq200ggCZrJ2OHD4b77VOQlcPXuDbVqwd/+ZjuJuFHAj+gXLoQx\n",
290 290 "Y+DLL+HCC/0QTKSMfP21mWfasMFsqBIpCte3bg4eNL3NN9/Uckpxh6eeMitxFi2ynUQChetbN3/9\n",
291 291 "KyQkqMiLezz0EGzdan5SFfGVgB3Rb9kC7dubC0Vq1vRjMJEy5vGYG6k2b4bKlW2nEadzbevG64VO\n",
292 292 "naBnTzMRK+I2AwaYTX/PPWc7iTidawt9aqo5+W/dOggN9XMwEQt27zbn1i9fDs2b204jTubKQr9/\n",
293 293 "P8TGanOJuN/06WahwapVUC6gZ9PEn1w5GTtuHHTtqiIv7jd4MBw7BrNm2U4igS6gRvQbN5re/Fdf\n",
294 294 "wZ/+VEbBRCzasAG6dzeLD6pVs51GnMhVrRuv16yy6d8f7r67DIOJWHbPPeb8pr//3XYScSJXFfqZ\n",
295 295 "MyElBTIyoHz5MgwmYtlPP5l5qffeg1atbKcRp3FNof/pJ7MD9t13IT6+jIOJOMCMGfDaa7BmjSZm\n",
296 296 "5XSumYx9/HGzZl5FXoJVcrJZSvz667aTSCBy/Ij+xGSUbuCRYPf552bF2ebNUKOG7TTiFAHfujl+\n",
297 297 "HK680ky+DhxoKZiIg4wYAYcPw7RptpOIUwR86+Yf/zA/riYn204i4gxPPglLlsDatbaTSCBx7Ih+\n",
298 298 "zx5o3FhbwEXONHs2vPgiZGZqBZoE+Ij+kUegXz8VeZEz9e9vTrVU+0aKypEj+owM6NXL7AasUsVy\n",
299 299 "MBEH2rQJOnY0v152me00YlNAjujz881OwMmTVeRFCtOkCdx2Gzz8sO0kEggcV+hffdUU+FtusZ1E\n",
300 300 "xNnGjjVzWOnptpOI0zmqdbNrl5cmTeDjj81OWBE5tzlz4OmnzX4T3c0QnMqkdbNs2TJiYmKoX78+\n",
301 301 "zzzzTIHPDB8+nPr169O8eXOysrIK/VoPPWTWy6vIixRNnz5m89Qrr9hOIk5WqhF9fn4+DRs2ZMWK\n",
302 302 "FYSHh9O6dWtSU1OJjY09+UxaWhopKSmkpaWxdu1aRowYQUZGxtlBQkKIjPTqnkyRYtqyBRISzDHe\n",
303 303 "tWrZTiNlze8j+szMTKKjo4mKiqJChQr07duXRYsWnfbM4sWLSf59x1ObNm3Yt28feXl5BX69F15Q\n",
304 304 "kRcprthYc0nJQw/ZTiJOVapCn5ubS2Rk5MmPIyIiyM3NPe8zOTk5BX69m24qTRqR4PXEE/DJJ2Z+\n",
305 305 "S+RMpZq+CQkJKdJzZ/5YUdjnjR8/7uTvExMTSUxMLGk0kaBSubLZLXvvvZCVBRUq2E4k/uLxePB4\n",
306 306 "PMX6nFIV+vDwcLKzs09+nJ2dTURExDmfycnJITw8vMCvN27cuNLEEQlqvXqZ3bJTpsCDD9pOI/5y\n",
307 307 "5iB4/Pjx5/2cUrVu4uPj2bZtGzt27ODIkSPMnTuXpKSk055JSkpi1u+3G2dkZFC1alXCwsJK87Yi\n",
308 308 "UoCQEHML26RJUEh3VIJUqUb0oaGhpKSk0LVrV/Lz8xk8eDCxsbFMnToVgCFDhtCtWzfS0tKIjo6m\n",
309 309 "UqVKzJgxwyfBReRs9evD0KEwahTMnWs7jTiFozZMOSSKSEA7dMic/Dp9OnTubDuN+FtAnnUjIqVT\n",
310 310 "sSK89JKZmP3tN9tpxAlU6EVcqEcPaNgQnn/edhJxArVuRFzq22+hdWtYvx6iomynEX9R60YkiNWt\n",
311 311 "CyNHmpcENxV6ERd78EH46it47z3bScQmFXoRF7voIrO2/r774PBh22nEFhV6EZfr2hVatoRCThGX\n",
312 312 "IKDJWJEgkJ0NcXGwdi3Uq2c7jfiSJmNFBIDISBg92rRwNJ4KPir0IkFi5EjYsQMWLrSdRMqaWjci\n",
313 313 "QcTjgeRk2LwZKlWynUZ8Qa0bETlNYiK0awdPPWU7iZQljehFgszOndC0KXz6KcTE2E4jpaURvYic\n",
314 314 "pVYtePxxGDZME7PBQoVeJAgNGwa7d8O8ebaTSFlQ60YkSKWnQ58+sGULXHyx7TRSUkWpnSr0IkFs\n",
315 315 "4ECoXl3HGQcyFXoROacffoAmTeDDD80ErQQeTcaKyDlddhmMH29uo9I4y71U6EWC3F13mZMt33rL\n",
316 316 "dhLxF7VuRIR16yApyZxdX7267TRSHOrRi0iR3Xcf/PorTJ9uO4kUhwq9iBTZzz9D48aQmgoJCbbT\n",
317 317 "SFFpMlZEiqxKFZgyBYYMgd9+s51GfEmFXkRO6tULoqNh8mTbScSX1LoRkdN89525enDNGqhf33Ya\n",
318 318 "OR+1bkSk2P78Z3j0URg6VGvr3UKFXkTOMnw47N0Ls2fbTiK+oNaNiBRo/Xq4/nqztr5GDdtppDBa\n",
319 319 "XikipTJiBPzyC7z+uu0kUhgVehEplf37zdr62bPh6qttp5GCaDJWRErlkkvgpZe0tj7QqdCLyDnd\n",
320 320 "eKO5W3bSJNtJpKTUuhGR88rONmvrP/4YGjWynUb+SK0bEfGJyEh48kkYPBjy822nkeJSoReRIhky\n",
321 321 "BC64AF5+2XYSKS61bkSkyLZuhbZtITMT/vIX22kE1LoRER9r0ABGjza3UmlcFjhU6EWkWB54APbt\n",
322 322 "gzfesJ1EikqtGxEpti+/hE6d4IsvoHZt22mCm1o3IuIXzZqZ0y11wmVgUKEXkRJ57DHYvh3mzbOd\n",
323 323 "RM5HrRsRKbGMDLNzduNGuPRS22mCkw41ExG/e+AB2LnTXCouZU89ehHxuwkTICsL5s+3nUQKoxG9\n",
324 324 "iJTa2rWQlGRW4dSsaTtNcFHrRkTKzGOPwaZNsHAhhITYThM8/Nq62bt3L126dKFBgwZcc8017Nu3\n",
325 325 "r8DnoqKiaNasGXFxcVx++eUlfTsRcbixY2HHDpg503YSOVOJC/2kSZPo0qULW7dupVOnTkwq5LDq\n",
326 326 "kJAQPB4PWVlZZGZmljioiDjbBRfArFnw0EPw3Xe208gflbjQL168mOTkZACSk5NZuHBhoc+qJSMS\n",
327 327 "HJo3h/vvh0GD4Phx22nkhBIX+ry8PMLCwgAICwsjLy+vwOdCQkLo3Lkz8fHxTJ8+vaRvJyIBYvRo\n",
328 328 "c6H4q6/aTiInhJ7rD7t06cKuXbvO+ucTJkw47eOQkBBCCpl9SU9Pp1atWuzevZsuXboQExNDQkJC\n",
329 329 "gc+OGzfu5O8TExNJTEw8T3wRcZrQUNOnv+oquOYaqF/fdiJ38Xg8eDyeYn1OiVfdxMTE4PF4qFmz\n",
330 330 "Jjt37qRDhw78+9//PufnjB8/nsqVKzNq1Kizg2jVjYirvPQS/POf8OmnUKGC7TTu5ddVN0lJScz8\n",
331 331 "fXp95syZ9OzZ86xnDh06xIEDBwA4ePAgy5cvp2nTpiV9SxEJIMOGQfXqMH687SRS4hH93r176d27\n",
332 332 "N9999x1RUVHMmzePqlWr8v3333PnnXfy3nvv8c0339CrVy8Ajh07Rv/+/XnkkUcKDqIRvYjr5OVB\n",
333 333 "ixYwdy60b287jTtpw5SIWJeWZo4z/vxzqFbNdhr3UaEXEUcYPhx27TIje+2a9S0daiYijvDss7Bl\n",
334 334 "C7z5pu0kwUkjehEpE5s2QYcOsHq1llz6kkb0IuIYTZqY83D69YPffrOdJrhoRC8iZcbrhV69IDLS\n",
335 335 "rLOX0tOIXkQcJSQE3ngDliyBt9+2nSZ4aEQvImVu/Xro1s3066OjbacJbBrRi4gjxcebfv1//zcc\n",
336 336 "Pmw7jftpRC8iVni90LcvVK0KU6faThO4NKIXEccKCYHp02HlSnP4mfiPRvQiYtUXX0DnzvDRR6Az\n",
337 337 "D4tPI3oRcbzmzeHFF6FnT9i713Yad9KIXkQc4YEHzO7ZtDRzeYkUjUb0IhIwnn0W8vPh0UdtJ3Ef\n",
338 338 "FXoRcYTQUHO65fz5MGeO7TTuotaNiDjKicnZ5cshLs52GudT60ZEAk7z5pCSYiZnd+60ncYdVOhF\n",
339 339 "xHH69IE77oAePeDgQdtpAp9aNyLiSF4vDBgA+/ebA9DKl7edyJnUuhGRgHVi5+xPP8GYMbbTBDYV\n",
340 340 "ehFxrAsugHfegXff1Xk4paFtCSLiaNWrm01U7dpBrVqQlGQ7UeDRiF5EHK9ePTOqv+MO+Phj22kC\n",
341 341 "jwq9iASE+HhITTVn2Gdl2U4TWFToRSRgdOoEr74K3bvDtm220wQO9ehFJKDcdJM55bJrV1i1CsLD\n",
342 342 "bSdyPhV6EQk4d95pll127Agej5mklcKp0ItIQBo92px22aGDuaVKxb5wKvQiErAeeQSOHzcj+5Ur\n",
343 343 "oWZN24mcSYVeRALaY4+dKvYffaRiXxAVehEJeE88YY5MSEiADz6AqCjbiZxFhV5EXOHxx6FqVVPs\n",
344 344 "ly6FJk1sJ3IOFXoRcY1hw8yRCZ07w8KFcMUVthM5gzZMiYir3HILvPGGORNn6VLbaZxBhV5EXKdb\n",
345 345 "NzOiHzQIXn7ZnG0fzHTxiIi41rffwvXXw9VXw5QpUKGC7US+p4tHRCSo1a0Lq1ebgt+9O/z4o+1E\n",
346 346 "dqjQi4irValijjhu2hRatYLMTNuJyp4KvYi4XmgoPP88vPCCaeWkpARX3149ehEJKtu3mzPto6Ph\n",
347 347 "tdegRg3biUpHPXoRkTNER5u+fUQENGtmril0O43oRSRoeTwwYAB06QKTJ5udtYFGI3oRkXNITIQv\n",
348 348 "v4Ty5SE2FmbPdmfvXiN6ERFg7VoYOhQuucRssmra1HaiotGIXkSkiNq0gXXroHdv08q59Vb45hvb\n",
349 349 "qXxDhV5E5Hfly8M995iLxxs0gMsvN6P87dttJzvbsWPmspWiKHGhnz9/Po0bN6Z8+fJ89tlnhT63\n",
350 350 "bNkyYmJiqF+/Ps8880xJ305EpMxcfDH8z//Av/9tTsO88kq48Ub49FP7Pfyffzb7AaKjzdHMRVHi\n",
351 351 "Qt+0aVMWLFhA+/btC30mPz+fYcOGsWzZMjZv3kxqaipbtmwp6VsGDY/HYzuCY+h7cYq+F6eU1ffi\n",
352 352 "0kthwgTYscMcfTxwIDRuDM8+C99/XyYRAHM37vLl0L8/1KljWkzz5kF6etE+v8SFPiYmhgYNGpzz\n",
353 353 "mczMTKKjo4mKiqJChQr07duXRYsWlfQtg4b+Qp+i78Up+l6cUtbfi0qV4N57YetWmDrV/Nq4MVx1\n",
354 354 "FUyaBF995fuR/oEDsGABDB4M4eHw6KPmfP3t2yE11bSVisqvF4/k5uYSGRl58uOIiAjWrl3rz7cU\n",
355 355 "EfGbE9cVJiSYYxQ8HliyxByYdvCgafFceaW53aphQ3OoWlFOzNy7F/7v/8xr3TpYs8b8vm1bc2TD\n",
356 356 "o49CvXolz33OQt+lSxd27dp11j+fOHEiPXr0OO8XDwkJKXkyEREHu+giuPZa80pJgZwcU6AzMuCV\n",
357 357 "V8yoPzcXqlUzxyzUqAEXXGA+1+uF/fvNaZp79ph/1qCBebVqZVb8tGwJF17oo7DeUkpMTPRu2LCh\n",
358 358 "wD9bs2aNt2vXric/njhxonfSpEkFPluvXj0voJdeeumlVzFe9erVO2+d9knrxltIcyo+Pp5t27ax\n",
359 359 "Y8cOateuzdy5c0lNTS3w2e1OXL8kIuICJZ6MXbBgAZGRkWRkZNC9e3euu+46AL7//nu6d+8OQGho\n",
360 360 "KCkpKXTt2pVGjRrRp08fYmNjfZNcRESKxDFHIIiIiH9Y3xmrDVWnDBo0iLCwMJoGyiEbfpKdnU2H\n",
361 361 "Dh1o3LgxTZo04aWXXrIdyZpff/2VNm3a0KJFCxo1asQjjzxiO5J1+fn5xMXFFWlBiJtFRUXRrFkz\n",
362 362 "4uLiuPw8ay2tjujz8/Np2LAhK1asIDw8nNatW5Oamhq07Z1Vq1ZRuXJlbr/9djZu3Gg7jjW7du1i\n",
363 363 "165dtGjRgl9++YVWrVqxcOHCoP3v4tChQ1SsWJFjx47Rrl07nnvuOdq1a2c7ljUvvPACGzZs4MCB\n",
364 364 "AyxevNh2HGvq1q3Lhg0bqF69+nmftTqi14aq0yUkJFCtWjXbMayrWbMmLVq0AKBy5crExsbyfVlu\n",
365 365 "Q3SYihUrAnDkyBHy8/OL9BfbrXJyckhLS+OOO+7QabcUvhDmTFYLfUEbqnJzcy0mEqfZsWMHWVlZ\n",
366 366 "tGnTxnYUa44fP06LFi0ICwujQ4cONGrUyHYka+6//34mT55MuXLWu87WhYSE0LlzZ+Lj45k+ffo5\n",
367 367 "n7X63dKGKjmXX375hZtvvpkpU6ZQuXJl23GsKVeuHJ9//jk5OTl88sknQXsUwpIlS7jsssuIi4vT\n",
368 368 "aB5IT08nKyuLpUuX8ve//51Vq1YV+qzVQh8eHk52dvbJj7Ozs4mIiLCYSJzi6NGj3HTTTdx66630\n",
369 369 "7NnTdhxHqFKlCt27d2f9+vW2o1ixevVqFi9eTN26denXrx8fffQRt99+u+1Y1tSqVQuAP/3pT9x4\n",
370 370 "441kZmYW+qzVQv/HDVVHjhxh7ty5JCUl2YwkDuD1ehk8eDCNGjVi5MiRtuNYtWfPHvbt2wfA4cOH\n",
371 371 "+eCDD4iLi7Ocyo6JEyeSnZ3Nt99+y5w5c+jYsSOzZs2yHcuKQ4cOceDAAQAOHjzI8uXLz7laz2qh\n",
372 372 "14aq0/VNJLb3AAAAlUlEQVTr14+2bduydetWIiMjmTFjhu1IVqSnpzN79mxWrlxJXFwccXFxLFu2\n",
373 373 "zHYsK3bu3EnHjh1p0aIFbdq0oUePHnTq1Ml2LEcI5tZvXl4eCQkJJ/+7uP7667nmmmsKfV4bpkRE\n",
374 374 "XE5T1yIiLqdCLyLicir0IiIup0IvIuJyKvQiIi6nQi8i4nIq9CIiLqdCLyLicv8PoaUAhzXYTeQA\n",
375 375 "AAAASUVORK5CYII=\n"
376 376 ],
377 377 "text/plain": [
378 378 "<matplotlib.figure.Figure at 0x10866ae90>"
379 379 ]
380 380 },
381 381 "metadata": {},
382 382 "output_type": "display_data"
383 383 }
384 384 ],
385 385 "source": [
386 386 "wontshutup()"
387 387 ]
388 388 },
389 389 {
390 390 "cell_type": "markdown",
391 391 "metadata": {},
392 392 "source": [
393 393 "And you can selectively disable capturing stdout, stderr or rich display, by passing `--no-stdout`, `--no-stderr` and `--no-display`"
394 394 ]
395 395 },
396 396 {
397 397 "cell_type": "code",
398 398 "execution_count": 19,
399 399 "metadata": {
400 400 "collapsed": false
401 401 },
402 402 "outputs": [
403 403 {
404 404 "name": "stderr",
405 405 "output_type": "stream",
406 406 "text": [
407 407 "hello, stderr\n"
408 408 ]
409 409 }
410 410 ],
411 411 "source": [
412 412 "%%capture cap --no-stderr\n",
413 413 "print('hi, stdout')\n",
414 414 "print(\"hello, stderr\", file=sys.stderr)"
415 415 ]
416 416 },
417 417 {
418 418 "cell_type": "code",
419 419 "execution_count": 20,
420 420 "metadata": {
421 421 "collapsed": false
422 422 },
423 423 "outputs": [
424 424 {
425 425 "data": {
426 426 "text/plain": [
427 427 "'hi, stdout\\n'"
428 428 ]
429 429 },
430 430 "execution_count": 20,
431 431 "metadata": {},
432 432 "output_type": "execute_result"
433 433 }
434 434 ],
435 435 "source": [
436 436 "cap.stdout"
437 437 ]
438 438 },
439 439 {
440 440 "cell_type": "code",
441 441 "execution_count": 21,
442 442 "metadata": {
443 443 "collapsed": false
444 444 },
445 445 "outputs": [
446 446 {
447 447 "data": {
448 448 "text/plain": [
449 449 "''"
450 450 ]
451 451 },
452 452 "execution_count": 21,
453 453 "metadata": {},
454 454 "output_type": "execute_result"
455 455 }
456 456 ],
457 457 "source": [
458 458 "cap.stderr"
459 459 ]
460 460 },
461 461 {
462 462 "cell_type": "code",
463 463 "execution_count": 22,
464 464 "metadata": {
465 465 "collapsed": false
466 466 },
467 467 "outputs": [
468 468 {
469 469 "data": {
470 470 "text/plain": [
471 471 "[]"
472 472 ]
473 473 },
474 474 "execution_count": 22,
475 475 "metadata": {},
476 476 "output_type": "execute_result"
477 477 }
478 478 ],
479 479 "source": [
480 480 "cap.outputs"
481 481 ]
482 482 }
483 483 ],
484 "metadata": {},
484 "metadata": {
485 "kernelspec": {
486 "display_name": "Python 3",
487 "language": "python",
488 "name": "python3"
489 },
490 "language_info": {
491 "codemirror_mode": {
492 "name": "ipython",
493 "version": 3
494 },
495 "file_extension": ".py",
496 "mimetype": "text/x-python",
497 "name": "python",
498 "nbconvert_exporter": "python",
499 "pygments_lexer": "ipython3",
500 "version": "3.4.2"
501 }
502 },
485 503 "nbformat": 4,
486 504 "nbformat_minor": 0
487 } No newline at end of file
505 }
@@ -1,699 +1,717 b''
1 1 {
2 2 "cells": [
3 3 {
4 4 "cell_type": "markdown",
5 5 "metadata": {},
6 6 "source": [
7 7 "# Cell Magics in IPython"
8 8 ]
9 9 },
10 10 {
11 11 "cell_type": "markdown",
12 12 "metadata": {},
13 13 "source": [
14 14 "IPython has a system of commands we call 'magics' that provide effectively a mini command language that is orthogonal to the syntax of Python and is extensible by the user with new commands. Magics are meant to be typed interactively, so they use command-line conventions, such as using whitespace for separating arguments, dashes for options and other conventions typical of a command-line environment.\n",
15 15 "\n",
16 16 "Magics come in two kinds:\n",
17 17 "\n",
18 18 "* Line magics: these are commands prepended by one `%` character and whose arguments only extend to the end of the current line.\n",
19 19 "* Cell magics: these use *two* percent characters as a marker (`%%`), and they receive as argument *both* the current line where they are declared and the whole body of the cell. Note that cell magics can *only* be used as the first line in a cell, and as a general principle they can't be 'stacked' (i.e. you can only use one cell magic per cell). A few of them, because of how they operate, can be stacked, but that is something you will discover on a case by case basis.\n",
20 20 "\n",
21 21 "The `%lsmagic` magic is used to list all available magics, and it will show both line and cell magics currently defined:"
22 22 ]
23 23 },
24 24 {
25 25 "cell_type": "code",
26 26 "execution_count": 1,
27 27 "metadata": {
28 28 "collapsed": false
29 29 },
30 30 "outputs": [
31 31 {
32 32 "data": {
33 33 "application/json": {
34 34 "cell": {
35 35 "!": "OSMagics",
36 36 "HTML": "Other",
37 37 "SVG": "Other",
38 38 "bash": "Other",
39 39 "capture": "ExecutionMagics",
40 40 "debug": "ExecutionMagics",
41 41 "file": "Other",
42 42 "html": "DisplayMagics",
43 43 "javascript": "DisplayMagics",
44 44 "latex": "DisplayMagics",
45 45 "perl": "Other",
46 46 "prun": "ExecutionMagics",
47 47 "pypy": "Other",
48 48 "python": "Other",
49 49 "python3": "Other",
50 50 "ruby": "Other",
51 51 "script": "ScriptMagics",
52 52 "sh": "Other",
53 53 "svg": "DisplayMagics",
54 54 "sx": "OSMagics",
55 55 "system": "OSMagics",
56 56 "time": "ExecutionMagics",
57 57 "timeit": "ExecutionMagics",
58 58 "writefile": "OSMagics"
59 59 },
60 60 "line": {
61 61 "alias": "OSMagics",
62 62 "alias_magic": "BasicMagics",
63 63 "autocall": "AutoMagics",
64 64 "automagic": "AutoMagics",
65 65 "autosave": "KernelMagics",
66 66 "bookmark": "OSMagics",
67 67 "cd": "OSMagics",
68 68 "clear": "KernelMagics",
69 69 "colors": "BasicMagics",
70 70 "config": "ConfigMagics",
71 71 "connect_info": "KernelMagics",
72 72 "debug": "ExecutionMagics",
73 73 "dhist": "OSMagics",
74 74 "dirs": "OSMagics",
75 75 "doctest_mode": "KernelMagics",
76 76 "ed": "Other",
77 77 "edit": "KernelMagics",
78 78 "env": "OSMagics",
79 79 "gist": "Other",
80 80 "gui": "BasicMagics",
81 81 "hist": "Other",
82 82 "history": "HistoryMagics",
83 83 "install_default_config": "DeprecatedMagics",
84 84 "install_ext": "ExtensionMagics",
85 85 "install_profiles": "DeprecatedMagics",
86 86 "killbgscripts": "ScriptMagics",
87 87 "less": "KernelMagics",
88 88 "load": "CodeMagics",
89 89 "load_ext": "ExtensionMagics",
90 90 "loadpy": "CodeMagics",
91 91 "logoff": "LoggingMagics",
92 92 "logon": "LoggingMagics",
93 93 "logstart": "LoggingMagics",
94 94 "logstate": "LoggingMagics",
95 95 "logstop": "LoggingMagics",
96 96 "lsmagic": "BasicMagics",
97 97 "macro": "ExecutionMagics",
98 98 "magic": "BasicMagics",
99 99 "man": "KernelMagics",
100 100 "matplotlib": "PylabMagics",
101 101 "more": "KernelMagics",
102 102 "notebook": "BasicMagics",
103 103 "page": "BasicMagics",
104 104 "pastebin": "CodeMagics",
105 105 "pdb": "ExecutionMagics",
106 106 "pdef": "NamespaceMagics",
107 107 "pdoc": "NamespaceMagics",
108 108 "pfile": "NamespaceMagics",
109 109 "pinfo": "NamespaceMagics",
110 110 "pinfo2": "NamespaceMagics",
111 111 "popd": "OSMagics",
112 112 "pprint": "BasicMagics",
113 113 "precision": "BasicMagics",
114 114 "profile": "BasicMagics",
115 115 "prun": "ExecutionMagics",
116 116 "psearch": "NamespaceMagics",
117 117 "psource": "NamespaceMagics",
118 118 "pushd": "OSMagics",
119 119 "pwd": "OSMagics",
120 120 "pycat": "OSMagics",
121 121 "pylab": "PylabMagics",
122 122 "qtconsole": "KernelMagics",
123 123 "quickref": "BasicMagics",
124 124 "recall": "HistoryMagics",
125 125 "rehashx": "OSMagics",
126 126 "reload_ext": "ExtensionMagics",
127 127 "rep": "Other",
128 128 "rerun": "HistoryMagics",
129 129 "reset": "NamespaceMagics",
130 130 "reset_selective": "NamespaceMagics",
131 131 "run": "ExecutionMagics",
132 132 "save": "CodeMagics",
133 133 "sc": "OSMagics",
134 134 "store": "StoreMagics",
135 135 "sx": "OSMagics",
136 136 "system": "OSMagics",
137 137 "tb": "ExecutionMagics",
138 138 "tic": "TimerMagics",
139 139 "time": "ExecutionMagics",
140 140 "timeit": "ExecutionMagics",
141 141 "toc": "TimerMagics",
142 142 "unalias": "OSMagics",
143 143 "unload_ext": "ExtensionMagics",
144 144 "who": "NamespaceMagics",
145 145 "who_ls": "NamespaceMagics",
146 146 "whos": "NamespaceMagics",
147 147 "xdel": "NamespaceMagics",
148 148 "xmode": "BasicMagics"
149 149 }
150 150 },
151 151 "text/plain": [
152 152 "Available line magics:\n",
153 153 "%alias %alias_magic %autocall %automagic %autosave %bookmark %cd %clear %colors %config %connect_info %debug %dhist %dirs %doctest_mode %ed %edit %env %gist %gui %hist %history %install_default_config %install_ext %install_profiles %killbgscripts %less %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %lsmagic %macro %magic %man %matplotlib %more %notebook %page %pastebin %pdb %pdef %pdoc %pfile %pinfo %pinfo2 %popd %pprint %precision %profile %prun %psearch %psource %pushd %pwd %pycat %pylab %qtconsole %quickref %recall %rehashx %reload_ext %rep %rerun %reset %reset_selective %run %save %sc %store %sx %system %tb %tic %time %timeit %toc %unalias %unload_ext %who %who_ls %whos %xdel %xmode\n",
154 154 "\n",
155 155 "Available cell magics:\n",
156 156 "%%! %%HTML %%SVG %%bash %%capture %%debug %%file %%html %%javascript %%latex %%perl %%prun %%pypy %%python %%python3 %%ruby %%script %%sh %%svg %%sx %%system %%time %%timeit %%writefile\n",
157 157 "\n",
158 158 "Automagic is ON, % prefix IS NOT needed for line magics."
159 159 ]
160 160 },
161 161 "execution_count": 1,
162 162 "metadata": {},
163 163 "output_type": "execute_result"
164 164 }
165 165 ],
166 166 "source": [
167 167 "%lsmagic"
168 168 ]
169 169 },
170 170 {
171 171 "cell_type": "markdown",
172 172 "metadata": {},
173 173 "source": [
174 174 "Since in the introductory section we already covered the most frequently used line magics, we will focus here on the cell magics, which offer a great amount of power.\n",
175 175 "\n",
176 176 "Let's load matplotlib and numpy so we can use numerics/plotting at will later on."
177 177 ]
178 178 },
179 179 {
180 180 "cell_type": "code",
181 181 "execution_count": 2,
182 182 "metadata": {
183 183 "collapsed": false
184 184 },
185 185 "outputs": [],
186 186 "source": [
187 187 "%matplotlib inline\n",
188 188 "import numpy as np\n",
189 189 "import matplotlib.pyplot as plt"
190 190 ]
191 191 },
192 192 {
193 193 "cell_type": "markdown",
194 194 "metadata": {},
195 195 "source": [
196 196 "## <!--====--> Some simple cell magics"
197 197 ]
198 198 },
199 199 {
200 200 "cell_type": "markdown",
201 201 "metadata": {},
202 202 "source": [
203 203 "Timing the execution of code; the 'timeit' magic exists both in line and cell form:"
204 204 ]
205 205 },
206 206 {
207 207 "cell_type": "code",
208 208 "execution_count": 3,
209 209 "metadata": {
210 210 "collapsed": false
211 211 },
212 212 "outputs": [
213 213 {
214 214 "name": "stdout",
215 215 "output_type": "stream",
216 216 "text": [
217 217 "100 loops, best of 3: 6.05 ms per loop\n"
218 218 ]
219 219 }
220 220 ],
221 221 "source": [
222 222 "%timeit np.linalg.eigvals(np.random.rand(100,100))"
223 223 ]
224 224 },
225 225 {
226 226 "cell_type": "code",
227 227 "execution_count": 4,
228 228 "metadata": {
229 229 "collapsed": false
230 230 },
231 231 "outputs": [
232 232 {
233 233 "name": "stdout",
234 234 "output_type": "stream",
235 235 "text": [
236 236 "100 loops, best of 3: 6.07 ms per loop\n"
237 237 ]
238 238 }
239 239 ],
240 240 "source": [
241 241 "%%timeit a = np.random.rand(100, 100)\n",
242 242 "np.linalg.eigvals(a)"
243 243 ]
244 244 },
245 245 {
246 246 "cell_type": "markdown",
247 247 "metadata": {},
248 248 "source": [
249 249 "The `%%capture` magic can be used to capture the stdout/err of any block of python code, either to discard it (if it's noise to you) or to store it in a variable for later use:"
250 250 ]
251 251 },
252 252 {
253 253 "cell_type": "code",
254 254 "execution_count": 5,
255 255 "metadata": {
256 256 "collapsed": false
257 257 },
258 258 "outputs": [],
259 259 "source": [
260 260 "%%capture capt\n",
261 261 "from __future__ import print_function\n",
262 262 "import sys\n",
263 263 "print('Hello stdout')\n",
264 264 "print('and stderr', file=sys.stderr)"
265 265 ]
266 266 },
267 267 {
268 268 "cell_type": "code",
269 269 "execution_count": 6,
270 270 "metadata": {
271 271 "collapsed": false
272 272 },
273 273 "outputs": [
274 274 {
275 275 "data": {
276 276 "text/plain": [
277 277 "('Hello stdout\\n', 'and stderr\\n')"
278 278 ]
279 279 },
280 280 "execution_count": 6,
281 281 "metadata": {},
282 282 "output_type": "execute_result"
283 283 }
284 284 ],
285 285 "source": [
286 286 "capt.stdout, capt.stderr"
287 287 ]
288 288 },
289 289 {
290 290 "cell_type": "code",
291 291 "execution_count": 7,
292 292 "metadata": {
293 293 "collapsed": false
294 294 },
295 295 "outputs": [
296 296 {
297 297 "name": "stdout",
298 298 "output_type": "stream",
299 299 "text": [
300 300 "Hello stdout\n"
301 301 ]
302 302 },
303 303 {
304 304 "name": "stderr",
305 305 "output_type": "stream",
306 306 "text": [
307 307 "and stderr\n"
308 308 ]
309 309 }
310 310 ],
311 311 "source": [
312 312 "capt.show()"
313 313 ]
314 314 },
315 315 {
316 316 "cell_type": "markdown",
317 317 "metadata": {},
318 318 "source": [
319 319 "The `%%writefile` magic is a very useful tool that writes the cell contents as a named file:"
320 320 ]
321 321 },
322 322 {
323 323 "cell_type": "code",
324 324 "execution_count": 8,
325 325 "metadata": {
326 326 "collapsed": false
327 327 },
328 328 "outputs": [
329 329 {
330 330 "name": "stdout",
331 331 "output_type": "stream",
332 332 "text": [
333 333 "Writing foo.py\n"
334 334 ]
335 335 }
336 336 ],
337 337 "source": [
338 338 "%%writefile foo.py\n",
339 339 "print('Hello world')"
340 340 ]
341 341 },
342 342 {
343 343 "cell_type": "code",
344 344 "execution_count": 9,
345 345 "metadata": {
346 346 "collapsed": false
347 347 },
348 348 "outputs": [
349 349 {
350 350 "name": "stdout",
351 351 "output_type": "stream",
352 352 "text": [
353 353 "Hello world\n"
354 354 ]
355 355 }
356 356 ],
357 357 "source": [
358 358 "%run foo"
359 359 ]
360 360 },
361 361 {
362 362 "cell_type": "markdown",
363 363 "metadata": {},
364 364 "source": [
365 365 "## <!--====--> Magics for running code under other interpreters"
366 366 ]
367 367 },
368 368 {
369 369 "cell_type": "markdown",
370 370 "metadata": {},
371 371 "source": [
372 372 "IPython has a `%%script` cell magic, which lets you run a cell in\n",
373 373 "a subprocess of any interpreter on your system, such as: bash, ruby, perl, zsh, R, etc.\n",
374 374 "\n",
375 375 "It can even be a script of your own, which expects input on stdin."
376 376 ]
377 377 },
378 378 {
379 379 "cell_type": "markdown",
380 380 "metadata": {},
381 381 "source": [
382 382 "To use it, simply pass a path or shell command to the program you want to run on the `%%script` line,\n",
383 383 "and the rest of the cell will be run by that script, and stdout/err from the subprocess are captured and displayed."
384 384 ]
385 385 },
386 386 {
387 387 "cell_type": "code",
388 388 "execution_count": 10,
389 389 "metadata": {
390 390 "collapsed": false
391 391 },
392 392 "outputs": [
393 393 {
394 394 "name": "stdout",
395 395 "output_type": "stream",
396 396 "text": [
397 397 "hello from Python 2.7.2 (default, Oct 11 2012, 20:14:37) \n",
398 398 "[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)]\n"
399 399 ]
400 400 }
401 401 ],
402 402 "source": [
403 403 "%%script python\n",
404 404 "import sys\n",
405 405 "print 'hello from Python %s' % sys.version"
406 406 ]
407 407 },
408 408 {
409 409 "cell_type": "code",
410 410 "execution_count": 11,
411 411 "metadata": {
412 412 "collapsed": false
413 413 },
414 414 "outputs": [
415 415 {
416 416 "name": "stdout",
417 417 "output_type": "stream",
418 418 "text": [
419 419 "hello from Python: 3.3.1 (v3.3.1:d9893d13c628, Apr 6 2013, 11:07:11) \n",
420 420 "[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]\n"
421 421 ]
422 422 }
423 423 ],
424 424 "source": [
425 425 "%%script python3\n",
426 426 "import sys\n",
427 427 "print('hello from Python: %s' % sys.version)"
428 428 ]
429 429 },
430 430 {
431 431 "cell_type": "markdown",
432 432 "metadata": {},
433 433 "source": [
434 434 "IPython also creates aliases for a few common interpreters, such as bash, ruby, perl, etc.\n",
435 435 "\n",
436 436 "These are all equivalent to `%%script <name>`"
437 437 ]
438 438 },
439 439 {
440 440 "cell_type": "code",
441 441 "execution_count": 12,
442 442 "metadata": {
443 443 "collapsed": false
444 444 },
445 445 "outputs": [
446 446 {
447 447 "name": "stdout",
448 448 "output_type": "stream",
449 449 "text": [
450 450 "Hello from Ruby 1.9.3\n"
451 451 ]
452 452 }
453 453 ],
454 454 "source": [
455 455 "%%ruby\n",
456 456 "puts \"Hello from Ruby #{RUBY_VERSION}\""
457 457 ]
458 458 },
459 459 {
460 460 "cell_type": "code",
461 461 "execution_count": 13,
462 462 "metadata": {
463 463 "collapsed": false
464 464 },
465 465 "outputs": [
466 466 {
467 467 "name": "stdout",
468 468 "output_type": "stream",
469 469 "text": [
470 470 "hello from /usr/local/bin/bash\n"
471 471 ]
472 472 }
473 473 ],
474 474 "source": [
475 475 "%%bash\n",
476 476 "echo \"hello from $BASH\""
477 477 ]
478 478 },
479 479 {
480 480 "cell_type": "markdown",
481 481 "metadata": {},
482 482 "source": [
483 483 "## Exercise: write your own script that numbers input lines"
484 484 ]
485 485 },
486 486 {
487 487 "cell_type": "markdown",
488 488 "metadata": {},
489 489 "source": [
490 490 "Write a file, called `lnum.py`, such that the following cell works as shown (hint: don't forget about the executable bit!): "
491 491 ]
492 492 },
493 493 {
494 494 "cell_type": "code",
495 495 "execution_count": 29,
496 496 "metadata": {
497 497 "collapsed": false
498 498 },
499 499 "outputs": [
500 500 {
501 501 "name": "stdout",
502 502 "output_type": "stream",
503 503 "text": [
504 504 "0: my first line\n",
505 505 "1: my second\n",
506 506 "2: more\n",
507 507 "---- END ----\n"
508 508 ]
509 509 }
510 510 ],
511 511 "source": [
512 512 "%%script ./lnum.py\n",
513 513 "my first line\n",
514 514 "my second\n",
515 515 "more"
516 516 ]
517 517 },
518 518 {
519 519 "cell_type": "markdown",
520 520 "metadata": {},
521 521 "source": [
522 522 "## Capturing output"
523 523 ]
524 524 },
525 525 {
526 526 "cell_type": "markdown",
527 527 "metadata": {},
528 528 "source": [
529 529 "You can also capture stdout/err from these subprocesses into Python variables, instead of letting them go directly to stdout/err"
530 530 ]
531 531 },
532 532 {
533 533 "cell_type": "code",
534 534 "execution_count": 30,
535 535 "metadata": {
536 536 "collapsed": false
537 537 },
538 538 "outputs": [
539 539 {
540 540 "name": "stdout",
541 541 "output_type": "stream",
542 542 "text": [
543 543 "hi, stdout\n"
544 544 ]
545 545 },
546 546 {
547 547 "name": "stderr",
548 548 "output_type": "stream",
549 549 "text": [
550 550 "hello, stderr\n"
551 551 ]
552 552 }
553 553 ],
554 554 "source": [
555 555 "%%bash\n",
556 556 "echo \"hi, stdout\"\n",
557 557 "echo \"hello, stderr\" >&2\n"
558 558 ]
559 559 },
560 560 {
561 561 "cell_type": "code",
562 562 "execution_count": 31,
563 563 "metadata": {
564 564 "collapsed": false
565 565 },
566 566 "outputs": [],
567 567 "source": [
568 568 "%%bash --out output --err error\n",
569 569 "echo \"hi, stdout\"\n",
570 570 "echo \"hello, stderr\" >&2"
571 571 ]
572 572 },
573 573 {
574 574 "cell_type": "code",
575 575 "execution_count": 32,
576 576 "metadata": {
577 577 "collapsed": false
578 578 },
579 579 "outputs": [
580 580 {
581 581 "name": "stdout",
582 582 "output_type": "stream",
583 583 "text": [
584 584 "hello, stderr\n",
585 585 "\n",
586 586 "hi, stdout\n",
587 587 "\n"
588 588 ]
589 589 }
590 590 ],
591 591 "source": [
592 592 "print(error)\n",
593 593 "print(output)"
594 594 ]
595 595 },
596 596 {
597 597 "cell_type": "markdown",
598 598 "metadata": {},
599 599 "source": [
600 600 "## Background Scripts"
601 601 ]
602 602 },
603 603 {
604 604 "cell_type": "markdown",
605 605 "metadata": {},
606 606 "source": [
607 607 "These scripts can be run in the background, by adding the `--bg` flag.\n",
608 608 "\n",
609 609 "When you do this, output is discarded unless you use the `--out/err`\n",
610 610 "flags to store output as above."
611 611 ]
612 612 },
613 613 {
614 614 "cell_type": "code",
615 615 "execution_count": 33,
616 616 "metadata": {
617 617 "collapsed": false
618 618 },
619 619 "outputs": [
620 620 {
621 621 "name": "stdout",
622 622 "output_type": "stream",
623 623 "text": [
624 624 "Starting job # 0 in a separate thread.\n"
625 625 ]
626 626 }
627 627 ],
628 628 "source": [
629 629 "%%ruby --bg --out ruby_lines\n",
630 630 "for n in 1...10\n",
631 631 " sleep 1\n",
632 632 " puts \"line #{n}\"\n",
633 633 " STDOUT.flush\n",
634 634 "end"
635 635 ]
636 636 },
637 637 {
638 638 "cell_type": "markdown",
639 639 "metadata": {},
640 640 "source": [
641 641 "When you do store output of a background thread, these are the stdout/err *pipes*,\n",
642 642 "rather than the text of the output."
643 643 ]
644 644 },
645 645 {
646 646 "cell_type": "code",
647 647 "execution_count": 34,
648 648 "metadata": {
649 649 "collapsed": false
650 650 },
651 651 "outputs": [
652 652 {
653 653 "data": {
654 654 "text/plain": [
655 655 "<open file '<fdopen>', mode 'rb' at 0x112cd55d0>"
656 656 ]
657 657 },
658 658 "execution_count": 34,
659 659 "metadata": {},
660 660 "output_type": "execute_result"
661 661 }
662 662 ],
663 663 "source": [
664 664 "ruby_lines"
665 665 ]
666 666 },
667 667 {
668 668 "cell_type": "code",
669 669 "execution_count": 35,
670 670 "metadata": {
671 671 "collapsed": false
672 672 },
673 673 "outputs": [
674 674 {
675 675 "name": "stdout",
676 676 "output_type": "stream",
677 677 "text": [
678 678 "line 1\n",
679 679 "line 2\n",
680 680 "line 3\n",
681 681 "line 4\n",
682 682 "line 5\n",
683 683 "line 6\n",
684 684 "line 7\n",
685 685 "line 8\n",
686 686 "line 9\n",
687 687 "\n"
688 688 ]
689 689 }
690 690 ],
691 691 "source": [
692 692 "print(ruby_lines.read())"
693 693 ]
694 694 }
695 695 ],
696 "metadata": {},
696 "metadata": {
697 "kernelspec": {
698 "display_name": "Python 3",
699 "language": "python",
700 "name": "python3"
701 },
702 "language_info": {
703 "codemirror_mode": {
704 "name": "ipython",
705 "version": 3
706 },
707 "file_extension": ".py",
708 "mimetype": "text/x-python",
709 "name": "python",
710 "nbconvert_exporter": "python",
711 "pygments_lexer": "ipython3",
712 "version": "3.4.2"
713 }
714 },
697 715 "nbformat": 4,
698 716 "nbformat_minor": 0
699 } No newline at end of file
717 }
@@ -1,1323 +1,1341 b''
1 1 {
2 2 "cells": [
3 3 {
4 4 "cell_type": "markdown",
5 5 "metadata": {},
6 6 "source": [
7 7 "# Custom Display Logic"
8 8 ]
9 9 },
10 10 {
11 11 "cell_type": "markdown",
12 12 "metadata": {},
13 13 "source": [
14 14 "## Overview"
15 15 ]
16 16 },
17 17 {
18 18 "cell_type": "markdown",
19 19 "metadata": {},
20 20 "source": [
21 21 "As described in the [Rich Output](Rich Output.ipynb) tutorial, the IPython display system can display rich representations of objects in the following formats:\n",
22 22 "\n",
23 23 "* JavaScript\n",
24 24 "* HTML\n",
25 25 "* PNG\n",
26 26 "* JPEG\n",
27 27 "* SVG\n",
28 28 "* LaTeX\n",
29 29 "* PDF\n",
30 30 "\n",
31 31 "This Notebook shows how you can add custom display logic to your own classes, so that they can be displayed using these rich representations. There are two ways of accomplishing this:\n",
32 32 "\n",
33 33 "1. Implementing special display methods such as `_repr_html_` when you define your class.\n",
34 34 "2. Registering a display function for a particular existing class.\n",
35 35 "\n",
36 36 "This Notebook describes and illustrates both approaches."
37 37 ]
38 38 },
39 39 {
40 40 "cell_type": "markdown",
41 41 "metadata": {},
42 42 "source": [
43 43 "Import the IPython display functions."
44 44 ]
45 45 },
46 46 {
47 47 "cell_type": "code",
48 48 "execution_count": 1,
49 49 "metadata": {
50 50 "collapsed": false
51 51 },
52 52 "outputs": [],
53 53 "source": [
54 54 "from IPython.display import (\n",
55 55 " display, display_html, display_png, display_svg\n",
56 56 ")"
57 57 ]
58 58 },
59 59 {
60 60 "cell_type": "markdown",
61 61 "metadata": {},
62 62 "source": [
63 63 "Parts of this notebook need the matplotlib inline backend:"
64 64 ]
65 65 },
66 66 {
67 67 "cell_type": "code",
68 68 "execution_count": 2,
69 69 "metadata": {
70 70 "collapsed": false
71 71 },
72 72 "outputs": [],
73 73 "source": [
74 74 "%matplotlib inline\n",
75 75 "import numpy as np\n",
76 76 "import matplotlib.pyplot as plt"
77 77 ]
78 78 },
79 79 {
80 80 "cell_type": "markdown",
81 81 "metadata": {},
82 82 "source": [
83 83 "## Special display methods"
84 84 ]
85 85 },
86 86 {
87 87 "cell_type": "markdown",
88 88 "metadata": {},
89 89 "source": [
90 90 "The main idea of the first approach is that you have to implement special display methods when you define your class, one for each representation you want to use. Here is a list of the names of the special methods and the values they must return:\n",
91 91 "\n",
92 92 "* `_repr_html_`: return raw HTML as a string\n",
93 93 "* `_repr_json_`: return raw JSON as a string\n",
94 94 "* `_repr_jpeg_`: return raw JPEG data\n",
95 95 "* `_repr_png_`: return raw PNG data\n",
96 96 "* `_repr_svg_`: return raw SVG data as a string\n",
97 97 "* `_repr_latex_`: return LaTeX commands in a string surrounded by \"$\"."
98 98 ]
99 99 },
100 100 {
101 101 "cell_type": "markdown",
102 102 "metadata": {},
103 103 "source": [
104 104 "As an illustration, we build a class that holds data generated by sampling a Gaussian distribution with given mean and standard deviation. Here is the definition of the `Gaussian` class, which has a custom PNG and LaTeX representation."
105 105 ]
106 106 },
107 107 {
108 108 "cell_type": "code",
109 109 "execution_count": 3,
110 110 "metadata": {
111 111 "collapsed": false
112 112 },
113 113 "outputs": [],
114 114 "source": [
115 115 "from IPython.core.pylabtools import print_figure\n",
116 116 "from IPython.display import Image, SVG, Math\n",
117 117 "\n",
118 118 "class Gaussian(object):\n",
119 119 " \"\"\"A simple object holding data sampled from a Gaussian distribution.\n",
120 120 " \"\"\"\n",
121 121 " def __init__(self, mean=0.0, std=1, size=1000):\n",
122 122 " self.data = np.random.normal(mean, std, size)\n",
123 123 " self.mean = mean\n",
124 124 " self.std = std\n",
125 125 " self.size = size\n",
126 126 " # For caching plots that may be expensive to compute\n",
127 127 " self._png_data = None\n",
128 128 " \n",
129 129 " def _figure_data(self, format):\n",
130 130 " fig, ax = plt.subplots()\n",
131 131 " ax.hist(self.data, bins=50)\n",
132 132 " ax.set_title(self._repr_latex_())\n",
133 133 " ax.set_xlim(-10.0,10.0)\n",
134 134 " data = print_figure(fig, format)\n",
135 135 " # We MUST close the figure, otherwise IPython's display machinery\n",
136 136 " # will pick it up and send it as output, resulting in a double display\n",
137 137 " plt.close(fig)\n",
138 138 " return data\n",
139 139 " \n",
140 140 " def _repr_png_(self):\n",
141 141 " if self._png_data is None:\n",
142 142 " self._png_data = self._figure_data('png')\n",
143 143 " return self._png_data\n",
144 144 " \n",
145 145 " def _repr_latex_(self):\n",
146 146 " return r'$\\mathcal{N}(\\mu=%.2g, \\sigma=%.2g),\\ N=%d$' % (self.mean,\n",
147 147 " self.std, self.size)"
148 148 ]
149 149 },
150 150 {
151 151 "cell_type": "markdown",
152 152 "metadata": {},
153 153 "source": [
154 154 "Create an instance of the Gaussian distribution and return it to display the default representation:"
155 155 ]
156 156 },
157 157 {
158 158 "cell_type": "code",
159 159 "execution_count": 4,
160 160 "metadata": {
161 161 "collapsed": false
162 162 },
163 163 "outputs": [
164 164 {
165 165 "data": {
166 166 "image/png": [
167 167 "iVBORw0KGgoAAAANSUhEUgAAAXIAAAENCAYAAAASUO4dAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
168 168 "AAALEgAACxIB0t1+/AAAElNJREFUeJzt3X+wXGV9x/H3JpefITfhCr1JSyCIRH5UJbQgrVhXChas\n",
169 169 "DXE6onbaBoownRG0tVUSOg63vxQY+8tRoVOQuTIOSq3QQGtNiGyr1SK0IfxqTBNNB2zuhUJoLogk\n",
170 170 "kO0fz9ncvZu9956z9+yefXbfr5mdPefZs7tPbnY/++z3POcsSJIkSZIkSZIkSZIkSZIkSZIkSZJ6\n",
171 171 "1olFd6DNlgJHFt0JKYt5RXdAXe8sYAtwEyHEzym2O233DPCxojshZVEqugPqGjcD/wrc3tB+E/BV\n",
172 172 "4EFgHXBNm57/1wij4bOBu4Avtel5Gp0B/Drw+3VtZwGnAl/oUB+m06xvq4HTgP3AD5n8/8raLqkH\n",
173 173 "fQf424a204GLkuU3AVe36blfV/fYxwC76UwJ5yOED6nbmtyWJcTfTPjweQoYSNqGCR9G9wI/n1Pf\n",
174 174 "FgH/Xrf+HeA1GduPaaEv6nKWVgQwH7gPOA84vK69DHwjWX5X3XLeTmeynPG/wHbgZ9r0XPX+HPj7\n",
175 175 "aW57hvABk8YDwD8B24BfTdrGCSH+HuDbOfXtF4An6ta3EP7PsrS/vYW+qMsNzL6J+sDpwCbCV/mL\n",
176 176 "CKNLgCOAl5Pls4BPZHzc1wJXzHD7vxHC6h+ZHPmXCCWW7RmfK+tz1kxXXtxC+DBJ0495wD7g08BH\n",
177 177 "gS8n7QuAl3Ls23HA83XrzwMnA89lbFePMcgFoS59O6EU8H5CkB8G7K3b5kigWrc+H/hn4Nxk/Vbg\n",
178 178 "k0wNvu8T6uqz2Qc8liz/MvAQ8PA0264A/gQ4FvhZoAL8A6HGn+U5a6rTtO9OniuNMwl9fowwkj4T\n",
179 179 "+I8mjz3Xvi0Gfly3vhc4KtkuS7t6jKUVQXhzvwysB94B/AQh3B+o22Z+w31+DvjvZLmUrLc6iq5Z\n",
180 180 "DFxK2MHXzBAhsH+TUCLYlGx78zTbpzHdiPwl4NCUj/FG4BHCDsXPEer9rwe+N4d+NevbREPbEYRR\n",
181 181 "d9Z29RhH5FoE/ChZniDUeq8CngU+W7fdKw33uxD4erK8Eni0yWNnKSWUgLXAB4AXgBOY/KCo+WDS\n",
182 182 "p9oo87C6vrfynDD9iHwR6UOvfkB0C+ED7Qngr3Lu2w7Ct5Ca1xBG/s+nbD8maZfUI44izET5babO\n",
183 183 "ZDgT+D8OroePMvVr+YPATyfLHweuBFbNoT8fItSklxC+DbwtaT+ZyaC8kTAtEEJd/1NzeL6aS2k+\n",
184 184 "a+Uq4Bfr1uv7Ue8QwjeEejcT6v55920BUz8wtxC+PWVtV49p/Lqs/lEGvkUoCdxb174LeAOwmamj\n",
185 185 "tyFCMPyAUJ9eRxjxLSSURBYBOwl14KzOJdTnrwR+D7ic8OEwQZjbvr3u8k7CTr8zCDX5/S08X81V\n",
186 186 "hNLMm5J/w2Ymd+5eCfw1k99E6vtRcxZh1H08oQw1kbR/n1DG+FbOfXshuawi/P/dSxjF78vYrj61\n",
187 187 "GPgK8J+Er4xvJryxNxKmXG1ItlFchjNsu5iwkxFCwPxp/t1p6lDgrR16rprDCTsti+6HlKtR4LeS\n",
188 188 "5QHC6OtGJuf+XgNcX0C/1Fm/QyjDfJrOzPMGeC+d/+Z4KWFnZdH9kHKziOZfl7cyOaJbkqyrt5WY\n",
189 189 "eWddL1gGXFx0J6S8nUGo/91GqJn+DaFWurtum1LDuiSpQ9LMIx8gzGT4XHL9ImGaWL0q00/jkiS1\n",
190 190 "UZp55E8llweT9a8QZiyMEUoqY4RDqp9uvONJJ51U3bFjRz49laT+sYP05/pJNSIfA55k8nDl84HH\n",
191 191 "gXuANUnbGuDug3qyYwfVatVLDpfrrruu8D700sW/p3/Pbr4AJ6UNcUh/ZOfVwBcJU7B2AJcR9uDf\n",
192 192 "SZjzuxO4JMsTS5LykTbItxAOfmh0fo59kSS1wJNmRaJcLhfdhZ7i3zNf/j2L1e6feqsm9R5JUkql\n",
193 193 "Ugky5LMjckmKnEEuSZEzyCUpcga5JEXOIJekyBnkUocMDg5RKpUYHBwquivqMU4/lDokTCmrAiV8\n",
194 194 "X2gmTj+UpD5jkEsdN0CpVLLMotxYWpE6pL60Mnn6fsssOpilFUnqMwa5JEXOIJe6iFMU1Qpr5FKH\n",
195 195 "pKmRO0VRYI1ckvqOQS5JkTPIJSlyBrkkRc4gl6TIGeSSFDmDXGoT54SrU5xHLrVJ45xw55ErLeeR\n",
196 196 "S1KfMcglKXIGuSRFziCXpMgNpNxuJ7AHeBXYB5wNDAFfBk5Ibr8EeD73HkqSZpR2RF4FysBKQogD\n",
197 197 "rAU2AiuATcm6JKnDspRWGqfCrAJGk+VRYHUuPZIkZZJlRH4f8BBwRdI2DIwny+PJuiSpw9LWyN8C\n",
198 198 "7AKOJZRTtjbcXmXyCAdJUgelDfJdyfUzwF2EOvk4sAQYA5YCTze748jIyIHlcrlMuVxuradSTxqg\n",
199 199 "VCqxcOHR7NnzXNGdUUEqlQqVSqXl+6c5BPRIYD4wASwANgB/CJwPPAvcQNjRuZiDd3h6iL76VtpD\n",
200 200 "9KfbxvdO/8p6iH6aEfkwYRRe2/6LhDB/CLgTuJzJ6YeSpA7zpFlSmzgiV6s8aZYk9RmDXJIiZ5BL\n",
201 201 "UuQMcqmL+StDSsOdnVKb5LGz052f/cmdnZLUZwxySYqcQS5JkTPIJSlyBrkkRc4gl6TIGeSSFDmD\n",
202 202 "XJIiZ5BLUuQMcmmO2nMY/UDt6D5pVh6iL83RdIfRz/UQ/cZr30v9w0P0JanPGOSSFDmDXJIiZ5BL\n",
203 203 "UuQMckmKnEEuSZEzyCUpcga5JEXOIJekyBnkkhQ5g1ySImeQS1LkDHJJilzaIJ8PbAbuSdaHgI3A\n",
204 204 "NmADsDj/rkm9wlPSqr3SBvmHgSeYPPfmWkKQrwA2JeuSmnqFybeOlL80QX4c8E7gFibPj7sKGE2W\n",
205 205 "R4HV+XdNkpRGmiD/C+CjwP66tmFgPFkeT9YlSQUYmOX2dwFPE+rj5Wm2qTLD98aRkZEDy+VymXJ5\n",
206 206 "uoeRpP5UqVSoVCot33+2PTCfAH6DUOQ7HBgEvgqcRQj2MWApcD9wSpP7+1Nv6nlpfuqt+TX4U29q\n",
207 207 "Ju+fersWWAacCLwP+AYh2NcDa5Jt1gB3Z+2oJCkfWeeR14YE1wMXEKYfnpesS5IK0O7JrZZW1POK\n",
208 208 "KK0MDg4xMbEbgIULj2bPnufa+C9Up2UtrRjk0hwVEeST23HQbYpf3jVySVKXm236oaSOmO0w/trt\n",
209 209 "hwD7OtQnxcIgl7pC7TD+6cK8/vaZtlM/srQiSZEzyCUpcga5JEXOIJekyBnkkhQ5g1ySImeQS1Lk\n",
210 210 "DHJJipxBLkmRM8glKXIGuSRFziCXpMgZ5JIUOYNckiJnkEtS5AxySYqcQS5JkTPIpdyEn2MbHBwq\n",
211 211 "uiPqM/7Um5Sb8HNsExP+DJs6yxG5JEXOIJekyBnkUvSszfc7a+RS9KzN9ztH5JIUudmC/HDgAeBh\n",
212 212 "4Angk0n7ELAR2AZsABa3q4OSpJnNFuQ/Bt4OnAG8MVk+F1hLCPIVwKZkXZJUgDSllR8l14cC84Hd\n",
213 213 "wCpgNGkfBVbn3zVJUhppgnweobQyDtwPPA4MJ+sk18Nt6Z0kaVZpZq3sJ5RWFgFfJ5RX6lWTS1Mj\n",
214 214 "IyMHlsvlMuVyOWsfpcINDg4xMbGbhQuPZs+e54rujnpMpVKhUqm0fP+s85U+DrwEfAAoA2PAUsJI\n",
215 215 "/ZQm21er1WkzXopGqVQijFdKNL6m62+r36ZZ+9RrZrgt7fXUx/D91hvCayd9Ps9WWjmGyRkpRwAX\n",
216 216 "AJuB9cCapH0NcHemXkqScjNbaWUpYWfmvORyO2GWymbgTuByYCdwSfu6KEmaSbsPBbO0op7QrLRS\n",
217 217 "q5sH3VBaOQR4xTp+D8haWjHIpRSaBflMQV1UjdxaeW/Iu0YuSepyBrkkRc4gl6TIGeSSFDmDXJIi\n",
218 218 "Z5BLuRuozTqQOsIgl3IXfrFH6hSDXJIiZ5BLUuQMckmKnEEuSZEzyCUpcga5JEXOIJekyBnkkhQ5\n",
219 219 "g1ySImeQS1LkDHJJipxBLkmRM8glKXIDRXdAiounqFX3cUQuZVI7Ra2nqVX3MMglKXIGuSRFziCX\n",
220 220 "ZjA4OGRNXF3PIJdmMDGxG+vh6nYGuSRFLk2QLwPuBx4HHgM+lLQPARuBbcAGYHE7OihJmlmaIN8H\n",
221 221 "/C5wOnAO8EHgVGAtIchXAJuSdUldolbfHxwcKrorarNW9uLcDXwmubwNGAeWABXglIZtq9Wq9UXF\n",
222 222 "K+zorBLeKvXXNGnLet2+x6hWq1P67vswLskO9tT5nLVGvhxYCTwADBNCnOR6OONjSZJykOUQ/aOA\n",
223 223 "vwM+DEw03DbtoW4jIyMHlsvlMuVyOVMHJanXVSoVKpVKy/dPO3Q/BLgX+Brwl0nbVqAMjAFLCTtE\n",
224 224 "La2op1haURHaUVopAbcCTzAZ4gDrgTXJ8hpC7VyS1GFpEv9c4F+AR5gcAqwDvgvcCRwP7AQuAZ5v\n",
225 225 "uK8jckXNEbmKkHVE3u5jjw1yRc0gVxHaPWtFktRlDHJJipxBLkmRM8ilJjx9rWJikEtNePpaxcQg\n",
226 226 "l6TIGeSSFDmDXKpjbVwxMsilOtbGFSODXJIiZ5BLPWfA8lCfMcilnvMKlof6i0EuSZEzyCUpcga5\n",
227 227 "JEXOIJekyBnkkhQ5g1ySImeQS1LkDHJJipxBLkmRM8ilPlM7w+Pg4FDRXVFOBorugKTOqp3hcWLC\n",
228 228 "87H0CkfkkhQ5g1ySImeQS1LkDHJJipxBLkmRSxPknwfGgUfr2oaAjcA2YAOwOP+uSZLSSBPktwEX\n",
229 229 "NrStJQT5CmBTsi4pKuEn4ZxTHr80Qf5NYHdD2ypgNFkeBVbn2SlJnVD7SbhqMrdcsWq1Rj5MKLeQ\n",
230 230 "XA/n0x1JUlZ57Oys4i+9SlJhWj1EfxxYAowBS4Gnp9twZGTkwHK5XKZcLrf4lJJaE2rhCxcezZ49\n",
231 231 "zxXdGTVRqVSoVCot3z/tyRaWA/cAb0jWbwSeBW4g7OhcTPMdntVq1cG64lEqlQhfMGe7JsU23fcY\n",
232 232 "1Wq1yb+RA7epO4T/o9T5nKq0cgfwbeD1wJPAZcD1wAWE6YfnJeuSpAK0+/RnjsjVlQYHh5iY2H1Q\n",
233 233 "ucERubpB1hG5p7FVX/JUruolHqIvSZEzyCUpcga5+kbtJ86S+mMfGujjf3tvM8jVN2p18f49fq12\n",
234 234 "SL56jUEuSZEzyCUpcga5el6tNq6ZDHg624g5j1w9b7I2bphPL9TPnVcfJ0fkkhQ5g1x9zpKC4mdp\n",
235 235 "RX3OkoLi54hckiJnkEtS5AxySYqcQS5JkTPIJSlyBrkkRc4glwBP8aqYGeQS4CleFTODXJIiZ5BL\n",
236 236 "UuQMckmKnEEuSZHzpFmKyq5du3jxxRc57LDDWLZsWdHdkbqCI3JFY//+/Rx//AmsXHkhy5efyNjY\n",
237 237 "2JTba78E5Clp5yJMwyyVDm167d+2OzkiVzSq1SqvvvoqL7ywnQULjmfv3r1Tbq/9EpCnpJ2L2jTM\n",
238 238 "UtNr/7bdyRG5JEVurkF+IbAV+C/gmrl3R5KU1VyCfD7wGUKYnwa8Hzg1j07pYJVKpeguRGRqnVd5\n",
239 239 "mvrTeLX9Es3arKd3zlyC/GxgO7AT2Ad8Cbg4hz6pCYM8i1qddx8edp+32k/j7QYm90vAdQe11dbV\n",
240 240 "fnMJ8p8CnqxbfyppkyR10FyC3KGOClBlcPBXePnlZ5g3z331EoQ5Ra06Bxgh1MgB1gH7gRvqttkO\n",
241 241 "nDSH55CkfrQDeF0nnmggebLlwKHAw7izU5KicxHwPcLIe13BfZEkSZIE8B7gceBV4MyG29YRDh7a\n",
242 242 "Cryjw/3qBSOE2UGbk8uFM26t6XggW752Ao8QXpPfLbYr0fk8MA48Wtc2BGwEtgEbgMUF9ItTgBXA\n",
243 243 "/UwN8tMIdfRDCHX17XiKgKyuAz5SdCciN5/w2ltOeC26b2fufkAIH2X3VmAlU4P8RuBjyfI1wPWz\n",
244 244 "PUg7gnQr4ZOk0cXAHYSjNHYS3kxnt+H5e52HKs6NB7K1h6/L1nwTaDxyahUwmiyPAqtne5BOjoh/\n",
245 245 "klAWqPEAotZcDWwBbqWgr1yR80C2/FWB+4CHgCsK7ksvGCaUW0iuh2e7Q6unsd0ILGnSfi1wT4bH\n",
246 246 "8aCig033t/0D4Cbgj5L1Pwb+DLi8Q/3qFb7m8vcWYBdwLOH1u5Uw0tTcVUnxmm01yC9o4T4/BOp/\n",
247 247 "0uW4pE1Tpf3b3kK2D00Fja/DZUz9pqjsdiXXzwB3EcpXBnnrxgmDuTFgKfD0bHdod2mlvm62Hngf\n",
248 248 "4eChE4GTcQ93Vkvrlt/N1B0kSuchwmtvOeG1+F7Ca1OtORJYmCwvIMxG83U5N+uBNcnyGuDuIjrx\n",
249 249 "bkIN8iXCJ8rX6m67lrCjaSvwS53vWvS+QJjmtYXwnztr7UxNeSBbfk4kzPx5GHgM/55Z3QH8D7CX\n",
250 250 "kJuXEWYA3UfB0w8lSZIkSZIkSZIkSZIkSZIkSZIktcn/A4eK9UXawRDUAAAAAElFTkSuQmCC\n"
251 251 ],
252 252 "text/latex": [
253 253 "$\\mathcal{N}(\\mu=2, \\sigma=1),\\ N=1000$"
254 254 ],
255 255 "text/plain": [
256 256 "<__main__.Gaussian at 0x106e7ae10>"
257 257 ]
258 258 },
259 259 "execution_count": 4,
260 260 "metadata": {},
261 261 "output_type": "execute_result"
262 262 }
263 263 ],
264 264 "source": [
265 265 "x = Gaussian(2.0, 1.0)\n",
266 266 "x"
267 267 ]
268 268 },
269 269 {
270 270 "cell_type": "markdown",
271 271 "metadata": {},
272 272 "source": [
273 273 "You can also pass the object to the `display` function to display the default representation:"
274 274 ]
275 275 },
276 276 {
277 277 "cell_type": "code",
278 278 "execution_count": 5,
279 279 "metadata": {
280 280 "collapsed": false
281 281 },
282 282 "outputs": [
283 283 {
284 284 "data": {
285 285 "image/png": [
286 286 "iVBORw0KGgoAAAANSUhEUgAAAXIAAAENCAYAAAASUO4dAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
287 287 "AAALEgAACxIB0t1+/AAAElNJREFUeJzt3X+wXGV9x/H3JpefITfhCr1JSyCIRH5UJbQgrVhXChas\n",
288 288 "DXE6onbaBoownRG0tVUSOg63vxQY+8tRoVOQuTIOSq3QQGtNiGyr1SK0IfxqTBNNB2zuhUJoLogk\n",
289 289 "kO0fz9ncvZu9956z9+yefXbfr5mdPefZs7tPbnY/++z3POcsSJIkSZIkSZIkSZIkSZIkSZIkSZJ6\n",
290 290 "1olFd6DNlgJHFt0JKYt5RXdAXe8sYAtwEyHEzym2O233DPCxojshZVEqugPqGjcD/wrc3tB+E/BV\n",
291 291 "4EFgHXBNm57/1wij4bOBu4Avtel5Gp0B/Drw+3VtZwGnAl/oUB+m06xvq4HTgP3AD5n8/8raLqkH\n",
292 292 "fQf424a204GLkuU3AVe36blfV/fYxwC76UwJ5yOED6nbmtyWJcTfTPjweQoYSNqGCR9G9wI/n1Pf\n",
293 293 "FgH/Xrf+HeA1GduPaaEv6nKWVgQwH7gPOA84vK69DHwjWX5X3XLeTmeynPG/wHbgZ9r0XPX+HPj7\n",
294 294 "aW57hvABk8YDwD8B24BfTdrGCSH+HuDbOfXtF4An6ta3EP7PsrS/vYW+qMsNzL6J+sDpwCbCV/mL\n",
295 295 "CKNLgCOAl5Pls4BPZHzc1wJXzHD7vxHC6h+ZHPmXCCWW7RmfK+tz1kxXXtxC+DBJ0495wD7g08BH\n",
296 296 "gS8n7QuAl3Ls23HA83XrzwMnA89lbFePMcgFoS59O6EU8H5CkB8G7K3b5kigWrc+H/hn4Nxk/Vbg\n",
297 297 "k0wNvu8T6uqz2Qc8liz/MvAQ8PA0264A/gQ4FvhZoAL8A6HGn+U5a6rTtO9OniuNMwl9fowwkj4T\n",
298 298 "+I8mjz3Xvi0Gfly3vhc4KtkuS7t6jKUVQXhzvwysB94B/AQh3B+o22Z+w31+DvjvZLmUrLc6iq5Z\n",
299 299 "DFxK2MHXzBAhsH+TUCLYlGx78zTbpzHdiPwl4NCUj/FG4BHCDsXPEer9rwe+N4d+NevbREPbEYRR\n",
300 300 "d9Z29RhH5FoE/ChZniDUeq8CngU+W7fdKw33uxD4erK8Eni0yWNnKSWUgLXAB4AXgBOY/KCo+WDS\n",
301 301 "p9oo87C6vrfynDD9iHwR6UOvfkB0C+ED7Qngr3Lu2w7Ct5Ca1xBG/s+nbD8maZfUI44izET5babO\n",
302 302 "ZDgT+D8OroePMvVr+YPATyfLHweuBFbNoT8fItSklxC+DbwtaT+ZyaC8kTAtEEJd/1NzeL6aS2k+\n",
303 303 "a+Uq4Bfr1uv7Ue8QwjeEejcT6v55920BUz8wtxC+PWVtV49p/Lqs/lEGvkUoCdxb174LeAOwmamj\n",
304 304 "tyFCMPyAUJ9eRxjxLSSURBYBOwl14KzOJdTnrwR+D7ic8OEwQZjbvr3u8k7CTr8zCDX5/S08X81V\n",
305 305 "hNLMm5J/w2Ymd+5eCfw1k99E6vtRcxZh1H08oQw1kbR/n1DG+FbOfXshuawi/P/dSxjF78vYrj61\n",
306 306 "GPgK8J+Er4xvJryxNxKmXG1ItlFchjNsu5iwkxFCwPxp/t1p6lDgrR16rprDCTsti+6HlKtR4LeS\n",
307 307 "5QHC6OtGJuf+XgNcX0C/1Fm/QyjDfJrOzPMGeC+d/+Z4KWFnZdH9kHKziOZfl7cyOaJbkqyrt5WY\n",
308 308 "eWddL1gGXFx0J6S8nUGo/91GqJn+DaFWurtum1LDuiSpQ9LMIx8gzGT4XHL9ImGaWL0q00/jkiS1\n",
309 309 "UZp55E8llweT9a8QZiyMEUoqY4RDqp9uvONJJ51U3bFjRz49laT+sYP05/pJNSIfA55k8nDl84HH\n",
310 310 "gXuANUnbGuDug3qyYwfVatVLDpfrrruu8D700sW/p3/Pbr4AJ6UNcUh/ZOfVwBcJU7B2AJcR9uDf\n",
311 311 "SZjzuxO4JMsTS5LykTbItxAOfmh0fo59kSS1wJNmRaJcLhfdhZ7i3zNf/j2L1e6feqsm9R5JUkql\n",
312 312 "Ugky5LMjckmKnEEuSZEzyCUpcga5JEXOIJekyBnkUocMDg5RKpUYHBwquivqMU4/lDokTCmrAiV8\n",
313 313 "X2gmTj+UpD5jkEsdN0CpVLLMotxYWpE6pL60Mnn6fsssOpilFUnqMwa5JEXOIJe6iFMU1Qpr5FKH\n",
314 314 "pKmRO0VRYI1ckvqOQS5JkTPIJSlyBrkkRc4gl6TIGeSSFDmDXGoT54SrU5xHLrVJ45xw55ErLeeR\n",
315 315 "S1KfMcglKXIGuSRFziCXpMgNpNxuJ7AHeBXYB5wNDAFfBk5Ibr8EeD73HkqSZpR2RF4FysBKQogD\n",
316 316 "rAU2AiuATcm6JKnDspRWGqfCrAJGk+VRYHUuPZIkZZJlRH4f8BBwRdI2DIwny+PJuiSpw9LWyN8C\n",
317 317 "7AKOJZRTtjbcXmXyCAdJUgelDfJdyfUzwF2EOvk4sAQYA5YCTze748jIyIHlcrlMuVxuradSTxqg\n",
318 318 "VCqxcOHR7NnzXNGdUUEqlQqVSqXl+6c5BPRIYD4wASwANgB/CJwPPAvcQNjRuZiDd3h6iL76VtpD\n",
319 319 "9KfbxvdO/8p6iH6aEfkwYRRe2/6LhDB/CLgTuJzJ6YeSpA7zpFlSmzgiV6s8aZYk9RmDXJIiZ5BL\n",
320 320 "UuQMcqmL+StDSsOdnVKb5LGz052f/cmdnZLUZwxySYqcQS5JkTPIJSlyBrkkRc4gl6TIGeSSFDmD\n",
321 321 "XJIiZ5BLUuQMcmmO2nMY/UDt6D5pVh6iL83RdIfRz/UQ/cZr30v9w0P0JanPGOSSFDmDXJIiZ5BL\n",
322 322 "UuQMckmKnEEuSZEzyCUpcga5JEXOIJekyBnkkhQ5g1ySImeQS1LkDHJJilzaIJ8PbAbuSdaHgI3A\n",
323 323 "NmADsDj/rkm9wlPSqr3SBvmHgSeYPPfmWkKQrwA2JeuSmnqFybeOlL80QX4c8E7gFibPj7sKGE2W\n",
324 324 "R4HV+XdNkpRGmiD/C+CjwP66tmFgPFkeT9YlSQUYmOX2dwFPE+rj5Wm2qTLD98aRkZEDy+VymXJ5\n",
325 325 "uoeRpP5UqVSoVCot33+2PTCfAH6DUOQ7HBgEvgqcRQj2MWApcD9wSpP7+1Nv6nlpfuqt+TX4U29q\n",
326 326 "Ju+fersWWAacCLwP+AYh2NcDa5Jt1gB3Z+2oJCkfWeeR14YE1wMXEKYfnpesS5IK0O7JrZZW1POK\n",
327 327 "KK0MDg4xMbEbgIULj2bPnufa+C9Up2UtrRjk0hwVEeST23HQbYpf3jVySVKXm236oaSOmO0w/trt\n",
328 328 "hwD7OtQnxcIgl7pC7TD+6cK8/vaZtlM/srQiSZEzyCUpcga5JEXOIJekyBnkkhQ5g1ySImeQS1Lk\n",
329 329 "DHJJipxBLkmRM8glKXIGuSRFziCXpMgZ5JIUOYNckiJnkEtS5AxySYqcQS5JkTPIpdyEn2MbHBwq\n",
330 330 "uiPqM/7Um5Sb8HNsExP+DJs6yxG5JEXOIJekyBnkUvSszfc7a+RS9KzN9ztH5JIUudmC/HDgAeBh\n",
331 331 "4Angk0n7ELAR2AZsABa3q4OSpJnNFuQ/Bt4OnAG8MVk+F1hLCPIVwKZkXZJUgDSllR8l14cC84Hd\n",
332 332 "wCpgNGkfBVbn3zVJUhppgnweobQyDtwPPA4MJ+sk18Nt6Z0kaVZpZq3sJ5RWFgFfJ5RX6lWTS1Mj\n",
333 333 "IyMHlsvlMuVyOWsfpcINDg4xMbGbhQuPZs+e54rujnpMpVKhUqm0fP+s85U+DrwEfAAoA2PAUsJI\n",
334 334 "/ZQm21er1WkzXopGqVQijFdKNL6m62+r36ZZ+9RrZrgt7fXUx/D91hvCayd9Ps9WWjmGyRkpRwAX\n",
335 335 "AJuB9cCapH0NcHemXkqScjNbaWUpYWfmvORyO2GWymbgTuByYCdwSfu6KEmaSbsPBbO0op7QrLRS\n",
336 336 "q5sH3VBaOQR4xTp+D8haWjHIpRSaBflMQV1UjdxaeW/Iu0YuSepyBrkkRc4gl6TIGeSSFDmDXJIi\n",
337 337 "Z5BLuRuozTqQOsIgl3IXfrFH6hSDXJIiZ5BLUuQMckmKnEEuSZEzyCUpcga5JEXOIJekyBnkkhQ5\n",
338 338 "g1ySImeQS1LkDHJJipxBLkmRM8glKXIDRXdAiounqFX3cUQuZVI7Ra2nqVX3MMglKXIGuSRFziCX\n",
339 339 "ZjA4OGRNXF3PIJdmMDGxG+vh6nYGuSRFLk2QLwPuBx4HHgM+lLQPARuBbcAGYHE7OihJmlmaIN8H\n",
340 340 "/C5wOnAO8EHgVGAtIchXAJuSdUldolbfHxwcKrorarNW9uLcDXwmubwNGAeWABXglIZtq9Wq9UXF\n",
341 341 "K+zorBLeKvXXNGnLet2+x6hWq1P67vswLskO9tT5nLVGvhxYCTwADBNCnOR6OONjSZJykOUQ/aOA\n",
342 342 "vwM+DEw03DbtoW4jIyMHlsvlMuVyOVMHJanXVSoVKpVKy/dPO3Q/BLgX+Brwl0nbVqAMjAFLCTtE\n",
343 343 "La2op1haURHaUVopAbcCTzAZ4gDrgTXJ8hpC7VyS1GFpEv9c4F+AR5gcAqwDvgvcCRwP7AQuAZ5v\n",
344 344 "uK8jckXNEbmKkHVE3u5jjw1yRc0gVxHaPWtFktRlDHJJipxBLkmRM8ilJjx9rWJikEtNePpaxcQg\n",
345 345 "l6TIGeSSFDmDXKpjbVwxMsilOtbGFSODXJIiZ5BLPWfA8lCfMcilnvMKlof6i0EuSZEzyCUpcga5\n",
346 346 "JEXOIJekyBnkkhQ5g1ySImeQS1LkDHJJipxBLkmRM8ilPlM7w+Pg4FDRXVFOBorugKTOqp3hcWLC\n",
347 347 "87H0CkfkkhQ5g1ySImeQS1LkDHJJipxBLkmRSxPknwfGgUfr2oaAjcA2YAOwOP+uSZLSSBPktwEX\n",
348 348 "NrStJQT5CmBTsi4pKuEn4ZxTHr80Qf5NYHdD2ypgNFkeBVbn2SlJnVD7SbhqMrdcsWq1Rj5MKLeQ\n",
349 349 "XA/n0x1JUlZ57Oys4i+9SlJhWj1EfxxYAowBS4Gnp9twZGTkwHK5XKZcLrf4lJJaE2rhCxcezZ49\n",
350 350 "zxXdGTVRqVSoVCot3z/tyRaWA/cAb0jWbwSeBW4g7OhcTPMdntVq1cG64lEqlQhfMGe7JsU23fcY\n",
351 351 "1Wq1yb+RA7epO4T/o9T5nKq0cgfwbeD1wJPAZcD1wAWE6YfnJeuSpAK0+/RnjsjVlQYHh5iY2H1Q\n",
352 352 "ucERubpB1hG5p7FVX/JUruolHqIvSZEzyCUpcga5+kbtJ86S+mMfGujjf3tvM8jVN2p18f49fq12\n",
353 353 "SL56jUEuSZEzyCUpcga5el6tNq6ZDHg624g5j1w9b7I2bphPL9TPnVcfJ0fkkhQ5g1x9zpKC4mdp\n",
354 354 "RX3OkoLi54hckiJnkEtS5AxySYqcQS5JkTPIJSlyBrkkRc4glwBP8aqYGeQS4CleFTODXJIiZ5BL\n",
355 355 "UuQMckmKnEEuSZHzpFmKyq5du3jxxRc57LDDWLZsWdHdkbqCI3JFY//+/Rx//AmsXHkhy5efyNjY\n",
356 356 "2JTba78E5Clp5yJMwyyVDm167d+2OzkiVzSq1SqvvvoqL7ywnQULjmfv3r1Tbq/9EpCnpJ2L2jTM\n",
357 357 "UtNr/7bdyRG5JEVurkF+IbAV+C/gmrl3R5KU1VyCfD7wGUKYnwa8Hzg1j07pYJVKpeguRGRqnVd5\n",
358 358 "mvrTeLX9Es3arKd3zlyC/GxgO7AT2Ad8Cbg4hz6pCYM8i1qddx8edp+32k/j7QYm90vAdQe11dbV\n",
359 359 "fnMJ8p8CnqxbfyppkyR10FyC3KGOClBlcPBXePnlZ5g3z331EoQ5Ra06Bxgh1MgB1gH7gRvqttkO\n",
360 360 "nDSH55CkfrQDeF0nnmggebLlwKHAw7izU5KicxHwPcLIe13BfZEkSZIE8B7gceBV4MyG29YRDh7a\n",
361 361 "Cryjw/3qBSOE2UGbk8uFM26t6XggW752Ao8QXpPfLbYr0fk8MA48Wtc2BGwEtgEbgMUF9ItTgBXA\n",
362 362 "/UwN8tMIdfRDCHX17XiKgKyuAz5SdCciN5/w2ltOeC26b2fufkAIH2X3VmAlU4P8RuBjyfI1wPWz\n",
363 363 "PUg7gnQr4ZOk0cXAHYSjNHYS3kxnt+H5e52HKs6NB7K1h6/L1nwTaDxyahUwmiyPAqtne5BOjoh/\n",
364 364 "klAWqPEAotZcDWwBbqWgr1yR80C2/FWB+4CHgCsK7ksvGCaUW0iuh2e7Q6unsd0ILGnSfi1wT4bH\n",
365 365 "8aCig033t/0D4Cbgj5L1Pwb+DLi8Q/3qFb7m8vcWYBdwLOH1u5Uw0tTcVUnxmm01yC9o4T4/BOp/\n",
366 366 "0uW4pE1Tpf3b3kK2D00Fja/DZUz9pqjsdiXXzwB3EcpXBnnrxgmDuTFgKfD0bHdod2mlvm62Hngf\n",
367 367 "4eChE4GTcQ93Vkvrlt/N1B0kSuchwmtvOeG1+F7Ca1OtORJYmCwvIMxG83U5N+uBNcnyGuDuIjrx\n",
368 368 "bkIN8iXCJ8rX6m67lrCjaSvwS53vWvS+QJjmtYXwnztr7UxNeSBbfk4kzPx5GHgM/55Z3QH8D7CX\n",
369 369 "kJuXEWYA3UfB0w8lSZIkSZIkSZIkSZIkSZIkSZIktcn/A4eK9UXawRDUAAAAAElFTkSuQmCC\n"
370 370 ],
371 371 "text/latex": [
372 372 "$\\mathcal{N}(\\mu=2, \\sigma=1),\\ N=1000$"
373 373 ],
374 374 "text/plain": [
375 375 "<__main__.Gaussian at 0x106e7ae10>"
376 376 ]
377 377 },
378 378 "metadata": {},
379 379 "output_type": "display_data"
380 380 }
381 381 ],
382 382 "source": [
383 383 "display(x)"
384 384 ]
385 385 },
386 386 {
387 387 "cell_type": "markdown",
388 388 "metadata": {},
389 389 "source": [
390 390 "Use `display_png` to view the PNG representation:"
391 391 ]
392 392 },
393 393 {
394 394 "cell_type": "code",
395 395 "execution_count": 6,
396 396 "metadata": {
397 397 "collapsed": false
398 398 },
399 399 "outputs": [
400 400 {
401 401 "data": {
402 402 "image/png": [
403 403 "iVBORw0KGgoAAAANSUhEUgAAAXIAAAENCAYAAAASUO4dAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
404 404 "AAALEgAACxIB0t1+/AAAElNJREFUeJzt3X+wXGV9x/H3JpefITfhCr1JSyCIRH5UJbQgrVhXChas\n",
405 405 "DXE6onbaBoownRG0tVUSOg63vxQY+8tRoVOQuTIOSq3QQGtNiGyr1SK0IfxqTBNNB2zuhUJoLogk\n",
406 406 "kO0fz9ncvZu9956z9+yefXbfr5mdPefZs7tPbnY/++z3POcsSJIkSZIkSZIkSZIkSZIkSZIkSZJ6\n",
407 407 "1olFd6DNlgJHFt0JKYt5RXdAXe8sYAtwEyHEzym2O233DPCxojshZVEqugPqGjcD/wrc3tB+E/BV\n",
408 408 "4EFgHXBNm57/1wij4bOBu4Avtel5Gp0B/Drw+3VtZwGnAl/oUB+m06xvq4HTgP3AD5n8/8raLqkH\n",
409 409 "fQf424a204GLkuU3AVe36blfV/fYxwC76UwJ5yOED6nbmtyWJcTfTPjweQoYSNqGCR9G9wI/n1Pf\n",
410 410 "FgH/Xrf+HeA1GduPaaEv6nKWVgQwH7gPOA84vK69DHwjWX5X3XLeTmeynPG/wHbgZ9r0XPX+HPj7\n",
411 411 "aW57hvABk8YDwD8B24BfTdrGCSH+HuDbOfXtF4An6ta3EP7PsrS/vYW+qMsNzL6J+sDpwCbCV/mL\n",
412 412 "CKNLgCOAl5Pls4BPZHzc1wJXzHD7vxHC6h+ZHPmXCCWW7RmfK+tz1kxXXtxC+DBJ0495wD7g08BH\n",
413 413 "gS8n7QuAl3Ls23HA83XrzwMnA89lbFePMcgFoS59O6EU8H5CkB8G7K3b5kigWrc+H/hn4Nxk/Vbg\n",
414 414 "k0wNvu8T6uqz2Qc8liz/MvAQ8PA0264A/gQ4FvhZoAL8A6HGn+U5a6rTtO9OniuNMwl9fowwkj4T\n",
415 415 "+I8mjz3Xvi0Gfly3vhc4KtkuS7t6jKUVQXhzvwysB94B/AQh3B+o22Z+w31+DvjvZLmUrLc6iq5Z\n",
416 416 "DFxK2MHXzBAhsH+TUCLYlGx78zTbpzHdiPwl4NCUj/FG4BHCDsXPEer9rwe+N4d+NevbREPbEYRR\n",
417 417 "d9Z29RhH5FoE/ChZniDUeq8CngU+W7fdKw33uxD4erK8Eni0yWNnKSWUgLXAB4AXgBOY/KCo+WDS\n",
418 418 "p9oo87C6vrfynDD9iHwR6UOvfkB0C+ED7Qngr3Lu2w7Ct5Ca1xBG/s+nbD8maZfUI44izET5babO\n",
419 419 "ZDgT+D8OroePMvVr+YPATyfLHweuBFbNoT8fItSklxC+DbwtaT+ZyaC8kTAtEEJd/1NzeL6aS2k+\n",
420 420 "a+Uq4Bfr1uv7Ue8QwjeEejcT6v55920BUz8wtxC+PWVtV49p/Lqs/lEGvkUoCdxb174LeAOwmamj\n",
421 421 "tyFCMPyAUJ9eRxjxLSSURBYBOwl14KzOJdTnrwR+D7ic8OEwQZjbvr3u8k7CTr8zCDX5/S08X81V\n",
422 422 "hNLMm5J/w2Ymd+5eCfw1k99E6vtRcxZh1H08oQw1kbR/n1DG+FbOfXshuawi/P/dSxjF78vYrj61\n",
423 423 "GPgK8J+Er4xvJryxNxKmXG1ItlFchjNsu5iwkxFCwPxp/t1p6lDgrR16rprDCTsti+6HlKtR4LeS\n",
424 424 "5QHC6OtGJuf+XgNcX0C/1Fm/QyjDfJrOzPMGeC+d/+Z4KWFnZdH9kHKziOZfl7cyOaJbkqyrt5WY\n",
425 425 "eWddL1gGXFx0J6S8nUGo/91GqJn+DaFWurtum1LDuiSpQ9LMIx8gzGT4XHL9ImGaWL0q00/jkiS1\n",
426 426 "UZp55E8llweT9a8QZiyMEUoqY4RDqp9uvONJJ51U3bFjRz49laT+sYP05/pJNSIfA55k8nDl84HH\n",
427 427 "gXuANUnbGuDug3qyYwfVatVLDpfrrruu8D700sW/p3/Pbr4AJ6UNcUh/ZOfVwBcJU7B2AJcR9uDf\n",
428 428 "SZjzuxO4JMsTS5LykTbItxAOfmh0fo59kSS1wJNmRaJcLhfdhZ7i3zNf/j2L1e6feqsm9R5JUkql\n",
429 429 "Ugky5LMjckmKnEEuSZEzyCUpcga5JEXOIJekyBnkUocMDg5RKpUYHBwquivqMU4/lDokTCmrAiV8\n",
430 430 "X2gmTj+UpD5jkEsdN0CpVLLMotxYWpE6pL60Mnn6fsssOpilFUnqMwa5JEXOIJe6iFMU1Qpr5FKH\n",
431 431 "pKmRO0VRYI1ckvqOQS5JkTPIJSlyBrkkRc4gl6TIGeSSFDmDXGoT54SrU5xHLrVJ45xw55ErLeeR\n",
432 432 "S1KfMcglKXIGuSRFziCXpMgNpNxuJ7AHeBXYB5wNDAFfBk5Ibr8EeD73HkqSZpR2RF4FysBKQogD\n",
433 433 "rAU2AiuATcm6JKnDspRWGqfCrAJGk+VRYHUuPZIkZZJlRH4f8BBwRdI2DIwny+PJuiSpw9LWyN8C\n",
434 434 "7AKOJZRTtjbcXmXyCAdJUgelDfJdyfUzwF2EOvk4sAQYA5YCTze748jIyIHlcrlMuVxuradSTxqg\n",
435 435 "VCqxcOHR7NnzXNGdUUEqlQqVSqXl+6c5BPRIYD4wASwANgB/CJwPPAvcQNjRuZiDd3h6iL76VtpD\n",
436 436 "9KfbxvdO/8p6iH6aEfkwYRRe2/6LhDB/CLgTuJzJ6YeSpA7zpFlSmzgiV6s8aZYk9RmDXJIiZ5BL\n",
437 437 "UuQMcqmL+StDSsOdnVKb5LGz052f/cmdnZLUZwxySYqcQS5JkTPIJSlyBrkkRc4gl6TIGeSSFDmD\n",
438 438 "XJIiZ5BLUuQMcmmO2nMY/UDt6D5pVh6iL83RdIfRz/UQ/cZr30v9w0P0JanPGOSSFDmDXJIiZ5BL\n",
439 439 "UuQMckmKnEEuSZEzyCUpcga5JEXOIJekyBnkkhQ5g1ySImeQS1LkDHJJilzaIJ8PbAbuSdaHgI3A\n",
440 440 "NmADsDj/rkm9wlPSqr3SBvmHgSeYPPfmWkKQrwA2JeuSmnqFybeOlL80QX4c8E7gFibPj7sKGE2W\n",
441 441 "R4HV+XdNkpRGmiD/C+CjwP66tmFgPFkeT9YlSQUYmOX2dwFPE+rj5Wm2qTLD98aRkZEDy+VymXJ5\n",
442 442 "uoeRpP5UqVSoVCot33+2PTCfAH6DUOQ7HBgEvgqcRQj2MWApcD9wSpP7+1Nv6nlpfuqt+TX4U29q\n",
443 443 "Ju+fersWWAacCLwP+AYh2NcDa5Jt1gB3Z+2oJCkfWeeR14YE1wMXEKYfnpesS5IK0O7JrZZW1POK\n",
444 444 "KK0MDg4xMbEbgIULj2bPnufa+C9Up2UtrRjk0hwVEeST23HQbYpf3jVySVKXm236oaSOmO0w/trt\n",
445 445 "hwD7OtQnxcIgl7pC7TD+6cK8/vaZtlM/srQiSZEzyCUpcga5JEXOIJekyBnkkhQ5g1ySImeQS1Lk\n",
446 446 "DHJJipxBLkmRM8glKXIGuSRFziCXpMgZ5JIUOYNckiJnkEtS5AxySYqcQS5JkTPIpdyEn2MbHBwq\n",
447 447 "uiPqM/7Um5Sb8HNsExP+DJs6yxG5JEXOIJekyBnkUvSszfc7a+RS9KzN9ztH5JIUudmC/HDgAeBh\n",
448 448 "4Angk0n7ELAR2AZsABa3q4OSpJnNFuQ/Bt4OnAG8MVk+F1hLCPIVwKZkXZJUgDSllR8l14cC84Hd\n",
449 449 "wCpgNGkfBVbn3zVJUhppgnweobQyDtwPPA4MJ+sk18Nt6Z0kaVZpZq3sJ5RWFgFfJ5RX6lWTS1Mj\n",
450 450 "IyMHlsvlMuVyOWsfpcINDg4xMbGbhQuPZs+e54rujnpMpVKhUqm0fP+s85U+DrwEfAAoA2PAUsJI\n",
451 451 "/ZQm21er1WkzXopGqVQijFdKNL6m62+r36ZZ+9RrZrgt7fXUx/D91hvCayd9Ps9WWjmGyRkpRwAX\n",
452 452 "AJuB9cCapH0NcHemXkqScjNbaWUpYWfmvORyO2GWymbgTuByYCdwSfu6KEmaSbsPBbO0op7QrLRS\n",
453 453 "q5sH3VBaOQR4xTp+D8haWjHIpRSaBflMQV1UjdxaeW/Iu0YuSepyBrkkRc4gl6TIGeSSFDmDXJIi\n",
454 454 "Z5BLuRuozTqQOsIgl3IXfrFH6hSDXJIiZ5BLUuQMckmKnEEuSZEzyCUpcga5JEXOIJekyBnkkhQ5\n",
455 455 "g1ySImeQS1LkDHJJipxBLkmRM8glKXIDRXdAiounqFX3cUQuZVI7Ra2nqVX3MMglKXIGuSRFziCX\n",
456 456 "ZjA4OGRNXF3PIJdmMDGxG+vh6nYGuSRFLk2QLwPuBx4HHgM+lLQPARuBbcAGYHE7OihJmlmaIN8H\n",
457 457 "/C5wOnAO8EHgVGAtIchXAJuSdUldolbfHxwcKrorarNW9uLcDXwmubwNGAeWABXglIZtq9Wq9UXF\n",
458 458 "K+zorBLeKvXXNGnLet2+x6hWq1P67vswLskO9tT5nLVGvhxYCTwADBNCnOR6OONjSZJykOUQ/aOA\n",
459 459 "vwM+DEw03DbtoW4jIyMHlsvlMuVyOVMHJanXVSoVKpVKy/dPO3Q/BLgX+Brwl0nbVqAMjAFLCTtE\n",
460 460 "La2op1haURHaUVopAbcCTzAZ4gDrgTXJ8hpC7VyS1GFpEv9c4F+AR5gcAqwDvgvcCRwP7AQuAZ5v\n",
461 461 "uK8jckXNEbmKkHVE3u5jjw1yRc0gVxHaPWtFktRlDHJJipxBLkmRM8ilJjx9rWJikEtNePpaxcQg\n",
462 462 "l6TIGeSSFDmDXKpjbVwxMsilOtbGFSODXJIiZ5BLPWfA8lCfMcilnvMKlof6i0EuSZEzyCUpcga5\n",
463 463 "JEXOIJekyBnkkhQ5g1ySImeQS1LkDHJJipxBLkmRM8ilPlM7w+Pg4FDRXVFOBorugKTOqp3hcWLC\n",
464 464 "87H0CkfkkhQ5g1ySImeQS1LkDHJJipxBLkmRSxPknwfGgUfr2oaAjcA2YAOwOP+uSZLSSBPktwEX\n",
465 465 "NrStJQT5CmBTsi4pKuEn4ZxTHr80Qf5NYHdD2ypgNFkeBVbn2SlJnVD7SbhqMrdcsWq1Rj5MKLeQ\n",
466 466 "XA/n0x1JUlZ57Oys4i+9SlJhWj1EfxxYAowBS4Gnp9twZGTkwHK5XKZcLrf4lJJaE2rhCxcezZ49\n",
467 467 "zxXdGTVRqVSoVCot3z/tyRaWA/cAb0jWbwSeBW4g7OhcTPMdntVq1cG64lEqlQhfMGe7JsU23fcY\n",
468 468 "1Wq1yb+RA7epO4T/o9T5nKq0cgfwbeD1wJPAZcD1wAWE6YfnJeuSpAK0+/RnjsjVlQYHh5iY2H1Q\n",
469 469 "ucERubpB1hG5p7FVX/JUruolHqIvSZEzyCUpcga5+kbtJ86S+mMfGujjf3tvM8jVN2p18f49fq12\n",
470 470 "SL56jUEuSZEzyCUpcga5el6tNq6ZDHg624g5j1w9b7I2bphPL9TPnVcfJ0fkkhQ5g1x9zpKC4mdp\n",
471 471 "RX3OkoLi54hckiJnkEtS5AxySYqcQS5JkTPIJSlyBrkkRc4glwBP8aqYGeQS4CleFTODXJIiZ5BL\n",
472 472 "UuQMckmKnEEuSZHzpFmKyq5du3jxxRc57LDDWLZsWdHdkbqCI3JFY//+/Rx//AmsXHkhy5efyNjY\n",
473 473 "2JTba78E5Clp5yJMwyyVDm167d+2OzkiVzSq1SqvvvoqL7ywnQULjmfv3r1Tbq/9EpCnpJ2L2jTM\n",
474 474 "UtNr/7bdyRG5JEVurkF+IbAV+C/gmrl3R5KU1VyCfD7wGUKYnwa8Hzg1j07pYJVKpeguRGRqnVd5\n",
475 475 "mvrTeLX9Es3arKd3zlyC/GxgO7AT2Ad8Cbg4hz6pCYM8i1qddx8edp+32k/j7QYm90vAdQe11dbV\n",
476 476 "fnMJ8p8CnqxbfyppkyR10FyC3KGOClBlcPBXePnlZ5g3z331EoQ5Ra06Bxgh1MgB1gH7gRvqttkO\n",
477 477 "nDSH55CkfrQDeF0nnmggebLlwKHAw7izU5KicxHwPcLIe13BfZEkSZIE8B7gceBV4MyG29YRDh7a\n",
478 478 "Cryjw/3qBSOE2UGbk8uFM26t6XggW752Ao8QXpPfLbYr0fk8MA48Wtc2BGwEtgEbgMUF9ItTgBXA\n",
479 479 "/UwN8tMIdfRDCHX17XiKgKyuAz5SdCciN5/w2ltOeC26b2fufkAIH2X3VmAlU4P8RuBjyfI1wPWz\n",
480 480 "PUg7gnQr4ZOk0cXAHYSjNHYS3kxnt+H5e52HKs6NB7K1h6/L1nwTaDxyahUwmiyPAqtne5BOjoh/\n",
481 481 "klAWqPEAotZcDWwBbqWgr1yR80C2/FWB+4CHgCsK7ksvGCaUW0iuh2e7Q6unsd0ILGnSfi1wT4bH\n",
482 482 "8aCig033t/0D4Cbgj5L1Pwb+DLi8Q/3qFb7m8vcWYBdwLOH1u5Uw0tTcVUnxmm01yC9o4T4/BOp/\n",
483 483 "0uW4pE1Tpf3b3kK2D00Fja/DZUz9pqjsdiXXzwB3EcpXBnnrxgmDuTFgKfD0bHdod2mlvm62Hngf\n",
484 484 "4eChE4GTcQ93Vkvrlt/N1B0kSuchwmtvOeG1+F7Ca1OtORJYmCwvIMxG83U5N+uBNcnyGuDuIjrx\n",
485 485 "bkIN8iXCJ8rX6m67lrCjaSvwS53vWvS+QJjmtYXwnztr7UxNeSBbfk4kzPx5GHgM/55Z3QH8D7CX\n",
486 486 "kJuXEWYA3UfB0w8lSZIkSZIkSZIkSZIkSZIkSZIktcn/A4eK9UXawRDUAAAAAElFTkSuQmCC\n"
487 487 ]
488 488 },
489 489 "metadata": {},
490 490 "output_type": "display_data"
491 491 }
492 492 ],
493 493 "source": [
494 494 "display_png(x)"
495 495 ]
496 496 },
497 497 {
498 498 "cell_type": "markdown",
499 499 "metadata": {},
500 500 "source": [
501 501 "<div class=\"alert alert-success\">\n",
502 502 "It is important to note a subtle different between <code>display</code> and <code>display_png</code>. The former computes <em>all</em> representations of the object, and lets the notebook UI decide which to display. The later only computes the PNG representation.\n",
503 503 "</div>"
504 504 ]
505 505 },
506 506 {
507 507 "cell_type": "markdown",
508 508 "metadata": {},
509 509 "source": [
510 510 "Create a new Gaussian with different parameters:"
511 511 ]
512 512 },
513 513 {
514 514 "cell_type": "code",
515 515 "execution_count": 7,
516 516 "metadata": {
517 517 "collapsed": false
518 518 },
519 519 "outputs": [
520 520 {
521 521 "data": {
522 522 "image/png": [
523 523 "iVBORw0KGgoAAAANSUhEUgAAAXcAAAENCAYAAAD0eSVZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
524 524 "AAALEgAACxIB0t1+/AAAE3lJREFUeJzt3X2UXOVBx/HvkE2AQJZ0S00CpCZNGyHYVmIDVEEGBExr\n",
525 525 "TwjHU160GFqKx9PSUvW0JKBlfSlStGp7tPQIpSdUCaZa3qStCSmjPYq8CAkvIQ2JRgltFoSk2R6j\n",
526 526 "hDL+8dzJ3pmd3Z258/7M93POnNx79748XO7+9pnnPve5IEmSJEmSJEmSJEmSJEmSJEmSJElSD1jY\n",
527 527 "6QK02DxgZqcLIdXqsE4XQD1rGbAFuJkQ7Kd3tjgt9xLwqU4XQqpVrtMFUNf7EvDPwFcrlt8MfB14\n",
528 528 "FFgDXNOi468ElgCvAy9UKUcr/DKhpn4qcBdwZ7J8GXAScHsbyjCRico20Xmqd7mkPvEQ8LWKZScD\n",
529 529 "70mm3wl8rEXHPgb4t4qyHNuiY5W8lbH/nmOBvZQ3OdUT7KcRAng3MJAsm0MI5L8HfqYJZVtA9fP0\n",
530 530 "xjqXt/q8qs1sltFkpgEPAOcAR6SW54FvJ9PvS003288BW1PzW4CzW3SskpMZa375b2AH8NOpn79E\n",
531 531 "CNlaPAx8C9gO/FKybIQQ7O8H/qUJZVtG9fN0Tp3LW31e1WYDU6+iPnYysAn4KUJN/a5k+ZHA/yXT\n",
532 532 "y4Ab6tzvW4ArJ/n5vwL3ACcA+1LL9wFvq/NY9R7zG4x9K8kRmkB2pNbbQgj7HUztMOAg8AXgk8Df\n",
533 533 "JMuPAg40qWzPAe+m+nl6pc7liojhrsmcSmiLvRO4lBDuhwOvptaZCRRT89OAfwTOSOa/DPwh5WH4\n",
534 534 "74R2+qnMBv43Nf8qcPQE6y4G/gB4E/AuoADcT7hnUM8xDwJPJ9O/CDwGbE79fG9yrFosTbZ/GviT\n",
535 535 "ZP5xys9XM8r2Xqqfp2KdyxURm2U0maMJNfR7gfOBHyME/sOpdaZVbPNu4D+T6VwyX0stt5pRym/6\n",
536 536 "H0modVYaIoT4rxKaFzYBH2As2LOYDVye7CftADCjxn28A3iScNPyi4T28p8AvttAuaqVbT/Vz9NE\n",
537 537 "56/W86oeZs1dEzkG+J9kepTQdnwV8DLwF6n1XqvYbjnwD8n0KcBTVfZdazPETkItvORYQs230keT\n",
538 538 "MpVqo4enyl7vMSEE32rgw8APgR9n7A/WMdQehOnK062EP3Jbgc83uWyV5+mNhPO0r8blE51XSRE5\n",
539 539 "mtAD5tcp70GxFPgB49vX11L+lf5R4CeT6d8Bfg1YkbEsR1H+x2EL4dsDhDbiUnjeROiiCOE+wR9n\n",
540 540 "PF7Jxwnt6nMJ31TOSv3sKuDnU/PpcqRNJ3yTSPsSod282WWbSfXzNNH5m+y8SorU+YRmhM9U+dlf\n",
541 541 "E2qMaR8i9MCA0N49AlxLaAf+LeA64NwGynMZ8NvAp4FfSS1/lvAtAUJXxasJPVKuprFvpGcAPyKc\n",
542 542 "g9eT6eNTP7+V8p5D6XKULCM8A/BXFdsuoba29Sxlm+g81btcfeI2wi9r+q/8HxEu6C2EC/iY1M/W\n",
543 543 "EO7ebyOEhHrTnDrWnU24kQmhDbjaH4VWmAGc2aZjlRxBuDHa6XJIDTuT8e2m5zH2NfTG5AOhVrKZ\n",
544 544 "8HV0AaF90Ru2/eEThCacL1DeJ7yVLmb8zdxWu5xwQ7TT5ZCaYgHVb4oBXEj46gnjH0H/FvGPN6Ig\n",
545 545 "x+Q3BGMwH7ig04WQatVob5kPAeuS6eMId/VLdlPe3qh4FYFbOl2IFns++Ug9oZFmk+sIDz/cMck6\n",
546 546 "lQ9rSJLaIGvN/XJCb4h0l7AXCF9dS05IlpVZtGhRcefOnRkPK0l9aye1j2uUqea+nDBOxgWUP8J8\n",
547 547 "L3AJoffAQkL/30fGlW7nTorFop8mfa6//vqOlyGmj+fT89mtH2BRPUE9Vc19HeEhiWMJ7Y3XE26c\n",
548 548 "zgA2Jus8BHyE8OTd+uTf15JlNstIUgdMFe6XVll22yTr30D9IwRKkprMfug9Lp/Pd7oIUfF8Npfn\n",
549 549 "s3M68Zq9YtJ+JEmqUS6Xgzoy25q7JEXIcJekCBnukhQhw12SImS4S1KEDHf1jcHBIXK53KHP4OBQ\n",
550 550 "p4sktYxdIdU3Qley9LWXw2tRvcKukJIkw12SYmS4S1KEDHdpEt6EVa/yhqr6RpYbqt6EVbfwhqqU\n",
551 551 "qKx1S/3EmruiVa3Wbc1dvcqauyTJcJekGBnukhQhw12SImS4S1KEDHdJipDhLjWgsi+9T7GqW9jP\n",
552 552 "XdFqRz/38T+vbb9SveznLkky3CUpRoa7JEXIcJdSHGxMsZgq3G8DRoCnUsuGgI3AdmADMDv1szXA\n",
553 553 "c8A24PzmFVNqj9HRvYQbpKWP1JumCvevAMsrlq0mhPtiYFMyD7AEuDj5dznwxRr2L3XQwLhujFIs\n",
554 554 "pgrf7wB7K5atANYm02uBlcn0BcA64CCwC9gBnNqUUkot8RrltXRr6opHlpr1HEJTDcm/c5Lp44Dd\n",
555 555 "qfV2A8dnL5okKatGm02mqu5YFZKkDhjIsM0IMBfYA8wDXkyWvwDMT613QrJsnOHh4UPT+XyefD6f\n",
556 556 "oRiSFK9CoUChUMi8fS13kBYA9wFvT+ZvAl4GPku4mTo7+XcJcAehnf144AHgrYyvvTv8gNqiluEH\n",
557 557 "qg0dUM+QBQ4/oHapd/iBqWru64CzgGOB54FPAzcC64ErCDdOL0rW3Zos30q4U/URbJaRpI5w4DBF\n",
558 558 "y5q7YuLAYZIkw12SYmS4S1KEDHdJipDhLkkRMtzVEyqH4vU9pdLk7AqpnjDVu0xr3caukOpVzX6I\n",
559 559 "SVKZAYcGVk8w3KW6lIYJLjHo1Z1sc5ekCBnukhQhw12SImS4S1KEDHdJipDhLkkRMtwlKUKGuyRF\n",
560 560 "yHCXpAj5hKp6VOUwANOBg50qjNR1DHf1qGrDAFQbBEzqTzbLSFKEDHdJipDhLkkRMtwlKUKGuyRF\n",
561 561 "yHCXpAgZ7pIUIcNdkiJkuEtShBoJ9zXAM8BTwB3A4cAQsBHYDmwAZjdaQElS/bKG+wLgSmAp8HZg\n",
562 562 "GnAJsJoQ7ouBTcm8JKnNsob7fsIoTTMJ49PMBL4HrADWJuusBVY2WkCp1w0ODpHL5Q59BgeHOl0k\n",
563 563 "9YGs4f4K8Dngvwihvo9QY58DjCTrjCTzUl8bHd1LGNQsfMK81FpZR4VcBHyC0DzzA+BrwAcq1ild\n",
564 564 "zeMMDw8fms7n8+Tz+YzFkKQ4FQoFCoVC5u2zjol6MXAe8OFk/jLgdOAc4GxgDzAPeBA4sWLbYrFY\n",
565 565 "NfOlCYWx2ycb4neiIX9bvU31faSv8Wpl93dA9UreX1BzZmdtltlGCPMjk4OdC2wF7gNWJeusAu7O\n",
566 566 "uH9JUgOyNstsAW4HHgNeBx4H/hKYBawHrgB2ARc1XkRJUr068aoam2VUN5tl1O/a1SwjSepihrsk\n",
567 567 "Rchwl6QIGe6SFCHDXZIiZLhLUoQMd0mKkOEuSREy3CUpQoa7JEXIcJekCBnukhQhw12SImS4S1KE\n",
568 568 "DHdJilDWl3VImtBAaextqWMMd6npXmP8Cz2k9rJZRpIiZLhLUoQMd0mKkOEuSREy3CUpQoa7JEXI\n",
569 569 "cJekCBnukhQhw12SImS4S1KEDHd1pcHBIXK53KGPpPo0Eu6zgb8FngW2AqcBQ8BGYDuwIVlHqtvo\n",
570 570 "6F7C+CylT0wGyv5w5XI5BgeHOl0oRaaRcP888A3gJOAdwDZgNSHcFwObknlJZUoDi419wh8zqXmy\n",
571 571 "ft89BngCeEvF8m3AWcAIMBcoACdWrFMsFmOriakeg4NDZWE2a9Yb2L//lbJ1QlNM5ciK9cy3a5vm\n",
572 572 "HdffC00maZ6sObOz1twXAi8BXwEeB24BjgLmEIKd5N85GfeviFU2uVhrlZov63juA8BS4CrgUeDP\n",
573 573 "GN8EM2Fj6fDw8KHpfD5PPp/PWAxJilOhUKBQKGTePmuzzFzgIUINHuAMYA2hmeZsYA8wD3gQm2VU\n",
574 574 "oVqTS+U1YbOMVK5dzTJ7gOcJN04BzgWeAe4DViXLVgF3Z9y/+sr43iOSGtPIb9E7gVuBGcBO4IPA\n",
575 575 "NGA98GZgF3ARsK9iO2vufW7qWnm1Zdbc1d/qrbl3oopkuPc5w73aNtMJXSSDaj2I1N/qDXdfkC11\n",
576 576 "hfKXao+O2jSlxjj8gCRFyHCXpAgZ7pIUIcNdkiJkuEtShAx3SYqQ4S5JETLcJSlChrskRchwl6QI\n",
577 577 "Ge6SFCHDXepKA75AWw1x4DCpKzmQmBpjzV0tNzg45Is4pDaz5q6WG3shdokBL7WaNXdJipDhLkkR\n",
578 578 "MtwlKUKGu9QT7Bqp+nhDVeoJdo1Ufay5S1KEDHdJipDhLkkRMtwlKUKGuyRFyHCXpAgZ7pIUoUbD\n",
579 579 "fRrwBHBfMj8EbAS2AxuA2Q3uX5KUQaPhfjWwlbGnK1YTwn0xsCmZlyS1WSPhfgLwXuBWxsZwXQGs\n",
580 580 "TabXAisb2L8kKaNGwv1PgU8Cr6eWzQFGkumRZF6S1GZZx5Z5H/Aiob09P8E6Rcrf0HDI8PDwoel8\n",
581 581 "Pk8+P9EuJKk/FQoFCoVC5u2zjj50A3AZYTSjI4BB4OvAMkLY7wHmAQ8CJ1ZsWywWq2a+IhVerVf5\n",
582 582 "JqbJ5mtZpxX76K3j+nvUX5JXVNac2VmbZa4F5gMLgUuAbxPC/l5gVbLOKuDujPtXj6h8P6pD0Urd\n",
583 583 "oVlD/paqEDcC64ErgF3ARU3av7pU5ftRHYpW6g6d+E20WSYi45tcphNa6yrF2zzSmeOOP8+zZr2B\n",
584 584 "/ftfQXGqt1nGl3WoycpfKhFYm2++8efZb01Kc/gBSYqQ4S5JETLcJSlChrskRchwl6QIGe6SFCHD\n",
585 585 "XZIiZLhLUoQMd0mKkOEuRWPAQdx0iMMPSNEoH5LA4Qj6mzV3SYqQ4S5JETLcJSlChrskRchwl6Jl\n",
586 586 "75l+Zm8ZKVr2nuln1twlKUKGuyRFyHCXpAgZ7pIUIcNdkiJkuEtShAx3SYqQ4a66DA4OlT0YI6k7\n",
587 587 "+RCT6jI6upf0gzFgwEvdyJq71DccjqCfZA33+cCDwDPA08DHk+VDwEZgO7ABmN1oASU1S2k4gvAJ\n",
588 588 "38IUq6zhfhD4DeBk4HTgo8BJwGpCuC8GNiXzkqQ2yxrue4DNyfQPgWeB44EVwNpk+VpgZUOlkyRl\n",
589 589 "0ow29wXAKcDDwBxgJFk+ksxLktqs0XA/Gvg74GpgtOJnpcY9SVKbNdIVcjoh2L8K3J0sGwHmEppt\n",
590 590 "5gEvVttweHj40HQ+nyefzzdQDEmKT6FQoFAoZN4+ayflHKFN/WXCjdWSm5JlnyXcTJ3N+JuqxWLR\n",
591 591 "Cn03GhwcqtKDYjrh/nlaZT/3yeZrWacZ23jcLPvwd7F3JA8N1pzZWcP9DOCfgCcZu1rWAI8A64E3\n",
592 592 "A7uAi4B9Fdsa7l0qXDzdEDoe13BXpXaFeyMM9y5luPfbcQ33XlJvuPuEqiRFyHCX+lb5cAQOSRAX\n",
593 593 "Bw6T+lZpOIIxo6MOBBcLa+6SFCHDXZIiZLhLUoQMd0mKkOEuSREy3CUpQoZ7H/Nl11K87Ofex3zZ\n",
594 594 "tRQva+6SFCHDvY/YDKOpVQ5JMMPhCXqUzTJ9xGYYTa1ySILykSQdnqB3WHOXpAgZ7pIUIcM9EpXt\n",
595 595 "6baPSv3NNvdIjG9Pt31U6mfW3KM2YO8YNZkv+OgV1tyjVq3ng9QIX/DRK6y5S1KEDHdJipDhLkkR\n",
596 596 "MtwlKUKGexeo7KNeS+8Dx4lR9xiw90wXMty7wFgf9fAJ8/VtI3VOqQdN9es3S+WlFq3abyw6UeUr\n",
597 597 "FouGUVqoeZd3WZzqHFXbZnzIT7VOt+7D4/bOPqqvk75+s1zftWjVfrtV8g295sy2n7ukJhuwqbAL\n",
598 598 "tKJZZjmwDXgOuKYF+5fU1cqbadQZzQ73acCfEwJ+CXApcFKTj9EHxj/iXfnShDGFThVSqkGhyrKp\n",
599 599 "r++p5/1mMJVmN8ucCuwAdiXzdwIXAM82+Tg96/77v8n992+YYq3xj3hXb/uE8MuTb0rZpOYrVFlW\n",
600 600 "6/VdS1u/JtLscD8eeD41vxs4rcnH6Gm33HIH99zzOvCuZMljnSyOpEg1O9xtYJvC9OmHceSRTzN9\n",
601 601 "+n4ADh7czYEDHS6UpOg0O9xfAOan5ucTau9pO3O53KImH7fnHDiwuWJJ5VfMal85J1rndzNs04zj\n",
602 602 "tnIfHrd39tE9x428LX5nJw8+kBRgATAD2Iw3VCUpCu8Bvku4sbqmw2WRJEmSVK/3A88APwKWVvxs\n",
603 603 "DeGhp23A+W0uVwyGCfc2nkg+yztamt7kw3fNtQt4knA9PtLZovSk24AR4KnUsiFgI7Ad2ADM7kC5\n",
604 604 "qjoRWAw8SHm4LyG0zU8ntNXvwAHN6nU98JudLkQPm0a47hYQrkPvFTXuPwhhpGzOBE6hPNxvAj6V\n",
605 605 "TF8D3DjZDtoZotsIf3EqXQCsAw4S/trvIDwMpfpE3U2gxdIP3x1k7OE7NcZrMrvvAJXDw64A1ibT\n",
606 606 "a4GVk+2gG2rIx1HeXXI34WEo1edjwBbgy3TR17UeUe3hO6/BxhSBBwhP6V3Z4bLEYg6hqYbk3zmT\n",
607 607 "rdzsfu4bgblVll8L3FfHfnwYaryJzu11wM3A7yXzvw98DriiTeWKgddb8/0s8H3gTYRrdxuhNqrm\n",
608 608 "mHJUtmaH+3kZtql88OmEZJnK1Xpub6W+P6Sq7eE71ef7yb8vAXcRmr4M98aMECp4e4B5wIuTrdyp\n",
609 609 "Zpl0W9y9wCWEh54WAm/Du+v1mpeavpDymzCa2mOE624B4Tq8mHBdKpuZwKxk+ihCDzivycbdC6xK\n",
610 610 "plcBd3ewLGUuJLRrHiD85flm6mfXEm5obQN+of1F63m3E7qdbSH8D5+0LU5V+fBd8ywk9DjaDDyN\n",
611 611 "5zOLdcD3gFcJuflBQu+jB+jCrpCSJEmSJEmSJEmSJEmSJEmSJEmS+tD/AzUxDUJku6WfAAAAAElF\n",
612 612 "TkSuQmCC\n"
613 613 ],
614 614 "text/latex": [
615 615 "$\\mathcal{N}(\\mu=0, \\sigma=2),\\ N=2000$"
616 616 ],
617 617 "text/plain": [
618 618 "<__main__.Gaussian at 0x106e9ce90>"
619 619 ]
620 620 },
621 621 "execution_count": 7,
622 622 "metadata": {},
623 623 "output_type": "execute_result"
624 624 }
625 625 ],
626 626 "source": [
627 627 "x2 = Gaussian(0, 2, 2000)\n",
628 628 "x2"
629 629 ]
630 630 },
631 631 {
632 632 "cell_type": "markdown",
633 633 "metadata": {},
634 634 "source": [
635 635 "You can then compare the two Gaussians by displaying their histograms:"
636 636 ]
637 637 },
638 638 {
639 639 "cell_type": "code",
640 640 "execution_count": 8,
641 641 "metadata": {
642 642 "collapsed": false
643 643 },
644 644 "outputs": [
645 645 {
646 646 "data": {
647 647 "image/png": [
648 648 "iVBORw0KGgoAAAANSUhEUgAAAXIAAAENCAYAAAASUO4dAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
649 649 "AAALEgAACxIB0t1+/AAAElNJREFUeJzt3X+wXGV9x/H3JpefITfhCr1JSyCIRH5UJbQgrVhXChas\n",
650 650 "DXE6onbaBoownRG0tVUSOg63vxQY+8tRoVOQuTIOSq3QQGtNiGyr1SK0IfxqTBNNB2zuhUJoLogk\n",
651 651 "kO0fz9ncvZu9956z9+yefXbfr5mdPefZs7tPbnY/++z3POcsSJIkSZIkSZIkSZIkSZIkSZIkSZJ6\n",
652 652 "1olFd6DNlgJHFt0JKYt5RXdAXe8sYAtwEyHEzym2O233DPCxojshZVEqugPqGjcD/wrc3tB+E/BV\n",
653 653 "4EFgHXBNm57/1wij4bOBu4Avtel5Gp0B/Drw+3VtZwGnAl/oUB+m06xvq4HTgP3AD5n8/8raLqkH\n",
654 654 "fQf424a204GLkuU3AVe36blfV/fYxwC76UwJ5yOED6nbmtyWJcTfTPjweQoYSNqGCR9G9wI/n1Pf\n",
655 655 "FgH/Xrf+HeA1GduPaaEv6nKWVgQwH7gPOA84vK69DHwjWX5X3XLeTmeynPG/wHbgZ9r0XPX+HPj7\n",
656 656 "aW57hvABk8YDwD8B24BfTdrGCSH+HuDbOfXtF4An6ta3EP7PsrS/vYW+qMsNzL6J+sDpwCbCV/mL\n",
657 657 "CKNLgCOAl5Pls4BPZHzc1wJXzHD7vxHC6h+ZHPmXCCWW7RmfK+tz1kxXXtxC+DBJ0495wD7g08BH\n",
658 658 "gS8n7QuAl3Ls23HA83XrzwMnA89lbFePMcgFoS59O6EU8H5CkB8G7K3b5kigWrc+H/hn4Nxk/Vbg\n",
659 659 "k0wNvu8T6uqz2Qc8liz/MvAQ8PA0264A/gQ4FvhZoAL8A6HGn+U5a6rTtO9OniuNMwl9fowwkj4T\n",
660 660 "+I8mjz3Xvi0Gfly3vhc4KtkuS7t6jKUVQXhzvwysB94B/AQh3B+o22Z+w31+DvjvZLmUrLc6iq5Z\n",
661 661 "DFxK2MHXzBAhsH+TUCLYlGx78zTbpzHdiPwl4NCUj/FG4BHCDsXPEer9rwe+N4d+NevbREPbEYRR\n",
662 662 "d9Z29RhH5FoE/ChZniDUeq8CngU+W7fdKw33uxD4erK8Eni0yWNnKSWUgLXAB4AXgBOY/KCo+WDS\n",
663 663 "p9oo87C6vrfynDD9iHwR6UOvfkB0C+ED7Qngr3Lu2w7Ct5Ca1xBG/s+nbD8maZfUI44izET5babO\n",
664 664 "ZDgT+D8OroePMvVr+YPATyfLHweuBFbNoT8fItSklxC+DbwtaT+ZyaC8kTAtEEJd/1NzeL6aS2k+\n",
665 665 "a+Uq4Bfr1uv7Ue8QwjeEejcT6v55920BUz8wtxC+PWVtV49p/Lqs/lEGvkUoCdxb174LeAOwmamj\n",
666 666 "tyFCMPyAUJ9eRxjxLSSURBYBOwl14KzOJdTnrwR+D7ic8OEwQZjbvr3u8k7CTr8zCDX5/S08X81V\n",
667 667 "hNLMm5J/w2Ymd+5eCfw1k99E6vtRcxZh1H08oQw1kbR/n1DG+FbOfXshuawi/P/dSxjF78vYrj61\n",
668 668 "GPgK8J+Er4xvJryxNxKmXG1ItlFchjNsu5iwkxFCwPxp/t1p6lDgrR16rprDCTsti+6HlKtR4LeS\n",
669 669 "5QHC6OtGJuf+XgNcX0C/1Fm/QyjDfJrOzPMGeC+d/+Z4KWFnZdH9kHKziOZfl7cyOaJbkqyrt5WY\n",
670 670 "eWddL1gGXFx0J6S8nUGo/91GqJn+DaFWurtum1LDuiSpQ9LMIx8gzGT4XHL9ImGaWL0q00/jkiS1\n",
671 671 "UZp55E8llweT9a8QZiyMEUoqY4RDqp9uvONJJ51U3bFjRz49laT+sYP05/pJNSIfA55k8nDl84HH\n",
672 672 "gXuANUnbGuDug3qyYwfVatVLDpfrrruu8D700sW/p3/Pbr4AJ6UNcUh/ZOfVwBcJU7B2AJcR9uDf\n",
673 673 "SZjzuxO4JMsTS5LykTbItxAOfmh0fo59kSS1wJNmRaJcLhfdhZ7i3zNf/j2L1e6feqsm9R5JUkql\n",
674 674 "Ugky5LMjckmKnEEuSZEzyCUpcga5JEXOIJekyBnkUocMDg5RKpUYHBwquivqMU4/lDokTCmrAiV8\n",
675 675 "X2gmTj+UpD5jkEsdN0CpVLLMotxYWpE6pL60Mnn6fsssOpilFUnqMwa5JEXOIJe6iFMU1Qpr5FKH\n",
676 676 "pKmRO0VRYI1ckvqOQS5JkTPIJSlyBrkkRc4gl6TIGeSSFDmDXGoT54SrU5xHLrVJ45xw55ErLeeR\n",
677 677 "S1KfMcglKXIGuSRFziCXpMgNpNxuJ7AHeBXYB5wNDAFfBk5Ibr8EeD73HkqSZpR2RF4FysBKQogD\n",
678 678 "rAU2AiuATcm6JKnDspRWGqfCrAJGk+VRYHUuPZIkZZJlRH4f8BBwRdI2DIwny+PJuiSpw9LWyN8C\n",
679 679 "7AKOJZRTtjbcXmXyCAdJUgelDfJdyfUzwF2EOvk4sAQYA5YCTze748jIyIHlcrlMuVxuradSTxqg\n",
680 680 "VCqxcOHR7NnzXNGdUUEqlQqVSqXl+6c5BPRIYD4wASwANgB/CJwPPAvcQNjRuZiDd3h6iL76VtpD\n",
681 681 "9KfbxvdO/8p6iH6aEfkwYRRe2/6LhDB/CLgTuJzJ6YeSpA7zpFlSmzgiV6s8aZYk9RmDXJIiZ5BL\n",
682 682 "UuQMcqmL+StDSsOdnVKb5LGz052f/cmdnZLUZwxySYqcQS5JkTPIJSlyBrkkRc4gl6TIGeSSFDmD\n",
683 683 "XJIiZ5BLUuQMcmmO2nMY/UDt6D5pVh6iL83RdIfRz/UQ/cZr30v9w0P0JanPGOSSFDmDXJIiZ5BL\n",
684 684 "UuQMckmKnEEuSZEzyCUpcga5JEXOIJekyBnkkhQ5g1ySImeQS1LkDHJJilzaIJ8PbAbuSdaHgI3A\n",
685 685 "NmADsDj/rkm9wlPSqr3SBvmHgSeYPPfmWkKQrwA2JeuSmnqFybeOlL80QX4c8E7gFibPj7sKGE2W\n",
686 686 "R4HV+XdNkpRGmiD/C+CjwP66tmFgPFkeT9YlSQUYmOX2dwFPE+rj5Wm2qTLD98aRkZEDy+VymXJ5\n",
687 687 "uoeRpP5UqVSoVCot33+2PTCfAH6DUOQ7HBgEvgqcRQj2MWApcD9wSpP7+1Nv6nlpfuqt+TX4U29q\n",
688 688 "Ju+fersWWAacCLwP+AYh2NcDa5Jt1gB3Z+2oJCkfWeeR14YE1wMXEKYfnpesS5IK0O7JrZZW1POK\n",
689 689 "KK0MDg4xMbEbgIULj2bPnufa+C9Up2UtrRjk0hwVEeST23HQbYpf3jVySVKXm236oaSOmO0w/trt\n",
690 690 "hwD7OtQnxcIgl7pC7TD+6cK8/vaZtlM/srQiSZEzyCUpcga5JEXOIJekyBnkkhQ5g1ySImeQS1Lk\n",
691 691 "DHJJipxBLkmRM8glKXIGuSRFziCXpMgZ5JIUOYNckiJnkEtS5AxySYqcQS5JkTPIpdyEn2MbHBwq\n",
692 692 "uiPqM/7Um5Sb8HNsExP+DJs6yxG5JEXOIJekyBnkUvSszfc7a+RS9KzN9ztH5JIUudmC/HDgAeBh\n",
693 693 "4Angk0n7ELAR2AZsABa3q4OSpJnNFuQ/Bt4OnAG8MVk+F1hLCPIVwKZkXZJUgDSllR8l14cC84Hd\n",
694 694 "wCpgNGkfBVbn3zVJUhppgnweobQyDtwPPA4MJ+sk18Nt6Z0kaVZpZq3sJ5RWFgFfJ5RX6lWTS1Mj\n",
695 695 "IyMHlsvlMuVyOWsfpcINDg4xMbGbhQuPZs+e54rujnpMpVKhUqm0fP+s85U+DrwEfAAoA2PAUsJI\n",
696 696 "/ZQm21er1WkzXopGqVQijFdKNL6m62+r36ZZ+9RrZrgt7fXUx/D91hvCayd9Ps9WWjmGyRkpRwAX\n",
697 697 "AJuB9cCapH0NcHemXkqScjNbaWUpYWfmvORyO2GWymbgTuByYCdwSfu6KEmaSbsPBbO0op7QrLRS\n",
698 698 "q5sH3VBaOQR4xTp+D8haWjHIpRSaBflMQV1UjdxaeW/Iu0YuSepyBrkkRc4gl6TIGeSSFDmDXJIi\n",
699 699 "Z5BLuRuozTqQOsIgl3IXfrFH6hSDXJIiZ5BLUuQMckmKnEEuSZEzyCUpcga5JEXOIJekyBnkkhQ5\n",
700 700 "g1ySImeQS1LkDHJJipxBLkmRM8glKXIDRXdAiounqFX3cUQuZVI7Ra2nqVX3MMglKXIGuSRFziCX\n",
701 701 "ZjA4OGRNXF3PIJdmMDGxG+vh6nYGuSRFLk2QLwPuBx4HHgM+lLQPARuBbcAGYHE7OihJmlmaIN8H\n",
702 702 "/C5wOnAO8EHgVGAtIchXAJuSdUldolbfHxwcKrorarNW9uLcDXwmubwNGAeWABXglIZtq9Wq9UXF\n",
703 703 "K+zorBLeKvXXNGnLet2+x6hWq1P67vswLskO9tT5nLVGvhxYCTwADBNCnOR6OONjSZJykOUQ/aOA\n",
704 704 "vwM+DEw03DbtoW4jIyMHlsvlMuVyOVMHJanXVSoVKpVKy/dPO3Q/BLgX+Brwl0nbVqAMjAFLCTtE\n",
705 705 "La2op1haURHaUVopAbcCTzAZ4gDrgTXJ8hpC7VyS1GFpEv9c4F+AR5gcAqwDvgvcCRwP7AQuAZ5v\n",
706 706 "uK8jckXNEbmKkHVE3u5jjw1yRc0gVxHaPWtFktRlDHJJipxBLkmRM8ilJjx9rWJikEtNePpaxcQg\n",
707 707 "l6TIGeSSFDmDXKpjbVwxMsilOtbGFSODXJIiZ5BLPWfA8lCfMcilnvMKlof6i0EuSZEzyCUpcga5\n",
708 708 "JEXOIJekyBnkkhQ5g1ySImeQS1LkDHJJipxBLkmRM8ilPlM7w+Pg4FDRXVFOBorugKTOqp3hcWLC\n",
709 709 "87H0CkfkkhQ5g1ySImeQS1LkDHJJipxBLkmRSxPknwfGgUfr2oaAjcA2YAOwOP+uSZLSSBPktwEX\n",
710 710 "NrStJQT5CmBTsi4pKuEn4ZxTHr80Qf5NYHdD2ypgNFkeBVbn2SlJnVD7SbhqMrdcsWq1Rj5MKLeQ\n",
711 711 "XA/n0x1JUlZ57Oys4i+9SlJhWj1EfxxYAowBS4Gnp9twZGTkwHK5XKZcLrf4lJJaE2rhCxcezZ49\n",
712 712 "zxXdGTVRqVSoVCot3z/tyRaWA/cAb0jWbwSeBW4g7OhcTPMdntVq1cG64lEqlQhfMGe7JsU23fcY\n",
713 713 "1Wq1yb+RA7epO4T/o9T5nKq0cgfwbeD1wJPAZcD1wAWE6YfnJeuSpAK0+/RnjsjVlQYHh5iY2H1Q\n",
714 714 "ucERubpB1hG5p7FVX/JUruolHqIvSZEzyCUpcga5+kbtJ86S+mMfGujjf3tvM8jVN2p18f49fq12\n",
715 715 "SL56jUEuSZEzyCUpcga5el6tNq6ZDHg624g5j1w9b7I2bphPL9TPnVcfJ0fkkhQ5g1x9zpKC4mdp\n",
716 716 "RX3OkoLi54hckiJnkEtS5AxySYqcQS5JkTPIJSlyBrkkRc4glwBP8aqYGeQS4CleFTODXJIiZ5BL\n",
717 717 "UuQMckmKnEEuSZHzpFmKyq5du3jxxRc57LDDWLZsWdHdkbqCI3JFY//+/Rx//AmsXHkhy5efyNjY\n",
718 718 "2JTba78E5Clp5yJMwyyVDm167d+2OzkiVzSq1SqvvvoqL7ywnQULjmfv3r1Tbq/9EpCnpJ2L2jTM\n",
719 719 "UtNr/7bdyRG5JEVurkF+IbAV+C/gmrl3R5KU1VyCfD7wGUKYnwa8Hzg1j07pYJVKpeguRGRqnVd5\n",
720 720 "mvrTeLX9Es3arKd3zlyC/GxgO7AT2Ad8Cbg4hz6pCYM8i1qddx8edp+32k/j7QYm90vAdQe11dbV\n",
721 721 "fnMJ8p8CnqxbfyppkyR10FyC3KGOClBlcPBXePnlZ5g3z331EoQ5Ra06Bxgh1MgB1gH7gRvqttkO\n",
722 722 "nDSH55CkfrQDeF0nnmggebLlwKHAw7izU5KicxHwPcLIe13BfZEkSZIE8B7gceBV4MyG29YRDh7a\n",
723 723 "Cryjw/3qBSOE2UGbk8uFM26t6XggW752Ao8QXpPfLbYr0fk8MA48Wtc2BGwEtgEbgMUF9ItTgBXA\n",
724 724 "/UwN8tMIdfRDCHX17XiKgKyuAz5SdCciN5/w2ltOeC26b2fufkAIH2X3VmAlU4P8RuBjyfI1wPWz\n",
725 725 "PUg7gnQr4ZOk0cXAHYSjNHYS3kxnt+H5e52HKs6NB7K1h6/L1nwTaDxyahUwmiyPAqtne5BOjoh/\n",
726 726 "klAWqPEAotZcDWwBbqWgr1yR80C2/FWB+4CHgCsK7ksvGCaUW0iuh2e7Q6unsd0ILGnSfi1wT4bH\n",
727 727 "8aCig033t/0D4Cbgj5L1Pwb+DLi8Q/3qFb7m8vcWYBdwLOH1u5Uw0tTcVUnxmm01yC9o4T4/BOp/\n",
728 728 "0uW4pE1Tpf3b3kK2D00Fja/DZUz9pqjsdiXXzwB3EcpXBnnrxgmDuTFgKfD0bHdod2mlvm62Hngf\n",
729 729 "4eChE4GTcQ93Vkvrlt/N1B0kSuchwmtvOeG1+F7Ca1OtORJYmCwvIMxG83U5N+uBNcnyGuDuIjrx\n",
730 730 "bkIN8iXCJ8rX6m67lrCjaSvwS53vWvS+QJjmtYXwnztr7UxNeSBbfk4kzPx5GHgM/55Z3QH8D7CX\n",
731 731 "kJuXEWYA3UfB0w8lSZIkSZIkSZIkSZIkSZIkSZIktcn/A4eK9UXawRDUAAAAAElFTkSuQmCC\n"
732 732 ]
733 733 },
734 734 "metadata": {},
735 735 "output_type": "display_data"
736 736 },
737 737 {
738 738 "data": {
739 739 "image/png": [
740 740 "iVBORw0KGgoAAAANSUhEUgAAAXcAAAENCAYAAAD0eSVZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
741 741 "AAALEgAACxIB0t1+/AAAE3lJREFUeJzt3X2UXOVBx/HvkE2AQJZ0S00CpCZNGyHYVmIDVEEGBExr\n",
742 742 "TwjHU160GFqKx9PSUvW0JKBlfSlStGp7tPQIpSdUCaZa3qStCSmjPYq8CAkvIQ2JRgltFoSk2R6j\n",
743 743 "hDL+8dzJ3pmd3Z258/7M93POnNx79748XO7+9pnnPve5IEmSJEmSJEmSJEmSJEmSJEmSJElSD1jY\n",
744 744 "6QK02DxgZqcLIdXqsE4XQD1rGbAFuJkQ7Kd3tjgt9xLwqU4XQqpVrtMFUNf7EvDPwFcrlt8MfB14\n",
745 745 "FFgDXNOi468ElgCvAy9UKUcr/DKhpn4qcBdwZ7J8GXAScHsbyjCRico20Xmqd7mkPvEQ8LWKZScD\n",
746 746 "70mm3wl8rEXHPgb4t4qyHNuiY5W8lbH/nmOBvZQ3OdUT7KcRAng3MJAsm0MI5L8HfqYJZVtA9fP0\n",
747 747 "xjqXt/q8qs1sltFkpgEPAOcAR6SW54FvJ9PvS003288BW1PzW4CzW3SskpMZa375b2AH8NOpn79E\n",
748 748 "CNlaPAx8C9gO/FKybIQQ7O8H/qUJZVtG9fN0Tp3LW31e1WYDU6+iPnYysAn4KUJN/a5k+ZHA/yXT\n",
749 749 "y4Ab6tzvW4ArJ/n5vwL3ACcA+1LL9wFvq/NY9R7zG4x9K8kRmkB2pNbbQgj7HUztMOAg8AXgk8Df\n",
750 750 "JMuPAg40qWzPAe+m+nl6pc7liojhrsmcSmiLvRO4lBDuhwOvptaZCRRT89OAfwTOSOa/DPwh5WH4\n",
751 751 "74R2+qnMBv43Nf8qcPQE6y4G/gB4E/AuoADcT7hnUM8xDwJPJ9O/CDwGbE79fG9yrFosTbZ/GviT\n",
752 752 "ZP5xys9XM8r2Xqqfp2KdyxURm2U0maMJNfR7gfOBHyME/sOpdaZVbPNu4D+T6VwyX0stt5pRym/6\n",
753 753 "H0modVYaIoT4rxKaFzYBH2As2LOYDVye7CftADCjxn28A3iScNPyi4T28p8AvttAuaqVbT/Vz9NE\n",
754 754 "56/W86oeZs1dEzkG+J9kepTQdnwV8DLwF6n1XqvYbjnwD8n0KcBTVfZdazPETkItvORYQs230keT\n",
755 755 "MpVqo4enyl7vMSEE32rgw8APgR9n7A/WMdQehOnK062EP3Jbgc83uWyV5+mNhPO0r8blE51XSRE5\n",
756 756 "mtAD5tcp70GxFPgB49vX11L+lf5R4CeT6d8Bfg1YkbEsR1H+x2EL4dsDhDbiUnjeROiiCOE+wR9n\n",
757 757 "PF7Jxwnt6nMJ31TOSv3sKuDnU/PpcqRNJ3yTSPsSod282WWbSfXzNNH5m+y8SorU+YRmhM9U+dlf\n",
758 758 "E2qMaR8i9MCA0N49AlxLaAf+LeA64NwGynMZ8NvAp4FfSS1/lvAtAUJXxasJPVKuprFvpGcAPyKc\n",
759 759 "g9eT6eNTP7+V8p5D6XKULCM8A/BXFdsuoba29Sxlm+g81btcfeI2wi9r+q/8HxEu6C2EC/iY1M/W\n",
760 760 "EO7ebyOEhHrTnDrWnU24kQmhDbjaH4VWmAGc2aZjlRxBuDHa6XJIDTuT8e2m5zH2NfTG5AOhVrKZ\n",
761 761 "8HV0AaF90Ru2/eEThCacL1DeJ7yVLmb8zdxWu5xwQ7TT5ZCaYgHVb4oBXEj46gnjH0H/FvGPN6Ig\n",
762 762 "x+Q3BGMwH7ig04WQatVob5kPAeuS6eMId/VLdlPe3qh4FYFbOl2IFns++Ug9oZFmk+sIDz/cMck6\n",
763 763 "lQ9rSJLaIGvN/XJCb4h0l7AXCF9dS05IlpVZtGhRcefOnRkPK0l9aye1j2uUqea+nDBOxgWUP8J8\n",
764 764 "L3AJoffAQkL/30fGlW7nTorFop8mfa6//vqOlyGmj+fT89mtH2BRPUE9Vc19HeEhiWMJ7Y3XE26c\n",
765 765 "zgA2Jus8BHyE8OTd+uTf15JlNstIUgdMFe6XVll22yTr30D9IwRKkprMfug9Lp/Pd7oIUfF8Npfn\n",
766 766 "s3M68Zq9YtJ+JEmqUS6Xgzoy25q7JEXIcJekCBnukhQhw12SImS4S1KEDHf1jcHBIXK53KHP4OBQ\n",
767 767 "p4sktYxdIdU3Qley9LWXw2tRvcKukJIkw12SYmS4S1KEDHdpEt6EVa/yhqr6RpYbqt6EVbfwhqqU\n",
768 768 "qKx1S/3EmruiVa3Wbc1dvcqauyTJcJekGBnukhQhw12SImS4S1KEDHdJipDhLjWgsi+9T7GqW9jP\n",
769 769 "XdFqRz/38T+vbb9SveznLkky3CUpRoa7JEXIcJdSHGxMsZgq3G8DRoCnUsuGgI3AdmADMDv1szXA\n",
770 770 "c8A24PzmFVNqj9HRvYQbpKWP1JumCvevAMsrlq0mhPtiYFMyD7AEuDj5dznwxRr2L3XQwLhujFIs\n",
771 771 "pgrf7wB7K5atANYm02uBlcn0BcA64CCwC9gBnNqUUkot8RrltXRr6opHlpr1HEJTDcm/c5Lp44Dd\n",
772 772 "qfV2A8dnL5okKatGm02mqu5YFZKkDhjIsM0IMBfYA8wDXkyWvwDMT613QrJsnOHh4UPT+XyefD6f\n",
773 773 "oRiSFK9CoUChUMi8fS13kBYA9wFvT+ZvAl4GPku4mTo7+XcJcAehnf144AHgrYyvvTv8gNqiluEH\n",
774 774 "qg0dUM+QBQ4/oHapd/iBqWru64CzgGOB54FPAzcC64ErCDdOL0rW3Zos30q4U/URbJaRpI5w4DBF\n",
775 775 "y5q7YuLAYZIkw12SYmS4S1KEDHdJipDhLkkRMtzVEyqH4vU9pdLk7AqpnjDVu0xr3caukOpVzX6I\n",
776 776 "SVKZAYcGVk8w3KW6lIYJLjHo1Z1sc5ekCBnukhQhw12SImS4S1KEDHdJipDhLkkRMtwlKUKGuyRF\n",
777 777 "yHCXpAj5hKp6VOUwANOBg50qjNR1DHf1qGrDAFQbBEzqTzbLSFKEDHdJipDhLkkRMtwlKUKGuyRF\n",
778 778 "yHCXpAgZ7pIUIcNdkiJkuEtShBoJ9zXAM8BTwB3A4cAQsBHYDmwAZjdaQElS/bKG+wLgSmAp8HZg\n",
779 779 "GnAJsJoQ7ouBTcm8JKnNsob7fsIoTTMJ49PMBL4HrADWJuusBVY2WkCp1w0ODpHL5Q59BgeHOl0k\n",
780 780 "9YGs4f4K8Dngvwihvo9QY58DjCTrjCTzUl8bHd1LGNQsfMK81FpZR4VcBHyC0DzzA+BrwAcq1ild\n",
781 781 "zeMMDw8fms7n8+Tz+YzFkKQ4FQoFCoVC5u2zjol6MXAe8OFk/jLgdOAc4GxgDzAPeBA4sWLbYrFY\n",
782 782 "NfOlCYWx2ycb4neiIX9bvU31faSv8Wpl93dA9UreX1BzZmdtltlGCPMjk4OdC2wF7gNWJeusAu7O\n",
783 783 "uH9JUgOyNstsAW4HHgNeBx4H/hKYBawHrgB2ARc1XkRJUr068aoam2VUN5tl1O/a1SwjSepihrsk\n",
784 784 "Rchwl6QIGe6SFCHDXZIiZLhLUoQMd0mKkOEuSREy3CUpQoa7JEXIcJekCBnukhQhw12SImS4S1KE\n",
785 785 "DHdJilDWl3VImtBAaextqWMMd6npXmP8Cz2k9rJZRpIiZLhLUoQMd0mKkOEuSREy3CUpQoa7JEXI\n",
786 786 "cJekCBnukhQhw12SImS4S1KEDHd1pcHBIXK53KGPpPo0Eu6zgb8FngW2AqcBQ8BGYDuwIVlHqtvo\n",
787 787 "6F7C+CylT0wGyv5w5XI5BgeHOl0oRaaRcP888A3gJOAdwDZgNSHcFwObknlJZUoDi419wh8zqXmy\n",
788 788 "ft89BngCeEvF8m3AWcAIMBcoACdWrFMsFmOriakeg4NDZWE2a9Yb2L//lbJ1QlNM5ciK9cy3a5vm\n",
789 789 "HdffC00maZ6sObOz1twXAi8BXwEeB24BjgLmEIKd5N85GfeviFU2uVhrlZov63juA8BS4CrgUeDP\n",
790 790 "GN8EM2Fj6fDw8KHpfD5PPp/PWAxJilOhUKBQKGTePmuzzFzgIUINHuAMYA2hmeZsYA8wD3gQm2VU\n",
791 791 "oVqTS+U1YbOMVK5dzTJ7gOcJN04BzgWeAe4DViXLVgF3Z9y/+sr43iOSGtPIb9E7gVuBGcBO4IPA\n",
792 792 "NGA98GZgF3ARsK9iO2vufW7qWnm1Zdbc1d/qrbl3oopkuPc5w73aNtMJXSSDaj2I1N/qDXdfkC11\n",
793 793 "hfKXao+O2jSlxjj8gCRFyHCXpAgZ7pIUIcNdkiJkuEtShAx3SYqQ4S5JETLcJSlChrskRchwl6QI\n",
794 794 "Ge6SFCHDXepKA75AWw1x4DCpKzmQmBpjzV0tNzg45Is4pDaz5q6WG3shdokBL7WaNXdJipDhLkkR\n",
795 795 "MtwlKUKGu9QT7Bqp+nhDVeoJdo1Ufay5S1KEDHdJipDhLkkRMtwlKUKGuyRFyHCXpAgZ7pIUoUbD\n",
796 796 "fRrwBHBfMj8EbAS2AxuA2Q3uX5KUQaPhfjWwlbGnK1YTwn0xsCmZlyS1WSPhfgLwXuBWxsZwXQGs\n",
797 797 "TabXAisb2L8kKaNGwv1PgU8Cr6eWzQFGkumRZF6S1GZZx5Z5H/Aiob09P8E6Rcrf0HDI8PDwoel8\n",
798 798 "Pk8+P9EuJKk/FQoFCoVC5u2zjj50A3AZYTSjI4BB4OvAMkLY7wHmAQ8CJ1ZsWywWq2a+IhVerVf5\n",
799 799 "JqbJ5mtZpxX76K3j+nvUX5JXVNac2VmbZa4F5gMLgUuAbxPC/l5gVbLOKuDujPtXj6h8P6pD0Urd\n",
800 800 "oVlD/paqEDcC64ErgF3ARU3av7pU5ftRHYpW6g6d+E20WSYi45tcphNa6yrF2zzSmeOOP8+zZr2B\n",
801 801 "/ftfQXGqt1nGl3WoycpfKhFYm2++8efZb01Kc/gBSYqQ4S5JETLcJSlChrskRchwl6QIGe6SFCHD\n",
802 802 "XZIiZLhLUoQMd0mKkOEuRWPAQdx0iMMPSNEoH5LA4Qj6mzV3SYqQ4S5JETLcJSlChrskRchwl6Jl\n",
803 803 "75l+Zm8ZKVr2nuln1twlKUKGuyRFyHCXpAgZ7pIUIcNdkiJkuEtShAx3SYqQ4a66DA4OlT0YI6k7\n",
804 804 "+RCT6jI6upf0gzFgwEvdyJq71DccjqCfZA33+cCDwDPA08DHk+VDwEZgO7ABmN1oASU1S2k4gvAJ\n",
805 805 "38IUq6zhfhD4DeBk4HTgo8BJwGpCuC8GNiXzkqQ2yxrue4DNyfQPgWeB44EVwNpk+VpgZUOlkyRl\n",
806 806 "0ow29wXAKcDDwBxgJFk+ksxLktqs0XA/Gvg74GpgtOJnpcY9SVKbNdIVcjoh2L8K3J0sGwHmEppt\n",
807 807 "5gEvVttweHj40HQ+nyefzzdQDEmKT6FQoFAoZN4+ayflHKFN/WXCjdWSm5JlnyXcTJ3N+JuqxWLR\n",
808 808 "Cn03GhwcqtKDYjrh/nlaZT/3yeZrWacZ23jcLPvwd7F3JA8N1pzZWcP9DOCfgCcZu1rWAI8A64E3\n",
809 809 "A7uAi4B9Fdsa7l0qXDzdEDoe13BXpXaFeyMM9y5luPfbcQ33XlJvuPuEqiRFyHCX+lb5cAQOSRAX\n",
810 810 "Bw6T+lZpOIIxo6MOBBcLa+6SFCHDXZIiZLhLUoQMd0mKkOEuSREy3CUpQoZ7H/Nl11K87Ofex3zZ\n",
811 811 "tRQva+6SFCHDvY/YDKOpVQ5JMMPhCXqUzTJ9xGYYTa1ySILykSQdnqB3WHOXpAgZ7pIUIcM9EpXt\n",
812 812 "6baPSv3NNvdIjG9Pt31U6mfW3KM2YO8YNZkv+OgV1tyjVq3ng9QIX/DRK6y5S1KEDHdJipDhLkkR\n",
813 813 "MtwlKUKGexeo7KNeS+8Dx4lR9xiw90wXMty7wFgf9fAJ8/VtI3VOqQdN9es3S+WlFq3abyw6UeUr\n",
814 814 "FouGUVqoeZd3WZzqHFXbZnzIT7VOt+7D4/bOPqqvk75+s1zftWjVfrtV8g295sy2n7ukJhuwqbAL\n",
815 815 "tKJZZjmwDXgOuKYF+5fU1cqbadQZzQ73acCfEwJ+CXApcFKTj9EHxj/iXfnShDGFThVSqkGhyrKp\n",
816 816 "r++p5/1mMJVmN8ucCuwAdiXzdwIXAM82+Tg96/77v8n992+YYq3xj3hXb/uE8MuTb0rZpOYrVFlW\n",
817 817 "6/VdS1u/JtLscD8eeD41vxs4rcnH6Gm33HIH99zzOvCuZMljnSyOpEg1O9xtYJvC9OmHceSRTzN9\n",
818 818 "+n4ADh7czYEDHS6UpOg0O9xfAOan5ucTau9pO3O53KImH7fnHDiwuWJJ5VfMal85J1rndzNs04zj\n",
819 819 "tnIfHrd39tE9x428LX5nJw8+kBRgATAD2Iw3VCUpCu8Bvku4sbqmw2WRJEmSVK/3A88APwKWVvxs\n",
820 820 "DeGhp23A+W0uVwyGCfc2nkg+yztamt7kw3fNtQt4knA9PtLZovSk24AR4KnUsiFgI7Ad2ADM7kC5\n",
821 821 "qjoRWAw8SHm4LyG0zU8ntNXvwAHN6nU98JudLkQPm0a47hYQrkPvFTXuPwhhpGzOBE6hPNxvAj6V\n",
822 822 "TF8D3DjZDtoZotsIf3EqXQCsAw4S/trvIDwMpfpE3U2gxdIP3x1k7OE7NcZrMrvvAJXDw64A1ibT\n",
823 823 "a4GVk+2gG2rIx1HeXXI34WEo1edjwBbgy3TR17UeUe3hO6/BxhSBBwhP6V3Z4bLEYg6hqYbk3zmT\n",
824 824 "rdzsfu4bgblVll8L3FfHfnwYaryJzu11wM3A7yXzvw98DriiTeWKgddb8/0s8H3gTYRrdxuhNqrm\n",
825 825 "mHJUtmaH+3kZtql88OmEZJnK1Xpub6W+P6Sq7eE71ef7yb8vAXcRmr4M98aMECp4e4B5wIuTrdyp\n",
826 826 "Zpl0W9y9wCWEh54WAm/Du+v1mpeavpDymzCa2mOE624B4Tq8mHBdKpuZwKxk+ihCDzivycbdC6xK\n",
827 827 "plcBd3ewLGUuJLRrHiD85flm6mfXEm5obQN+of1F63m3E7qdbSH8D5+0LU5V+fBd8ywk9DjaDDyN\n",
828 828 "5zOLdcD3gFcJuflBQu+jB+jCrpCSJEmSJEmSJEmSJEmSJEmSJEmS+tD/AzUxDUJku6WfAAAAAElF\n",
829 829 "TkSuQmCC\n"
830 830 ]
831 831 },
832 832 "metadata": {},
833 833 "output_type": "display_data"
834 834 }
835 835 ],
836 836 "source": [
837 837 "display_png(x)\n",
838 838 "display_png(x2)"
839 839 ]
840 840 },
841 841 {
842 842 "cell_type": "markdown",
843 843 "metadata": {},
844 844 "source": [
845 845 "Note that like `print`, you can call any of the `display` functions multiple times in a cell."
846 846 ]
847 847 },
848 848 {
849 849 "cell_type": "markdown",
850 850 "metadata": {},
851 851 "source": [
852 852 "## Adding IPython display support to existing objects"
853 853 ]
854 854 },
855 855 {
856 856 "cell_type": "markdown",
857 857 "metadata": {},
858 858 "source": [
859 859 "When you are directly writing your own classes, you can adapt them for display in IPython by following the above approach. But in practice, you often need to work with existing classes that you can't easily modify. We now illustrate how to add rich output capabilities to existing objects. We will use the NumPy polynomials and change their default representation to be a formatted LaTeX expression."
860 860 ]
861 861 },
862 862 {
863 863 "cell_type": "markdown",
864 864 "metadata": {},
865 865 "source": [
866 866 "First, consider how a NumPy polynomial object renders by default:"
867 867 ]
868 868 },
869 869 {
870 870 "cell_type": "code",
871 871 "execution_count": 9,
872 872 "metadata": {
873 873 "collapsed": false
874 874 },
875 875 "outputs": [
876 876 {
877 877 "data": {
878 878 "text/plain": [
879 879 "Polynomial([ 1., 2., 3.], [-10., 10.], [-1., 1.])"
880 880 ]
881 881 },
882 882 "execution_count": 9,
883 883 "metadata": {},
884 884 "output_type": "execute_result"
885 885 }
886 886 ],
887 887 "source": [
888 888 "p = np.polynomial.Polynomial([1,2,3], [-10, 10])\n",
889 889 "p"
890 890 ]
891 891 },
892 892 {
893 893 "cell_type": "markdown",
894 894 "metadata": {},
895 895 "source": [
896 896 "Next, define a function that pretty-prints a polynomial as a LaTeX string:"
897 897 ]
898 898 },
899 899 {
900 900 "cell_type": "code",
901 901 "execution_count": 10,
902 902 "metadata": {
903 903 "collapsed": false
904 904 },
905 905 "outputs": [],
906 906 "source": [
907 907 "def poly_to_latex(p):\n",
908 908 " terms = ['%.2g' % p.coef[0]]\n",
909 909 " if len(p) > 1:\n",
910 910 " term = 'x'\n",
911 911 " c = p.coef[1]\n",
912 912 " if c!=1:\n",
913 913 " term = ('%.2g ' % c) + term\n",
914 914 " terms.append(term)\n",
915 915 " if len(p) > 2:\n",
916 916 " for i in range(2, len(p)):\n",
917 917 " term = 'x^%d' % i\n",
918 918 " c = p.coef[i]\n",
919 919 " if c!=1:\n",
920 920 " term = ('%.2g ' % c) + term\n",
921 921 " terms.append(term)\n",
922 922 " px = '$P(x)=%s$' % '+'.join(terms)\n",
923 923 " dom = r', $x \\in [%.2g,\\ %.2g]$' % tuple(p.domain)\n",
924 924 " return px+dom"
925 925 ]
926 926 },
927 927 {
928 928 "cell_type": "markdown",
929 929 "metadata": {},
930 930 "source": [
931 931 "This produces, on our polynomial ``p``, the following:"
932 932 ]
933 933 },
934 934 {
935 935 "cell_type": "code",
936 936 "execution_count": 11,
937 937 "metadata": {
938 938 "collapsed": false
939 939 },
940 940 "outputs": [
941 941 {
942 942 "data": {
943 943 "text/plain": [
944 944 "'$P(x)=1+2 x+3 x^2$, $x \\\\in [-10,\\\\ 10]$'"
945 945 ]
946 946 },
947 947 "execution_count": 11,
948 948 "metadata": {},
949 949 "output_type": "execute_result"
950 950 }
951 951 ],
952 952 "source": [
953 953 "poly_to_latex(p)"
954 954 ]
955 955 },
956 956 {
957 957 "cell_type": "markdown",
958 958 "metadata": {},
959 959 "source": [
960 960 "You can render this string using the `Latex` class:"
961 961 ]
962 962 },
963 963 {
964 964 "cell_type": "code",
965 965 "execution_count": 12,
966 966 "metadata": {
967 967 "collapsed": false
968 968 },
969 969 "outputs": [
970 970 {
971 971 "data": {
972 972 "text/latex": [
973 973 "$P(x)=1+2 x+3 x^2$, $x \\in [-10,\\ 10]$"
974 974 ],
975 975 "text/plain": [
976 976 "<IPython.core.display.Latex object>"
977 977 ]
978 978 },
979 979 "execution_count": 12,
980 980 "metadata": {},
981 981 "output_type": "execute_result"
982 982 }
983 983 ],
984 984 "source": [
985 985 "from IPython.display import Latex\n",
986 986 "Latex(poly_to_latex(p))"
987 987 ]
988 988 },
989 989 {
990 990 "cell_type": "markdown",
991 991 "metadata": {},
992 992 "source": [
993 993 "However, you can configure IPython to do this automatically by registering the `Polynomial` class and the `plot_to_latex` function with an IPython display formatter. Let's look at the default formatters provided by IPython:"
994 994 ]
995 995 },
996 996 {
997 997 "cell_type": "code",
998 998 "execution_count": 13,
999 999 "metadata": {
1000 1000 "collapsed": false
1001 1001 },
1002 1002 "outputs": [
1003 1003 {
1004 1004 "name": "stdout",
1005 1005 "output_type": "stream",
1006 1006 "text": [
1007 1007 " text/plain : PlainTextFormatter\n",
1008 1008 " image/jpeg : JPEGFormatter\n",
1009 1009 " text/html : HTMLFormatter\n",
1010 1010 " image/svg+xml : SVGFormatter\n",
1011 1011 " image/png : PNGFormatter\n",
1012 1012 " application/javascript : JavascriptFormatter\n",
1013 1013 " text/markdown : MarkdownFormatter\n",
1014 1014 " text/latex : LatexFormatter\n",
1015 1015 " application/json : JSONFormatter\n",
1016 1016 " application/pdf : PDFFormatter\n"
1017 1017 ]
1018 1018 }
1019 1019 ],
1020 1020 "source": [
1021 1021 "ip = get_ipython()\n",
1022 1022 "for mime, formatter in ip.display_formatter.formatters.items():\n",
1023 1023 " print '%24s : %s' % (mime, formatter.__class__.__name__)"
1024 1024 ]
1025 1025 },
1026 1026 {
1027 1027 "cell_type": "markdown",
1028 1028 "metadata": {},
1029 1029 "source": [
1030 1030 "The `formatters` attribute is a dictionary keyed by MIME types. To define a custom LaTeX display function, you want a handle on the `text/latex` formatter:"
1031 1031 ]
1032 1032 },
1033 1033 {
1034 1034 "cell_type": "code",
1035 1035 "execution_count": 14,
1036 1036 "metadata": {
1037 1037 "collapsed": false
1038 1038 },
1039 1039 "outputs": [],
1040 1040 "source": [
1041 1041 "ip = get_ipython()\n",
1042 1042 "latex_f = ip.display_formatter.formatters['text/latex']"
1043 1043 ]
1044 1044 },
1045 1045 {
1046 1046 "cell_type": "markdown",
1047 1047 "metadata": {},
1048 1048 "source": [
1049 1049 "The formatter object has a couple of methods for registering custom display functions for existing types."
1050 1050 ]
1051 1051 },
1052 1052 {
1053 1053 "cell_type": "code",
1054 1054 "execution_count": 15,
1055 1055 "metadata": {
1056 1056 "collapsed": false
1057 1057 },
1058 1058 "outputs": [
1059 1059 {
1060 1060 "name": "stdout",
1061 1061 "output_type": "stream",
1062 1062 "text": [
1063 1063 "Help on method for_type in module IPython.core.formatters:\n",
1064 1064 "\n",
1065 1065 "for_type(self, typ, func=None) method of IPython.core.formatters.LatexFormatter instance\n",
1066 1066 " Add a format function for a given type.\n",
1067 1067 " \n",
1068 1068 " Parameters\n",
1069 1069 " -----------\n",
1070 1070 " typ : type or '__module__.__name__' string for a type\n",
1071 1071 " The class of the object that will be formatted using `func`.\n",
1072 1072 " func : callable\n",
1073 1073 " A callable for computing the format data.\n",
1074 1074 " `func` will be called with the object to be formatted,\n",
1075 1075 " and will return the raw data in this formatter's format.\n",
1076 1076 " Subclasses may use a different call signature for the\n",
1077 1077 " `func` argument.\n",
1078 1078 " \n",
1079 1079 " If `func` is None or not specified, there will be no change,\n",
1080 1080 " only returning the current value.\n",
1081 1081 " \n",
1082 1082 " Returns\n",
1083 1083 " -------\n",
1084 1084 " oldfunc : callable\n",
1085 1085 " The currently registered callable.\n",
1086 1086 " If you are registering a new formatter,\n",
1087 1087 " this will be the previous value (to enable restoring later).\n",
1088 1088 "\n"
1089 1089 ]
1090 1090 }
1091 1091 ],
1092 1092 "source": [
1093 1093 "help(latex_f.for_type)"
1094 1094 ]
1095 1095 },
1096 1096 {
1097 1097 "cell_type": "code",
1098 1098 "execution_count": 16,
1099 1099 "metadata": {
1100 1100 "collapsed": false
1101 1101 },
1102 1102 "outputs": [
1103 1103 {
1104 1104 "name": "stdout",
1105 1105 "output_type": "stream",
1106 1106 "text": [
1107 1107 "Help on method for_type_by_name in module IPython.core.formatters:\n",
1108 1108 "\n",
1109 1109 "for_type_by_name(self, type_module, type_name, func=None) method of IPython.core.formatters.LatexFormatter instance\n",
1110 1110 " Add a format function for a type specified by the full dotted\n",
1111 1111 " module and name of the type, rather than the type of the object.\n",
1112 1112 " \n",
1113 1113 " Parameters\n",
1114 1114 " ----------\n",
1115 1115 " type_module : str\n",
1116 1116 " The full dotted name of the module the type is defined in, like\n",
1117 1117 " ``numpy``.\n",
1118 1118 " type_name : str\n",
1119 1119 " The name of the type (the class name), like ``dtype``\n",
1120 1120 " func : callable\n",
1121 1121 " A callable for computing the format data.\n",
1122 1122 " `func` will be called with the object to be formatted,\n",
1123 1123 " and will return the raw data in this formatter's format.\n",
1124 1124 " Subclasses may use a different call signature for the\n",
1125 1125 " `func` argument.\n",
1126 1126 " \n",
1127 1127 " If `func` is None or unspecified, there will be no change,\n",
1128 1128 " only returning the current value.\n",
1129 1129 " \n",
1130 1130 " Returns\n",
1131 1131 " -------\n",
1132 1132 " oldfunc : callable\n",
1133 1133 " The currently registered callable.\n",
1134 1134 " If you are registering a new formatter,\n",
1135 1135 " this will be the previous value (to enable restoring later).\n",
1136 1136 "\n"
1137 1137 ]
1138 1138 }
1139 1139 ],
1140 1140 "source": [
1141 1141 "help(latex_f.for_type_by_name)"
1142 1142 ]
1143 1143 },
1144 1144 {
1145 1145 "cell_type": "markdown",
1146 1146 "metadata": {},
1147 1147 "source": [
1148 1148 "In this case, we will use `for_type_by_name` to register `poly_to_latex` as the display function for the `Polynomial` type:"
1149 1149 ]
1150 1150 },
1151 1151 {
1152 1152 "cell_type": "code",
1153 1153 "execution_count": 18,
1154 1154 "metadata": {
1155 1155 "collapsed": false
1156 1156 },
1157 1157 "outputs": [],
1158 1158 "source": [
1159 1159 "latex_f.for_type_by_name('numpy.polynomial.polynomial',\n",
1160 1160 " 'Polynomial', poly_to_latex)"
1161 1161 ]
1162 1162 },
1163 1163 {
1164 1164 "cell_type": "markdown",
1165 1165 "metadata": {},
1166 1166 "source": [
1167 1167 "Once the custom display function has been registered, all NumPy `Polynomial` instances will be represented by their LaTeX form instead:"
1168 1168 ]
1169 1169 },
1170 1170 {
1171 1171 "cell_type": "code",
1172 1172 "execution_count": 19,
1173 1173 "metadata": {
1174 1174 "collapsed": false
1175 1175 },
1176 1176 "outputs": [
1177 1177 {
1178 1178 "data": {
1179 1179 "text/latex": [
1180 1180 "$P(x)=1+2 x+3 x^2$, $x \\in [-10,\\ 10]$"
1181 1181 ],
1182 1182 "text/plain": [
1183 1183 "Polynomial([ 1., 2., 3.], [-10., 10.], [-1., 1.])"
1184 1184 ]
1185 1185 },
1186 1186 "execution_count": 19,
1187 1187 "metadata": {},
1188 1188 "output_type": "execute_result"
1189 1189 }
1190 1190 ],
1191 1191 "source": [
1192 1192 "p"
1193 1193 ]
1194 1194 },
1195 1195 {
1196 1196 "cell_type": "code",
1197 1197 "execution_count": 20,
1198 1198 "metadata": {
1199 1199 "collapsed": false
1200 1200 },
1201 1201 "outputs": [
1202 1202 {
1203 1203 "data": {
1204 1204 "text/latex": [
1205 1205 "$P(x)=-20+71 x+-15 x^2+x^3$, $x \\in [-1,\\ 1]$"
1206 1206 ],
1207 1207 "text/plain": [
1208 1208 "Polynomial([-20., 71., -15., 1.], [-1., 1.], [-1., 1.])"
1209 1209 ]
1210 1210 },
1211 1211 "execution_count": 20,
1212 1212 "metadata": {},
1213 1213 "output_type": "execute_result"
1214 1214 }
1215 1215 ],
1216 1216 "source": [
1217 1217 "p2 = np.polynomial.Polynomial([-20, 71, -15, 1])\n",
1218 1218 "p2"
1219 1219 ]
1220 1220 },
1221 1221 {
1222 1222 "cell_type": "markdown",
1223 1223 "metadata": {},
1224 1224 "source": [
1225 1225 "## More complex display with `_ipython_display_`"
1226 1226 ]
1227 1227 },
1228 1228 {
1229 1229 "cell_type": "markdown",
1230 1230 "metadata": {},
1231 1231 "source": [
1232 1232 "Rich output special methods and functions can only display one object or MIME type at a time. Sometimes this is not enough if you want to display multiple objects or MIME types at once. An example of this would be to use an HTML representation to put some HTML elements in the DOM and then use a JavaScript representation to add events to those elements.\n",
1233 1233 "\n",
1234 1234 "**IPython 2.0** recognizes another display method, `_ipython_display_`, which allows your objects to take complete control of displaying themselves. If this method is defined, IPython will call it, and make no effort to display the object using the above described `_repr_*_` methods for custom display functions. It's a way for you to say \"Back off, IPython, I can display this myself.\" Most importantly, your `_ipython_display_` method can make multiple calls to the top-level `display` functions to accomplish its goals.\n",
1235 1235 "\n",
1236 1236 "Here is an object that uses `display_html` and `display_javascript` to make a plot using the [Flot](http://www.flotcharts.org/) JavaScript plotting library:"
1237 1237 ]
1238 1238 },
1239 1239 {
1240 1240 "cell_type": "code",
1241 1241 "execution_count": 21,
1242 1242 "metadata": {
1243 1243 "collapsed": false
1244 1244 },
1245 1245 "outputs": [],
1246 1246 "source": [
1247 1247 "import json\n",
1248 1248 "import uuid\n",
1249 1249 "from IPython.display import display_javascript, display_html, display\n",
1250 1250 "\n",
1251 1251 "class FlotPlot(object):\n",
1252 1252 " def __init__(self, x, y):\n",
1253 1253 " self.x = x\n",
1254 1254 " self.y = y\n",
1255 1255 " self.uuid = str(uuid.uuid4())\n",
1256 1256 " \n",
1257 1257 " def _ipython_display_(self):\n",
1258 1258 " json_data = json.dumps(zip(self.x, self.y))\n",
1259 1259 " display_html('<div id=\"{}\" style=\"height: 300px; width:80%;\"></div>'.format(self.uuid),\n",
1260 1260 " raw=True\n",
1261 1261 " )\n",
1262 1262 " display_javascript(\"\"\"\n",
1263 1263 " require([\"//cdnjs.cloudflare.com/ajax/libs/flot/0.8.2/jquery.flot.min.js\"], function() {\n",
1264 1264 " var line = JSON.parse(\"%s\");\n",
1265 1265 " console.log(line);\n",
1266 1266 " $.plot(\"#%s\", [line]);\n",
1267 1267 " });\n",
1268 1268 " \"\"\" % (json_data, self.uuid), raw=True)\n"
1269 1269 ]
1270 1270 },
1271 1271 {
1272 1272 "cell_type": "code",
1273 1273 "execution_count": 22,
1274 1274 "metadata": {
1275 1275 "collapsed": false
1276 1276 },
1277 1277 "outputs": [
1278 1278 {
1279 1279 "data": {
1280 1280 "text/html": [
1281 1281 "<div id=\"e75b8189-92cb-4cbb-9996-bb8ad5ff1b4e\" style=\"height: 300px; width:80%;\"></div>"
1282 1282 ]
1283 1283 },
1284 1284 "metadata": {},
1285 1285 "output_type": "display_data"
1286 1286 },
1287 1287 {
1288 1288 "data": {
1289 1289 "application/javascript": [
1290 1290 "\n",
1291 1291 " require([\"//cdnjs.cloudflare.com/ajax/libs/flot/0.8.2/jquery.flot.min.js\"], function() {\n",
1292 1292 " var line = JSON.parse(\"[[0.0, 0.0], [0.20408163265306123, 0.20266793654820095], [0.40816326530612246, 0.39692414892492234], [0.61224489795918369, 0.57470604121617908], [0.81632653061224492, 0.72863478346935029], [1.0204081632653061, 0.85232156971961837], [1.2244897959183674, 0.94063278511248671], [1.4285714285714286, 0.98990307637212394], [1.6326530612244898, 0.99808748213471832], [1.8367346938775511, 0.96484630898376322], [2.0408163265306123, 0.89155923041100371], [2.2448979591836737, 0.7812680235262639], [2.4489795918367347, 0.63855032022660208], [2.6530612244897958, 0.46932961277720098], [2.8571428571428572, 0.28062939951435684], [3.0612244897959187, 0.080281674842813497], [3.2653061224489797, -0.12339813736217871], [3.4693877551020407, -0.32195631507261868], [3.6734693877551021, -0.50715170948451438], [3.8775510204081636, -0.67129779355193209], [4.0816326530612246, -0.80758169096833643], [4.2857142857142856, -0.91034694431078278], [4.4897959183673475, -0.97532828606704558], [4.6938775510204085, -0.99982866838408957], [4.8979591836734695, -0.98283120392563061], [5.1020408163265305, -0.92504137173820289], [5.3061224489795915, -0.82885773637304272], [5.5102040816326534, -0.69827239556539955], [5.7142857142857144, -0.53870528838615628], [5.9183673469387754, -0.35677924089893803], [6.1224489795918373, -0.16004508604325057], [6.3265306122448983, 0.043331733368683463], [6.5306122448979593, 0.24491007101197931], [6.7346938775510203, 0.43632342647181932], [6.9387755102040813, 0.6096271964908323], [7.1428571428571432, 0.75762841539272019], [7.3469387755102042, 0.87418429881973347], [7.5510204081632653, 0.95445719973875187], [7.7551020408163271, 0.99511539477766364], [7.9591836734693882, 0.99447136726361685], [8.1632653061224492, 0.95255184753146038], [8.3673469387755102, 0.87109670348232071], [8.5714285714285712, 0.75348672743963763], [8.7755102040816322, 0.60460331650615429], [8.979591836734695, 0.43062587038273736], [9.183673469387756, 0.23877531564403087], [9.387755102040817, 0.037014401485062368], [9.591836734693878, -0.16628279384875641], [9.795918367346939, -0.36267842882654883], [10.0, -0.54402111088936989]]\");\n",
1293 1293 " console.log(line);\n",
1294 1294 " $.plot(\"#e75b8189-92cb-4cbb-9996-bb8ad5ff1b4e\", [line]);\n",
1295 1295 " });\n",
1296 1296 " "
1297 1297 ]
1298 1298 },
1299 1299 "metadata": {},
1300 1300 "output_type": "display_data"
1301 1301 }
1302 1302 ],
1303 1303 "source": [
1304 1304 "import numpy as np\n",
1305 1305 "x = np.linspace(0,10)\n",
1306 1306 "y = np.sin(x)\n",
1307 1307 "FlotPlot(x, np.sin(x))"
1308 1308 ]
1309 1309 },
1310 1310 {
1311 1311 "cell_type": "code",
1312 1312 "execution_count": null,
1313 1313 "metadata": {
1314 1314 "collapsed": false
1315 1315 },
1316 1316 "outputs": [],
1317 1317 "source": []
1318 1318 }
1319 1319 ],
1320 "metadata": {},
1320 "metadata": {
1321 "kernelspec": {
1322 "display_name": "Python 3",
1323 "language": "python",
1324 "name": "python3"
1325 },
1326 "language_info": {
1327 "codemirror_mode": {
1328 "name": "ipython",
1329 "version": 3
1330 },
1331 "file_extension": ".py",
1332 "mimetype": "text/x-python",
1333 "name": "python",
1334 "nbconvert_exporter": "python",
1335 "pygments_lexer": "ipython3",
1336 "version": "3.4.2"
1337 }
1338 },
1321 1339 "nbformat": 4,
1322 1340 "nbformat_minor": 0
1323 } No newline at end of file
1341 }
@@ -1,166 +1,184 b''
1 1 {
2 2 "cells": [
3 3 {
4 4 "cell_type": "markdown",
5 5 "metadata": {},
6 6 "source": [
7 7 "<img src=\"../images/ipython_logo.png\">"
8 8 ]
9 9 },
10 10 {
11 11 "cell_type": "markdown",
12 12 "metadata": {},
13 13 "source": [
14 14 "Back to the main [Index](../Index.ipynb)"
15 15 ]
16 16 },
17 17 {
18 18 "cell_type": "markdown",
19 19 "metadata": {},
20 20 "source": [
21 21 "# IPython Kernel"
22 22 ]
23 23 },
24 24 {
25 25 "cell_type": "markdown",
26 26 "metadata": {},
27 27 "source": [
28 28 "IPython provides extensions to the Python programming language that make working interactively convenient and efficient. These extensions are implemented in the IPython Kernel and are available in all of the IPython Frontends (Notebook, Terminal, Console and Qt Console) when running this kernel."
29 29 ]
30 30 },
31 31 {
32 32 "cell_type": "markdown",
33 33 "metadata": {},
34 34 "source": [
35 35 "## Tutorials"
36 36 ]
37 37 },
38 38 {
39 39 "cell_type": "markdown",
40 40 "metadata": {},
41 41 "source": [
42 42 "* [Cell Magics](Cell Magics.ipynb)\n",
43 43 "* [Script Magics](Script Magics.ipynb)\n",
44 44 "* [Rich Output](Rich Output.ipynb)\n",
45 45 "* [Custom Display Logic](Custom Display Logic.ipynb)\n",
46 46 "* [Plotting in the Notebook](Plotting in the Notebook.ipynb)\n",
47 47 "* [Capturing Output](Capturing Output.ipynb)"
48 48 ]
49 49 },
50 50 {
51 51 "cell_type": "markdown",
52 52 "metadata": {},
53 53 "source": [
54 54 "## Examples"
55 55 ]
56 56 },
57 57 {
58 58 "cell_type": "markdown",
59 59 "metadata": {},
60 60 "source": [
61 61 "* [Background Jobs](Background Jobs.ipynb)\n",
62 62 "* [Trapezoid Rule](Trapezoid Rule.ipynb)\n",
63 63 "* [SymPy](SymPy.ipynb)\n",
64 64 "* [Raw Input in the Notebook](Raw Input in the Notebook.ipynb)"
65 65 ]
66 66 },
67 67 {
68 68 "cell_type": "markdown",
69 69 "metadata": {},
70 70 "source": [
71 71 "## Non-notebook examples"
72 72 ]
73 73 },
74 74 {
75 75 "cell_type": "markdown",
76 76 "metadata": {},
77 77 "source": [
78 78 "This directory also contains examples that are regular Python (`.py`) files."
79 79 ]
80 80 },
81 81 {
82 82 "cell_type": "code",
83 83 "execution_count": 1,
84 84 "metadata": {
85 85 "collapsed": false
86 86 },
87 87 "outputs": [
88 88 {
89 89 "data": {
90 90 "text/html": [
91 91 "<a href='example-demo.py' target='_blank'>example-demo.py</a><br>"
92 92 ],
93 93 "text/plain": [
94 94 "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/IPython Kernel/example-demo.py"
95 95 ]
96 96 },
97 97 "metadata": {},
98 98 "output_type": "display_data"
99 99 },
100 100 {
101 101 "data": {
102 102 "text/html": [
103 103 "<a href='ipython-get-history.py' target='_blank'>ipython-get-history.py</a><br>"
104 104 ],
105 105 "text/plain": [
106 106 "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/IPython Kernel/ipython-get-history.py"
107 107 ]
108 108 },
109 109 "metadata": {},
110 110 "output_type": "display_data"
111 111 }
112 112 ],
113 113 "source": [
114 114 "%run ../utils/list_pyfiles.ipy"
115 115 ]
116 116 },
117 117 {
118 118 "cell_type": "markdown",
119 119 "metadata": {},
120 120 "source": [
121 121 "There are also a set of examples that show how to integrate IPython with different GUI event loops:"
122 122 ]
123 123 },
124 124 {
125 125 "cell_type": "code",
126 126 "execution_count": 2,
127 127 "metadata": {
128 128 "collapsed": false
129 129 },
130 130 "outputs": [
131 131 {
132 132 "data": {
133 133 "text/html": [
134 134 "gui/<br>\n",
135 135 "&nbsp;&nbsp;<a href='gui/gui-glut.py' target='_blank'>gui-glut.py</a><br>\n",
136 136 "&nbsp;&nbsp;<a href='gui/gui-gtk.py' target='_blank'>gui-gtk.py</a><br>\n",
137 137 "&nbsp;&nbsp;<a href='gui/gui-gtk3.py' target='_blank'>gui-gtk3.py</a><br>\n",
138 138 "&nbsp;&nbsp;<a href='gui/gui-pyglet.py' target='_blank'>gui-pyglet.py</a><br>\n",
139 139 "&nbsp;&nbsp;<a href='gui/gui-qt.py' target='_blank'>gui-qt.py</a><br>\n",
140 140 "&nbsp;&nbsp;<a href='gui/gui-tk.py' target='_blank'>gui-tk.py</a><br>\n",
141 141 "&nbsp;&nbsp;<a href='gui/gui-wx.py' target='_blank'>gui-wx.py</a><br>"
142 142 ],
143 143 "text/plain": [
144 144 "gui/\n",
145 145 " gui-glut.py\n",
146 146 " gui-gtk.py\n",
147 147 " gui-gtk3.py\n",
148 148 " gui-pyglet.py\n",
149 149 " gui-qt.py\n",
150 150 " gui-tk.py\n",
151 151 " gui-wx.py"
152 152 ]
153 153 },
154 154 "metadata": {},
155 155 "output_type": "display_data"
156 156 }
157 157 ],
158 158 "source": [
159 159 "%run ../utils/list_subdirs.ipy"
160 160 ]
161 161 }
162 162 ],
163 "metadata": {},
163 "metadata": {
164 "kernelspec": {
165 "display_name": "Python 3",
166 "language": "python",
167 "name": "python3"
168 },
169 "language_info": {
170 "codemirror_mode": {
171 "name": "ipython",
172 "version": 3
173 },
174 "file_extension": ".py",
175 "mimetype": "text/x-python",
176 "name": "python",
177 "nbconvert_exporter": "python",
178 "pygments_lexer": "ipython3",
179 "version": "3.4.2"
180 }
181 },
164 182 "nbformat": 4,
165 183 "nbformat_minor": 0
166 } No newline at end of file
184 }
@@ -1,1483 +1,1501 b''
1 1 {
2 2 "cells": [
3 3 {
4 4 "cell_type": "markdown",
5 5 "metadata": {},
6 6 "source": [
7 7 "# Defining Custom Display Logic for Your Own Objects"
8 8 ]
9 9 },
10 10 {
11 11 "cell_type": "markdown",
12 12 "metadata": {},
13 13 "source": [
14 14 "## Overview"
15 15 ]
16 16 },
17 17 {
18 18 "cell_type": "markdown",
19 19 "metadata": {},
20 20 "source": [
21 21 "In Python, objects can declare their textual representation using the `__repr__` method. IPython expands on this idea and allows objects to declare other, richer representations including:\n",
22 22 "\n",
23 23 "* HTML\n",
24 24 "* JSON\n",
25 25 "* PNG\n",
26 26 "* JPEG\n",
27 27 "* SVG\n",
28 28 "* LaTeX\n",
29 29 "\n",
30 30 "This Notebook shows how you can add custom display logic to your own classes, so that they can be displayed using these rich representations. There are two ways of accomplishing this:\n",
31 31 "\n",
32 32 "1. Implementing special display methods such as `_repr_html_`.\n",
33 33 "2. Registering a display function for a particular type.\n",
34 34 "\n",
35 35 "In this Notebook we show how both approaches work."
36 36 ]
37 37 },
38 38 {
39 39 "cell_type": "markdown",
40 40 "metadata": {},
41 41 "source": [
42 42 "Before we get started, we will import the various display functions for displaying the different formats we will create."
43 43 ]
44 44 },
45 45 {
46 46 "cell_type": "code",
47 47 "execution_count": 1,
48 48 "metadata": {
49 49 "collapsed": false
50 50 },
51 51 "outputs": [],
52 52 "source": [
53 53 "from IPython.display import display\n",
54 54 "from IPython.display import (\n",
55 55 " display_html, display_jpeg, display_png,\n",
56 56 " display_javascript, display_svg, display_latex\n",
57 57 ")"
58 58 ]
59 59 },
60 60 {
61 61 "cell_type": "markdown",
62 62 "metadata": {},
63 63 "source": [
64 64 "## Implementing special display methods"
65 65 ]
66 66 },
67 67 {
68 68 "cell_type": "markdown",
69 69 "metadata": {},
70 70 "source": [
71 71 "The main idea of the first approach is that you have to implement special display methods, one for each representation you want to use. Here is a list of the names of the special methods and the values they must return:\n",
72 72 "\n",
73 73 "* `_repr_html_`: return raw HTML as a string\n",
74 74 "* `_repr_json_`: return raw JSON as a string\n",
75 75 "* `_repr_jpeg_`: return raw JPEG data\n",
76 76 "* `_repr_png_`: return raw PNG data\n",
77 77 "* `_repr_svg_`: return raw SVG data as a string\n",
78 78 "* `_repr_latex_`: return LaTeX commands in a string surrounded by \"$\"."
79 79 ]
80 80 },
81 81 {
82 82 "cell_type": "markdown",
83 83 "metadata": {},
84 84 "source": [
85 85 "### Model Citizen: pandas"
86 86 ]
87 87 },
88 88 {
89 89 "cell_type": "markdown",
90 90 "metadata": {},
91 91 "source": [
92 92 "A prominent example of a package that has IPython-aware rich representations of its objects is [pandas](http://pandas.pydata.org/).\n",
93 93 "\n",
94 94 "A pandas DataFrame has a rich HTML table representation,\n",
95 95 "using `_repr_html_`.\n"
96 96 ]
97 97 },
98 98 {
99 99 "cell_type": "code",
100 100 "execution_count": 2,
101 101 "metadata": {
102 102 "collapsed": false
103 103 },
104 104 "outputs": [],
105 105 "source": [
106 106 "import io\n",
107 107 "import pandas"
108 108 ]
109 109 },
110 110 {
111 111 "cell_type": "code",
112 112 "execution_count": 3,
113 113 "metadata": {
114 114 "collapsed": false
115 115 },
116 116 "outputs": [
117 117 {
118 118 "name": "stdout",
119 119 "output_type": "stream",
120 120 "text": [
121 121 "Writing data.csv\n"
122 122 ]
123 123 }
124 124 ],
125 125 "source": [
126 126 "%%writefile data.csv\n",
127 127 "Date,Open,High,Low,Close,Volume,Adj Close\n",
128 128 "2012-06-01,569.16,590.00,548.50,584.00,14077000,581.50\n",
129 129 "2012-05-01,584.90,596.76,522.18,577.73,18827900,575.26\n",
130 130 "2012-04-02,601.83,644.00,555.00,583.98,28759100,581.48\n",
131 131 "2012-03-01,548.17,621.45,516.22,599.55,26486000,596.99\n",
132 132 "2012-02-01,458.41,547.61,453.98,542.44,22001000,540.12\n",
133 133 "2012-01-03,409.40,458.24,409.00,456.48,12949100,454.53\n"
134 134 ]
135 135 },
136 136 {
137 137 "cell_type": "code",
138 138 "execution_count": 4,
139 139 "metadata": {
140 140 "collapsed": false
141 141 },
142 142 "outputs": [
143 143 {
144 144 "data": {
145 145 "text/plain": [
146 146 " Date Open High Low Close Volume Adj Close\n",
147 147 "0 2012-06-01 569.16 590.00 548.50 584.00 14077000 581.50\n",
148 148 "1 2012-05-01 584.90 596.76 522.18 577.73 18827900 575.26\n",
149 149 "2 2012-04-02 601.83 644.00 555.00 583.98 28759100 581.48\n",
150 150 "3 2012-03-01 548.17 621.45 516.22 599.55 26486000 596.99\n",
151 151 "4 2012-02-01 458.41 547.61 453.98 542.44 22001000 540.12\n",
152 152 "5 2012-01-03 409.40 458.24 409.00 456.48 12949100 454.53"
153 153 ]
154 154 },
155 155 "execution_count": 4,
156 156 "metadata": {},
157 157 "output_type": "execute_result"
158 158 }
159 159 ],
160 160 "source": [
161 161 "df = pandas.read_csv(\"data.csv\")\n",
162 162 "pandas.set_option('display.notebook_repr_html', False)\n",
163 163 "df"
164 164 ]
165 165 },
166 166 {
167 167 "cell_type": "markdown",
168 168 "metadata": {},
169 169 "source": [
170 170 "rich HTML can be activated via `pandas.set_option`."
171 171 ]
172 172 },
173 173 {
174 174 "cell_type": "code",
175 175 "execution_count": 5,
176 176 "metadata": {
177 177 "collapsed": false
178 178 },
179 179 "outputs": [
180 180 {
181 181 "data": {
182 182 "text/html": [
183 183 "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
184 184 "<table border=\"1\" class=\"dataframe\">\n",
185 185 " <thead>\n",
186 186 " <tr style=\"text-align: right;\">\n",
187 187 " <th></th>\n",
188 188 " <th>Date</th>\n",
189 189 " <th>Open</th>\n",
190 190 " <th>High</th>\n",
191 191 " <th>Low</th>\n",
192 192 " <th>Close</th>\n",
193 193 " <th>Volume</th>\n",
194 194 " <th>Adj Close</th>\n",
195 195 " </tr>\n",
196 196 " </thead>\n",
197 197 " <tbody>\n",
198 198 " <tr>\n",
199 199 " <th>0</th>\n",
200 200 " <td> 2012-06-01</td>\n",
201 201 " <td> 569.16</td>\n",
202 202 " <td> 590.00</td>\n",
203 203 " <td> 548.50</td>\n",
204 204 " <td> 584.00</td>\n",
205 205 " <td> 14077000</td>\n",
206 206 " <td> 581.50</td>\n",
207 207 " </tr>\n",
208 208 " <tr>\n",
209 209 " <th>1</th>\n",
210 210 " <td> 2012-05-01</td>\n",
211 211 " <td> 584.90</td>\n",
212 212 " <td> 596.76</td>\n",
213 213 " <td> 522.18</td>\n",
214 214 " <td> 577.73</td>\n",
215 215 " <td> 18827900</td>\n",
216 216 " <td> 575.26</td>\n",
217 217 " </tr>\n",
218 218 " <tr>\n",
219 219 " <th>2</th>\n",
220 220 " <td> 2012-04-02</td>\n",
221 221 " <td> 601.83</td>\n",
222 222 " <td> 644.00</td>\n",
223 223 " <td> 555.00</td>\n",
224 224 " <td> 583.98</td>\n",
225 225 " <td> 28759100</td>\n",
226 226 " <td> 581.48</td>\n",
227 227 " </tr>\n",
228 228 " <tr>\n",
229 229 " <th>3</th>\n",
230 230 " <td> 2012-03-01</td>\n",
231 231 " <td> 548.17</td>\n",
232 232 " <td> 621.45</td>\n",
233 233 " <td> 516.22</td>\n",
234 234 " <td> 599.55</td>\n",
235 235 " <td> 26486000</td>\n",
236 236 " <td> 596.99</td>\n",
237 237 " </tr>\n",
238 238 " <tr>\n",
239 239 " <th>4</th>\n",
240 240 " <td> 2012-02-01</td>\n",
241 241 " <td> 458.41</td>\n",
242 242 " <td> 547.61</td>\n",
243 243 " <td> 453.98</td>\n",
244 244 " <td> 542.44</td>\n",
245 245 " <td> 22001000</td>\n",
246 246 " <td> 540.12</td>\n",
247 247 " </tr>\n",
248 248 " <tr>\n",
249 249 " <th>5</th>\n",
250 250 " <td> 2012-01-03</td>\n",
251 251 " <td> 409.40</td>\n",
252 252 " <td> 458.24</td>\n",
253 253 " <td> 409.00</td>\n",
254 254 " <td> 456.48</td>\n",
255 255 " <td> 12949100</td>\n",
256 256 " <td> 454.53</td>\n",
257 257 " </tr>\n",
258 258 " </tbody>\n",
259 259 "</table>\n",
260 260 "</div>"
261 261 ],
262 262 "text/plain": [
263 263 " Date Open High Low Close Volume Adj Close\n",
264 264 "0 2012-06-01 569.16 590.00 548.50 584.00 14077000 581.50\n",
265 265 "1 2012-05-01 584.90 596.76 522.18 577.73 18827900 575.26\n",
266 266 "2 2012-04-02 601.83 644.00 555.00 583.98 28759100 581.48\n",
267 267 "3 2012-03-01 548.17 621.45 516.22 599.55 26486000 596.99\n",
268 268 "4 2012-02-01 458.41 547.61 453.98 542.44 22001000 540.12\n",
269 269 "5 2012-01-03 409.40 458.24 409.00 456.48 12949100 454.53"
270 270 ]
271 271 },
272 272 "execution_count": 5,
273 273 "metadata": {},
274 274 "output_type": "execute_result"
275 275 }
276 276 ],
277 277 "source": [
278 278 "pandas.set_option('display.notebook_repr_html', True)\n",
279 279 "df"
280 280 ]
281 281 },
282 282 {
283 283 "cell_type": "code",
284 284 "execution_count": 6,
285 285 "metadata": {
286 286 "collapsed": false
287 287 },
288 288 "outputs": [
289 289 {
290 290 "name": "stdout",
291 291 "output_type": "stream",
292 292 "text": [
293 293 "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
294 294 "<table border=\"1\" class=\"dataframe\">\n",
295 295 " <thead>\n",
296 296 " <tr style=\"text-align: right;\">\n",
297 297 " <th></th>\n",
298 298 " <th>Date</th>\n",
299 299 " <th>Open</th>\n",
300 300 " <th>High</th>\n",
301 301 " <th>Low</th>\n",
302 302 " <th>Close</th>\n",
303 303 " <th>Volume</th>\n",
304 304 " <th>Adj Close</th>\n",
305 305 " </tr>\n",
306 306 " </thead>\n",
307 307 " <tbody>\n",
308 308 " <tr>\n",
309 309 " <th>0</th>\n",
310 310 " <td> 2012-06-01</td>\n",
311 311 " <td> 569.16</td>\n",
312 312 " <td> 590.00</td>\n"
313 313 ]
314 314 }
315 315 ],
316 316 "source": [
317 317 "lines = df._repr_html_().splitlines()\n",
318 318 "print \"\\n\".join(lines[:20])"
319 319 ]
320 320 },
321 321 {
322 322 "cell_type": "markdown",
323 323 "metadata": {},
324 324 "source": [
325 325 "### Exercise"
326 326 ]
327 327 },
328 328 {
329 329 "cell_type": "markdown",
330 330 "metadata": {},
331 331 "source": [
332 332 "Write a simple `Circle` Python class. Don't even worry about properties such as radius, position, colors, etc. To help you out use the following representations (remember to wrap them in Python strings):\n",
333 333 "\n",
334 334 "For HTML:\n",
335 335 "\n",
336 336 " &#x25CB;\n",
337 337 "\n",
338 338 "For SVG:\n",
339 339 "\n",
340 340 " <svg width=\"100px\" height=\"100px\">\n",
341 341 " <circle cx=\"50\" cy=\"50\" r=\"20\" stroke=\"black\" stroke-width=\"1\" fill=\"white\"/>\n",
342 342 " </svg>\n",
343 343 "\n",
344 344 "For LaTeX (wrap with `$` and use a raw Python string):\n",
345 345 "\n",
346 346 " \\bigcirc\n",
347 347 "\n",
348 348 "After you write the class, create an instance and then use `display_html`, `display_svg` and `display_latex` to display those representations.\n",
349 349 "\n",
350 350 "Tips : you can slightly tweek the representation to know from which `_repr_*_` method it came from. \n",
351 351 "For example in my solution the svg representation is blue, and the HTML one show \"`HTML`\" between brackets."
352 352 ]
353 353 },
354 354 {
355 355 "cell_type": "markdown",
356 356 "metadata": {},
357 357 "source": [
358 358 "### Solution"
359 359 ]
360 360 },
361 361 {
362 362 "cell_type": "markdown",
363 363 "metadata": {},
364 364 "source": [
365 365 "Here is my simple `MyCircle` class:"
366 366 ]
367 367 },
368 368 {
369 369 "cell_type": "code",
370 370 "execution_count": 8,
371 371 "metadata": {
372 372 "collapsed": false
373 373 },
374 374 "outputs": [],
375 375 "source": [
376 376 "%load soln/mycircle.py"
377 377 ]
378 378 },
379 379 {
380 380 "cell_type": "markdown",
381 381 "metadata": {},
382 382 "source": [
383 383 "Now create an instance and use the display methods:"
384 384 ]
385 385 },
386 386 {
387 387 "cell_type": "code",
388 388 "execution_count": 11,
389 389 "metadata": {
390 390 "collapsed": false
391 391 },
392 392 "outputs": [],
393 393 "source": [
394 394 "c = MyCircle()"
395 395 ]
396 396 },
397 397 {
398 398 "cell_type": "code",
399 399 "execution_count": 12,
400 400 "metadata": {
401 401 "collapsed": false
402 402 },
403 403 "outputs": [
404 404 {
405 405 "data": {
406 406 "text/html": [
407 407 "&#x25CB; (<b>html</b>)"
408 408 ]
409 409 },
410 410 "metadata": {},
411 411 "output_type": "display_data"
412 412 }
413 413 ],
414 414 "source": [
415 415 "display_html(c)"
416 416 ]
417 417 },
418 418 {
419 419 "cell_type": "code",
420 420 "execution_count": 13,
421 421 "metadata": {
422 422 "collapsed": false
423 423 },
424 424 "outputs": [
425 425 {
426 426 "data": {
427 427 "image/svg+xml": [
428 428 "<svg width=\"100px\" height=\"100px\">\n",
429 429 " <circle cx=\"50\" cy=\"50\" r=\"20\" stroke=\"black\" stroke-width=\"1\" fill=\"blue\"/>\n",
430 430 " </svg>"
431 431 ]
432 432 },
433 433 "metadata": {},
434 434 "output_type": "display_data"
435 435 }
436 436 ],
437 437 "source": [
438 438 "display_svg(c)"
439 439 ]
440 440 },
441 441 {
442 442 "cell_type": "code",
443 443 "execution_count": 14,
444 444 "metadata": {
445 445 "collapsed": false
446 446 },
447 447 "outputs": [
448 448 {
449 449 "data": {
450 450 "text/latex": [
451 451 "$\\bigcirc \\LaTeX$"
452 452 ]
453 453 },
454 454 "metadata": {},
455 455 "output_type": "display_data"
456 456 }
457 457 ],
458 458 "source": [
459 459 "display_latex(c)"
460 460 ]
461 461 },
462 462 {
463 463 "cell_type": "code",
464 464 "execution_count": 15,
465 465 "metadata": {
466 466 "collapsed": false
467 467 },
468 468 "outputs": [
469 469 {
470 470 "data": {
471 471 "application/javascript": [
472 472 "alert('I am a circle!');"
473 473 ]
474 474 },
475 475 "metadata": {},
476 476 "output_type": "display_data"
477 477 }
478 478 ],
479 479 "source": [
480 480 "display_javascript(c)"
481 481 ]
482 482 },
483 483 {
484 484 "cell_type": "markdown",
485 485 "metadata": {},
486 486 "source": [
487 487 "## Adding IPython display support to existing objects"
488 488 ]
489 489 },
490 490 {
491 491 "cell_type": "markdown",
492 492 "metadata": {},
493 493 "source": [
494 494 "When you are directly writing your own classes, you can adapt them for display in IPython by following the above example. But in practice, we often need to work with existing code we can't modify. We now illustrate how to add these kinds of extended display capabilities to existing objects. To continue with our example above, we will add a PNG representation to our `Circle` class using Matplotlib."
495 495 ]
496 496 },
497 497 {
498 498 "cell_type": "markdown",
499 499 "metadata": {},
500 500 "source": [
501 501 "### Model citizen: sympy"
502 502 ]
503 503 },
504 504 {
505 505 "cell_type": "markdown",
506 506 "metadata": {},
507 507 "source": [
508 508 "[SymPy](http://sympy.org) is another model citizen that defines rich representations of its object.\n",
509 509 "Unlike pandas above, sympy registers display formatters via IPython's display formatter API, rather than declaring `_repr_mime_` methods."
510 510 ]
511 511 },
512 512 {
513 513 "cell_type": "code",
514 514 "execution_count": 16,
515 515 "metadata": {
516 516 "collapsed": false
517 517 },
518 518 "outputs": [],
519 519 "source": [
520 520 "from sympy import Rational, pi, exp, I, symbols\n",
521 521 "x, y, z = symbols(\"x y z\")"
522 522 ]
523 523 },
524 524 {
525 525 "cell_type": "code",
526 526 "execution_count": 17,
527 527 "metadata": {
528 528 "collapsed": false
529 529 },
530 530 "outputs": [
531 531 {
532 532 "data": {
533 533 "text/plain": [
534 534 "3*pi/2 + exp(I*x)/(x**2 + y)"
535 535 ]
536 536 },
537 537 "execution_count": 17,
538 538 "metadata": {},
539 539 "output_type": "execute_result"
540 540 }
541 541 ],
542 542 "source": [
543 543 "r = Rational(3,2)*pi + exp(I*x) / (x**2 + y)\n",
544 544 "r"
545 545 ]
546 546 },
547 547 {
548 548 "cell_type": "markdown",
549 549 "metadata": {},
550 550 "source": [
551 551 "SymPy provides an `init_printing` function that sets up advanced $\\LaTeX$\n",
552 552 "representations of its objects."
553 553 ]
554 554 },
555 555 {
556 556 "cell_type": "code",
557 557 "execution_count": 18,
558 558 "metadata": {
559 559 "collapsed": false
560 560 },
561 561 "outputs": [
562 562 {
563 563 "data": {
564 564 "image/png": [
565 565 "iVBORw0KGgoAAAANSUhEUgAAAFAAAAAlCAYAAADV/m7fAAAABHNCSVQICAgIfAhkiAAAA9xJREFU\n",
566 566 "aIHt2l2IVVUUwPHfzDQ4hc1UFpaVTvoiKNoHaTCmU/lQaERR9mGUZBSkUVEQvcR9CSKIoCgoom5F\n",
567 567 "BX2T+RD6EBQVZI1BBoVSFA0JUkNiiX1MD+uc5szkOPfjnHvvyP3DwF4z96y1Zp+91l577Uubuuho\n",
568 568 "tgMNYikG8TU+wwosxs9YjTvwWy2Kj8mMV2IeZiTGythem78txwjmYitOxHs4G7vwthonbyL7cHMy\n",
569 569 "vga/4/g8FLcAx+FVnIVesXDeRScW1KM4uwIH8V0yHkV3PYpbjFnifzsDt2J3Il+Mg9hTq+LJcuAr\n",
570 570 "Ynk/VKviJtKJe3AIv2I2Hi3SWJZzcR8O4LGijBbM0yKynsCbOKkZTtyGzzGzAbaWGJ9K6mEh/hC5\n",
571 571 "fD1uETmvcC7AXpFkU0dGcXUDbJfRn5Oua7EjJ10VkYbwXyLnDSfyfPyJnY10Jge+FZtCSofYNAqr\n",
572 572 "d9PQ2YHnsBn/iEJzrditsvTiGVyBnkl0jmIVPszb2QoYEnnvLvyCY7El8akQqnkzHaLoHMKnuEpU\n",
573 573 "9d/jbjwldr6D+Fi8iEooo5ToOaq5CZdl5NfRlYy31KG3LL8c2HCq2f1ezIxPSJ79W1T5p+Tp1HSi\n",
574 574 "1vJhPT5JxgvFRE7FC+JQP5G5WCbCfyIbRTnV8oxO8TORnTg/Ga/BN3XYLqsshKfysSk/6QqsZjNJ\n",
575 575 "uzZfJHKvWEU9xpcQeTOVj53YJHZeeKRAX8YZrZZ7sc1Y2A6LyVudl1M1sgbviIlbjvMaYTQ7gcvF\n",
576 576 "IbwkJmjlJM8sxbMZeQg/qO1l5MkCXJ+M9+DMRhqfiYcz8jrRDzy9AbbL8iljZhjrX76POTnorJgl\n",
577 577 "ovBNm4u9Ikmua4Dtx3FqjvouxAM56quIDhHCaaJeJCbwnEY7Uid9eLDZTsBLCmxCFsgm0UnvVt2m\n",
578 578 "tjlPJzaKnWy63djdIC6H9olO9OIqni3l5cRaMYFEadKfl+KcGMAG0S2/EbfjLdF+q4fSJL/vElee\n",
579 579 "z4vTEpwsczrKlh6rxP3BVpHUL8VpdTqWJ73i2FjGB7hTtO/3i4qhCK4UTZPsYroIP6YfSMN0Pr70\n",
580 580 "/xZ+n5zuTHOgR1QKh0TJNWJ86VUps0X7LZuiVuCjjLxfXKj1JfJuMYEH8GQiT9c7I0QIpWfxviN9\n",
581 581 "sEJKR/jbdXgjI+8Sl29o/umhGi4XJ6V+sUEMiVW0oWC7c4zdG/cn8n9XHV2HeaBVGRD16SxxXbBM\n",
582 582 "1KmvidCqh0GRVw/HXvFNjW7xAofxcp32jjrur/Bz20St2aZCFuEnkSoG8JWxdhmmVwg3g04xefNw\n",
583 583 "ifjCwUhTPWrTpk2bFuJflVvSLV1580UAAAAASUVORK5CYII=\n"
584 584 ],
585 585 "text/latex": [
586 586 "$$\\frac{3}{2} \\pi + \\frac{e^{\\mathbf{\\imath} x}}{x^{2} + y}$$"
587 587 ],
588 588 "text/plain": [
589 " \u2148\u22c5x \n",
590 "3\u22c5\u03c0 \u212f \n",
591 "\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\n",
589 " ⅈ⋅x \n",
590 "3⋅π ℯ \n",
591 "─── + ──────\n",
592 592 " 2 2 \n",
593 593 " x + y"
594 594 ]
595 595 },
596 596 "execution_count": 18,
597 597 "metadata": {},
598 598 "output_type": "execute_result"
599 599 }
600 600 ],
601 601 "source": [
602 602 "from sympy.interactive.printing import init_printing\n",
603 603 "init_printing()\n",
604 604 "r"
605 605 ]
606 606 },
607 607 {
608 608 "cell_type": "markdown",
609 609 "metadata": {},
610 610 "source": [
611 611 "To add a display method to an existing class, we must use IPython's display formatter API. Here we show all of the available formatters:"
612 612 ]
613 613 },
614 614 {
615 615 "cell_type": "code",
616 616 "execution_count": 6,
617 617 "metadata": {
618 618 "collapsed": false
619 619 },
620 620 "outputs": [
621 621 {
622 622 "name": "stdout",
623 623 "output_type": "stream",
624 624 "text": [
625 625 " text/html : HTMLFormatter\n",
626 626 " image/jpeg : JPEGFormatter\n",
627 627 " image/svg+xml : SVGFormatter\n",
628 628 " image/png : PNGFormatter\n",
629 629 " application/javascript : JavascriptFormatter\n",
630 630 " text/latex : LatexFormatter\n",
631 631 " application/json : JSONFormatter\n",
632 632 " text/plain : PlainTextFormatter\n"
633 633 ]
634 634 }
635 635 ],
636 636 "source": [
637 637 "ip = get_ipython()\n",
638 638 "for mime, formatter in ip.display_formatter.formatters.items():\n",
639 639 " print '%24s : %s' % (mime, formatter.__class__.__name__)\n"
640 640 ]
641 641 },
642 642 {
643 643 "cell_type": "markdown",
644 644 "metadata": {},
645 645 "source": [
646 646 "Let's grab the PNG formatter:"
647 647 ]
648 648 },
649 649 {
650 650 "cell_type": "code",
651 651 "execution_count": 20,
652 652 "metadata": {
653 653 "collapsed": false
654 654 },
655 655 "outputs": [],
656 656 "source": [
657 657 "png_f = ip.display_formatter.formatters['image/png']"
658 658 ]
659 659 },
660 660 {
661 661 "cell_type": "markdown",
662 662 "metadata": {},
663 663 "source": [
664 664 "We will use the `for_type` method to register our display function."
665 665 ]
666 666 },
667 667 {
668 668 "cell_type": "code",
669 669 "execution_count": 21,
670 670 "metadata": {
671 671 "collapsed": false
672 672 },
673 673 "outputs": [],
674 674 "source": [
675 675 "png_f.for_type?"
676 676 ]
677 677 },
678 678 {
679 679 "cell_type": "markdown",
680 680 "metadata": {},
681 681 "source": [
682 682 "As the docstring describes, we need to define a function the takes the object as a parameter and returns the raw PNG data."
683 683 ]
684 684 },
685 685 {
686 686 "cell_type": "code",
687 687 "execution_count": 22,
688 688 "metadata": {
689 689 "collapsed": false
690 690 },
691 691 "outputs": [],
692 692 "source": [
693 693 "%matplotlib inline\n",
694 694 "import matplotlib.pyplot as plt"
695 695 ]
696 696 },
697 697 {
698 698 "cell_type": "code",
699 699 "execution_count": 23,
700 700 "metadata": {
701 701 "collapsed": false
702 702 },
703 703 "outputs": [
704 704 {
705 705 "data": {
706 706 "text/plain": [
707 707 "<r Circle with r=1 at (0, 0)>"
708 708 ]
709 709 },
710 710 "execution_count": 23,
711 711 "metadata": {},
712 712 "output_type": "execute_result"
713 713 }
714 714 ],
715 715 "source": [
716 716 "class AnotherCircle(object):\n",
717 717 " def __init__(self, radius=1, center=(0,0), color='r'):\n",
718 718 " self.radius = radius\n",
719 719 " self.center = center\n",
720 720 " self.color = color\n",
721 721 " \n",
722 722 " def __repr__(self):\n",
723 723 " return \"<%s Circle with r=%s at %s>\" % (\n",
724 724 " self.color,\n",
725 725 " self.radius,\n",
726 726 " self.center,\n",
727 727 " )\n",
728 728 " \n",
729 729 "c = AnotherCircle()\n",
730 730 "c"
731 731 ]
732 732 },
733 733 {
734 734 "cell_type": "code",
735 735 "execution_count": 24,
736 736 "metadata": {
737 737 "collapsed": false
738 738 },
739 739 "outputs": [],
740 740 "source": [
741 741 "from IPython.core.pylabtools import print_figure\n",
742 742 "\n",
743 743 "def png_circle(circle):\n",
744 744 " \"\"\"Render AnotherCircle to png data using matplotlib\"\"\"\n",
745 745 " fig, ax = plt.subplots()\n",
746 746 " patch = plt.Circle(circle.center,\n",
747 747 " radius=circle.radius,\n",
748 748 " fc=circle.color,\n",
749 749 " )\n",
750 750 " ax.add_patch(patch)\n",
751 751 " plt.axis('scaled')\n",
752 752 " data = print_figure(fig, 'png')\n",
753 753 " # We MUST close the figure, otherwise IPython's display machinery\n",
754 754 " # will pick it up and send it as output, resulting in a double display\n",
755 755 " plt.close(fig)\n",
756 756 " return data"
757 757 ]
758 758 },
759 759 {
760 760 "cell_type": "code",
761 761 "execution_count": 27,
762 762 "metadata": {
763 763 "collapsed": false
764 764 },
765 765 "outputs": [
766 766 {
767 767 "name": "stdout",
768 768 "output_type": "stream",
769 769 "text": [
770 770 "'\\x89PNG\\r\\n\\x1a\\n\\x00\\x00'\n"
771 771 ]
772 772 }
773 773 ],
774 774 "source": [
775 775 "c = AnotherCircle()\n",
776 776 "print repr(png_circle(c)[:10])"
777 777 ]
778 778 },
779 779 {
780 780 "cell_type": "markdown",
781 781 "metadata": {},
782 782 "source": [
783 783 "Now we register the display function for the type:"
784 784 ]
785 785 },
786 786 {
787 787 "cell_type": "code",
788 788 "execution_count": 28,
789 789 "metadata": {
790 790 "collapsed": false
791 791 },
792 792 "outputs": [],
793 793 "source": [
794 794 "png_f.for_type(AnotherCircle, png_circle)"
795 795 ]
796 796 },
797 797 {
798 798 "cell_type": "markdown",
799 799 "metadata": {},
800 800 "source": [
801 801 "Now all `Circle` instances have PNG representations!"
802 802 ]
803 803 },
804 804 {
805 805 "cell_type": "code",
806 806 "execution_count": 29,
807 807 "metadata": {
808 808 "collapsed": false
809 809 },
810 810 "outputs": [
811 811 {
812 812 "data": {
813 813 "image/png": [
814 814 "iVBORw0KGgoAAAANSUhEUgAAAY4AAAF8CAYAAADYXlxuAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
815 815 "AAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xlc1HXiP/DXDDAgwwwzwyngAQhoItGotR1rB5ZbqXmV\n",
816 816 "9e1a92ttaK7Z9NvWyqx2q83VvliQbrrZYamlVLqtdx5pbYUIiniAeAJyODOcg1zz+8PV1UAcmOP9\n",
817 817 "mZnX8/Ho8Yjh8/m8X34iXn6u90dmtVqtICIispFcdAAiInIvLA4iIuoWFgcREXULi4OIiLqFxUFE\n",
818 818 "RN3C4iAiom7xdcRGFi5ciOLiYvj6+kKtVuOJJ55ATExMh+VKS0uxaNEi1NXVQa1WIz09HVFRUY6I\n",
819 819 "QERELiJzxHMcOTk50Ov1kMvl2LZtG7Zt24bXXnutw3KzZs3ClClTkJKSgtzcXKxevRpvvPGGvcMT\n",
820 820 "EZELOeRU1bBhwyCXn99UbGwsTCZTh2WqqqpgsViQkpICANDr9aiurobZbHZEBCIichGHX+PYsmUL\n",
821 821 "9Hp9h8+NRiNUKtVlnwUHB8NoNDo6AhEROZFDi2PTpk0oKirCQw891Plg8o7Dtba2OjICERE5mUMu\n",
822 822 "jgPA2rVr8eOPP2LOnDkICAjo8H2tVtvhtJTZbIZOp+t0e9u2bUN7e7uj4hER0SX8/PwwYsSIHq1r\n",
823 823 "d3G0t7fjgw8+QGVlZYfSMJlMkMlk0Gg0CA8Ph1KpRF5eHlJTU5GTkwO1Wo3Q0NArbrezU15StG7d\n",
824 824 "OowZM0Z0DJu4U1bA/rxNrU0wNhlRe64WpiYTjE1GVDZW4qj5KIpNxThVdwoVDRUwNok/ZRrkF4QI\n",
825 825 "ZQR6K3sjQZuAeG08eit7Q9dLB12ADsH+wdD4a6D2V9s9ljv9HDCrc+Tm5vZ4XbuLo7q6Gps3b0Zk\n",
826 826 "ZCRmz5598fPp06dj06ZNAIBp06YBAAwGAxYvXoxly5ZBrVbDYDDYOzwRAKC5rRmVjZWobqxGlaUK\n",
827 827 "1Y3V2F+9H3vO7EGRqQjmc9K/CaO+pR715nocNR/FrtJdHb4f4BOA2OBYpISnYGjEUPQO6o3QXqEI\n",
828 828 "DwxHWGAYghRBAlKTN7K7OMLDw7Fq1apOvzdgwIDLvo6Ojsaf//xne4ckL3ehJKoaq1DRUIEiUxE2\n",
829 829 "n9iMvIo81LfUi47nNE1tTThoPIiDxoNYdei//8/5yn2RpEvCHX3vwHUR16G3sjfLhJzKYdc4iJzB\n",
830 830 "z88PjS2NKKsvw+m60yg8W4gNxzZ4fEl0R2t7Kw5UH8CB6gMXP7tQJnf2uxPDew9HH1UfRAVFQder\n",
831 831 "82uKRN3B4iDJuVAUpXWlOBh8EAuyFyCvMg9t1jbR0dxGZ2XST90P9yXchxt63wBlrBJGi5FFQj3C\n",
832 832 "4nCAxMRE0RFsJtWs5fXlOFF7Avur9mP14dXIrchlUTjYidoTeGfPOxe/jt0Ti/EJ43FT9E3oH9wf\n",
833 833 "fVR94OfjJzBh56T6M9sZd8pqD4dMOeIMW7dudZu7qqj7WttacaruFI7XHMf2U9ux8uBKVFmqRMfy\n",
834 834 "WgE+ARgVOwoTEicgXhOPvuq+vD7i4XJzc5GWltajdXnEQS5jabXgeM1xFJuKkX0kGxuPbURTW5Po\n",
835 835 "WITzF96/Lv4aXxd/DRlk0Efo8ejgRzE4dDDiguOg7aUVHZEkhMVBTtXa3ooTtSdw+OxhfHLgE2w+\n",
836 836 "sRntVj7YKWVWWLGnYg/2VOwBAAzUDUR6ajqui7gOcZo4BPoFCk5IorE4yClO155GsbkYXxV9hc8P\n",
837 837 "fc4jCzd2yHgIM7+dCRlkuCXmFvxuyO8wKGQQYoNjJXlNhJyPxUEOY24y44jxCLae3Ip/7PuHJJ7G\n",
838 838 "JsexworvTn+H705/Bz+5H+4bcB8mD5qMQbpBiFLxvTrehMVBdjtecxz7q/Zj4Z6FyK3o+TQG5D5a\n",
839 839 "2luw+shqrD6yGhGBEZg1fBZuib4F8Zp4+Pv6i45HTsbioB5paG5AsbkYW45vQebeTNScqxEdiQSp\n",
840 840 "aKzAn3b8CT4yH0xKmoSHr3kYA3UDERrY+Tx05P5YHNQtZxrOoLC6EEvzl2LD8Q2i45CEtFnbsOrQ\n",
841 841 "Kqw6tAoJmgQYrjdgaMRQxGniIJPJRMcjB2JxkE1O151GTnkOXvv+NRyvPS46DklckbkIT216CkF+\n",
842 842 "QTAMN2BU7CgkaBPgI/cRHY0cgMVBXTpmPobdpbvx+g+vo6KxQnQccjP1LfV49ftX8eaPb2Ja6jSM\n",
843 843 "TxyPJG0SFL4K0dHIDiwO6qDd2o5iUzG+PfEt/vrjX1HbXCs6Erm55rZmZOzJwDu57+CxwY/h0cGP\n",
844 844 "IkmXxGdC3BSLgy6yWq04YjqCtUVrkbEnA5ZWi+hI5GHare34sOBDfFjwIe4bcB+m66djcMhg9PLr\n",
845 845 "JToadQOLgwAAJeYSbDy2Ea//8DoaWxtFxyEvcGGKk4cHPYwnU5/EQN1APlDoJlgcXu503WnsPLUT\n",
846 846 "c3bNganJJDoOeaFPD36KlYdW4mn905g8cDKSdEm8C0vi5KIDkBiVDZVYV7wOd39xN57e8jRLg4Rq\n",
847 847 "s7Zh4Z6FuGPlHcjMzUSJuUR0JOoCi8PL1DfXY+epnRj/1Xg8/q/HUVpfKjoS0UVNbU2Yu3su7lh5\n",
848 848 "B5YfWI4z9WdER6JO8FSVl7BarSg8W4h3ct7BF0e+EB2HqEu1zbX4w9Y/IEmXhPm3zUdqeCqUCqXo\n",
849 849 "WPQfPOLwAqV1pViybwnuXHUnS4PcymHjYYzJHoPZO2fj0NlDkOh757wOi8OD1TXXYfvJ7RibPRZ/\n",
850 850 "2vEnTm1Obmt54XKMXDUSHxV8hPL6ctFxvB6Lw0MVVhfi2W+fxYSvJuBYzTHRcYjs1tjaiGe3PYtx\n",
851 851 "X47D7tO70djC28ZFYXF4GKPFiFUHV+Guz+/CmiNrRMchcrgiUxHGZI/BG/9+A8drjouO45VYHB6k\n",
852 852 "sLoQT216Cumb0/kQH3m89/a+hzFrxmDnqZ08+nAxFocHuPQoY8uJLaLjELlMaX0pxn05jkcfLsbi\n",
853 853 "cHM8yiDi0YersTjcVM25Gqw5vIZHGUT/ceHo468//hWnak+JjuPRWBxu6HjNccz5bg6e2PgEjzKI\n",
854 854 "fiEzNxOT105GfmU+n/twEhaHG2lrb0POmRxM+GoClhcuFx2HSLIOGQ/h7i/uxpoja1BzrkZ0HI/D\n",
855 855 "4nATxiYjPi38FPesvocXAYls0NTWhCc3PomXd73M/2ccjMXhBkrMJXhu23N45ttn0NreKjoOkVv5\n",
856 856 "5MAnmPDVBOScyUFbe5voOB6BxSFh7dZ2/Fz+M8auGYuvir4SHYfIbR2vOY57V9+LVYdWoaaJp67s\n",
857 857 "xeKQqIbmBnxd9DVGrxmNsoYy0XGI3F5Lewue3vI03vrxLc53ZSeHTKteW1uLF198Ec8//zxiYmI6\n",
858 858 "XSYrKwv5+flQKv87NbLBYLji8t6ssrESH+z7APN+mic6CpHHWZy/GAVnC/D27W9jgHaA6Dhuye7i\n",
859 859 "WLt2LdatW4f6+voul5PJZJg4cSJGjRpl75Ae7XjNcbz03Uv4V8m/REch8li7Tu/CuOxx+Ojej6CP\n",
860 860 "0PNVtd1k96mqsWPHYsmSJdDpdFddlvdUd21/1X7c/9X9LA0iFyhrKMOYNWOwvmQ9LK0W0XHcikuv\n",
861 861 "cWRnZ2PmzJl45ZVXUFBQ4MqhJa2lrQXbTm7D6DWjcbTmqOg4RF6jqa0Jj3zzCJbkL8FZy1nRcdyG\n",
862 862 "y14dO3XqVCgUCgBAQUEBFixYgKysLAQGBroqgiQ1tjTim5JvkL4pHe3WdtFxiLzSK7tfwTHzMfzx\n",
863 863 "V39Eb2Vv0XEkz2VHHBdKAwCSk5Oh0WhQWVnpquElqaapBh8XfIzfb/w9S4NIsI8OfATDtwbOc2UD\n",
864 864 "hxbHpdcwTCYTzGbzxa9zc3PR3n7+l2NhYSEsFguioqIcObxbqW6sxsLchXjhuxdERyGi/9hwbAP+\n",
865 865 "d/3/4qiJp4y7Yvepqg0bNmDHjh0wm83IyMhAXFwcpk+fjhUrVgAApk2bBgDYvn07li5dCoVCAZVK\n",
866 866 "BYPBcNlRiDcpry/H6z+8js8OfiY6ChH9Qk5FDh5c+yA+Hv0xBoUMEh1HkmRWid7qtHXrVuj1etEx\n",
867 867 "HO5k7UkYthmw9cRW0VGIqAthvcKwcuxKXBdxnegoTpGbm4u0tLQercsnx13oqOkofvuv37I0iNxA\n",
868 868 "laUK92Xfh+9Lv+ejBL/A4nCRYlMxHvnmEeRV5omOQkQ2qm+px6SvJmF36W6WxyVYHC5QZCzCw/98\n",
869 869 "GIeNh0VHIaJuamprwv1f34+dp3fy7sf/YHE4WZGxCP+z7n9QZCoSHYWIeuhc2zlMXjsZO07t4JEH\n",
870 870 "WBxOdaE0+DQ4kftrbmvGQ+sews7TO72+PFgcTlJsKsaj/3qUpUHkQZrbmvHg2gex6/Qury4PFocT\n",
871 871 "lJhL8Pg3j+OI8YjoKETkYBdOW/1Q9oPoKMKwOBzsZO1JpG9Kx0HjQdFRiMhJmtqa8NC6h5BX4Z13\n",
872 872 "SbI4HOhM/Rm8uPNF/HzmZ9FRiMjJ6prrMHntZBw8631/SWRxOMhZy1nM+2kevin5RnQUInKRKksV\n",
873 873 "HvvnY143txWLwwFqz9ViSf4SfFjwoegoRORiR2uOIn1TOk7WnhQdxWVYHHZqam3C6sOr+X5wIi+W\n",
874 874 "U5GDP+34E8obykVHcQkWhx3a2tuw4dgGPLf9OdFRiEiwDcc2YN6/53nFmwRZHHb4sfxHPLnxSdEx\n",
875 875 "iEgiPjrwET4t/NTj32HO4uihg2cP4tFvHkVre6voKEQkIa/sfgXbTmzz6AcEWRw9cKr2FJ7a+BRM\n",
876 876 "TSbRUYhIgqZumIq9FXtFx3AaFkc3nbWcxes/vI791ftFRyEiiWpqa8Jj3zyGYlOx6ChOweLohqbW\n",
877 877 "Jqw4uAKfH/5cdBQikriyhjI8u+1ZlNd73p1WLI5u2H5yO17e9bLoGETkJnad3oV397yLmqYa0VEc\n",
878 878 "isVho/zKfPzvhv8VHYOI3Mzi/MX4Z8k/0dbeJjqKw7A4bHCy9iSe3PCkx99iR0TO8ey3z2Jvpedc\n",
879 879 "LGdxXEVdcx0yczNRZOYb/IioZ1raW/DkxidxvOa46CgOweK4im9PfIul+5aKjkFEbu54zXG8/fPb\n",
880 880 "qDnn/tc7WBxd2F+1H9M3Txcdg4g8xPLC5dh0fJPbPxzI4riC0rpSzNg8A42tjaKjEJEH+cOWPyC/\n",
881 881 "Kl90DLuwODrR0NyAJflLsK96n+goRORhzrWdQ/qmdJyqPSU6So+xODrxQ9kPeCf3HdExiMhDHTYe\n",
882 882 "xt/z/47GFvc8o8Hi+IViUzHSN6eLjkFEHu69ve8h50yO6Bg9wuK4RH1zPd7d865XzKdPROKlb0p3\n",
883 883 "y1t0WRyX+KH0B3xS+InoGETkJcobyrEkf4nbnbJicfzHUdNRTNsyTXQMIvIyi/IWud0pKxYHzj8d\n",
884 884 "/s6ed3iKioiEcLdTViwO8BQVEYnlbqesvL44SswlmL6FT4cTkViL8hYhtyJXdAybOKQ4amtrMWPG\n",
885 885 "DJw+ffqKy5SWluKll17CzJkzMWfOHJSVlTliaLs0tzbjs8LPeIqKiCTB8K0BZfXifzdejd3FsXbt\n",
886 886 "WhgMBlRXV3e53Pz58/HAAw9g4cKFGD9+PDIzM+0d2m4F1QXI2JMhOgYREQCgyFyEjcc2Sn4uK7uL\n",
887 887 "Y+zYsViyZAl0Ot0Vl6mqqoLFYkFKSgoAQK/Xo7q6Gmaz2d7he+ys5Szm7p6Ldmu7sAxERL8057s5\n",
888 888 "OGQ8JDpGl1xyjcNoNEKlUl32WXBwMIxGoyuG79Tu0t3YXbpb2PhERJ1pbG1EVm4WGpobREe5Ipdd\n",
889 889 "HJfLOw7V2trqquEvU2IugWGbQcjYRERX89nBzyT9xkCXFIdWq+1wWspsNnd5estZWtpasPLgSl4Q\n",
890 890 "JyJJM2wzoLy+XHSMTjm0OC69oGMymS6WRXh4OJRKJfLy8gAAOTk5UKvVCA0NdeTwNimoLsDbOW+7\n",
891 891 "fFwiou4oMhVhy/EtomN0ytfeDWzYsAE7duyA2WxGRkYG4uLiMH36dKxYsQIAMG3a+Wk8DAYDFi9e\n",
892 892 "jGXLlkGtVsNgcP2porrmOmTkZPCCOBG5hTm75uCm6JsQr40XHeUyMqtE7/vaunUr9Hq9Q7f5Q+kP\n",
893 893 "uHfNvQ7dJhGRM829aS5mDJ0BucyxVxZyc3ORlpbWo3W95slxU5MJf/nhL6JjEBF1y1s/voXDZw+L\n",
894 894 "jnEZrymOvRV78UPZD6JjEBF1S1NbE1YeWomWthbRUS7yiuKoaKjAS9+9JDoGEVGPvLf3PRw8e1B0\n",
895 895 "jIu8ojh+LP9R8k9iEhFdSZu1De/nvw9Li0V0FABeUByn607jhZ0viI5BRGSXzw5+hgNnD4iOAcAL\n",
896 896 "iuPfZf92i9kmiYiu5t0970piKhKPLo7y+nK8uvtV0TGIiBxi3dF1OGwUf4eVRxfH3oq9KK0vFR2D\n",
897 897 "iMhhPj7wMc61nhOawWOLo7qxms9tEJHHWV64HEdMR4Rm8Nji2Fe1j3dSEZHHabe2Y82RNWhtFzO7\n",
898 898 "OOChxWFuMmPeT/NExyAicorFeYtRZCoSNr5HFkfh2UL8VP6T6BhERE7R3NaMDSUbhL1i1uOKo6G5\n",
899 899 "AVm5WaJjEBE51ds5b+Oo+aiQsT2uOIpMRVh/bL3oGERETtXQ0oCcMzlCxva44th8fLPoCERELrHg\n",
900 900 "pwWoaqxy+bgeVRzHa44jc2+m6BhERC5xtOYoDp11/d2jHlUc+yr3oa65TnQMIiKXWV643OUPBHpM\n",
901 901 "cZiaTMjYkyE6BhGRS2UfyUaxudilY3pMcRw2HkZeZZ7oGERELtVmbcOu07tcOqZHFEdreyuyj2SL\n",
902 902 "jkFEJMT/5fwfTteddtl4HlEcx8zH8PGBj0XHICISorKx0qUXyT2iOArPFqK5rVl0DCIiYVYeWonm\n",
903 903 "Vtf8HnT74mhsacQH+z8QHYOISKh1xetwrPaYS8Zy++I4aj7q8gtDRERS09Le4rLTVW5fHHkVebBC\n",
904 904 "zERfRERSsnTfUtQ31zt9HLcuDqPFiPf2vic6BhGRJOwu3Y1jNc4/XeXWxVFiLsFhk/j37xIRScXe\n",
905 905 "ir1OH8Oti2NXKa9tEBFd6r2978FoMTp1DLctjoqGCizJXyI6BhGRpBwxHUFJTYlTx3Db4jhZexLl\n",
906 906 "DeWiYxARSc6B6gNO3b7bFse+qn2iIxARSdLHBR+j7pzzZgp3y+KoPVfLKUaIiK5gb+VenKo75bTt\n",
907 907 "u2VxnKw9if1V+0XHICKSrCJTkdO27ZbF4cwdQkTkCdYcWeO0uavcrjia25rxxeEvRMcgIpK0zcc3\n",
908 908 "O+10la8jNlJaWopFixahrq4OarUa6enpiIqK6rBcVlYW8vPzoVQqL35mMBgQExNj81inak/h25Pf\n",
909 909 "OiI2EZHHOtd2DidqTyBeG+/wbTukOObPn48pU6YgJSUFubm5yMzMxBtvvNFhOZlMhokTJ2LUqFE9\n",
910 910 "Hut47XFOoU5EZIOdp3fijn53OHy7dp+qqqqqgsViQUpKCgBAr9ejuroaZrO50+WtVvsmJHTF4/RE\n",
911 911 "RJ7g66KvcdZy1uHbtfuIw2g0QqVSXfZZcHAwjEYjNBpNh+Wzs7Oxfv16aLVaTJo0CcnJyTaPVXOu\n",
912 912 "Bl8e+dLeyEREXuFE7QmU15cjpFeIQ7frkFNVcnnHA5fW1tYOn02dOhUKhQIAUFBQgAULFiArKwuB\n",
913 913 "gYE2jVNeX46DxoP2hSUi8iKn604jOcz2v6Dbwu5TVVqttsNpKbPZDJ1O12HZC6UBAMnJydBoNKis\n",
914 914 "rLR5LFe+jJ2IyBN8X/q9w7dpd3GEh4dDqVQiLy8PAJCTkwO1Wo3Q0FCYTKbLSiU3Nxft7e0AgMLC\n",
915 915 "Qlgslk7vvrqS3Ipce+MSEXmVr4u/xtlGx17ncMipKoPBgMWLF2PZsmVQq9UwGAwAgBUrVgAApk2b\n",
916 916 "BgDYvn07li5dCoVCAZVKBYPBcNlRSFdqmmrwZRGvbxARdcepulMoayhDSKDjrnPIrPbe5uQkW7du\n",
917 917 "hV6vv/j1wbMHcfOnNwtMRETknj4d/Snujrv7ss9yc3ORlpbWo+25zZPjpXWloiMQEbmlH0p/cOj2\n",
918 918 "3KY4SszOfTEJEZGn2npiK+qaHTfNulsUR2tbKzaf2Cw6BhGRWzpiOoKqxiqHbc8tiqOysRI5Z3JE\n",
919 919 "xyAicktt1jZUNFY4bHtuURxVlirUnKsRHYOIyG1VNtj+zNzVuEVxVDY67g9MROSNfj7zs8O25RbF\n",
920 920 "ccx8THQEIiK3tu3kNoddIJd8cbS2tWLLiS2iYxARubUjRsddIJd8cVRZqnhhnIjITm3WNoed9pd8\n",
921 921 "cZiaTDCf6/zdHkREZDtHvZtD8sVhbDKKjkBE5BFK6x0zA4fki8PUZBIdgYjII+SUO+a0v+SLg+/g\n",
922 922 "ICJyjP3V+x3yTJzki4MXxomIHONYzTHUNHl4cZibzNhftV90DCIij9Dc1gzTOftP/0u6OGrO1eBE\n",
923 923 "7QnRMYiIPIYjrhtLujjM58xoaW8RHYOIyGN4fHFwYkMiIsc6WXfS7m1Iujgc+eIRIiICjpqO2r0N\n",
924 924 "SRdHfUu96AhERB7lqPkoWtta7dqGpIujrK5MdAQiIo9S3lCO2uZau7Yh6eI4arb/kIqIiP6roqEC\n",
925 925 "ja2Ndm1D0sVRbCoWHYGIyKNYWi1obPHg4jjTeEZ0BCIij2Pv9WNJF0dFg+Nerk5EROc1NDfYtb6k\n",
926 926 "i+Nc2znREYiIPE5DiwcXBxEROZ69fylncRAReZnmtma71mdxEBF5maa2JrvWZ3EQEXkZc5PZrvVZ\n",
927 927 "HEREXsbYZLRrfRYHEZGXsXdqdRYHEZGXOWs5a9f6LA4iIi9ztsm+4vB1RIjS0lIsWrQIdXV1UKvV\n",
928 928 "SE9PR1RUVI+XIyIi5znXKoHnOObPn48HHngACxcuxPjx45GZmWnXckRE5Dzt1na71re7OKqqqmCx\n",
929 929 "WJCSkgIA0Ov1qK6uhtls7tFyRETkXG3WNrvWt7s4jEYjVCrVZZ8FBwfDaDT2aDkiInIu4UccACCX\n",
930 930 "d9xMa2vHVxPauhwRETmPFVa71re7OLRabYfTTWazGTqdrkfLERGRc8ll9v3qt7s4wsPDoVQqkZeX\n",
931 931 "BwDIycmBWq1GaGgoTCbTxbLoajkiInIde4vDIbfjGgwGLF68GMuWLYNarYbBYAAArFixAgAwbdq0\n",
932 932 "LpcjIiLXkdt5zCCzWq32nexykq1bt2LkrpGiYxAReRx9hB7zEuYhLS2tR+vzyXEiIi+j9FPatT6L\n",
933 933 "g4jIy4QEhNi1PouDiMjLhPRicRARUTfoAux7DILFQUTkZYIDgu1an8VBRORlgv1ZHERE1A0BPgF2\n",
934 934 "rc/iICLyMn4+fnatz+IgIvIyHn3EoVKorr4QERF1S5AiyK71JV0cEYERoiMQEXkcj35yPCqI7yMn\n",
935 935 "InI0jz7iSNQmio5ARORR1Ao1evn2smsbki6OOE2c6AhERB6ld1Bvzz5VFRYYJjoCEZFHiQqKglqh\n",
936 936 "tmsbki4Oe8/DERHR5RK0CZDJZHZtQ9rF4cfiICJypHhNvN3bkHRxaAO0oiMQEXmUSGWk3duQdHEE\n",
937 937 "+wfbfRGHiIj+y94p1QGJF4c2QMs7q4iIHMgRZ3IkXRyBfoHQh+tFxyAi8ggqhcruKdUBiRcHAKRG\n",
938 938 "pIqOQETkEeI18Z5/xAEA4YHhoiMQEXkEfYQegX6Bdm9H8sXhiAs5REQEpIY75gwOi4OIyEs4ajYO\n",
939 939 "yReHNkCL6KBo0TGIiNye1xRHaGAoboq+SXQMIiK3FugbiLBeXlIcAHBrn1tFRyAicmspYSnec8QB\n",
940 940 "gKeqiIjsNLL/SAT42veu8QvcojgilHyFLBGRPQaFDHLYttyiOEJ7hfKog4jIDo78C7h7FAcvkBMR\n",
941 941 "9ZgjL4wDblIcAC+QExH1lCMvjANuVBx9VH1ERyAickuj4kY57MI4APjas3JpaSkWLVqEuro6qNVq\n",
942 942 "pKenIyoqqtNls7KykJ+fD6Xyv+/XMBgMiImJsWmsaFU0/OR+aGlvsScyEZHXGRI6xKHbs6s45s+f\n",
943 943 "jylTpiAlJQW5ubnIzMzEG2+80emyMpkMEydOxKhRo3o0VlRQFIZHDsf3Zd/bE5mIyKvIZXLEqGz7\n",
944 944 "C7rN2+zpilVVVbBYLEhJSQEA6PV6VFdXw2w2X3Edq9Xa0+EQ4BuAcYnjerw+EZE3Sg5NRlRQ52eC\n",
945 945 "eqrHRxxGoxEqleqyz4KDg2E0GqHRaDpdJzs7G+vXr4dWq8WkSZOQnJzcrTEH6gb2NC4RkVeamDgR\n",
946 946 "QYogh26zy+LIyMhASUlJh89DQkLw0EMPQS7veMDS2tra6bamTp0KhUIBACgoKMCCBQuQlZWFwEDb\n",
947 947 "54aPCoqCwkeB5rZmm9chIvJmyWHd+wu6LbosjmeeeeaK36usrOxwWspsNkOn63wa9AulAQDJycnQ\n",
948 948 "aDSorKxE//79bQ4bFRSF6yOvx67SXTavQ0TkreQyOWKCHHt9A7DjGkd4eDiUSiXy8vIAADk5OVCr\n",
949 949 "1QgNDQUAmEymy4olNzcX7e3tAIDCwkJYLJYr3oF1JQG+ARifOL6nkYmIvMq1Ydc6/PoGYOddVQaD\n",
950 950 "AYsXL8ayZcugVqthMBgufm/FihUAgGnTpgEAtm/fjqVLl0KhUEClUsFgMFx2FGKrRF2iPZGJiLzG\n",
951 951 "xKSJUCqUV1+wm+wqjujoaPz5z3/u9HsXCuOCZ5991p6hLuqn7odg/2DUnKtxyPaIiDyVo14V+0tu\n",
952 952 "8+T4BdFB0ZiYOFF0DCIiSdMF6NBP3c8p23a74pDJZBgV27OHCImIvMX9SfcjWuWcWcXdrjgAIDY4\n",
953 953 "Fn5yP9ExiIgka2T/kU7btlsWRx91H9ze93bRMYiIJEnho0D/4P5O275bFoe/jz/uT7pfdAwiIkka\n",
954 954 "2W8k+gQ5b0ZxtywOgLflEhFdyf1J90Ph2/3HHWzltsXRV90XKWEpomMQEUmKDDIkaBOcOobbFkew\n",
955 955 "fzCevPZJ0TGIiCTltr63OfX6BuDGxQGcf7hFBpnoGEREkjEleQoC/WyfPLYn3Lo4+gf3xx197xAd\n",
956 956 "g4hIEvx9/JEUkuT0cdy6OAL9AvF48uOiYxARScL4hPGIVcc6fRy3Lg4AGBgyEP4+/qJjEBEJNylp\n",
957 957 "Enx97JqC0CZuXxz9g/tjUuIk0TGIiIQK9g/GAO0Al4zl9sXhK/fFhKQJomMQEQk1JXkK+qr7umQs\n",
958 958 "ty8OAEjQJCCkV4joGEREwtwVe5fLxvKI4ohRx2DW0FmiYxARCTEkdAgSta6bTcMjigMARvQZAbnM\n",
959 959 "Y/44RESFVaFVAAAXf0lEQVQ2mzVsFnS9dC4bz2N+0w7QDsDYAWNFxyAicimVQoWUcNdOv+QxxRHg\n",
960 960 "G8BnOojI60xLnYbYYOc/u3EpjykOABikG4T+6v6iYxARucxdsXdBJnPt1EseVRzhynA8d/1zomMQ\n",
961 961 "EbnEHX3vEPKKCY8qDgAYFjmMT5ITkVf4fervofRTunxcjyuOeE08fn/t70XHICJyquigaCSHJgsZ\n",
962 962 "2+OKw0fugwlJE3hrLhF5tJdvfhm9g3oLGdsjf7smaZPw8DUPi45BROQUIb1CcEPvG4SN75HF4e/r\n",
963 963 "j8cGPyY6BhGRU7x444sum5eqMx5ZHAAwUDcQo+NGi45BRORQKoUKv475tdAMHlscSoUS6fp00TGI\n",
964 964 "iBzqueHPIV4TLzSDxxYHAFwTcg1ujrpZdAwiIofw9/HHnbF3io7h2cUR7B+M527gA4FE5BmmXzcd\n",
965 965 "CZoE0TE8uzgAICUsBTdH86iDiNxbgE8AJiVNgo/cR3QUzy8ObYAWL9z4gugYRER2mf2r2UjSJYmO\n",
966 966 "AcALigM4/5KTMQPGiI5BRNQjaoUa98bf6/LJDK/EK4ojSBGEmUNnQgZp7HQiou547ZbXEKeJEx3j\n",
967 967 "IruLo7a2FjNmzMDp06e7XK60tBQvvfQSZs6ciTlz5qCsrMzeobvlmpBr8Lshv3PpmERE9opURuL2\n",
968 968 "vreLjnEZu4pj7dq1MBgMqK6uvuqy8+fPxwMPPICFCxdi/PjxyMzMtGfobgvwDcDjQx6Hn9zPpeMS\n",
969 969 "EdnjjV+/gT7qPqJjXMau4hg7diyWLFkCna7rd91WVVXBYrEgJeX86w31ej2qq6thNpvtGb7bBuoG\n",
970 970 "YtawWS4dk4iopwZoBuBX0b8SHaMDl1zjMBqNUKlUl30WHBwMo9HoiuEv8pX7YlLSJAT7B7t0XCKi\n",
971 971 "nnjr1rcQqYwUHaMD366+mZGRgZKSkg6fh4SEYO7cud0aSC7v2FGtra3d2oYjDNAOwFu3voWnNj3l\n",
972 972 "8rGJiGw1dsBYDI0cKjpGp7osjmeeecYhg2i12g6npcxm81VPcTnLbX1vw3Xh12Fv5V4h4xMRdUXh\n",
973 973 "o8Bzw5+D2l8tOkqnHHaqymq1Xva1yWS6WBbh4eFQKpXIy8sDAOTk5ECtViM0NNRRw3dLeGA43rz1\n",
974 974 "TSFjExFdzcs3vYxrQq8RHeOK7CqODRs2YPbs2TCbzcjIyEBWVtbF761YsQKfffbZxa8NBgPWrFmD\n",
975 975 "mTNn4uuvv4bBYLBnaLulhKXwFbNEJDl9VH0wJn6MpN9iKrP+8lBBIrZu3Qq9Xu/UMYpMRRi5aiTq\n",
976 976 "muucOg4Rka2+uO8LpPVLc/o4ubm5SEvr2TjSrTQXSNAm4K1b3xIdg4gIADA6fjSGRw4XHeOqvLo4\n",
977 977 "AOCOvndgWMQw0TGIyMsF+ATgj9f/UbIXxC/l9cURrgzH327/G58oJyKh/nbb3zA4dLDoGDbx+uIA\n",
978 978 "gOTQZPzl138RHYOIvNSImBEYFTtKMrPfXg2LA4CP3Of8wzYR0nzYhog8V4BPAP7y678gNFDM4wk9\n",
979 979 "weL4jwhlBObfPp+nrIjIpdzpFNUFLI5LJIcm4/Vfvy46BhF5iVv73OpWp6guYHFcwkfugzEDxvAu\n",
980 980 "KyJyugCfAPz5lj+71SmqC1gcvxChjMDfbv8bAnwCREchIg/29h1vu90pqgtYHJ1ICUvBOyPfER2D\n",
981 981 "iDzUA0kPuOUpqgtYHJ2QyWS4q/9deGzwY6KjEJGHiQ6KxvM3PA9tgFZ0lB5jcVyB2l+NWcNmITY4\n",
982 982 "VnQUIvIQPjIf/OPufyBW496/V1gcXegX3A/vj3qft+gSkUO8detb0Ec4d/JWV2BxXEVqeCrevv1t\n",
983 983 "0TGIyM2NjhuN+xLug6+8y/fnuQUWx1X4yH1wT9w9mJgwUXQUInJT4YHhePnmlxHSK0R0FIdgcdhA\n",
984 984 "20uLF258AXHBcaKjEJGb8ZX74sO7P8QA7QDRURyGxWGjWE0sPrjnAwT5BYmOQkRuJGtkFob3lv47\n",
985 985 "NrqDxdENKWEpWHbPMsjgnvdeE5FrzRo2C3fH3Q0fuY/oKA7F4uimX0f/mm8NJKKrSuuXhievfRJB\n",
986 986 "Cs87S8Hi6CaFrwITkybi8cGPi45CRBLVT90P826dhwhlhOgoTsHi6AFtgBbPXf8cJ0Mkog6Ufkp8\n",
987 987 "dM9Hbv+QX1dYHD0UrYpG5p2ZCOsVJjoKEUmEDDIsu3sZUsJTREdxKhaHHRJ1iVg5diVUCpXoKEQk\n",
988 988 "AZl3ZmJEzAjRMZyOxWGn6yKuw2ejP4PCRyE6ChEJ9MrNr2Bs/FgofD3/dwGLwwFujL4RH979IW/T\n",
989 989 "JfJS01Kn4bHBj0GpUIqO4hIsDgeQy+RI65eGrDuzREchIhe7P+l+zBw2E5oAjegoLsPicBA/Hz+M\n",
990 990 "iR+D1255TXQUInKRETEj8PJNLyMs0LtukmFxOJBSocQjgx/B09c9LToKETnZ4JDByEjLQLQqWnQU\n",
991 991 "l2NxOJjGX4MZ+hl8QJDIgw3QDMCye5ahf3B/0VGEYHE4QZgyDH/61Z/w8DUPi45CRA4WGxyLT0d/\n",
992 992 "6lGz3XYXi8NJIpQReOnGlzB54GTRUYjIQfqq+2LFmBVI0CWIjiIUi8OJIpQRmHvTXJYHkQfop+6H\n",
993 993 "VWNXIVGXKDqKcCwOJ4sMisQrN7/C01ZEbiwuOA6rxq5Cki5JdBRJYHG4wIXTVrxgTuR+EjQJWDF2\n",
994 994 "BY80LmH3W9Nra2vx4osv4vnnn0dMTMwVl8vKykJ+fj6Uyv8+WWkwGLpcx5NEKCPwwq9egEqhQube\n",
995 995 "TNFxiMgGqeGpeH/U+159IbwzdhXH2rVrsW7dOtTX1191WZlMhokTJ2LUqFH2DOnWwpRhePb6Z8+/\n",
996 996 "uH73y6LjEFEX7ux3J/52+9/QV91XdBTJsetU1dixY7FkyRLodDqblrdarfYM5xE0/hpMGTIF7935\n",
997 997 "Hue2IpKoh695GBlpGSyNK7D7VFV3ZGdnY/369dBqtZg0aRKSk5NdObxkKBVKTEycCI2/Br9d/1s0\n",
998 998 "tzWLjkRE/zFr2Cykp6YjNDBUdBTJ6rI4MjIyUFJS0uHzkJAQzJ07t1sDTZ06FQrF+emGCwoKsGDB\n",
999 999 "AmRlZSEwMLBb2/EUfj5+uCv2LmSPy8aDax9EfcvVT/cRkXO9OeJNPDjwQQQHBIuOImldFsczzzzj\n",
1000 1000 "sIEulAYAJCcnQ6PRoLKyEv3793fYGO5GLpPjpuibsHbCWkxeOxlVlirRkYi8klwmx6K7FuHeuHsR\n",
1001 1001 "6Oedf5ntDofdjvvL6xcmkwlms/ni17m5uWhvbwcAFBYWwmKxICoqylHDu7XUiFSsm7gOQyOGio5C\n",
1002 1002 "5HXUCjW+HPclxg0Yx9KwkV3XODZs2IAdO3bAbDYjIyMDcXFxmD59OgBgxYoVAIBp06YBALZv346l\n",
1003 1003 "S5dCoVBApVLBYDBcdhTi7RJ1iVh2zzIs+GkBPjrwkeg4RF4hSZeEpb9ZisGhg0VHcSsyq0Rvddq6\n",
1004 1004 "dSv0er3oGC5najJhzeE1eH7H87BCkv9piDzCuAHjMPfmuegX3E90FCFyc3ORlpbWo3X55LjEaAO0\n",
1005 1005 "eGzwY/j8vs8R5BckOg6RR5pz4xzMu22e15aGvVgcEqTwVSCtXxr+OemfiA2OFR2HyGP4+/jjk3s/\n",
1006 1006 "we9Tf8/bbe3A4pCwlLAUrL5vNSYkTBAdhcjtxQbH4ptJ3+CeuHt4EdxOLA6Ji9XEYt7t8/Bu2rvw\n",
1007 1007 "k/uJjkPklh4f/Diyx2VDH6GHTMYZG+zl0ifHqWd0ATo8OOhBDAwZiCc2PoHjNcdFRyJyCwE+AXh3\n",
1008 1008 "5Lu4s/+dUPurRcfxGDzicBM+ch8MjRyK7HHZeHTwo6LjEEneQN1ArL9/PSYkTmBpOBiLw830D+6P\n",
1009 1009 "1255De+Peh/+Pv6i4xBJ0lPXPoVVY1fh2vBreWrKCXiqyg0F+wdjYuJEJGgT8Ny257CnYo/oSESS\n",
1010 1010 "oPHX4L0738MtMbcgSMHb2Z2FRxxuSiaT4drwa/HJvZ/grVvf4oVz8noPDnwQGx/YiN/E/Yal4WQs\n",
1011 1011 "DjcXGRSJ3w35HTbevxH6CO970p5I46/B8tHL8ddb/4oEbYLoOF6BxeEBfOQ+SI1IxfJ7l/Pog7zK\n",
1012 1012 "5IGTsfH+jbgn7h5eAHchFocH4dEHeQuNvwafjv4Ub936FhJ0PMpwNRaHh7lw9PHp6E+RdWcWVAqV\n",
1013 1013 "6EhEDiODDDP0M7DpgU24O+5uHmUIwruqPFSEMgIPDXoIQyOGYtn+Zfh7/t9FRyKyy/DI4Xh9xOtI\n",
1014 1014 "Dk1GgG+A6DhejUccHi5Rl4iXb34Z6yetR2pYqug4RN2mDdDiH7/5Bz4d/SmGRQ5jaUgAi8ML9PLt\n",
1015 1015 "hRuibsDKsSux+K7FUCt4eE/SJ5fJMXPoTGx6YBPGJ47nbLYSwlNVXiRcGY4HBj6A68KvwxeHv0DG\n",
1016 1016 "ngy0treKjkXUwV3978L/u/7/ITk0Gf6+nCFBanjE4YUSdAn44w1/xLeTv8XvhvwOMnBKBpKG4ZHD\n",
1017 1017 "sXbCWrw/6n0MjRzK0pAoFoeX8pX7IjksGX/59V+w+YHNGBM/RnQk8mIDNAPw+djP8dmYz3BLzC28\n",
1018 1018 "W0riWBxeLsA3APpIPTLvzMQ3E7/BjVE3io5EXiQiMAL/+M0/sHbiWozsPxIhvUJERyIb8BoHAQBU\n",
1019 1019 "ChVujL4Ry0cvR35lPub/NB/fl30vOhZ5qN7K3phz0xzcFH0T+qr7io5D3cTioMtoA7S4re9tSA1P\n",
1020 1020 "xcGzB5G1Nwv/KvmX6FjkIQZoBmDOTXOgj9AjWhUtOg71EIuDOqUJ0ODG6BuREpaCg8aD+LjgY3x2\n",
1021 1021 "8DO0W9tFRyM3dF34dZj9q9lICUtBuDJcdByyE4uDuqRUKDEschiGhA7B1JSpWH14NZbsW4JzbedE\n",
1022 1022 "RyM3kNY3DX8Y9gcMDhkMXS+d6DjkICwOsom/rz9SwlNwTeg1eGTwI8g5k4N5P83DydqToqORxAT5\n",
1023 1023 "BeGp1Kfwm7jfIFGbyHdjeCAWB3WLr9wXibpEJOoSkdYvDYeMh7Bs3zKsO7oOVlhFxyOBrgm5Bobh\n",
1024 1024 "Blwbfi1ig2P5ylYPxuKgHotQRiBCGYHre18Pg8mAHSd3IGNPBoxNRtHRyEX85H54aNBDmDxwMpJ0\n",
1025 1025 "STwd5SVYHGS3Xr69MCRsCIaEDcF9CfehyFSE1YdXI7soG81tzaLjkRPc0PsGPHHtExgcOhjxwfHw\n",
1026 1026 "9eGvEm/C/9rkUH3UfdBH3QcjYkZg1vBZOHz2MD7Y/wF2nNrBU1luLj44HtP00zA0YijiNHG8duHF\n",
1027 1027 "WBzkFL4+vkjQJiBBm4A7+t2BYzXHkF+Zj8V5i1FQXSA6HtkorFcYpl47Fbf2uRXxwfEICeST3cTi\n",
1028 1028 "IBcI9AvE4NDBGBw6GPfE3YOTdSdxxHgEqw6uwo7TOzhDr8QM1A3Eb5N/i2vDr0VfdV/0DuotOhJJ\n",
1029 1029 "DIuDXEoToIEmQIOUsBSMjh+NU7WncKzmGNaXrMeXRV+itrlWdESv4yv3xa0xt2LyoMlI1CWir6ov\n",
1030 1030 "NAEa0bFIwlgcJEyAbwASdAlI0CVgZP+ReHb4szhZexKHjIfw5ZEv8fOZn9HS3iI6pkdK0CZgXMI4\n",
1031 1031 "DIschv7q/uij7sM365HNWBwOcPjwYSQlJYmOYROpZpXL5BcvrN8cczP+Z9D/oLyhHMVVxTjeeBxf\n",
1032 1032 "FX2FnDM5PK3VQ/GaeIxPGI9hkcMQo4qBT6MPkvpK7+egM1L9me2MO2W1h13FsXDhQhQXF8PX1xdq\n",
1033 1033 "tRpPPPEEYmJiOl22tLQUixYtQl1dHdRqNdLT0xEVFWXP8JJx5MgRt/lhcZesvfx6IU4ThwPfHcCT\n",
1034 1034 "Y57EI9c8gvKGcpTWleJk7UlsO7kN/y77N8obykVHlRyVQgV9hB4j+41EgjYBMaoYRCojL3vGYt26\n",
1035 1035 "dW5THO7yMwu4V1Z72FUcN998M2bMmAG5XI5t27bh/fffx2uvvdbpsvPnz8eUKVOQkpKC3NxcZGZm\n",
1036 1036 "4o033rBnePIigX6BiNfEI14TDwB4+JqHUdVYhbOWszjTeAaldaXYfmo7/l32b5TVlwlO6zqXlkS8\n",
1037 1037 "Nh6RykiE9gpFeGA4FD4K0fHIQ9lVHMOGDbv477GxscjOzu50uaqqKlgsFqSkpAAA9Ho9Fi9eDLPZ\n",
1038 1038 "DI2GF+Go+2QyGcKV4QhXhmMQBgE4XybVlmoYm4wwWUwwnjOioqECuWdykVeVhxJzCSytFsHJu89H\n",
1039 1039 "5oO+6r4YHDIYw3sPR191X+h66aD110IboEVYYBhLglzKYdc4tmzZAr1e3+n3jEYjVCrVZZ8FBwfD\n",
1040 1040 "aDSyOMhhZDIZwgLDEBYYdtnnU4ZMQUNzA0znTDA3mWE+Z0Zdcx0aWhpwpv4MSmpKUGQqQnl9Oc40\n",
1041 1041 "nEFja6PLMvvKfRERGIFIZSRiNbFI0Jw/taRSqBCkCEKwfzC0AVqoFWpoA7Sc/4kkocviyMjIQElJ\n",
1042 1042 "SYfPQ0JCMHfu3Itfb9q0CUVFRXj11VevuC25vONbaltbeaGTXEOpUEKpUCJG1fk1uLb2NtQ216Kx\n",
1043 1043 "pRGWVgssrRa0tLWgub0ZzW3/+eeSfz/Xdg6t7a1oa29DO9rR3t6OpqYmKAOV8JX7Qi6Tw9/HHwof\n",
1044 1044 "xfl/5Ir//vslXwf6BSLQNxAqfxX8ffxdvFeIekZmtVrtmgdi7dq1+PHHHzF79mwEBXU+BUFlZSXm\n",
1045 1045 "zJmDv//97xc/e+KJJ/Dmm28iNDS003V27tyJlhbeiklE5Ax+fn4YMWJEj9bt8amq9vZ2fPDBBxdL\n",
1046 1046 "ISDg8nvATSYTZDIZNBoNwsPDoVQqkZeXh9TUVOTk5ECtVl+xNAD0+A9ERETO1eMjjsrKSsyYMQOR\n",
1047 1047 "kZGXnYZ6+umnER8fj/feew8AMG3aNADnb8ddvHgxamtrPe52XCIib2L3qSoiIvIuHa9YExERdYHF\n",
1048 1048 "QURE3SKpuapqa2vx4osv4vnnn7/i1CWA+OlLujN+VlYW8vPzoVQqL35mMBi6/PO5Kp/o/didDCL2\n",
1049 1049 "Y2ds+RmVwn4FbMsqlf1q6/RFUti3tmaVwr5dtGgRDh06BJlMBj8/Pzz++ONITk7usFy396tVIr7+\n",
1050 1050 "+mvr1KlTrQ8++KD11KlTXS77zDPPWPPz861Wq9W6Z88e6+zZs10RsUfjZ2VlWTds2OCqaFar1fZ8\n",
1051 1051 "ovdjdzKI2I+/ZOvPqBT2q61ZpbBfrVar9eeff7a2tbVZrVar9dtvv7XOmTOn0+WksG9tzSqFfbtv\n",
1052 1052 "376LWffs2WOdNWtWp8t1d79K5lTV2LFjsWTJEuh0Xb/svrPpS6qrq2E2m10Rs0fjW114/4Gt+UTv\n",
1053 1053 "x55kcOV+7IwtP6NS2K+A7f8/AeL3K3B++qILd2fGxsbCZDJ1WEYq+9aWrBeI3rdDhgyBXC6H1WpF\n",
1054 1054 "WVkZYmNjOyzTk/0qqVNVthA9fUlPxs/Ozsb69euh1WoxadKkTg8VXZ1P9H7sSQZX7seeksJ+7S6p\n",
1055 1055 "7dcrTV8kxX3b1VRLgDT27aFDh7BgwQJoNBrMnj27w/d7sl9dVhy2Tl9iC2dPX9JV1oceeqhb40+d\n",
1056 1056 "OhUKxfkJ6AoKCrBgwQJkZWUhMDDQYXl/ydZ8UpgGxtYMIvZjT0lhv9pKavv1atMXSWnfXi2rVPbt\n",
1057 1057 "wIEDsWTJEuTl5eHVV1/FwoULOyzT3f3qsuJ45plnHLIdrVbb4RDKbDbbdEhuq66yVlZWdmv8Cz84\n",
1058 1058 "AJCcnAyNRoPKykr079/fIVl/ydb944r9eDXdyeDq/dhTUtiv3SGl/Xph+qLOZqIApLVvr5YVkNa+\n",
1059 1059 "BYDU1FScPXsW9fX1l00P1ZP9KplrHJf65XlBk8l08Q926fQlAGyavsSRrjb+pVkBIDc3F+3t7QCA\n",
1060 1060 "wsJCWCwWp94F0lU+Ke3H7mQFXL8fr+bSn1Gp7ddfulJWQBr7tb29HUuXLkVBQQHmzJlz2S81qe1b\n",
1061 1061 "W7MC4vdtfX09cnJyLv73//777xEaGoqgoCC796tknhzfsGEDduzYgZMnTyIyMhJxcXGYPn06AEhu\n",
1062 1062 "+pKuxv9l1rfffhvFxcVQKBRQqVR47LHHkJCQICSf1PZjd7KK2I+/dKWfUSnuV1uzSmG/Xmn6ounT\n",
1063 1063 "p2PTpk2X5RW9b7uTVfS+ra+vR0ZGBsrKyuDv7w+dTocpU6YgJibG7p9ZyRQHERG5B0meqiIiIuli\n",
1064 1064 "cRARUbewOIiIqFtYHERE1C0sDiIi6hYWBxERdQuLg4iIuoXFQURE3fL/AR8SQcFGS9m7AAAAAElF\n",
1065 1065 "TkSuQmCC\n"
1066 1066 ],
1067 1067 "text/plain": [
1068 1068 "<g Circle with r=2 at (1, 0)>"
1069 1069 ]
1070 1070 },
1071 1071 "execution_count": 29,
1072 1072 "metadata": {},
1073 1073 "output_type": "execute_result"
1074 1074 }
1075 1075 ],
1076 1076 "source": [
1077 1077 "c2 = AnotherCircle(radius=2, center=(1,0), color='g')\n",
1078 1078 "c2"
1079 1079 ]
1080 1080 },
1081 1081 {
1082 1082 "cell_type": "code",
1083 1083 "execution_count": 30,
1084 1084 "metadata": {
1085 1085 "collapsed": false
1086 1086 },
1087 1087 "outputs": [
1088 1088 {
1089 1089 "data": {
1090 1090 "image/png": [
1091 1091 "iVBORw0KGgoAAAANSUhEUgAAAY4AAAF8CAYAAADYXlxuAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
1092 1092 "AAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xlc1HXiP/DXDDAgwwwzwyngAQhoItGotR1rB5ZbqXmV\n",
1093 1093 "9e1a92ttaK7Z9NvWyqx2q83VvliQbrrZYamlVLqtdx5pbYUIiniAeAJyODOcg1zz+8PV1UAcmOP9\n",
1094 1094 "mZnX8/Ho8Yjh8/m8X34iXn6u90dmtVqtICIispFcdAAiInIvLA4iIuoWFgcREXULi4OIiLqFxUFE\n",
1095 1095 "RN3C4iAiom7xdcRGFi5ciOLiYvj6+kKtVuOJJ55ATExMh+VKS0uxaNEi1NXVQa1WIz09HVFRUY6I\n",
1096 1096 "QERELiJzxHMcOTk50Ov1kMvl2LZtG7Zt24bXXnutw3KzZs3ClClTkJKSgtzcXKxevRpvvPGGvcMT\n",
1097 1097 "EZELOeRU1bBhwyCXn99UbGwsTCZTh2WqqqpgsViQkpICANDr9aiurobZbHZEBCIichGHX+PYsmUL\n",
1098 1098 "9Hp9h8+NRiNUKtVlnwUHB8NoNDo6AhEROZFDi2PTpk0oKirCQw891Plg8o7Dtba2OjICERE5mUMu\n",
1099 1099 "jgPA2rVr8eOPP2LOnDkICAjo8H2tVtvhtJTZbIZOp+t0e9u2bUN7e7uj4hER0SX8/PwwYsSIHq1r\n",
1100 1100 "d3G0t7fjgw8+QGVlZYfSMJlMkMlk0Gg0CA8Ph1KpRF5eHlJTU5GTkwO1Wo3Q0NArbrezU15StG7d\n",
1101 1101 "OowZM0Z0DJu4U1bA/rxNrU0wNhlRe64WpiYTjE1GVDZW4qj5KIpNxThVdwoVDRUwNok/ZRrkF4QI\n",
1102 1102 "ZQR6K3sjQZuAeG08eit7Q9dLB12ADsH+wdD4a6D2V9s9ljv9HDCrc+Tm5vZ4XbuLo7q6Gps3b0Zk\n",
1103 1103 "ZCRmz5598fPp06dj06ZNAIBp06YBAAwGAxYvXoxly5ZBrVbDYDDYOzwRAKC5rRmVjZWobqxGlaUK\n",
1104 1104 "1Y3V2F+9H3vO7EGRqQjmc9K/CaO+pR715nocNR/FrtJdHb4f4BOA2OBYpISnYGjEUPQO6o3QXqEI\n",
1105 1105 "DwxHWGAYghRBAlKTN7K7OMLDw7Fq1apOvzdgwIDLvo6Ojsaf//xne4ckL3ehJKoaq1DRUIEiUxE2\n",
1106 1106 "n9iMvIo81LfUi47nNE1tTThoPIiDxoNYdei//8/5yn2RpEvCHX3vwHUR16G3sjfLhJzKYdc4iJzB\n",
1107 1107 "z88PjS2NKKsvw+m60yg8W4gNxzZ4fEl0R2t7Kw5UH8CB6gMXP7tQJnf2uxPDew9HH1UfRAVFQder\n",
1108 1108 "82uKRN3B4iDJuVAUpXWlOBh8EAuyFyCvMg9t1jbR0dxGZ2XST90P9yXchxt63wBlrBJGi5FFQj3C\n",
1109 1109 "4nCAxMRE0RFsJtWs5fXlOFF7Avur9mP14dXIrchlUTjYidoTeGfPOxe/jt0Ti/EJ43FT9E3oH9wf\n",
1110 1110 "fVR94OfjJzBh56T6M9sZd8pqD4dMOeIMW7dudZu7qqj7WttacaruFI7XHMf2U9ux8uBKVFmqRMfy\n",
1111 1111 "WgE+ARgVOwoTEicgXhOPvuq+vD7i4XJzc5GWltajdXnEQS5jabXgeM1xFJuKkX0kGxuPbURTW5Po\n",
1112 1112 "WITzF96/Lv4aXxd/DRlk0Efo8ejgRzE4dDDiguOg7aUVHZEkhMVBTtXa3ooTtSdw+OxhfHLgE2w+\n",
1113 1113 "sRntVj7YKWVWWLGnYg/2VOwBAAzUDUR6ajqui7gOcZo4BPoFCk5IorE4yClO155GsbkYXxV9hc8P\n",
1114 1114 "fc4jCzd2yHgIM7+dCRlkuCXmFvxuyO8wKGQQYoNjJXlNhJyPxUEOY24y44jxCLae3Ip/7PuHJJ7G\n",
1115 1115 "JsexworvTn+H705/Bz+5H+4bcB8mD5qMQbpBiFLxvTrehMVBdjtecxz7q/Zj4Z6FyK3o+TQG5D5a\n",
1116 1116 "2luw+shqrD6yGhGBEZg1fBZuib4F8Zp4+Pv6i45HTsbioB5paG5AsbkYW45vQebeTNScqxEdiQSp\n",
1117 1117 "aKzAn3b8CT4yH0xKmoSHr3kYA3UDERrY+Tx05P5YHNQtZxrOoLC6EEvzl2LD8Q2i45CEtFnbsOrQ\n",
1118 1118 "Kqw6tAoJmgQYrjdgaMRQxGniIJPJRMcjB2JxkE1O151GTnkOXvv+NRyvPS46DklckbkIT216CkF+\n",
1119 1119 "QTAMN2BU7CgkaBPgI/cRHY0cgMVBXTpmPobdpbvx+g+vo6KxQnQccjP1LfV49ftX8eaPb2Ja6jSM\n",
1120 1120 "TxyPJG0SFL4K0dHIDiwO6qDd2o5iUzG+PfEt/vrjX1HbXCs6Erm55rZmZOzJwDu57+CxwY/h0cGP\n",
1121 1121 "IkmXxGdC3BSLgy6yWq04YjqCtUVrkbEnA5ZWi+hI5GHare34sOBDfFjwIe4bcB+m66djcMhg9PLr\n",
1122 1122 "JToadQOLgwAAJeYSbDy2Ea//8DoaWxtFxyEvcGGKk4cHPYwnU5/EQN1APlDoJlgcXu503WnsPLUT\n",
1123 1123 "c3bNganJJDoOeaFPD36KlYdW4mn905g8cDKSdEm8C0vi5KIDkBiVDZVYV7wOd39xN57e8jRLg4Rq\n",
1124 1124 "s7Zh4Z6FuGPlHcjMzUSJuUR0JOoCi8PL1DfXY+epnRj/1Xg8/q/HUVpfKjoS0UVNbU2Yu3su7lh5\n",
1125 1125 "B5YfWI4z9WdER6JO8FSVl7BarSg8W4h3ct7BF0e+EB2HqEu1zbX4w9Y/IEmXhPm3zUdqeCqUCqXo\n",
1126 1126 "WPQfPOLwAqV1pViybwnuXHUnS4PcymHjYYzJHoPZO2fj0NlDkOh757wOi8OD1TXXYfvJ7RibPRZ/\n",
1127 1127 "2vEnTm1Obmt54XKMXDUSHxV8hPL6ctFxvB6Lw0MVVhfi2W+fxYSvJuBYzTHRcYjs1tjaiGe3PYtx\n",
1128 1128 "X47D7tO70djC28ZFYXF4GKPFiFUHV+Guz+/CmiNrRMchcrgiUxHGZI/BG/9+A8drjouO45VYHB6k\n",
1129 1129 "sLoQT216Cumb0/kQH3m89/a+hzFrxmDnqZ08+nAxFocHuPQoY8uJLaLjELlMaX0pxn05jkcfLsbi\n",
1130 1130 "cHM8yiDi0YersTjcVM25Gqw5vIZHGUT/ceHo468//hWnak+JjuPRWBxu6HjNccz5bg6e2PgEjzKI\n",
1131 1131 "fiEzNxOT105GfmU+n/twEhaHG2lrb0POmRxM+GoClhcuFx2HSLIOGQ/h7i/uxpoja1BzrkZ0HI/D\n",
1132 1132 "4nATxiYjPi38FPesvocXAYls0NTWhCc3PomXd73M/2ccjMXhBkrMJXhu23N45ttn0NreKjoOkVv5\n",
1133 1133 "5MAnmPDVBOScyUFbe5voOB6BxSFh7dZ2/Fz+M8auGYuvir4SHYfIbR2vOY57V9+LVYdWoaaJp67s\n",
1134 1134 "xeKQqIbmBnxd9DVGrxmNsoYy0XGI3F5Lewue3vI03vrxLc53ZSeHTKteW1uLF198Ec8//zxiYmI6\n",
1135 1135 "XSYrKwv5+flQKv87NbLBYLji8t6ssrESH+z7APN+mic6CpHHWZy/GAVnC/D27W9jgHaA6Dhuye7i\n",
1136 1136 "WLt2LdatW4f6+voul5PJZJg4cSJGjRpl75Ae7XjNcbz03Uv4V8m/REch8li7Tu/CuOxx+Ojej6CP\n",
1137 1137 "0PNVtd1k96mqsWPHYsmSJdDpdFddlvdUd21/1X7c/9X9LA0iFyhrKMOYNWOwvmQ9LK0W0XHcikuv\n",
1138 1138 "cWRnZ2PmzJl45ZVXUFBQ4MqhJa2lrQXbTm7D6DWjcbTmqOg4RF6jqa0Jj3zzCJbkL8FZy1nRcdyG\n",
1139 1139 "y14dO3XqVCgUCgBAQUEBFixYgKysLAQGBroqgiQ1tjTim5JvkL4pHe3WdtFxiLzSK7tfwTHzMfzx\n",
1140 1140 "V39Eb2Vv0XEkz2VHHBdKAwCSk5Oh0WhQWVnpquElqaapBh8XfIzfb/w9S4NIsI8OfATDtwbOc2UD\n",
1141 1141 "hxbHpdcwTCYTzGbzxa9zc3PR3n7+l2NhYSEsFguioqIcObxbqW6sxsLchXjhuxdERyGi/9hwbAP+\n",
1142 1142 "d/3/4qiJp4y7Yvepqg0bNmDHjh0wm83IyMhAXFwcpk+fjhUrVgAApk2bBgDYvn07li5dCoVCAZVK\n",
1143 1143 "BYPBcNlRiDcpry/H6z+8js8OfiY6ChH9Qk5FDh5c+yA+Hv0xBoUMEh1HkmRWid7qtHXrVuj1etEx\n",
1144 1144 "HO5k7UkYthmw9cRW0VGIqAthvcKwcuxKXBdxnegoTpGbm4u0tLQercsnx13oqOkofvuv37I0iNxA\n",
1145 1145 "laUK92Xfh+9Lv+ejBL/A4nCRYlMxHvnmEeRV5omOQkQ2qm+px6SvJmF36W6WxyVYHC5QZCzCw/98\n",
1146 1146 "GIeNh0VHIaJuamprwv1f34+dp3fy7sf/YHE4WZGxCP+z7n9QZCoSHYWIeuhc2zlMXjsZO07t4JEH\n",
1147 1147 "WBxOdaE0+DQ4kftrbmvGQ+sews7TO72+PFgcTlJsKsaj/3qUpUHkQZrbmvHg2gex6/Qury4PFocT\n",
1148 1148 "lJhL8Pg3j+OI8YjoKETkYBdOW/1Q9oPoKMKwOBzsZO1JpG9Kx0HjQdFRiMhJmtqa8NC6h5BX4Z13\n",
1149 1149 "SbI4HOhM/Rm8uPNF/HzmZ9FRiMjJ6prrMHntZBw8631/SWRxOMhZy1nM+2kevin5RnQUInKRKksV\n",
1150 1150 "HvvnY143txWLwwFqz9ViSf4SfFjwoegoRORiR2uOIn1TOk7WnhQdxWVYHHZqam3C6sOr+X5wIi+W\n",
1151 1151 "U5GDP+34E8obykVHcQkWhx3a2tuw4dgGPLf9OdFRiEiwDcc2YN6/53nFmwRZHHb4sfxHPLnxSdEx\n",
1152 1152 "iEgiPjrwET4t/NTj32HO4uihg2cP4tFvHkVre6voKEQkIa/sfgXbTmzz6AcEWRw9cKr2FJ7a+BRM\n",
1153 1153 "TSbRUYhIgqZumIq9FXtFx3AaFkc3nbWcxes/vI791ftFRyEiiWpqa8Jj3zyGYlOx6ChOweLohqbW\n",
1154 1154 "Jqw4uAKfH/5cdBQikriyhjI8u+1ZlNd73p1WLI5u2H5yO17e9bLoGETkJnad3oV397yLmqYa0VEc\n",
1155 1155 "isVho/zKfPzvhv8VHYOI3Mzi/MX4Z8k/0dbeJjqKw7A4bHCy9iSe3PCkx99iR0TO8ey3z2Jvpedc\n",
1156 1156 "LGdxXEVdcx0yczNRZOYb/IioZ1raW/DkxidxvOa46CgOweK4im9PfIul+5aKjkFEbu54zXG8/fPb\n",
1157 1157 "qDnn/tc7WBxd2F+1H9M3Txcdg4g8xPLC5dh0fJPbPxzI4riC0rpSzNg8A42tjaKjEJEH+cOWPyC/\n",
1158 1158 "Kl90DLuwODrR0NyAJflLsK96n+goRORhzrWdQ/qmdJyqPSU6So+xODrxQ9kPeCf3HdExiMhDHTYe\n",
1159 1159 "xt/z/47GFvc8o8Hi+IViUzHSN6eLjkFEHu69ve8h50yO6Bg9wuK4RH1zPd7d865XzKdPROKlb0p3\n",
1160 1160 "y1t0WRyX+KH0B3xS+InoGETkJcobyrEkf4nbnbJicfzHUdNRTNsyTXQMIvIyi/IWud0pKxYHzj8d\n",
1161 1161 "/s6ed3iKioiEcLdTViwO8BQVEYnlbqesvL44SswlmL6FT4cTkViL8hYhtyJXdAybOKQ4amtrMWPG\n",
1162 1162 "DJw+ffqKy5SWluKll17CzJkzMWfOHJSVlTliaLs0tzbjs8LPeIqKiCTB8K0BZfXifzdejd3FsXbt\n",
1163 1163 "WhgMBlRXV3e53Pz58/HAAw9g4cKFGD9+PDIzM+0d2m4F1QXI2JMhOgYREQCgyFyEjcc2Sn4uK7uL\n",
1164 1164 "Y+zYsViyZAl0Ot0Vl6mqqoLFYkFKSgoAQK/Xo7q6Gmaz2d7he+ys5Szm7p6Ldmu7sAxERL8057s5\n",
1165 1165 "OGQ8JDpGl1xyjcNoNEKlUl32WXBwMIxGoyuG79Tu0t3YXbpb2PhERJ1pbG1EVm4WGpobREe5Ipdd\n",
1166 1166 "HJfLOw7V2trqquEvU2IugWGbQcjYRERX89nBzyT9xkCXFIdWq+1wWspsNnd5estZWtpasPLgSl4Q\n",
1167 1167 "JyJJM2wzoLy+XHSMTjm0OC69oGMymS6WRXh4OJRKJfLy8gAAOTk5UKvVCA0NdeTwNimoLsDbOW+7\n",
1168 1168 "fFwiou4oMhVhy/EtomN0ytfeDWzYsAE7duyA2WxGRkYG4uLiMH36dKxYsQIAMG3a+Wk8DAYDFi9e\n",
1169 1169 "jGXLlkGtVsNgcP2porrmOmTkZPCCOBG5hTm75uCm6JsQr40XHeUyMqtE7/vaunUr9Hq9Q7f5Q+kP\n",
1170 1170 "uHfNvQ7dJhGRM829aS5mDJ0BucyxVxZyc3ORlpbWo3W95slxU5MJf/nhL6JjEBF1y1s/voXDZw+L\n",
1171 1171 "jnEZrymOvRV78UPZD6JjEBF1S1NbE1YeWomWthbRUS7yiuKoaKjAS9+9JDoGEVGPvLf3PRw8e1B0\n",
1172 1172 "jIu8ojh+LP9R8k9iEhFdSZu1De/nvw9Li0V0FABeUByn607jhZ0viI5BRGSXzw5+hgNnD4iOAcAL\n",
1173 1173 "iuPfZf92i9kmiYiu5t0970piKhKPLo7y+nK8uvtV0TGIiBxi3dF1OGwUf4eVRxfH3oq9KK0vFR2D\n",
1174 1174 "iMhhPj7wMc61nhOawWOLo7qxms9tEJHHWV64HEdMR4Rm8Nji2Fe1j3dSEZHHabe2Y82RNWhtFzO7\n",
1175 1175 "OOChxWFuMmPeT/NExyAicorFeYtRZCoSNr5HFkfh2UL8VP6T6BhERE7R3NaMDSUbhL1i1uOKo6G5\n",
1176 1176 "AVm5WaJjEBE51ds5b+Oo+aiQsT2uOIpMRVh/bL3oGERETtXQ0oCcMzlCxva44th8fLPoCERELrHg\n",
1177 1177 "pwWoaqxy+bgeVRzHa44jc2+m6BhERC5xtOYoDp11/d2jHlUc+yr3oa65TnQMIiKXWV643OUPBHpM\n",
1178 1178 "cZiaTMjYkyE6BhGRS2UfyUaxudilY3pMcRw2HkZeZZ7oGERELtVmbcOu07tcOqZHFEdreyuyj2SL\n",
1179 1179 "jkFEJMT/5fwfTteddtl4HlEcx8zH8PGBj0XHICISorKx0qUXyT2iOArPFqK5rVl0DCIiYVYeWonm\n",
1180 1180 "Vtf8HnT74mhsacQH+z8QHYOISKh1xetwrPaYS8Zy++I4aj7q8gtDRERS09Le4rLTVW5fHHkVebBC\n",
1181 1181 "zERfRERSsnTfUtQ31zt9HLcuDqPFiPf2vic6BhGRJOwu3Y1jNc4/XeXWxVFiLsFhk/j37xIRScXe\n",
1182 1182 "ir1OH8Oti2NXKa9tEBFd6r2978FoMTp1DLctjoqGCizJXyI6BhGRpBwxHUFJTYlTx3Db4jhZexLl\n",
1183 1183 "DeWiYxARSc6B6gNO3b7bFse+qn2iIxARSdLHBR+j7pzzZgp3y+KoPVfLKUaIiK5gb+VenKo75bTt\n",
1184 1184 "u2VxnKw9if1V+0XHICKSrCJTkdO27ZbF4cwdQkTkCdYcWeO0uavcrjia25rxxeEvRMcgIpK0zcc3\n",
1185 1185 "O+10la8jNlJaWopFixahrq4OarUa6enpiIqK6rBcVlYW8vPzoVQqL35mMBgQExNj81inak/h25Pf\n",
1186 1186 "OiI2EZHHOtd2DidqTyBeG+/wbTukOObPn48pU6YgJSUFubm5yMzMxBtvvNFhOZlMhokTJ2LUqFE9\n",
1187 1187 "Hut47XFOoU5EZIOdp3fijn53OHy7dp+qqqqqgsViQUpKCgBAr9ejuroaZrO50+WtVvsmJHTF4/RE\n",
1188 1188 "RJ7g66KvcdZy1uHbtfuIw2g0QqVSXfZZcHAwjEYjNBpNh+Wzs7Oxfv16aLVaTJo0CcnJyTaPVXOu\n",
1189 1189 "Bl8e+dLeyEREXuFE7QmU15cjpFeIQ7frkFNVcnnHA5fW1tYOn02dOhUKhQIAUFBQgAULFiArKwuB\n",
1190 1190 "gYE2jVNeX46DxoP2hSUi8iKn604jOcz2v6Dbwu5TVVqttsNpKbPZDJ1O12HZC6UBAMnJydBoNKis\n",
1191 1191 "rLR5LFe+jJ2IyBN8X/q9w7dpd3GEh4dDqVQiLy8PAJCTkwO1Wo3Q0FCYTKbLSiU3Nxft7e0AgMLC\n",
1192 1192 "Qlgslk7vvrqS3Ipce+MSEXmVr4u/xtlGx17ncMipKoPBgMWLF2PZsmVQq9UwGAwAgBUrVgAApk2b\n",
1193 1193 "BgDYvn07li5dCoVCAZVKBYPBcNlRSFdqmmrwZRGvbxARdcepulMoayhDSKDjrnPIrPbe5uQkW7du\n",
1194 1194 "hV6vv/j1wbMHcfOnNwtMRETknj4d/Snujrv7ss9yc3ORlpbWo+25zZPjpXWloiMQEbmlH0p/cOj2\n",
1195 1195 "3KY4SszOfTEJEZGn2npiK+qaHTfNulsUR2tbKzaf2Cw6BhGRWzpiOoKqxiqHbc8tiqOysRI5Z3JE\n",
1196 1196 "xyAicktt1jZUNFY4bHtuURxVlirUnKsRHYOIyG1VNtj+zNzVuEVxVDY67g9MROSNfj7zs8O25RbF\n",
1197 1197 "ccx8THQEIiK3tu3kNoddIJd8cbS2tWLLiS2iYxARubUjRsddIJd8cVRZqnhhnIjITm3WNoed9pd8\n",
1198 1198 "cZiaTDCf6/zdHkREZDtHvZtD8sVhbDKKjkBE5BFK6x0zA4fki8PUZBIdgYjII+SUO+a0v+SLg+/g\n",
1199 1199 "ICJyjP3V+x3yTJzki4MXxomIHONYzTHUNHl4cZibzNhftV90DCIij9Dc1gzTOftP/0u6OGrO1eBE\n",
1200 1200 "7QnRMYiIPIYjrhtLujjM58xoaW8RHYOIyGN4fHFwYkMiIsc6WXfS7m1Iujgc+eIRIiICjpqO2r0N\n",
1201 1201 "SRdHfUu96AhERB7lqPkoWtta7dqGpIujrK5MdAQiIo9S3lCO2uZau7Yh6eI4arb/kIqIiP6roqEC\n",
1202 1202 "ja2Ndm1D0sVRbCoWHYGIyKNYWi1obPHg4jjTeEZ0BCIij2Pv9WNJF0dFg+Nerk5EROc1NDfYtb6k\n",
1203 1203 "i+Nc2znREYiIPE5DiwcXBxEROZ69fylncRAReZnmtma71mdxEBF5maa2JrvWZ3EQEXkZc5PZrvVZ\n",
1204 1204 "HEREXsbYZLRrfRYHEZGXsXdqdRYHEZGXOWs5a9f6LA4iIi9ztsm+4vB1RIjS0lIsWrQIdXV1UKvV\n",
1205 1205 "SE9PR1RUVI+XIyIi5znXKoHnOObPn48HHngACxcuxPjx45GZmWnXckRE5Dzt1na71re7OKqqqmCx\n",
1206 1206 "WJCSkgIA0Ov1qK6uhtls7tFyRETkXG3WNrvWt7s4jEYjVCrVZZ8FBwfDaDT2aDkiInIu4UccACCX\n",
1207 1207 "d9xMa2vHVxPauhwRETmPFVa71re7OLRabYfTTWazGTqdrkfLERGRc8ll9v3qt7s4wsPDoVQqkZeX\n",
1208 1208 "BwDIycmBWq1GaGgoTCbTxbLoajkiInIde4vDIbfjGgwGLF68GMuWLYNarYbBYAAArFixAgAwbdq0\n",
1209 1209 "LpcjIiLXkdt5zCCzWq32nexykq1bt2LkrpGiYxAReRx9hB7zEuYhLS2tR+vzyXEiIi+j9FPatT6L\n",
1210 1210 "g4jIy4QEhNi1PouDiMjLhPRicRARUTfoAux7DILFQUTkZYIDgu1an8VBRORlgv1ZHERE1A0BPgF2\n",
1211 1211 "rc/iICLyMn4+fnatz+IgIvIyHn3EoVKorr4QERF1S5AiyK71JV0cEYERoiMQEXkcj35yPCqI7yMn\n",
1212 1212 "InI0jz7iSNQmio5ARORR1Ao1evn2smsbki6OOE2c6AhERB6ld1Bvzz5VFRYYJjoCEZFHiQqKglqh\n",
1213 1213 "tmsbki4Oe8/DERHR5RK0CZDJZHZtQ9rF4cfiICJypHhNvN3bkHRxaAO0oiMQEXmUSGWk3duQdHEE\n",
1214 1214 "+wfbfRGHiIj+y94p1QGJF4c2QMs7q4iIHMgRZ3IkXRyBfoHQh+tFxyAi8ggqhcruKdUBiRcHAKRG\n",
1215 1215 "pIqOQETkEeI18Z5/xAEA4YHhoiMQEXkEfYQegX6Bdm9H8sXhiAs5REQEpIY75gwOi4OIyEs4ajYO\n",
1216 1216 "yReHNkCL6KBo0TGIiNye1xRHaGAoboq+SXQMIiK3FugbiLBeXlIcAHBrn1tFRyAicmspYSnec8QB\n",
1217 1217 "gKeqiIjsNLL/SAT42veu8QvcojgilHyFLBGRPQaFDHLYttyiOEJ7hfKog4jIDo78C7h7FAcvkBMR\n",
1218 1218 "9ZgjL4wDblIcAC+QExH1lCMvjANuVBx9VH1ERyAickuj4kY57MI4APjas3JpaSkWLVqEuro6qNVq\n",
1219 1219 "pKenIyoqqtNls7KykJ+fD6Xyv+/XMBgMiImJsWmsaFU0/OR+aGlvsScyEZHXGRI6xKHbs6s45s+f\n",
1220 1220 "jylTpiAlJQW5ubnIzMzEG2+80emyMpkMEydOxKhRo3o0VlRQFIZHDsf3Zd/bE5mIyKvIZXLEqGz7\n",
1221 1221 "C7rN2+zpilVVVbBYLEhJSQEA6PV6VFdXw2w2X3Edq9Xa0+EQ4BuAcYnjerw+EZE3Sg5NRlRQ52eC\n",
1222 1222 "eqrHRxxGoxEqleqyz4KDg2E0GqHRaDpdJzs7G+vXr4dWq8WkSZOQnJzcrTEH6gb2NC4RkVeamDgR\n",
1223 1223 "QYogh26zy+LIyMhASUlJh89DQkLw0EMPQS7veMDS2tra6bamTp0KhUIBACgoKMCCBQuQlZWFwEDb\n",
1224 1224 "54aPCoqCwkeB5rZmm9chIvJmyWHd+wu6LbosjmeeeeaK36usrOxwWspsNkOn63wa9AulAQDJycnQ\n",
1225 1225 "aDSorKxE//79bQ4bFRSF6yOvx67SXTavQ0TkreQyOWKCHHt9A7DjGkd4eDiUSiXy8vIAADk5OVCr\n",
1226 1226 "1QgNDQUAmEymy4olNzcX7e3tAIDCwkJYLJYr3oF1JQG+ARifOL6nkYmIvMq1Ydc6/PoGYOddVQaD\n",
1227 1227 "AYsXL8ayZcugVqthMBgufm/FihUAgGnTpgEAtm/fjqVLl0KhUEClUsFgMFx2FGKrRF2iPZGJiLzG\n",
1228 1228 "xKSJUCqUV1+wm+wqjujoaPz5z3/u9HsXCuOCZ5991p6hLuqn7odg/2DUnKtxyPaIiDyVo14V+0tu\n",
1229 1229 "8+T4BdFB0ZiYOFF0DCIiSdMF6NBP3c8p23a74pDJZBgV27OHCImIvMX9SfcjWuWcWcXdrjgAIDY4\n",
1230 1230 "Fn5yP9ExiIgka2T/kU7btlsWRx91H9ze93bRMYiIJEnho0D/4P5O275bFoe/jz/uT7pfdAwiIkka\n",
1231 1231 "2W8k+gQ5b0ZxtywOgLflEhFdyf1J90Ph2/3HHWzltsXRV90XKWEpomMQEUmKDDIkaBOcOobbFkew\n",
1232 1232 "fzCevPZJ0TGIiCTltr63OfX6BuDGxQGcf7hFBpnoGEREkjEleQoC/WyfPLYn3Lo4+gf3xx197xAd\n",
1233 1233 "g4hIEvx9/JEUkuT0cdy6OAL9AvF48uOiYxARScL4hPGIVcc6fRy3Lg4AGBgyEP4+/qJjEBEJNylp\n",
1234 1234 "Enx97JqC0CZuXxz9g/tjUuIk0TGIiIQK9g/GAO0Al4zl9sXhK/fFhKQJomMQEQk1JXkK+qr7umQs\n",
1235 1235 "ty8OAEjQJCCkV4joGEREwtwVe5fLxvKI4ohRx2DW0FmiYxARCTEkdAgSta6bTcMjigMARvQZAbnM\n",
1236 1236 "Y/44RESFVaFVAAAXf0lEQVQ2mzVsFnS9dC4bz2N+0w7QDsDYAWNFxyAicimVQoWUcNdOv+QxxRHg\n",
1237 1237 "G8BnOojI60xLnYbYYOc/u3EpjykOABikG4T+6v6iYxARucxdsXdBJnPt1EseVRzhynA8d/1zomMQ\n",
1238 1238 "EbnEHX3vEPKKCY8qDgAYFjmMT5ITkVf4fervofRTunxcjyuOeE08fn/t70XHICJyquigaCSHJgsZ\n",
1239 1239 "2+OKw0fugwlJE3hrLhF5tJdvfhm9g3oLGdsjf7smaZPw8DUPi45BROQUIb1CcEPvG4SN75HF4e/r\n",
1240 1240 "j8cGPyY6BhGRU7x444sum5eqMx5ZHAAwUDcQo+NGi45BRORQKoUKv475tdAMHlscSoUS6fp00TGI\n",
1241 1241 "iBzqueHPIV4TLzSDxxYHAFwTcg1ujrpZdAwiIofw9/HHnbF3io7h2cUR7B+M527gA4FE5BmmXzcd\n",
1242 1242 "CZoE0TE8uzgAICUsBTdH86iDiNxbgE8AJiVNgo/cR3QUzy8ObYAWL9z4gugYRER2mf2r2UjSJYmO\n",
1243 1243 "AcALigM4/5KTMQPGiI5BRNQjaoUa98bf6/LJDK/EK4ojSBGEmUNnQgZp7HQiou547ZbXEKeJEx3j\n",
1244 1244 "IruLo7a2FjNmzMDp06e7XK60tBQvvfQSZs6ciTlz5qCsrMzeobvlmpBr8Lshv3PpmERE9opURuL2\n",
1245 1245 "vreLjnEZu4pj7dq1MBgMqK6uvuqy8+fPxwMPPICFCxdi/PjxyMzMtGfobgvwDcDjQx6Hn9zPpeMS\n",
1246 1246 "EdnjjV+/gT7qPqJjXMau4hg7diyWLFkCna7rd91WVVXBYrEgJeX86w31ej2qq6thNpvtGb7bBuoG\n",
1247 1247 "YtawWS4dk4iopwZoBuBX0b8SHaMDl1zjMBqNUKlUl30WHBwMo9HoiuEv8pX7YlLSJAT7B7t0XCKi\n",
1248 1248 "nnjr1rcQqYwUHaMD366+mZGRgZKSkg6fh4SEYO7cud0aSC7v2FGtra3d2oYjDNAOwFu3voWnNj3l\n",
1249 1249 "8rGJiGw1dsBYDI0cKjpGp7osjmeeecYhg2i12g6npcxm81VPcTnLbX1vw3Xh12Fv5V4h4xMRdUXh\n",
1250 1250 "o8Bzw5+D2l8tOkqnHHaqymq1Xva1yWS6WBbh4eFQKpXIy8sDAOTk5ECtViM0NNRRw3dLeGA43rz1\n",
1251 1251 "TSFjExFdzcs3vYxrQq8RHeOK7CqODRs2YPbs2TCbzcjIyEBWVtbF761YsQKfffbZxa8NBgPWrFmD\n",
1252 1252 "mTNn4uuvv4bBYLBnaLulhKXwFbNEJDl9VH0wJn6MpN9iKrP+8lBBIrZu3Qq9Xu/UMYpMRRi5aiTq\n",
1253 1253 "muucOg4Rka2+uO8LpPVLc/o4ubm5SEvr2TjSrTQXSNAm4K1b3xIdg4gIADA6fjSGRw4XHeOqvLo4\n",
1254 1254 "AOCOvndgWMQw0TGIyMsF+ATgj9f/UbIXxC/l9cURrgzH327/G58oJyKh/nbb3zA4dLDoGDbx+uIA\n",
1255 1255 "gOTQZPzl138RHYOIvNSImBEYFTtKMrPfXg2LA4CP3Of8wzYR0nzYhog8V4BPAP7y678gNFDM4wk9\n",
1256 1256 "weL4jwhlBObfPp+nrIjIpdzpFNUFLI5LJIcm4/Vfvy46BhF5iVv73OpWp6guYHFcwkfugzEDxvAu\n",
1257 1257 "KyJyugCfAPz5lj+71SmqC1gcvxChjMDfbv8bAnwCREchIg/29h1vu90pqgtYHJ1ICUvBOyPfER2D\n",
1258 1258 "iDzUA0kPuOUpqgtYHJ2QyWS4q/9deGzwY6KjEJGHiQ6KxvM3PA9tgFZ0lB5jcVyB2l+NWcNmITY4\n",
1259 1259 "VnQUIvIQPjIf/OPufyBW496/V1gcXegX3A/vj3qft+gSkUO8detb0Ec4d/JWV2BxXEVqeCrevv1t\n",
1260 1260 "0TGIyM2NjhuN+xLug6+8y/fnuQUWx1X4yH1wT9w9mJgwUXQUInJT4YHhePnmlxHSK0R0FIdgcdhA\n",
1261 1261 "20uLF258AXHBcaKjEJGb8ZX74sO7P8QA7QDRURyGxWGjWE0sPrjnAwT5BYmOQkRuJGtkFob3lv47\n",
1262 1262 "NrqDxdENKWEpWHbPMsjgnvdeE5FrzRo2C3fH3Q0fuY/oKA7F4uimX0f/mm8NJKKrSuuXhievfRJB\n",
1263 1263 "Cs87S8Hi6CaFrwITkybi8cGPi45CRBLVT90P826dhwhlhOgoTsHi6AFtgBbPXf8cJ0Mkog6Ufkp8\n",
1264 1264 "dM9Hbv+QX1dYHD0UrYpG5p2ZCOsVJjoKEUmEDDIsu3sZUsJTREdxKhaHHRJ1iVg5diVUCpXoKEQk\n",
1265 1265 "AZl3ZmJEzAjRMZyOxWGn6yKuw2ejP4PCRyE6ChEJ9MrNr2Bs/FgofD3/dwGLwwFujL4RH979IW/T\n",
1266 1266 "JfJS01Kn4bHBj0GpUIqO4hIsDgeQy+RI65eGrDuzREchIhe7P+l+zBw2E5oAjegoLsPicBA/Hz+M\n",
1267 1267 "iR+D1255TXQUInKRETEj8PJNLyMs0LtukmFxOJBSocQjgx/B09c9LToKETnZ4JDByEjLQLQqWnQU\n",
1268 1268 "l2NxOJjGX4MZ+hl8QJDIgw3QDMCye5ahf3B/0VGEYHE4QZgyDH/61Z/w8DUPi45CRA4WGxyLT0d/\n",
1269 1269 "6lGz3XYXi8NJIpQReOnGlzB54GTRUYjIQfqq+2LFmBVI0CWIjiIUi8OJIpQRmHvTXJYHkQfop+6H\n",
1270 1270 "VWNXIVGXKDqKcCwOJ4sMisQrN7/C01ZEbiwuOA6rxq5Cki5JdBRJYHG4wIXTVrxgTuR+EjQJWDF2\n",
1271 1271 "BY80LmH3W9Nra2vx4osv4vnnn0dMTMwVl8vKykJ+fj6Uyv8+WWkwGLpcx5NEKCPwwq9egEqhQube\n",
1272 1272 "TNFxiMgGqeGpeH/U+159IbwzdhXH2rVrsW7dOtTX1191WZlMhokTJ2LUqFH2DOnWwpRhePb6Z8+/\n",
1273 1273 "uH73y6LjEFEX7ux3J/52+9/QV91XdBTJsetU1dixY7FkyRLodDqblrdarfYM5xE0/hpMGTIF7935\n",
1274 1274 "Hue2IpKoh695GBlpGSyNK7D7VFV3ZGdnY/369dBqtZg0aRKSk5NdObxkKBVKTEycCI2/Br9d/1s0\n",
1275 1275 "tzWLjkRE/zFr2Cykp6YjNDBUdBTJ6rI4MjIyUFJS0uHzkJAQzJ07t1sDTZ06FQrF+emGCwoKsGDB\n",
1276 1276 "AmRlZSEwMLBb2/EUfj5+uCv2LmSPy8aDax9EfcvVT/cRkXO9OeJNPDjwQQQHBIuOImldFsczzzzj\n",
1277 1277 "sIEulAYAJCcnQ6PRoLKyEv3793fYGO5GLpPjpuibsHbCWkxeOxlVlirRkYi8klwmx6K7FuHeuHsR\n",
1278 1278 "6Oedf5ntDofdjvvL6xcmkwlms/ni17m5uWhvbwcAFBYWwmKxICoqylHDu7XUiFSsm7gOQyOGio5C\n",
1279 1279 "5HXUCjW+HPclxg0Yx9KwkV3XODZs2IAdO3bAbDYjIyMDcXFxmD59OgBgxYoVAIBp06YBALZv346l\n",
1280 1280 "S5dCoVBApVLBYDBcdhTi7RJ1iVh2zzIs+GkBPjrwkeg4RF4hSZeEpb9ZisGhg0VHcSsyq0Rvddq6\n",
1281 1281 "dSv0er3oGC5najJhzeE1eH7H87BCkv9piDzCuAHjMPfmuegX3E90FCFyc3ORlpbWo3X55LjEaAO0\n",
1282 1282 "eGzwY/j8vs8R5BckOg6RR5pz4xzMu22e15aGvVgcEqTwVSCtXxr+OemfiA2OFR2HyGP4+/jjk3s/\n",
1283 1283 "we9Tf8/bbe3A4pCwlLAUrL5vNSYkTBAdhcjtxQbH4ptJ3+CeuHt4EdxOLA6Ji9XEYt7t8/Bu2rvw\n",
1284 1284 "k/uJjkPklh4f/Diyx2VDH6GHTMYZG+zl0ifHqWd0ATo8OOhBDAwZiCc2PoHjNcdFRyJyCwE+AXh3\n",
1285 1285 "5Lu4s/+dUPurRcfxGDzicBM+ch8MjRyK7HHZeHTwo6LjEEneQN1ArL9/PSYkTmBpOBiLw830D+6P\n",
1286 1286 "1255De+Peh/+Pv6i4xBJ0lPXPoVVY1fh2vBreWrKCXiqyg0F+wdjYuJEJGgT8Ny257CnYo/oSESS\n",
1287 1287 "oPHX4L0738MtMbcgSMHb2Z2FRxxuSiaT4drwa/HJvZ/grVvf4oVz8noPDnwQGx/YiN/E/Yal4WQs\n",
1288 1288 "DjcXGRSJ3w35HTbevxH6CO970p5I46/B8tHL8ddb/4oEbYLoOF6BxeEBfOQ+SI1IxfJ7l/Pog7zK\n",
1289 1289 "5IGTsfH+jbgn7h5eAHchFocH4dEHeQuNvwafjv4Ub936FhJ0PMpwNRaHh7lw9PHp6E+RdWcWVAqV\n",
1290 1290 "6EhEDiODDDP0M7DpgU24O+5uHmUIwruqPFSEMgIPDXoIQyOGYtn+Zfh7/t9FRyKyy/DI4Xh9xOtI\n",
1291 1291 "Dk1GgG+A6DhejUccHi5Rl4iXb34Z6yetR2pYqug4RN2mDdDiH7/5Bz4d/SmGRQ5jaUgAi8ML9PLt\n",
1292 1292 "hRuibsDKsSux+K7FUCt4eE/SJ5fJMXPoTGx6YBPGJ47nbLYSwlNVXiRcGY4HBj6A68KvwxeHv0DG\n",
1293 1293 "ngy0treKjkXUwV3978L/u/7/ITk0Gf6+nCFBanjE4YUSdAn44w1/xLeTv8XvhvwOMnBKBpKG4ZHD\n",
1294 1294 "sXbCWrw/6n0MjRzK0pAoFoeX8pX7IjksGX/59V+w+YHNGBM/RnQk8mIDNAPw+djP8dmYz3BLzC28\n",
1295 1295 "W0riWBxeLsA3APpIPTLvzMQ3E7/BjVE3io5EXiQiMAL/+M0/sHbiWozsPxIhvUJERyIb8BoHAQBU\n",
1296 1296 "ChVujL4Ry0cvR35lPub/NB/fl30vOhZ5qN7K3phz0xzcFH0T+qr7io5D3cTioMtoA7S4re9tSA1P\n",
1297 1297 "xcGzB5G1Nwv/KvmX6FjkIQZoBmDOTXOgj9AjWhUtOg71EIuDOqUJ0ODG6BuREpaCg8aD+LjgY3x2\n",
1298 1298 "8DO0W9tFRyM3dF34dZj9q9lICUtBuDJcdByyE4uDuqRUKDEschiGhA7B1JSpWH14NZbsW4JzbedE\n",
1299 1299 "RyM3kNY3DX8Y9gcMDhkMXS+d6DjkICwOsom/rz9SwlNwTeg1eGTwI8g5k4N5P83DydqToqORxAT5\n",
1300 1300 "BeGp1Kfwm7jfIFGbyHdjeCAWB3WLr9wXibpEJOoSkdYvDYeMh7Bs3zKsO7oOVlhFxyOBrgm5Bobh\n",
1301 1301 "Blwbfi1ig2P5ylYPxuKgHotQRiBCGYHre18Pg8mAHSd3IGNPBoxNRtHRyEX85H54aNBDmDxwMpJ0\n",
1302 1302 "STwd5SVYHGS3Xr69MCRsCIaEDcF9CfehyFSE1YdXI7soG81tzaLjkRPc0PsGPHHtExgcOhjxwfHw\n",
1303 1303 "9eGvEm/C/9rkUH3UfdBH3QcjYkZg1vBZOHz2MD7Y/wF2nNrBU1luLj44HtP00zA0YijiNHG8duHF\n",
1304 1304 "WBzkFL4+vkjQJiBBm4A7+t2BYzXHkF+Zj8V5i1FQXSA6HtkorFcYpl47Fbf2uRXxwfEICeST3cTi\n",
1305 1305 "IBcI9AvE4NDBGBw6GPfE3YOTdSdxxHgEqw6uwo7TOzhDr8QM1A3Eb5N/i2vDr0VfdV/0DuotOhJJ\n",
1306 1306 "DIuDXEoToIEmQIOUsBSMjh+NU7WncKzmGNaXrMeXRV+itrlWdESv4yv3xa0xt2LyoMlI1CWir6ov\n",
1307 1307 "NAEa0bFIwlgcJEyAbwASdAlI0CVgZP+ReHb4szhZexKHjIfw5ZEv8fOZn9HS3iI6pkdK0CZgXMI4\n",
1308 1308 "DIschv7q/uij7sM365HNWBwOcPjwYSQlJYmOYROpZpXL5BcvrN8cczP+Z9D/oLyhHMVVxTjeeBxf\n",
1309 1309 "FX2FnDM5PK3VQ/GaeIxPGI9hkcMQo4qBT6MPkvpK7+egM1L9me2MO2W1h13FsXDhQhQXF8PX1xdq\n",
1310 1310 "tRpPPPEEYmJiOl22tLQUixYtQl1dHdRqNdLT0xEVFWXP8JJx5MgRt/lhcZesvfx6IU4ThwPfHcCT\n",
1311 1311 "Y57EI9c8gvKGcpTWleJk7UlsO7kN/y77N8obykVHlRyVQgV9hB4j+41EgjYBMaoYRCojL3vGYt26\n",
1312 1312 "dW5THO7yMwu4V1Z72FUcN998M2bMmAG5XI5t27bh/fffx2uvvdbpsvPnz8eUKVOQkpKC3NxcZGZm\n",
1313 1313 "4o033rBnePIigX6BiNfEI14TDwB4+JqHUdVYhbOWszjTeAaldaXYfmo7/l32b5TVlwlO6zqXlkS8\n",
1314 1314 "Nh6RykiE9gpFeGA4FD4K0fHIQ9lVHMOGDbv477GxscjOzu50uaqqKlgsFqSkpAAA9Ho9Fi9eDLPZ\n",
1315 1315 "DI2GF+Go+2QyGcKV4QhXhmMQBgE4XybVlmoYm4wwWUwwnjOioqECuWdykVeVhxJzCSytFsHJu89H\n",
1316 1316 "5oO+6r4YHDIYw3sPR191X+h66aD110IboEVYYBhLglzKYdc4tmzZAr1e3+n3jEYjVCrVZZ8FBwfD\n",
1317 1317 "aDSyOMhhZDIZwgLDEBYYdtnnU4ZMQUNzA0znTDA3mWE+Z0Zdcx0aWhpwpv4MSmpKUGQqQnl9Oc40\n",
1318 1318 "nEFja6PLMvvKfRERGIFIZSRiNbFI0Jw/taRSqBCkCEKwfzC0AVqoFWpoA7Sc/4kkocviyMjIQElJ\n",
1319 1319 "SYfPQ0JCMHfu3Itfb9q0CUVFRXj11VevuC25vONbaltbeaGTXEOpUEKpUCJG1fk1uLb2NtQ216Kx\n",
1320 1320 "pRGWVgssrRa0tLWgub0ZzW3/+eeSfz/Xdg6t7a1oa29DO9rR3t6OpqYmKAOV8JX7Qi6Tw9/HHwof\n",
1321 1321 "xfl/5Ir//vslXwf6BSLQNxAqfxX8ffxdvFeIekZmtVrtmgdi7dq1+PHHHzF79mwEBXU+BUFlZSXm\n",
1322 1322 "zJmDv//97xc/e+KJJ/Dmm28iNDS003V27tyJlhbeiklE5Ax+fn4YMWJEj9bt8amq9vZ2fPDBBxdL\n",
1323 1323 "ISDg8nvATSYTZDIZNBoNwsPDoVQqkZeXh9TUVOTk5ECtVl+xNAD0+A9ERETO1eMjjsrKSsyYMQOR\n",
1324 1324 "kZGXnYZ6+umnER8fj/feew8AMG3aNADnb8ddvHgxamtrPe52XCIib2L3qSoiIvIuHa9YExERdYHF\n",
1325 1325 "QURE3SKpuapqa2vx4osv4vnnn7/i1CWA+OlLujN+VlYW8vPzoVQqL35mMBi6/PO5Kp/o/didDCL2\n",
1326 1326 "Y2ds+RmVwn4FbMsqlf1q6/RFUti3tmaVwr5dtGgRDh06BJlMBj8/Pzz++ONITk7usFy396tVIr7+\n",
1327 1327 "+mvr1KlTrQ8++KD11KlTXS77zDPPWPPz861Wq9W6Z88e6+zZs10RsUfjZ2VlWTds2OCqaFar1fZ8\n",
1328 1328 "ovdjdzKI2I+/ZOvPqBT2q61ZpbBfrVar9eeff7a2tbVZrVar9dtvv7XOmTOn0+WksG9tzSqFfbtv\n",
1329 1329 "376LWffs2WOdNWtWp8t1d79K5lTV2LFjsWTJEuh0Xb/svrPpS6qrq2E2m10Rs0fjW114/4Gt+UTv\n",
1330 1330 "x55kcOV+7IwtP6NS2K+A7f8/AeL3K3B++qILd2fGxsbCZDJ1WEYq+9aWrBeI3rdDhgyBXC6H1WpF\n",
1331 1331 "WVkZYmNjOyzTk/0qqVNVthA9fUlPxs/Ozsb69euh1WoxadKkTg8VXZ1P9H7sSQZX7seeksJ+7S6p\n",
1332 1332 "7dcrTV8kxX3b1VRLgDT27aFDh7BgwQJoNBrMnj27w/d7sl9dVhy2Tl9iC2dPX9JV1oceeqhb40+d\n",
1333 1333 "OhUKxfkJ6AoKCrBgwQJkZWUhMDDQYXl/ydZ8UpgGxtYMIvZjT0lhv9pKavv1atMXSWnfXi2rVPbt\n",
1334 1334 "wIEDsWTJEuTl5eHVV1/FwoULOyzT3f3qsuJ45plnHLIdrVbb4RDKbDbbdEhuq66yVlZWdmv8Cz84\n",
1335 1335 "AJCcnAyNRoPKykr079/fIVl/ydb944r9eDXdyeDq/dhTUtiv3SGl/Xph+qLOZqIApLVvr5YVkNa+\n",
1336 1336 "BYDU1FScPXsW9fX1l00P1ZP9KplrHJf65XlBk8l08Q926fQlAGyavsSRrjb+pVkBIDc3F+3t7QCA\n",
1337 1337 "wsJCWCwWp94F0lU+Ke3H7mQFXL8fr+bSn1Gp7ddfulJWQBr7tb29HUuXLkVBQQHmzJlz2S81qe1b\n",
1338 1338 "W7MC4vdtfX09cnJyLv73//777xEaGoqgoCC796tknhzfsGEDduzYgZMnTyIyMhJxcXGYPn06AEhu\n",
1339 1339 "+pKuxv9l1rfffhvFxcVQKBRQqVR47LHHkJCQICSf1PZjd7KK2I+/dKWfUSnuV1uzSmG/Xmn6ounT\n",
1340 1340 "p2PTpk2X5RW9b7uTVfS+ra+vR0ZGBsrKyuDv7w+dTocpU6YgJibG7p9ZyRQHERG5B0meqiIiIuli\n",
1341 1341 "cRARUbewOIiIqFtYHERE1C0sDiIi6hYWBxERdQuLg4iIuoXFQURE3fL/AR8SQcFGS9m7AAAAAElF\n",
1342 1342 "TkSuQmCC\n"
1343 1343 ]
1344 1344 },
1345 1345 "metadata": {},
1346 1346 "output_type": "display_data"
1347 1347 }
1348 1348 ],
1349 1349 "source": [
1350 1350 "display_png(c2)"
1351 1351 ]
1352 1352 },
1353 1353 {
1354 1354 "cell_type": "markdown",
1355 1355 "metadata": {},
1356 1356 "source": [
1357 1357 "## return the object"
1358 1358 ]
1359 1359 },
1360 1360 {
1361 1361 "cell_type": "code",
1362 1362 "execution_count": null,
1363 1363 "metadata": {
1364 1364 "collapsed": false
1365 1365 },
1366 1366 "outputs": [],
1367 1367 "source": [
1368 1368 "# for demonstration purpose, I do the same with a circle that has no _repr_javascript method\n",
1369 1369 "class MyNoJSCircle(MyCircle):\n",
1370 1370 " \n",
1371 1371 " def _repr_javascript_(self):\n",
1372 1372 " return\n",
1373 1373 "\n",
1374 1374 "cNoJS = MyNoJSCircle()"
1375 1375 ]
1376 1376 },
1377 1377 {
1378 1378 "cell_type": "markdown",
1379 1379 "metadata": {},
1380 1380 "source": [
1381 1381 "Of course you can now still return the object, and this will use compute all the representations, store them in the notebook and show you the appropriate one."
1382 1382 ]
1383 1383 },
1384 1384 {
1385 1385 "cell_type": "code",
1386 1386 "execution_count": null,
1387 1387 "metadata": {
1388 1388 "collapsed": false
1389 1389 },
1390 1390 "outputs": [],
1391 1391 "source": [
1392 1392 "cNoJS"
1393 1393 ]
1394 1394 },
1395 1395 {
1396 1396 "cell_type": "markdown",
1397 1397 "metadata": {},
1398 1398 "source": [
1399 1399 "Or just use `display(object)` if you are in a middle of a loop"
1400 1400 ]
1401 1401 },
1402 1402 {
1403 1403 "cell_type": "code",
1404 1404 "execution_count": null,
1405 1405 "metadata": {
1406 1406 "collapsed": false
1407 1407 },
1408 1408 "outputs": [],
1409 1409 "source": [
1410 1410 "for i in range(3):\n",
1411 1411 " display(cNoJS)"
1412 1412 ]
1413 1413 },
1414 1414 {
1415 1415 "cell_type": "markdown",
1416 1416 "metadata": {},
1417 1417 "source": [
1418 1418 "Advantage of using `display()` versus `display_*()` is that all representation will be stored in the notebook document and notebook file, they are then availlable for other frontends or post-processing tool like `nbconvert`."
1419 1419 ]
1420 1420 },
1421 1421 {
1422 1422 "cell_type": "markdown",
1423 1423 "metadata": {},
1424 1424 "source": [
1425 1425 "Let's compare `display()` vs `display_html()` for our circle in the Notebook Web-app and we'll see later the difference in nbconvert."
1426 1426 ]
1427 1427 },
1428 1428 {
1429 1429 "cell_type": "code",
1430 1430 "execution_count": null,
1431 1431 "metadata": {
1432 1432 "collapsed": false
1433 1433 },
1434 1434 "outputs": [],
1435 1435 "source": [
1436 1436 "print \"I should see a nice html circle in web-app, but\"\n",
1437 1437 "print \"nothing if the format I'm viewing the notebook in\"\n",
1438 1438 "print \"does not support html\"\n",
1439 1439 "display_html(cNoJS)"
1440 1440 ]
1441 1441 },
1442 1442 {
1443 1443 "cell_type": "code",
1444 1444 "execution_count": null,
1445 1445 "metadata": {
1446 1446 "collapsed": false
1447 1447 },
1448 1448 "outputs": [],
1449 1449 "source": [
1450 1450 "print \"Whatever the format I will see a representation\"\n",
1451 1451 "print \"of my circle\"\n",
1452 1452 "display(cNoJS)"
1453 1453 ]
1454 1454 },
1455 1455 {
1456 1456 "cell_type": "code",
1457 1457 "execution_count": null,
1458 1458 "metadata": {
1459 1459 "collapsed": false
1460 1460 },
1461 1461 "outputs": [],
1462 1462 "source": [
1463 1463 "print \"Same if I return the object\"\n",
1464 1464 "cNoJS"
1465 1465 ]
1466 1466 },
1467 1467 {
1468 1468 "cell_type": "code",
1469 1469 "execution_count": null,
1470 1470 "metadata": {
1471 1471 "collapsed": false
1472 1472 },
1473 1473 "outputs": [],
1474 1474 "source": [
1475 1475 "print \"But not if I print it\"\n",
1476 1476 "print cNoJS"
1477 1477 ]
1478 1478 }
1479 1479 ],
1480 "metadata": {},
1480 "metadata": {
1481 "kernelspec": {
1482 "display_name": "Python 3",
1483 "language": "python",
1484 "name": "python3"
1485 },
1486 "language_info": {
1487 "codemirror_mode": {
1488 "name": "ipython",
1489 "version": 3
1490 },
1491 "file_extension": ".py",
1492 "mimetype": "text/x-python",
1493 "name": "python",
1494 "nbconvert_exporter": "python",
1495 "pygments_lexer": "ipython3",
1496 "version": "3.4.2"
1497 }
1498 },
1481 1499 "nbformat": 4,
1482 1500 "nbformat_minor": 0
1483 } No newline at end of file
1501 }
@@ -1,738 +1,756 b''
1 1 {
2 2 "cells": [
3 3 {
4 4 "cell_type": "markdown",
5 5 "metadata": {},
6 6 "source": [
7 7 "# Plotting with Matplotlib"
8 8 ]
9 9 },
10 10 {
11 11 "cell_type": "markdown",
12 12 "metadata": {},
13 13 "source": [
14 14 "IPython works with the [Matplotlib](http://matplotlib.org/) plotting library, which integrates Matplotlib with IPython's display system and event loop handling."
15 15 ]
16 16 },
17 17 {
18 18 "cell_type": "markdown",
19 19 "metadata": {},
20 20 "source": [
21 21 "## matplotlib mode"
22 22 ]
23 23 },
24 24 {
25 25 "cell_type": "markdown",
26 26 "metadata": {},
27 27 "source": [
28 28 "To make plots using Matplotlib, you must first enable IPython's matplotlib mode.\n",
29 29 "\n",
30 30 "To do this, run the `%matplotlib` magic command to enable plotting in the current Notebook.\n",
31 31 "\n",
32 32 "This magic takes an optional argument that specifies which Matplotlib backend should be used. Most of the time, in the Notebook, you will want to use the `inline` backend, which will embed plots inside the Notebook:"
33 33 ]
34 34 },
35 35 {
36 36 "cell_type": "code",
37 37 "execution_count": 1,
38 38 "metadata": {
39 39 "collapsed": false
40 40 },
41 41 "outputs": [],
42 42 "source": [
43 43 "%matplotlib inline"
44 44 ]
45 45 },
46 46 {
47 47 "cell_type": "markdown",
48 48 "metadata": {},
49 49 "source": [
50 50 "You can also use Matplotlib GUI backends in the Notebook, such as the Qt backend (`%matplotlib qt`). This will use Matplotlib's interactive Qt UI in a floating window to the side of your browser. Of course, this only works if your browser is running on the same system as the Notebook Server. You can always call the `display` function to paste figures into the Notebook document."
51 51 ]
52 52 },
53 53 {
54 54 "cell_type": "markdown",
55 55 "metadata": {},
56 56 "source": [
57 57 "## Making a simple plot"
58 58 ]
59 59 },
60 60 {
61 61 "cell_type": "markdown",
62 62 "metadata": {},
63 63 "source": [
64 64 "With matplotlib enabled, plotting should just work."
65 65 ]
66 66 },
67 67 {
68 68 "cell_type": "code",
69 69 "execution_count": 2,
70 70 "metadata": {
71 71 "collapsed": false
72 72 },
73 73 "outputs": [],
74 74 "source": [
75 75 "import matplotlib.pyplot as plt\n",
76 76 "import numpy as np"
77 77 ]
78 78 },
79 79 {
80 80 "cell_type": "code",
81 81 "execution_count": 3,
82 82 "metadata": {
83 83 "collapsed": false
84 84 },
85 85 "outputs": [
86 86 {
87 87 "data": {
88 88 "image/png": [
89 89 "iVBORw0KGgoAAAANSUhEUgAAAX0AAAEKCAYAAAD+XoUoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
90 90 "AAALEgAACxIB0t1+/AAAIABJREFUeJztfXt0VdWd/+fmwSvhkQTyDiAEFkRUUKwtLRqrSEFNtb6w\n",
91 91 "Vqlay2pL22lndVZX5zejrpkqTKdLnWFq0dVWmLFIO6NCfeCzqbSW0iKiFSqPiuYBIZAH5EEeN+f3\n",
92 92 "x+7OPTk5j/0859xkf9bKgiRnP+7NPZ/9OZ/vd393wrIsCwYGBgYGowIZUU/AwMDAwCA8GNI3MDAw\n",
93 93 "GEUwpG9gYGAwimBI38DAwGAUwZC+gYGBwSiCIX0DAwODUQRD+gZpjyeffBLLly/X0vcXv/hF/NM/\n",
94 94 "/ZPSPu+77z7cfvvtnr9fsGAB3njjDaVjGhhQGNI3iBzV1dXIz89Hb2+vUPvbbrsNL730kuJZESQS\n",
95 95 "CSQSCeV9+uHPf/4zLr30UqVjGhhQGNI3iBRHjx7F7t27UVhYiO3bt0c9HVeo3r8o018ymVQ4E4PR\n",
96 96 "CEP6BpFi8+bNuPLKK3H77bdj06ZNvtc+8cQTmD17NiZNmoRZs2bh5z//+eDPly5dOnhdRkYGHn30\n",
97 97 "UcyZMweTJk3CP//zP+PIkSP4xCc+gSlTpmDVqlXo6+sDANTW1qK8vBwPPvggpk2bhnPOOWewXzc8\n",
98 98 "99xzWLhwIfLy8vDJT34S7777rue17733HpYtW4aCggIUFxfjwQcfBECUfm9vL1avXo1JkyZhwYIF\n",
99 99 "2LNnz2C7mTNn4vXXXwdArKAbb7wRt99+OyZPnownnnhi8GerVq3CpEmTcNFFF+Gdd94JeKcNDAgM\n",
100 100 "6RtEis2bN+OWW27BzTffjJdeegknTpxwva6zsxPf/OY3sWPHDpw+fRq///3vsXDhQs9+X375Zezd\n",
101 101 "uxe7du3C+vXrcc8992DLli346KOP8O6772LLli2D1zY1NeHUqVNobGzEpk2b8OUvfxmHDh0a1ufe\n",
102 102 "vXtx99134/HHH0dLSwvWrFmDmpoaV1vqzJkzuPLKK7Fy5UocO3YMhw8fxhVXXAGAKP3t27fj1ltv\n",
103 103 "RXt7O2pqarB27drBtk77Z/v27bjpppvQ3t6O2267bfBnN998M1pbW/H5z38e1113Hfr7+33eaQMD\n",
104 104 "AkP6BpHht7/9LRoaGlBTU4M5c+agqqrKV2VnZGTg3XffRXd3N4qKilBVVeV57T/8wz8gNzcXVVVV\n",
105 105 "OO+887BixQrMnDkTkyZNwooVK7B3794h1//Lv/wLsrOzcemll+Lqq6/G1q1bB39HSfixxx7DmjVr\n",
106 106 "cPHFFyORSOCOO+7A2LFjsWvXrmHjP/fccygtLcW3vvUtjBkzBrm5ufjYxz42+PulS5fiM5/5DBKJ\n",
107 107 "BL7whS9g3759nq9lyZIlqKmpAQCMGzcOALB48WJ87nOfQ2ZmJr797W/j7NmzrvMwMHDCkL5BZNi0\n",
108 108 "aROuuuoqTJw4EQBw0003eVo8OTk52Lp1K3784x+jtLQU11xzDd5//33PvouKigb/P378+CHfjxs3\n",
109 109 "Dh0dHYPf5+XlYfz48YPfz5gxA8eOHRvW54cffogf/vCHyMvLG/yqr693vbaurg6zZs1imt+ECRNw\n",
110 110 "9uxZDAwMuF5bXl7u+7NEIoHy8nLXeRgYOGFI3yASdHd34xe/+AVef/11lJSUoKSkBD/84Q+xb98+\n",
111 111 "T3/6qquuwssvv4zjx49j3rx5uOeee4TGdtonra2t6OrqGvz+ww8/RGlp6bB206dPxz/+4z+itbV1\n",
112 112 "8KujowO33HKL67V//etfmcbnnS9AFhWKgYEB1NfXu87ZwMAJQ/oGkeDZZ59FVlYWDhw4gH379mHf\n",
113 113 "vn04cOAAli5dis2bNw+7/sSJE9i2bRs6OzuRnZ2NnJwcZGZmMo9nz5hxy56599570dfXh507d+L5\n",
114 114 "55/HTTfdNHgtvf6ee+7Bj3/8Y+zevRuWZaGzsxPPP//8kKcGimuuuQbHjh3DI488gp6eHpw5cwa7\n",
115 115 "d+/2HJ8Xe/bswTPPPIP+/n48/PDDGDduHD7+8Y9L92sw8mFI3yASbN68GXfddRfKy8tRWFiIwsJC\n",
116 116 "FBUVYe3atfj5z38+zOoYGBjAQw89hLKyMhQUFGDnzp149NFHAQzPpXdTxs7f278vLi5GXl4eSktL\n",
117 117 "cfvtt2Pjxo2YO3fusGsvuugiPP7441i7di3y8/MxZ84c1wUKAHJzc/HKK6/gV7/6FUpKSjB37lzU\n",
118 118 "1ta6ju81Z79rP/vZz2Lr1q3Iz8/Hk08+iaeffpprETQYvUjIHqJy11134fnnn0dhYaFn+to3vvEN\n",
119 119 "vPjii5gwYQKeeOIJLFq0SGZIAwNlqK2txe233z7ELok77r//fhw+fBj//d//HfVUDNIQ0kr/zjvv\n",
120 120 "xI4dOzx//8ILL+Dw4cM4dOgQHnvsMXzlK1+RHdLAYFTDHHZnIANp0l+6dCny8vI8f799+3asXr0a\n",
121 121 "AHDJJZegra0NTU1NssMaGCiD6jILuqGjNITB6EGW7gEaGhpQUVEx+H15eTnq6+uHpKwZGESF6upq\n",
122 122 "fPTRR1FPgwv33ntv1FMwSGOEEsh1Po4alWJgYGAQDbQr/bKysiFBsvr6epSVlQ27rrKyEkeOHNE9\n",
123 123 "HQMDA4MRhdmzZ+Pw4cPM12tX+jU1NYNpbbt27cKUKVNcrZ0jR44M5kTH6esHP7CwdKmF3t7Uz779\n",
124 124 "bQu33aZvzHvvvVfra2ppsZCba6Gjw0JJiYXDh8N/X6++2sL69RZmzND3Xhw6ZKG01ML06eT/qub+\n",
125 125 "9NMWxo61cPnl8n0lkxYmTbKQk2Ohs1P8vfi3f7MAWPjRj8TmsWcPab96NX/b1lbS9stf5m8LWJg6\n",
126 126 "la/N1q0WgHvxl7+wt7nhBjIW6/UbN5Lrd+xgu/5737NQWanuM8bzxSuWpUn/1ltvxZIlS/D++++j\n",
127 127 "oqICP/3pT7Fx40Zs3LgRALBy5UrMmjULlZWVWLNmDX70ox/JDhkampuBdeuAn/4UyM5O/fz++4HX\n",
128 128 "XgN8CizGGq+9BnzqU0BODnDZZcDOneHPYd8+4IYbgNZW4NQpPWPs3Qtccgkwfz7wl7+o6/fwYeDa\n",
129 129 "a4H9+9X0lZ8PFBUBjY3i/TQ0AMXFpD/R9oDY36K+nvz79tt87Wh9uNxcvnYHDpB/ed6vMWPIv6dP\n",
130 130 "s11Pr2O9vrkZqKsDPCppxArS9o69WqEXNmzYIDtMJPj+94FVq4DKyqE/z80FvvY14OGHgZ/8JJq5\n",
131 131 "yeDNNwF6RsenPgX89rfAF78Y3vgtLUB7O3DOOcDChYScr7xS/Th1dcD06eT/f/kLcM01avo9coQs\n",
132 132 "li+9RF5Lfr54X42NZI69vUBT0/DPGitOngQ+8QnApTgoExoagKoqMdKvqwMqKoC2Nr527e1AVhaZ\n",
133 133 "Ow8OHgQyMlILFQuam8m/778PXHxx8PVnzgz9l6X/nh7yb9xzVMyOXA+cOgU88QTw//6f++/vvht4\n",
134 134 "+mng7Fn1Y1dXV6vv1IZ33iFkCwAXXcSv0GSxfz8hmIwMYO5cQqJekHkvKBnNnUuIQhWOHCHkXF4u\n",
135 135 "p84BQnhTpwKFhYBHVelB+L0Xzc3AhReS1yyChgbg/PP5CRggYy5YQEicB21t5O/T08N3H7W2AuXl\n",
136 136 "1VzvfVMTeY9bW9muF1H6iQSQDolghvQ98MQT5BG+uNj99yUlwAUXAC+/rH5snaRvWcRaoaRPrY8w\n",
137 137 "H0s/+giYMYP8f/p0/xtFlvSnTwdKS4Hjx4W7GYbGRqCsjJC1CEnaQUm/qEiO9E+eBObM4SdeisZG\n",
138 138 "8nkWUfrHjpHPEa/Sb2sD8vL438fOTmDRIn7SP+cc0pYFZ86QRYJH6U+fLv95CAOG9F0wMAA8+iix\n",
139 139 "cPxw883AL34RzpxUge6Lo4vZ5MnApEkpXzYM2G2XigpxdRqEjz4i/RcVpV63Cpw6BRQUANOmqSN9\n",
140 140 "FqXvh+Zm8vQhSvrNzalFg/csljNnyHs8MEBUOyva2oApU/jfx44O8pTF+lqTSWLDzZjBTvqnT5Mx\n",
141 141 "eJT+9OlAdzfb9VHCkL4L3niDBDkvucT/us99DnjuOeLHpgsOHSJ2h32rxLx5qeBYGKC2CxCs9GVQ\n",
142 142 "X09uXFlCtcOyCIEUFKhV+jJztCxCOrNnEyK0BKo0dHQQAp4yhd0CsbedOJEICJ5Fp72djDd1aspz\n",
143 143 "Zx2vsBCwVcP2RVcXMHYsmR+P0i8rY1P6lkUWsLIyQ/ppiy1bgNtuG0qMbiguJjfaH/8YzrxU4PBh\n",
144 144 "Mmc7KisBj9LvWhAG6VsWIdTCQjbrhBVnzpBMkLFj+cnKDXbSF30aoeQ3eTKZFyux2XHmDElQmDqV\n",
145 145 "3+Lp6CBtJ0/ms3ja2kibvDy+dh0d5OmAlfS7u4EJE4iQ41H6ZWVsSr+nh3wmcnIM6aclenuB//s/\n",
146 146 "krXDgupq4G8Vc9MChw8PzxCZMQP48MPw5kBtF4DcWA0NYurUD6dPA+PGpW5GyyJkIQtq7QBq7Z2C\n",
147 147 "AvHUVTqnRIIoZ15vHSCkP3EiyUQSIf2JE8nYPEqf2jsTJvCRZWcnWSRZCby7Gxg/no/0eZT+2bPk\n",
148 148 "szZ+vCH9tMQrrxC7g3rOQUg30qeZJ3aETfrHj5NAOEBulDFj2L1TVtjJOZFQp/aptQOos3cKCghp\n",
149 149 "sgYNnejoIHEZgN9isfcxcSIfMVLQpwTesSnpjx/Prtrp4s1j74iQPo/SN6Sf5ti2jWwaYsXSpcCu\n",
150 150 "XXwBrCjxwQfAzJlDfzZzZnikPzBAiG7atNTPpk2Tt0mcsJM+IGefOPulefkq5n36NCE+WdKnG5x4\n",
151 151 "1TYFVfoipC9r70yYwE7gPT0kt3/yZD5PX6fS7+42pJ+2GBgggdlrr2VvM2UKCYymi69vz5yhCFPp\n",
152 152 "t7WRm4/ukATCIf38fP4AZVC/kyfLP6FQslVF+rzEC6TUc26uPOnzLDhdXWQ8HtLv6OBvw+vpWxb5\n",
153 153 "u5aWGqU/4rF3L3lM5t0V+fGPpwfp9/YSlU2tFYrSUmJ98KbqieDECaK67QiD9EW9bifsO3AnTVJD\n",
154 154 "+rm5pK+olH53N1mEs7IIMbKSqXP83Fy+BYPaLrykn5vLT/o84/T1kX/z89lejyH9NMZzz4lt1b/o\n",
155 155 "ImDPHvXzUY3GRpJx5DxKNTOT+NNhnG3T3DzU2gHUplRSUK+cQhXpnz5NFC1A1LkM6Q8MEJLIySFE\n",
156 156 "1tEhnm4po/Tp0wZAiFFU6fOSHrVFeAK5nZ0p0medJ6+909NDsqDGjmWzbc+eJf0b0k9D/OpXfNYO\n",
157 157 "RbqQvj1V0omSErKzUjeiVPqiG5fsOH06RZAy6hwgBDRhAilHkZUln24JkH95lbq9vYy9I0L6YSl9\n",
158 158 "HntHhPSN0k9DNDaSXPUlS/jbVlWRNEQZAggDdXVks5IbSkvDIX03pT9tmnql39pK8r8pVCl9uyqm\n",
159 159 "6ly0hIW9L0B8EbErfR4ytLen8+Al/d5esuN17Fh+0rMrZF5Pn8aEqBXjB97snbNnDemPCrz8MrBs\n",
160 160 "2dASyqzIziYFp8IuXMYLe6qkEyUl8sXDWNDcTKwkO/LziVeuEu3tKRsGELM93HDmTCo9MjOT3Ogi\n",
161 161 "6pz2ZS8rLBrMdZK+SMqlKOl3dpK2iUQ4Sr+zk8wRYG/HS/o9PYTEs7LIgp5MBvdvSD8N8eqrcuV9\n",
162 162 "08HiaWryLyAXhtJvaxteiph3RyYL7N47oEfpA3IWj7Mv0RiBrNJ32js87anyBsIhfaqqAfZ2op5+\n",
163 163 "IsGm9o3ST0NYFjlYRIb0Fy4kJYvjjOPHvWt9h0n6U6YM/Vlenpp0Sjva21OKHFAbyFVB1MBQW4X2\n",
164 164 "FYW9Q1MnaXsepd/VRdoA4ZA+JWSeuVJPn9WusY9hSH+EYv9+8qE45xzxPqqq1JykpBNNTd6kr6Kk\n",
165 165 "AAvCIn2dSt++mMikbcbF07erZ157x95WhvRZ2zlJn8feESX9oFr/JnsnDfHqq8AVV8j1QUlfdQ0Z\n",
166 166 "lTh+3NveUVFSgAXprvR12ju5udGQPiVFIFzSp21l7B1WpU/LfbBUxLWT/rhxRumPSMj6+QDxqXNy\n",
167 167 "+I5wCxt+Sn+kkb5T6avYSEX7VWXvOAO5vIXHKOy+ejqRPh2XJ3uHl5CBlAXFm40DGHtnRKKvjxwM\n",
168 168 "/ulPy/cVZ4snmUyVGnZDWKTf2jqc9HNzyY2l8lwCZ/YOTa+UhdPekfX0naTPS9jAcE8+HUjfsuQ9\n",
169 169 "fVblblf6fX3BKba8nj7N3hk3Ts/xqaox6kl/zx5ScMyZRiiCqirgvffk+9GBU6cICXqlpBYUkLRJ\n",
170 170 "3ccmuil9mZLAbjh7lpAKvXGBFJnJvD57jRoK3tIDdtjJGhAnfTtpi6RsimTE2NvSsXlIv6+PpLxm\n",
171 171 "ZorbO7zKPZEgn/+g3H7RQC5dVOKOUU/6b7wBXHqpmr7irPT9rB2A3Aw5OWp2rXphYCB1WpITKi0e\n",
172 172 "au3YD8GhOfUipErR2UlIICsr9TNRogZSWSX2vkTsASfpyyh9XrUqqvTtY7KSN8BPyAB5GuBpI0L6\n",
173 173 "48eTeyjoyWNgINzzqN0w6kl/505SHlkF4k76XkFcCt0WT0cHISU7aVKoJH1nEJdCppIlMFyZA2Jl\n",
174 174 "C+z9UeID5JS+PftGlvR5yoSrIH1q07AkQYjYO/RkK0Af6bMq/Z07yRkcUWJUk/7AAPC736kj/blz\n",
175 175 "yRm0cYRfjj6FbtJ3s3YoZAnZDqfvTiHr69tz0ilklL6zP9EnEVmlbyfusJS+vV1GBptKBlK7ZQE+\n",
176 176 "pU9Jn2Wh4LWQ6KKSlUUq1fotXn19Yrv+VWJUk/577xEvO0gBs6K4mNxwOi0SUcRB6fuRvmzxMjuc\n",
177 177 "vjuF7MLitGMAeaWvwt6x++rpaO8AhDRZ/fm42TuUyBMJQvx+ar+/35B+pNi5U52fD5A/emUlOZIw\n",
178 178 "bhhNSt9en8UOXUpflPTdPH1ZpU/tGR7f2N4+K4soVdazFdxIn8WmcZL+2LH8OfSsbexKX4T0gxZB\n",
179 179 "u3oPepLo63O3N8PEqCd9VdYORWUlOXw8bnAraexE1KSv6pxcL9JX4enbiQoQ89C9+hMh/WSSEDQl\n",
180 180 "NVr4jDcDhxI3wKf27W0zM9ltGueYIrtlWZ8OnJ5+0Px49wLY1XuQr2+UfoSwLJK5M1pI33kurRt0\n",
181 181 "k75bjj5Fuip91faOqDVjz1TiyYax90HBQ/r2IDLP2HbLhaedSMqm09PXYe9Q9R606BmlHyE++IAQ\n",
182 182 "/6xZavuNK+k7DxVxQxhK317j3g6VpK/L01cdyHXaOyI7Op2EDfBn4LiRPmt7GcVuPydZVzE0gN/e\n",
183 183 "4V1YeOwdo/QjBLV27ApJBQzpeyOsQK4upa8jkCtr77iRPosP7deHqL0DsKdR2okYELd3RDx9HnuH\n",
184 184 "ZV52Ig/a/GWUfoTQ4ecDhvT9EHUgN25KX6W9YwevvaPK0+cZ206sADuBi9o7PHEAGXvHKP0YQxfp\n",
185 185 "l5YSclNR50UV+vtJkNSLcCmiJn3dgVwZVQ54B3JVZu+I2Dt20gXkPX2eJwV7uijP2CqUvoiVpDNl\n",
186 186 "EzDZO7FFUxPJZlmwQH3fGRnAjBnAhx+q71sUra2kLEFmpv91Ok6wsiMspe/l6cuociCegVwn6QJq\n",
187 187 "PP2wlb4o6etI2eQhcYDP3jFKPyLs3Al88pPBJCiKmTPjRfqnTrEVlJs8mSwQus4EaGsbWvnSjjDs\n",
188 188 "HR2kL2vv2MlW5LxdFZ6+m70jGshlTaOUUfp0PJGxWEjcTvosBdp47B2j9COCLmuHYsYM4OhRff3z\n",
189 189 "gsXPB8jNlJmprya4V3kEIJxArizpewVyu7r4F0pKJHbVR8mWpy8Vnr5TdfMqfadi591kRdvp2JFr\n",
190 190 "WUNJnFfpZ2cHb1Qz2TtpAN2kP3NmepI+oLbEsRPOQ0PsUK30ddk7ToKl5YF5zwJwW0AyMoK38bv1\n",
191 191 "I0P6liVH+nblzTN2WJ4+HYdm6fFm47D8PUz2Tsxx+jRw8CCweLG+MeLm6fOQvk5f33k8oB0qA7n2\n",
192 192 "k6Ts0GHvAIR0eQ/PcAvAAvJ+PMBH+v39ZLGxW528pG8nb55dsiLZO319fFaNc3FhtXfsm61U2jtG\n",
193 193 "6UeAN98khG//IKhG3JT+yZPxUPodHf6k39GhJp7gZ+/IWFdepD9uHH+/Ti+cQtaPp/PhIW07+fLO\n",
194 194 "QVSxy7TjsWpExhHx9E32Toyh29oB0jeQC+gjfcvytl0AciOMGSOnxCnC9PQBsWPy3MhWpC9nOQNA\n",
195 195 "/FASkTm4lVPQ5emL+PNhkL7T3jFKP2ZQeVKWF4qKCHHG5ZDkOHj69NQpv4wpVcFcnZ6+KnvHi/RF\n",
196 196 "grDOp1YVpM/TPiyln0wSKyojI9WG194RIXFee8d4+jHC2bPA3r3AJz6hd5yMDGD69Pio/TiQvp+1\n",
197 197 "Q6EqmKvT03f654CYvaNK6XvZM1EpfVFPn1eBs47lHIeXxOnBKKzzMp5+zPDHPwLz53tbDCoRp7TN\n",
198 198 "OJC+XxCXQkUwl9pIcQ/k+nn6PErfqWSBcD19VUqfN3+edSwRpa/T3jFKP2SE4edTTJ8O1NWFM1YQ\n",
199 199 "0on0ZZV+Tw+5qdxuLF2kP9KUPstZrxRhevr2zB2ArXZ/GKTPY+8YpR8ywiT98nKgoSGcsYJw6hSQ\n",
200 200 "n892rU57J+gJS4Wn7xcs5jnZyQ1hBHJFlL4O0o+jp2/P3KHzDCJk3aRPTxkz2TsxRDIJ/P73wKc+\n",
201 201 "Fc54ZWVAfX04YwXBr469E+mu9L2sHYDEWnhTIu0II5ArovRVB3JZc+YHBoYr1zA9fRYCd74/rHYN\n",
202 202 "a55+MkmSE+jmL5O9EyO88w5QUhJ8epQqxEXp9/SQD6ZbANIN6U76XkFcCpW1cihU5+nLlFCg85Hx\n",
203 203 "9Hk3Somc2iWrwFnbyI4TFMh1KneTvRMjhGntAIT046D029sJkbMeFpOXR4quqUZYgVw/ewcQJ/2B\n",
204 204 "geElByiiztNXrfR5fHm3sUXahkX6vNk4LGUVnE86I17p79ixA/PmzcOcOXOwfv36Yb+vra3F5MmT\n",
205 205 "sWjRIixatAj/+q//KjukEMIm/bjYO37ljN0QpaefmytX7x7wt3cAcdKnZRMyXO4YkWMOVebp6/D0\n",
206 206 "WUsWi8YD3FI9ebN3dC0UPKRvt4Lo9XH39KWGTyaTWLt2LV599VWUlZXh4osvRk1NDebPnz/kussu\n",
207 207 "uwzbt2+XmqgMLIuQ/r//e3hj5ucTxRZEQroRF9JnUfo5OUBzs9w4Oknfzc8HxJS+szqlaF+6Arky\n",
208 208 "Sp/3YBOAnYzDeDrgLaDm7N/vSSLtlf7u3btRWVmJmTNnIjs7G6tWrcK2bduGXWfpKtDOiMOHyYdl\n",
209 209 "xozwxkwk4uHr+9Wwd8PkyaSN6j8ZK+nLKn1dnr5XEBcQD+SqsIrciDcsT19mwXG2ZbVq7IRJd3cn\n",
210 210 "k95tRJU+ayDX2X9QVc44KH0p0m9oaEBFRcXg9+Xl5WhwsFwikcCbb76JCy64ACtXrsT+/ftlhhRC\n",
211 211 "2NYORRwsHl6lP2aMuho4drDsyFVB+ro8fa8gLqA2Tz+d7B2VSp8l/dJJsAD/SVUsKZg8gVw3eyfu\n",
212 212 "efpSa06CITp44YUXoq6uDhMmTMCLL76I6667DgcPHnS99r777hv8f3V1Naqrq2WmN4g33oiG9OOg\n",
213 213 "9GkglwdTppBgrkpbyq+WPsWECfH19P2U/rhx/MFvVUpfRyCXR+k7x2bd2OWWVcPr6dN2fX3u7yVt\n",
214 214 "w0PKzvo+IkqfJ9tHBLW1taitrRVuLzV8WVkZ6mzbTuvq6lBeXj7kmok2ebdixQp89atfRUtLC/Jd\n",
215 215 "dgvZSV8ldu4EvvMdLV37Ig4ZPLxKH1B7ihUFq70j+4ThR85AfOyds2fdbbexY8lTESt0KX0Ri4a2\n",
216 216 "ZU33lA3KsrTjHYf3yUC2fxE4BfH999/P1V7K3lm8eDEOHTqEo0ePore3F1u3bkVNTc2Qa5qamgY9\n",
217 217 "/d27d8OyLFfC14XGRkJ8jthyKEhHewcgpK/qQBOKsOwdPxsG0BfIFbF3VHn6UeXpu9k7LIodcK+9\n",
218 218 "EwfS530ycLN3dCt9WUgNn5WVhQ0bNmD58uVIJpO4++67MX/+fGzcuBEAsGbNGvzv//4vHn30UWRl\n",
219 219 "ZWHChAl46qmnlEycFTt3kl24bql2ulFeDrz2Wvjj2tHWBpSW8rXRQfphBXK7u/3PDhg/Xr2nH2Vp\n",
220 220 "5ajtHdG6PW5kzGLvuC0yqklf5vqgQG7ae/oAsWxWrFgx5Gdr1qwZ/P/XvvY1fO1rX5MdRhhRBXGB\n",
221 221 "+Ng7PNk7gNrzailYPH1VpK9L6YcRyI2i4Jrz7yKzOUunvePM3mFpJ+K586RgilwftdIf8TtyoyR9\n",
222 222 "Y++kEKbS10H6XmUTALV5+mEXXPMKxsoofRF7R9TTZylwplu520k8HZT+iCb91lbggw+ACy+MZvyi\n",
223 223 "IqClhe0m0AWR7B2Vh5RTsHj6sqWPgWhIP53z9GWIW8bT5y1f4NaGjqcyMOtG4smk974V2ZhBFBjR\n",
224 224 "pP+b3wBLlkS3smZmAsXFwLFj0YwPxCN7x7LYyjDEOZAbpPRV5umHae/IKn2RtpZFiJQnYAqIB3J5\n",
225 225 "xnGOkUj4q3de+8gofc349a+Byy+Pdg5RWzxxsHfOnvU+2MSO8eNTVUFF4ZdlA8RL6Xt5+mEGcnXY\n",
226 226 "O6zkbd/mE5eUTd4xeDdnGaWvGa+/Hj3pl5QAx49HN74I6au2d1jrDyUS8hZPVJ6+SGllXUo/O5ss\n",
227 227 "nCyLpyzp83rsMu2iyN6hbbzU+6irvRNnNDeT4wqj8vMpSkqis3f6+giB8O6sVW3v8BSdk92glS6B\n",
228 228 "XD9Pn1WlJ5Ok5LNTOSYS4nXtAb7NWSKevohip+OFvTkL4Ld3jNKPCLW1JGsn6je4uDg6pd/eTtI1\n",
229 229 "WWvpU0Sl9AH5UgzpFMiVVfqUdN3+vjKkT9XqwIB/WzflrUux03Zhb84KasO7OcsofY2Ig7UDRBvI\n",
230 230 "FcncAfQo/aAgLoVsMFdXINdLmQPq8/RlNlZRyJB+IiGuvFnPrRVpF0dP3yj9GOHXvwY+/emoZxGt\n",
231 231 "py/i5wPqA7m89o5OpS9ixQDqlb7fcYm8St8NMqRP27N486JK34tY/Up6q0jZpNk1rCmYQWMYTz8m\n",
232 232 "aGwknv7550c9k2jtHVHSj9LeUUH6ftk7IqdcAf6kT290nqwj3UqfdXHzIn3d5O32dJGZGbybVSSQ\n",
233 233 "a1fWtIKm19/KjZR57B0/pU9TVek5AFFhRJL+r38NXHZZNPV2nIgykCuj9EdqIFcH6ScSasonAHxK\n",
234 234 "X5e9A7Azh3HZAAAgAElEQVRn4biRd5DF4Wbv0DFVWi8ibdzsF7/cex77iC4QvDE21YgBLarHa6/F\n",
235 235 "w9oBgMJC4ORJudxzUYjU3QHSN5CbTLrnjtshY+8ELSY8/fodlyiTY08RBum7KW/alpeIgeDMHxXZ\n",
236 236 "O0FtdNo7cfDzgRFI+pYFvPQSsHx51DMhyM4mavvkyfDHFlX6EyYQwvB71OZBWPYOVeN+SkqH0gf4\n",
237 237 "grn0dCa/2jssx1XGQel7KfagejhuY6omcJE2spuzeNI7o8KII/0//5ncgJWVUc8khah8fdHsnURC\n",
238 238 "rcUTdG6tHTKkH2TtAHpJnycA69yRSpGRQYhDdEcs73xEiRvwV/q8ih0QJ3CegmtB4+hU+s4FIiqM\n",
239 239 "ONKnKj9q38yOqHx9UaUPqLV4wvL0g4K4QGq3Ku9TTBDp8ywmfgodYLd43AqeUahQ+kHt/cibl4jp\n",
240 240 "mLztVMcB3IhZVcqmUfqasGNHfKwdiqiUvgzpq0zbDMveYVH6iYTaFEsKHqXv5edTsAZzo7Z3ZDx9\n",
241 241 "UXuHN3uHNxvHjZj9Ark8m7OM0teAzk7gD3+ITxCXIqoNWrKkr8reCYv0gzZmUeggfZ4+/TZ6AexK\n",
242 242 "PyiQy1riOGxPX7W9o3KHrc7NWUbpa0BtLXDRRcF128NGVBu0RLN3gOjsHZnsHRalD4gXSFMVyA2y\n",
243 243 "d1QofZnyyHQOujx9UXtHVfYOTwpm0BhupO+1+csofQ146SXgM5+JehbDYZR+fOwdQCyYy0L6KjZV\n",
244 244 "8fTlF8iVKZpG24sqfRZPP67ZO7Kbs/w2fxmlrwFx9POB6JS+aPYOMHIDuYD48YZ+pM+zqUqlpy9j\n",
245 245 "7wwMeKvPdMre0b05S5UdZJS+Yhw+TEjqgguinslwpKvSH4mBXIBf6VsWmzpX6emHYe9Q0nbLdJP1\n",
246 246 "9EU2Z8VlR67b9bx2kNv1RukrxrZtQE1NPEovOBGF0k8mCXmKxjeitHdElT5PIJeH9P1KGFOotHdk\n",
247 247 "M28A9pRLv/YiZRhY2vrZO7ztwiB9v+Csm3r3ut4ofcXYtg347GejnoU7Jk4kJNzREd6Yp0+TcUUX\n",
248 248 "wSgDuTL2Dmsgl7dkgp8yB9TVzAH4DiaXUfqypK+ynAJtp1rpi3j0up4MjNJXiJMngX37gCuuiHom\n",
249 249 "7kgkws/Vl8ncAaKzd8IgfV6lz0L6qvP0ZQO5oqWRKXQrfRF7RzR7h9ej5z1EhfXJIA5llYERQvrP\n",
250 250 "PQdceWXwjRklioqAEyfCG0/GzweI0o/C3pFN2WQJ5OoifR57JygoLLsjV4W9E9Rex+YslSUVRNro\n",
251 251 "DPyagmsKsW0bcN11Uc/CH4WF4ZK+TOYOoE7pW1b8lH7c7R0e0o/S3kmXzVm6ArNe13vtAzBKXxE6\n",
252 252 "O8nRiCtXRj0TfxQWAk1N4Y0nq/RVkX5vLzk0gvXDLkP6ugK5qu0dlYFcXfZOFJuzwiq4xrtrNiiQ\n",
253 253 "y7oQGaWvCL/6FbBkCVBQEPVM/DFa7R2eCptAijyDDuV2Q5RKn8feUeXp67Z3wt6cJZL142cl0RLW\n",
254 254 "uguuuV1vlL5GPPUUsGpV1LMIRtj2TlyUPo+1A5BsI5HaOEC0gVxee8evP9bdtFHbO6Keflj2TjKZ\n",
255 255 "2iHL2kZniqdR+grQ1kaORoy7nw9EY+/IZO+oUvq8pA+IWzxRB3JV2jsydXNY+4jK01dt7/BYL0Ft\n",
256 256 "VJVtMEpfE555hlTUlCG3sJBu9k5USh8QJ31WT38k2TsytXe8SJu2j6LgmsqUTS9lrXpHLuvmLKP0\n",
257 257 "FWDLFuDWW6OeBRvSLXtn7Fjiq7MSmRdESV8kbTOd7B3dgdwos3dYNmeFkbIp8kTBs8PWb05G6WtA\n",
258 258 "XR3wpz8B11wT9UzYkG7ZO4mEGosnbHsnXbJ3dOfp67Z3kkkSKM3M5G8rQsaWRcaULYYm0kbV5iyj\n",
259 259 "9CXxs5+RAC6LhxsH5OcTu8Tv8VUlZEkfGLmkH7W9E5c8fS97hrb3mwMlR69ibaoLrnmNFzXp82zO\n",
260 260 "MkpfAskk8JOfAF/6UtQzYUdmJkkrPXkynPFUkb5svaA4kn7U9o7KMgxRpWzqaOtn76gicEDvISr0\n",
261 261 "eq/aO0bpC+K114CpU4ELL4x6JnwI0+KRzd4B0k/pd3WlTxkG3QXXdG/O8iseJuLN03a6VXtQGxUF\n",
262 262 "2kztHQ14/PH0UvkUYQZz09neES2vHLW9E7anH2UgV6atiL0jktsvmrLpFsjlyd4xSl8xPviAlF24\n",
263 263 "7baoZ8KPsNI2BwYIWU+aJNdPuin9dLF3VHr6Udk7QfGAoNTLsOwdVSmbKjZnGaUviIceIipfltCi\n",
264 264 "QFj2TkcHIU5ZVZGbGx3p60zZjDqQG0aevorsHb85yOT4x9ne0bk5Ky5KPwZTYMepU8D//A/w5z9H\n",
265 265 "PRMxhGXvqLB2gPRS+v395MuLxOwQUfp+JA1EV3BNRz182j4oA0e1vRNExryHqUeVveOn9HNz3fsJ\n",
266 266 "E2ml9B99lJyOVVoa9UzEEJa9MxpJn5Zg8DvSkEKE9IOeIFTW3glzR66Mpy8ayBU5fMUvDqDSEhIp\n",
267 267 "uJZuVTZjMAU2tLUBjzwC7NwZ9UzEEZa9oyJzB4iW9Fta+NqwWjuAvnr6PT1kE1HQwhOn7B2v16XT\n",
268 268 "0083e8cvkOuVvWN25CrAD35ADj6fNy/qmYhjNNo7vKWVAXGlz0r6OgK5WVmE7L3IwdlfOtg7okpf\n",
269 269 "h70jkr2j296xLL4nA6P0OXD0KPDjHwN790Y9EzmERfqydXcoVCl9Xh9TN+mPG0euZ1HlABvp037P\n",
270 270 "ng1Wcyo8fcvy7yczk2RxJZPupRIAvdk7ovaOyEYrWhLC+bf0UtaqNmf195P31m2XsFH6kvjmN4Fv\n",
271 271 "fQuYPj3qmciB2juWpXecOCn9sPL0eUg/K4vcrKwlMXhIn9WLl/X0aa14L0JPJIItnqg8fT8F7ufP\n",
272 272 "u801keCvdSPi6fOQuKm9I4mtW4H33we+852oZyKPCRPIB1dFyWI/qCL9KFM2eUmfdTcuBY/Fw5K9\n",
273 273 "A7AHc1Uofb8cfQqZDVYsxB129o7fIuNFsqo8fd5FxSh9QRw9Cnz968CTT7LddOmAMCyedFf6Inn6\n",
274 274 "PEof4Dudi9feYelPBekH3RMsufa6PH2RdE8RewfQT/p+efejUunv2LED8+bNw5w5c7B+/XrXa77x\n",
275 275 "jW9gzpw5uOCCC7CX0ZhvbweuvRb43veAiy6SnWV8UFSkP4NHZfZOuhRc4yV96uuzQKW9E+TFA/JB\n",
276 276 "WNZ+ZIKxOhYMkR25tF0USp+3zMOIUPrJZBJr167Fjh07sH//fmzZsgUHDhwYcs0LL7yAw4cP49Ch\n",
277 277 "Q3jsscfwla98JbDf1lZSJ7+6mvj5IwlG6QcjDNLntXdYSJ/F3qHBPy8vnvajQunLePqUuLziT2EX\n",
278 278 "XAuKIaggfd6a/V7K3StQPCKU/u7du1FZWYmZM2ciOzsbq1atwrZt24Zcs337dqxevRoAcMkll6Ct\n",
279 279 "rQ1NPlL3j38EPvlJYPFi4OGH2bIr0glhkH5csnfojc+yS9YOUU+fV+lHYe+wkHV2NiGfgQHva/yK\n",
280 280 "rVHI2DsZGf5ZLjoyf6JW+rzZOCL9p73Sb2hoQEVFxeD35eXlaGhoCLymvr7etb+ampSl89BD/moo\n",
281 281 "XRGWvaOS9EWzjURUPiC3I5cVPEo/KNuGgsXeYQkKJxLBhK0ikOsXjA1qL7o5yyu3Paid33i8JMu7\n",
282 282 "SIjYO3FW+lJTSDDKcMvBGl7tEon7cOedwOHDQG1tNaqrq2WmF0sUFgJ/+YveMVSR/pgxRPGxkp4T\n",
283 283 "YZN+Otg7LEqf9tXT4/2adNs7QIr03f6GovEASnxuFKAje4fXflFB4rqrbNbW1qK2tla4vRTpl5WV\n",
284 284 "oa6ubvD7uro6lJeX+15TX1+PsrIy1/62bbtPZjppgcJC4De/0TuGKtIHUmmbUZA+6+YpQCyQy2Lv\n",
285 285 "WBZ7yiarvcO6gIhaMxQy9g5tL6r0RdpFnbIpkncfhdKvrh4qiO+//36u9lL2zuLFi3Ho0CEcPXoU\n",
286 286 "vb292Lp1K2pqaoZcU1NTg82bNwMAdu3ahSlTpqCoqEhm2LRGYSHQ3Kyvf8sinr6K7B1AztcXJf3M\n",
287 287 "THLjsJYqBvQpfXpjZzDcKarsHSDYmmFN2VSh9L3aigRyRQKyQDikryrvPu719KXWnaysLGzYsAHL\n",
288 288 "ly9HMpnE3Xffjfnz52Pjxo0AgDVr1mDlypV44YUXUFlZiZycHPzsZz9TMvF0he5AbmcnuVlVfbhk\n",
289 289 "0jZFSR9IqX3WJ4yuLiAvj71/VtJntXYAPfaOF1gCuarsHTf4KXYaDHUrAeFH3iInZwFqSV9F3v2I\n",
290 290 "r72zYsUKrFixYsjP1qxZM+T7DRs2yA4zYqCb9FVl7lBEofSBFOnn57Ndr8veYVXmrH2qIn3WQK4u\n",
291 291 "e8ePhO1tnX8T0VRPUaXvtmDzZuPQOkYDA0Of+PwWCbMj12AQ+fmEmFnrvvBCpZ8PyJG+SIVNCt5g\n",
292 292 "ri57h0fps9g7qjz9qO0d0cwflr0BvOOpVO5u19P6Pk4iF8kOioPSN6QfMjIzgYIC4ORJPf3HifRV\n",
293 293 "KH1W6CrDoNre4anjE2d7J0jpe6n2IFsIILaQW7swArlepOzWxtTeMWCGTotntJK+yOYsHUo/bvZO\n",
294 294 "lErfjVhZFgseAhdpIzqGk8hHbe0dA36kE+nLVNoMW+nr2Jylw95RRfo6d+TS9rKevhOitlDUpO9G\n",
295 295 "5Lybs4zSH8XQTfqq0jWB6LJ3cnL4Km3qDOSqzt5h6U9WpdP5xNHTF1H6qrN3eAK5Xm14N2cZpT+K\n",
296 296 "oZP0R1r2DiviEsgNy9OPOpCrw9On7XTbO5mZqdO27PBT4m5EzruoGKU/ipFO9o4s6fMelUgRF9Ln\n",
297 297 "KUERpr0jW3BtYMA/cEnbq7Z3ZDx9Vdk7Xqdt+SlxtzHMyVkGzBgtpN/RER7p856cFaW9E1Yg18/e\n",
298 298 "oSTqV+YiKG8+6EwAXvKmY+pW+l5tgjx9VntnRFfZNBDDaCH90WjvpEuefpDiZmmvw9MPI5Dr1UbV\n",
299 299 "9XGvsmlIPwLorL8TJ9IPU+nrJH2VO3JV5unL7MiVPXkrqL2fpx91yiZtw7rZivf6uNfeMaQfAdIp\n",
300 300 "eyc3N9raOyywrPTK3gmr4JqfvaOb9EV25ALhZO8A/J4+z/VuC4RbGYeoEIMpjD6MluwdWaXPmrJJ\n",
301 301 "b0YeFZXuefqsgVzRlEva3q8AmsjmrDgpfV57R2ZzFlX5cTgJ0JB+BMjNJSljPHnorIiTvSObp8+q\n",
302 302 "9Hk3ZgF6yjCEWU9ftuBaXJW+SAA4rECuzOasuPj5gCH9SJBI6PH1LUvP5qy4e/q81g6gpwxDmLV3\n",
303 303 "4mDvqA7IAmKxgCgDuaybs4Jed5gwpB8Rpk1Tb/F0dxPPUOSUKy/InJMblqcvQvojwd7RqdRl23uR\n",
304 304 "t6inH1Yg18/TZ7V3vHL6jdIf5dDh67e18R0kwoLsbPJhZbFC7LCseJN+3AO5umvvhGHvhOnp8z4d\n",
305 305 "8Kpx3s1ZrAtEFDCkHxF0kH5rq1o/n0LE4jl7NrVgiICH9Hk3ZgHRlmFQUXtHRZ6+DOnLFE6LQ/aO\n",
306 306 "qkAu6+Yso/QN0kbpA2JpmzJ+PhCO0u/pIWl0fkhneyeuKZvpuDmL58mAKn27JWqUvsGIV/pxJ/1E\n",
307 307 "IphYAb7aO8beSUFHwTXd2TuqNmdlZJAv+2EwRukbpJXSFyF9GT8f4MvTFyF9gM3i4dmRS31sv6cH\n",
308 308 "VSmbsnn6cVX6YQVyeWrp0Ot5C7TZ+zdK38Ao/QDw5OnznppFwUr6rEo/kQi2eFSmbMbd3hlJBdd4\n",
309 309 "NmcBwxcJo/QNjNIPAK+9wxvIBdQGXimCLJ6RYO/IlGWOi9LXuTnLrX+j9A2M0g8AvUG8ygDYodve\n",
310 310 "4SH9oIVEVe2dKPP0qVoXKcssk/XDS/q8GT88JE7nxJrXb5S+AaZNIztyg7JHeKBT6fNm78gqfYBd\n",
311 311 "7YuSvg6lH2TvhFlaWZe9I1OWWea4RJ5ArmWpJXFee8cofYNhGDuWkGJbm7o+dSl9kcPRZZU+oJ/0\n",
312 312 "dSj9IHsn7OMSddg7rG2j9PT7+8mxiF5VLXk3UInYO06lb0jfQHn9HdXF1iii8PQBdtIX2ZwFxNve\n",
313 313 "CSJ9lnnJHqIiWkrBb2wdnr7bAiOy81fV5ixg+CJhCq4ZAFDv67e2xieQq0rps6Rtppu9I0v6AwMk\n",
314 314 "BzyItHXZO6xlmUU9fScZJ5MkfuCl2nkJXKSNSNkGo/QNhkE16Y9WpZ8u9g7dpcmi+PxIn6ZrBtVm\n",
315 315 "p0rdrVieTBkHlgXD7ymBt8qmagL3auMXbOXZnAUYpW/gAaP0/cGaqx8n0vd7eqBEy3KQhp8fz/q0\n",
316 316 "kJHhfXSfbtJX6emHRfoiSp91kTBK3wCAWtJPJgnRTpqkpj874q70RTdnBdk7PMrc3qcsWQP+1oyK\n",
317 317 "flhJnzeTxt5WlacvUo45iPR5A7myi4RR+gYA1JJ+ezshfB1ncIqkbIadvaMjkMtTd4fCz94RIWtR\n",
318 318 "a4ZCVq2rbpuuSp/X3nH2b5S+AQC1pK/LzwfEUjZHgqfPa+0AwfYOa38ZGSTl0E1p88zLyyaKq6fv\n",
319 319 "NmaYnr4ue8cofQMAaklfl58PRJu9E+XmLFHS97J3eIq3Ad7B3DDtndGm9FVtznKrvWOUvkHaKP0o\n",
320 320 "PX2dKZs6lL4qe4f2JUv6XuQrS/osO3J5SyMA0ZO+rs1ZRukbAEgvpd/RwXdObphKX1cgV4e9EwXp\n",
321 321 "R2HvyByMHgbpiwRyZTZnGaVvAADIzycBWJaiYkHQqfSzssgHluV4QQoVSp8nZVNHIDdqe0dGpVPI\n",
322 322 "2Dteef4sm7NEd/O6PSHoyN5R5ekbpW/AhYwMoKAAOHlSvi+dSh/gz+BJB08/CnuHZ5467R0WtU7z\n",
323 323 "/J0KV7fSjyqQG+TpyywSRukbDEKVxaNT6QN8vr5lEdKPe/ZO2IHc7m7+3b1ufYWVvUPbO0lYZnNW\n",
324 324 "WKpdh6fPY++4Vdk0St8AgDrS11Vhk4InbbO3l6jEIGIIAgvpW1a8lL7fQnL2bHyUfhikH5ann5VF\n",
325 325 "NifyHEQuWyo56Hq3evpG6RsAUKv0dds7rKSvwtoB2Ei/p4fcTJmZ/P2zkD6PBw/42zuqlH5Ynj4g\n",
326 326 "Tvqinr4I6ScS7jtggxaKMDdnGaVvMAhV5ZV1K30e0lcRxAXYSF9U5QPR5OmHTfpR2jsiSl9kcxbg\n",
327 327 "TrIqC66Z2jsGymCUvjdY8vRlSD/u9o6K7J0o7R0nSdKS0H6KV6T2jls73WUYLMv/tZjaOwaeSBdP\n",
328 328 "nyd7J12Ufti1d1QGcmXtHRYiBcRJn3ra9uNAKakGna3La++4tdO9OYuezOX1WozSN/CEKtJvaSHp\n",
329 329 "n7oQhdJnydMX3ZgFpLe9E3X2ThCBJRLD1T5rfn9YpK/zzFuj9A08oYL0LSucPP24evoiG7OAYKXf\n",
330 330 "3a02kJuO2TtuAVnWpwRnW9YjGlWQftBYvGUVnNk4vE8SRukbDEIF6Z8+TchENkXSDzwpm2Fm7+gM\n",
331 331 "5HZ38y9efn2OlOwdFsXu1palXZSBXJ68e7+gL+C+SBilbwBADemfOkVKOuhEXJW+zFhBSl/EOkqH\n",
332 332 "7J2BAXHiBvjiATzqG1Br7/Ckhg4MkC+v1F+3sgqjTum3tLRg2bJlmDt3Lq666iq0tbW5Xjdz5kyc\n",
333 333 "f/75WLRoET72sY8JT3SkIjeXZAGwVJP0gm4/H+D39FWQPlWpyaT3NTKkn51NbnSnt0vR1cVvHam0\n",
334 334 "d3Rl71DSZj22USSbxm1sUU8/jOydoCAz7z6AEVl7Z926dVi2bBkOHjyIK664AuvWrXO9LpFIoLa2\n",
335 335 "Fnv37sXu3buFJzpSkUjI5+rHTemfOaPm2MZEIljtyywwiUSwHcNL+mHYO7LZO/RgdRbIKP0oPX1e\n",
336 336 "Ug5S4m7XB9k7I07pb9++HatXrwYArF69Gs8++6zntRZPTd5RCFmL59SpcJQ+a8rm6dPqzuoNIv3O\n",
337 337 "Trn4gZ/FI6L00yF7p7dXzZMCb1tWT9+N9FUrfd7sGqP0ATQ1NaGoqAgAUFRUhKamJtfrEokErrzy\n",
338 338 "SixevBiPP/646HAjGrKkHzd7R5XSB9hIX8ZKCiJ9Xk8/HbJ3VNlDLG15Pf3MzNTGJ57xVNk7qq6P\n",
339 339 "s9L3XXuWLVuG48ePD/v597///SHfJxIJJDzMsN/97ncoKSlBc3Mzli1bhnnz5mHp0qWu1953332D\n",
340 340 "/6+urkZ1dXXA9EcGVCh93fbOpElEwbPg9GmySKhAUK6+LOn72TGiSj/u2Tthkj6v0gdSBEuDqr29\n",
341 341 "wZ+nMEjcqdx5AsUqlX5tbS1qa2uF2/tO45VXXvH8XVFREY4fP47i4mIcO3YMhYWFrteVlJQAAKZN\n",
342 342 "m4brr78eu3fvZiL90QQVSv+cc9TNxw2TJ5MDX1gQtr3zt4+YEFTbO5SoLWt4UDCq7J2oSF/E06ft\n",
343 343 "+vpS71VPT/CTbNhKn2UfgK4duU5BfP/993O1F7Z3ampqsGnTJgDApk2bcN111w27pqurC2f+5gl0\n",
344 344 "dnbi5ZdfxnnnnSc65IhFOij9yZNJfR8WpJu9ozKQm5lJvpy+NCCWvaMjZVMF6bMQmKzSt4+nw97h\n",
345 345 "Ccy6efRRKX1ZCJP+d7/7XbzyyiuYO3cuXn/9dXz3u98FADQ2NuLqq68GABw/fhxLly7FwoULcckl\n",
346 346 "l+Caa67BVVddpWbmIwjp4OmPH08+9G4phE6otHd0Zu8ARE2qVPq0T7eFRMTecXu/0yV7R8TTdxtT\n",
347 347 "B+nLlmJmOeCdJ68/TAivPfn5+Xj11VeH/by0tBTPP/88AGDWrFl4++23xWc3SlBYCHjEwZkQRvZO\n",
348 348 "IpGyeKZN879Wtb3jt4dBd/aO6IlcsideAeqyd9xIW0bp69yRC7jbQizn+eq0dzIzUxu4MjKCX4vb\n",
349 349 "oqJzxzwPzI7cGKCkBDh2TLx9S4t+ewdg9/XTyd5RHcgFvDN4osre0WHviJA+q9IfOzYce8c5ht97\n",
350 350 "Qg9qoeqdV+mzvvYwYEg/BpAl/TCUPsBO+mHaOzpTNkWLuam0d9I5e8ep2FktDudCFRbp84xhlL6B\n",
351 351 "FAoKiDr22tTjh2SSkKzOWvoULKTf10e+RIugOREV6ff3ky+RG9XN3rGs0Ze9I+rpO1+3yEldrCmY\n",
352 352 "dN8oL+kbpW8ghYwMoKhITO23tRErReSMWF5MmRKcwUOtHZa6LiyIKk+fVu8UeR1u9k5/P/k782Rw\n",
353 353 "jER7R6SyJ0vg2a12vx/JZmSQL7oJjHdh4VX6rO9ZGDCkHxOUloqR/smT4Vg7AJvSV2ntANEFckX9\n",
354 354 "fMB9IeG1drz6AfieGKLO3nGSNwvpiyp9exvWej10frykz6L0jb1j4AtRX7+5mWT/hAFW0lcVxAUI\n",
355 355 "ofvV/JFN2dRF+k51LXIKl9fcZJW+bPZOTw/7JitR0udN2XS2YSF9e8BYtdI39o5BIERJ/8SJeJG+\n",
356 356 "yswdwL/mj2XptXdESd/N3uHN3PGaGyUSVpvIzSLiWTTcTs5iTRkVVfoigVwRpW9vo1rpm0CuQSBK\n",
357 357 "S4HGRv52zc3BefOqEIXSnzjRu+ZPTw+5uWR2OvopfZUnconYO25z4yFs2odzLrJPCqxPLU6fXae9\n",
358 358 "I6L0nSRulL5BqEgXpR8UyFXt6U+a5K30VZzQ5ZUdFFd7h5f03RYgnj7GjRtKpv39qZz1IMgofd4A\n",
359 359 "sIjSty8UOpW+ZcWryqYh/ZhAxtOPk9IP095RQfo5Oe6BYhnS12nvREH69vY8JSCc1hBrW6fSZwk8\n",
360 360 "i8QBZOwdHqVP6+6oymiThSH9mKCkRMzeiZunr9re8SvpLJu5A3iTvoyn76b0RewdGmi015bnfWKg\n",
361 361 "pG0/x4gne8dJ+jIlIHQGcp1Kn2WssJR+nPx8wJB+bCCashmm0p8yJfyUzXRU+uPGDbeMROwdt+Mc\n",
362 362 "eZV+RoZYLRsK51MLj9IX9fRFArnOhYJlLN1KnyczKEwY0o8Jpk0DWlvdS/L64cSJ0WvvqDiA3Y/0\n",
363 363 "RQO5OTnDvXgRewcY7uvzkC6FzMLhfGrhWbzclD5L27CUPm8g1/lkwFpPP05BXMCQfmyQmUnI2+Wg\n",
364 364 "Ml+M9Dx9SvpuxyyrUvpu+wBklL7bhjIRewcYTtgqDmuX8fTDsHfCUvoy9g6P0jf2joEneC2egQFS\n",
365 365 "bG3qVH1zsiOK7J2sLHJzumXYxNXeccsIErF3gOFKP2rSlwnkhrkjV7e9w1N7xyh9A0/wZvC0thKC\n",
366 366 "DesDNW5cqnCYF1QrfcA7bTOugVwv0ldh74jYTs4+wlT6op4+JdeBgeBTrYChqt2yolf6JpBrwARe\n",
367 367 "0g/TzwdIYDGo6JqOU7y8NmjpVvoynr6T9FXaO7KpnzLZO7yBXFmlT8k4KN3RrtppcbugIoRG6RtE\n",
368 368 "Dt60zTD9fIr8fGIpeaGlBcjLUzumVzBXJek7YwaqPX1V9o7IvJzEzZO940b6YaZsss7V3oZ1UdO5\n",
369 369 "I5cqfcsySt/AB7ylGMJW+gBR8S0t3r9vbVV/ipeXvaMie4eqSGd9GdWevqjSd/P0ZZU+Tx8y9o6o\n",
370 370 "p8+rwJ1tRBcXlUrfXrrZKH0DT1RUAPX17Nc3NZE6/GGioMBb6Q8MEOtH9YEuXvaOqvRQN4tHxtN3\n",
371 371 "s3dEn0pU2DsyTwvUS6dWRVj2jl21sx68Ym+jY3HhUfpAKm3T5OkbeGL6dOCjj9ivb2wEysr0zccN\n",
372 372 "fqR/+jQhNpkCaG7wsndOnyYZRbJwI33VSl806KzD3uFdOOztwwrkUjJmDYA7CTxqpQ+k0jaNvWPg\n",
373 373 "CUr6bjnpbmhsJJZQmPAjfR3WDuBdikFVplBurjvpiwZy3Tx9UaWvw97hXTjsG7TCDuSyvl5Rpa/L\n",
374 374 "0wdSpG/sHQNP0GMPg3LhKeJG+jqCuIC30m9vV2fvODdonTkjng7qpfTjQvoySp8nkCvj6dN2PGWc\n",
375 375 "eT19ndk7QGqxNErfwBc8Fk8cSV+X0veyd1SQ/sSJ7qQvuslMpafvtJ5E7B1nTX0RpS9i7zjr9ogo\n",
376 376 "fVZ7R0Tpy9o7LLuEz541St8gADyk39AQL9LXZe94BXJVkb6bfSRD+irtHSfpiyp9macFp9JntXcm\n",
377 377 "TBDbFGYfjzXrKWylz/IEQl+HUfoGvpg+HairC76uu5uQQViHolPEyd5RqfSd/cuQPj14xF4SOS6k\n",
378 378 "T2Ak9qMAAA6KSURBVHPHeZSnXbHz2Dt2a8qy2LNY7O10Kn0ZT59lXtTeMUrfwBcVFWxK/9gxovLD\n",
379 379 "PphhJNo7TqVvWcTuESX9RIIQgt3iidLesdtNdNHg+dw47R0epU/HpU8IGQyMY2/HqvRp0HRgQDw1\n",
380 380 "lIf0WeZF3zeTsmngC1alH4WfD8TH3kkmCTHIbs6i/dsXla4ucpPKpJ46M4JEUzZVKH17H7IpnzyL\n",
381 381 "F1XslsU3rlPps5B+IpGya0TsHZb3ldfesXv6hvQNPMHq6UdJ+i0t7mmluuwdN6Xf0UFIlEU5svRv\n",
382 382 "X1RkrB0K50IlqvRzc4cGmUWVPu1DdnMXz/iZmUSB9/SIkz7PfGkMQUTps5I+T4CZLpYi77lOGNKP\n",
383 383 "GaZPBz78MPi6qEh/7Fjy4XerQa/L3nEr6ayymqdT6asgfftCRe0iVfZO2Erf3p538aIEzvNUJqL0\n",
384 384 "AX7S51X6zv0KLPZOT48hfYMAlJeTmjp+5YuB6Egf8LZ4dNk7+fmkbzva2tTsxgX0KX1K+j09xCoS\n",
385 385 "sYucpC8Sa7D3IWsP8ZI+9ed5FhtnLIB1vjSOwkr69lRWlsWU9k93GQf9PY3SN2BCVhYwYwbwwQf+\n",
386 386 "19XXR0f6XpU2ddk7eXnDLSWVTxU6lL7d3pGpBuokfZG52eMLsvZQZydfe6q+ecbNzk7V0ecpVEcX\n",
387 387 "C1bSp6m1lsVGzPS1sD59UE9f9CwFXTCkH0NUVgKHD/tf89e/ArNmhTMfJ7yUvi57Z9w44g/bs2FU\n",
388 388 "jqVD6dvtnahJX1bpOxcNXnuHV+nT7CceggX47R26SPT2sj2J0dfCSuJ2pS9SYVUXDOnHEKykP3t2\n",
389 389 "OPNxYupU4OTJoT+zLH2kD5B+7SWdVVpJupQ+7VN2dy8l3P5+QmgynnzYnr6I0qfturr4FilKyqxz\n",
390 390 "pKmsrGPY58RC4sbTN2BGEOmfOUM+2GGXVaYoLh5+gHtHB8mkUZFC6Qanr69a6dsPfFcRJLbbO+3t\n",
391 391 "4uWm7YRLM5Z492ZE6emLKH3aTkTp85A+78LCOyfj6Rswo7ISOHTI+/fU2gl7YxaFG+nrru3vVPoq\n",
392 392 "4wc6FhS7vSMTdLYTrmgROLsnL2oPyXj6sqTPm7JJF0fWufEqfV5P35C+QSCClP6RI9H5+YD7Wb7H\n",
393 393 "j5PFQBdoMJdCpdJ3BopVWEd2e0dG6dOTvXp6xG0i+8LR3s6/AMl6+iL2Dn1CEAnk6lL69kAur6dv\n",
394 394 "SN/AFzNmkGJqziP8KKL084FoSF+npz9+/NBAsYoFxW7vyKaXTp5M+hIlfUpWAwNi1hVdNOjRfzxB\n",
395 395 "SVGlz5spA6QWGF2kTz36zk5j7xgoxpgxpAbPkSPuv49a6Udh70ydSg6Cp1CdHmpfVFT0rUrpA6Rt\n",
396 396 "a6s46WdkpIquiZJ+R0fK2uGxFWWUfnc3/47cri52e2fsWJJzf+YM2xiJBHkfW1v5ArkmZdOACeef\n",
397 397 "D7zzjvvvRqPSLyoiCwtFc7PaCqN20lfxFEGJGpBX+nl5cqQPpCwaEXuHKn2RWkcynn5XF998ee2d\n",
398 398 "RIK0OXWKL0OIlfTtnr5J2TQIxMKFwNtvu/8uaqVfUJAiAYpjx/SSfnHxUNI/fpwsPqrgVPqypD9t\n",
399 399 "Wmovg6zSV0H6NENJROnTBUNkv0FuLpm3qL3Ds2Da7R3WgDcv6U+YQD4fxtM3UA4v0u/uJn5/lKSf\n",
400 400 "kTG8RtCHH5JYhC7YLaX+fnKjFhaq658WkgMIwcraO/a9DHFQ+nRDnYzS583cAVKZUbykTy0lngXT\n",
401 401 "bu+wLk6U9HlKRLS0GE/fQAO8SH//fmDu3OgPZZg5cyjpHz0aHuk3NxMykSl97IS9tIQKpU9J37II\n",
402 402 "6avw9GXmRUlfVOmfOUPG57XU6ILFe54xXSx02ju0Da+9w0r6tMyDIX0DJlRUkCCQM2D6zjvAeedF\n",
403 403 "Myc7Zs4kRA+QrJC6uvBI/9gxtdYOQMisuZncoH194oeiU9CAZ1cXIS9Ze6etjRTiE326kVH6+fmp\n",
404 404 "8adO5W/b0kIWwGnT+No1NpLPlkjKpk5759gxtveQPj0a0jdgQiJB1P6+fUN//vbbJMgbNeykf/w4\n",
405 405 "uQl0frDz8lIbY3QEjSsqSBG7+npS6VTFxjeacSRbEZWqZZkMKfokI6L0s7LI3/fgQX7Sp3NvbuZr\n",
406 406 "W1BAYldTprD/Leh+C157p6GBL27w4YdsC1hBAVko+/rYTxsLA4b0Y4zFi4E//GHoz958E1iyJJr5\n",
407 407 "2DF7NiEBgGQTzZypd7xEIhVH0KH0KyrI00pdHSF9FZg6ldz0x4+rIX1Zpd/SIqb0ATLue+/xqXVg\n",
408 408 "qNLnJf2//pVvrsXF5ACijAx2+zMnh2yEZP08TZjAR/qNjfxprrohTPq//OUvce655yIzMxNvvfWW\n",
409 409 "53U7duzAvHnzMGfOHKxfv150uFGJyy8HXn899X1nJ/H0L7ooujlR2FNK3303HMtp7lyy0Bw8SHYt\n",
410 410 "qwQ9prKujiwAKjB1Kvl7TZkid1wetZ5OnBBX+gUFhNzGjBFLH6SkL6L0T54k9hBPPEKU9I8c4csw\n",
411 411 "Ki4mT6ysT47FxWThZCH9yZPJhjZVIkIVhEn/vPPOwzPPPINLL73U85pkMom1a9dix44d2L9/P7Zs\n",
412 412 "2YIDBw6IDjlqUFtbCwBYuhTYsye1yec3vyGEHwd/cM4corg7OojldMEFesah7wVASP/99wmRVlWp\n",
413 413 "HYceSK+S9CsqgN/9Tv6mp7WY6utrpZT+7t3kCU1EdRYWkvddxNM/cYJkHfEE3vPziRfuFQuxfy7s\n",
414 414 "c+zu5ost0SdUVtI/5xzyLwvpZ2SQ911nrEsEwqQ/b948zJ071/ea3bt3o7KyEjNnzkR2djZWrVqF\n",
415 415 "bdu2iQ45akA/0Lm5RO0/8wz5+dNPA9dfH9287MjKAubPB/buJaS/cKGecZykf/AgcOCAetLPzycl\n",
416 416 "Bt57Tx3pn38+8OKLQFmZXD9z5pDXfeZMrfCGtGnT5Db1FRYS1cpr71CBwpvfT1+nl9J3I/0xY0g7\n",
417 417 "ns8GJXEdpA+MMNJnQUNDAypsd1B5eTkaGhp0Djni8MUvAo88QlT1M88AN98c9YxSWLkS2LCBqNAw\n",
418 418 "LKfFi4GXXybvhep9CokE8PGPA7/8JXDJJWr6PP98EiSUtaLGjyeEO2aM+EHw9DWJLhrUmhGNTdTX\n",
419 419 "811P53nZZXztiouJGGEFL+nTz106k77vA9eyZctw3JkzCOCBBx7AtddeG9h5Ik7RizTF9dcD//mf\n",
420 420 "wIIFwJe/LK8aVeK224B584A1a/g37Yhg8WJiE1x3nZ59CjffTIJ0F16opj+aZfX1r8v3lZkJXHyx\n",
421 421 "eHuawii66Wz1arJwiMRuPvqI2HI8GD8e2LoVuOEGvnbl5XxznDWLvDesm95mzybZT6xPLsXF0ZZM\n",
422 422 "cYUlierqamvPnj2uv/v9739vLV++fPD7Bx54wFq3bp3rtbNnz7YAmC/zZb7Ml/ni+Jo9ezYXZyvZ\n",
423 423 "02jZT6y2YfHixTh06BCOHj2K0tJSbN26FVu2bHG99nDQ+YAGBgYGBtIQ9vSfeeYZVFRUYNeuXbj6\n",
424 424 "6quxYsUKAEBjYyOuvvpqAEBWVhY2bNiA5cuXo6qqCrfccgvm8xhuBgYGBgZKkbC8ZLqBgYGBwYhD\n",
425 425 "5DtyzeYtgrq6Olx++eU499xzsWDBAvzHf/xH1FOKHMlkEosWLWJKGhjJaGtrw4033oj58+ejqqoK\n",
426 426 "u3btinpKkeHBBx/Eueeei/POOw+f//zn0dPTE/WUQsNdd92FoqIinGeLVLe0tGDZsmWYO3currrq\n",
427 427 "KrS1tQX2Eynpm81bKWRnZ+Ohhx7Ce++9h127duG//uu/Ru17QfHII4+gqqpq1GeBffOb38TKlStx\n",
428 428 "4MABvPPOO6PWIj169Cgef/xxvPXWW3j33XeRTCbx1FNPRT2t0HDnnXdix44dQ362bt06LFu2DAcP\n",
429 429 "HsQVV1yBdevWBfYTKembzVspFBcXY+Hfdjjl5uZi/vz5aGxsjHhW0aG+vh4vvPACvvSlL3kmCowG\n",
430 430 "tLe3Y+fOnbjrrrsAkDjZZJni/GmMSZMmITs7G11dXejv70dXVxfK4pTDrBlLly5FniPndvv27Vi9\n",
431 431 "ejUAYPXq1Xj22WcD+4mU9M3mLXccPXoUe/fuxSWqdgmlIb71rW/hBz/4ATJEdyONEHzwwQeYNm0a\n",
432 432 "7rzzTlx44YW455570GU/smwUIT8/H3//93+P6dOno7S0FFOmTMGVV14Z9bQiRVNTE4r+VpCpqKgI\n",
433 433 "Tfbj5TwQ6R012h/b3dDR0YEbb7wRjzzyCHJli7qnKZ577jkUFhZi0aJFo1rlA0B/fz/eeustfPWr\n",
434 434 "X8Vbb72FnJwcpkf4kYgjR47g4YcfxtGjR9HY2IiOjg48+eSTUU8rNkgkEkycGinpl5WVoa6ubvD7\n",
435 435 "uro6lMetJF2I6Ovrww033IAvfOELuO6666KeTmR48803sX37dpxzzjm49dZb8frrr+OOO+6IelqR\n",
436 436 "oLy8HOXl5bj4b9txb7zxRt+qtiMZf/rTn7BkyRIUFBQgKysLn/vc5/Dmm29GPa1IUVRUNFg14dix\n",
437 437 "YyhkqMgXKenbN2/19vZi69atqKmpiXJKkcGyLNx9992oqqrC3/3d30U9nUjxwAMPoK6uDh988AGe\n",
438 438 "euopfPrTn8bmzZujnlYkKC4uRkVFBQ7+7fCCV199Feeee27Es4oG8+bNw65du9Dd3Q3LsvDqq6+i\n",
439 439 "SnXlvTRDTU0NNm3aBADYtGkTm1jk2r+rAS+88II1d+5ca/bs2dYDDzwQ9XQiw86dO61EImFdcMEF\n",
440 440 "1sKFC62FCxdaL774YtTTihy1tbXWtddeG/U0IsXbb79tLV682Dr//POt66+/3mpra4t6SpFh/fr1\n",
441 441 "VlVVlbVgwQLrjjvusHp7e6OeUmhYtWqVVVJSYmVnZ1vl5eXWT3/6U+vUqVPWFVdcYc2ZM8datmyZ\n",
442 442 "1draGtiP2ZxlYGBgMIowulMjDAwMDEYZDOkbGBgYjCIY0jcwMDAYRTCkb2BgYDCKYEjfwMDAYBTB\n",
443 443 "kL6BgYHBKIIhfQMDA4NRBEP6BgYGBqMI/x+3ghdT1LKwsgAAAABJRU5ErkJggg==\n"
444 444 ],
445 445 "text/plain": [
446 446 "<matplotlib.figure.Figure at 0x1084796d0>"
447 447 ]
448 448 },
449 449 "metadata": {},
450 450 "output_type": "display_data"
451 451 }
452 452 ],
453 453 "source": [
454 454 "x = np.linspace(0, 3*np.pi, 500)\n",
455 455 "plt.plot(x, np.sin(x**2))\n",
456 456 "plt.title('A simple chirp');"
457 457 ]
458 458 },
459 459 {
460 460 "cell_type": "markdown",
461 461 "metadata": {},
462 462 "source": [
463 463 "These images can be resized by dragging the handle in the lower right corner. Double clicking will return them to their original size."
464 464 ]
465 465 },
466 466 {
467 467 "cell_type": "markdown",
468 468 "metadata": {},
469 469 "source": [
470 470 "One thing to be aware of is that by default, the `Figure` object is cleared at the end of each cell, so you will need to issue all plotting commands for a single figure in a single cell."
471 471 ]
472 472 },
473 473 {
474 474 "cell_type": "markdown",
475 475 "metadata": {},
476 476 "source": [
477 477 "## Loading Matplotlib demos with %load"
478 478 ]
479 479 },
480 480 {
481 481 "cell_type": "markdown",
482 482 "metadata": {},
483 483 "source": [
484 484 "IPython's `%load` magic can be used to load any Matplotlib demo by its URL:"
485 485 ]
486 486 },
487 487 {
488 488 "cell_type": "code",
489 489 "execution_count": 4,
490 490 "metadata": {
491 491 "collapsed": false
492 492 },
493 493 "outputs": [],
494 494 "source": [
495 495 "%load http://matplotlib.org/mpl_examples/showcase/integral_demo.py"
496 496 ]
497 497 },
498 498 {
499 499 "cell_type": "code",
500 500 "execution_count": 5,
501 501 "metadata": {
502 502 "collapsed": false
503 503 },
504 504 "outputs": [
505 505 {
506 506 "data": {
507 507 "image/png": [
508 508 "iVBORw0KGgoAAAANSUhEUgAAAW8AAAEMCAYAAAALXDfgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
509 509 "AAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl4FFW+xvFvp9NJCAphkdUECAgqLigG2UZgrsB4YQZQ\n",
510 510 "AZVFQQRxlAFFUQR1BMVxRAV0QMFxAUXUgRkXBrioiCJIhLAjO5KwG7ORpde6f5SJooGQpLuru/N+\n",
511 511 "nqefFElXnR+QvBxOnTrHZhiGgYiIhJUoqwsQEZHyU3iLiIQhhbeISBhSeIuIhCGFt4hIGFJ4i4iE\n",
512 512 "IYW3iEgYUniLiIShMsN727ZtTJ06lXXr1gFwxx13BLomEREpQ5nhXVBQgMPhwDAMdu7cyQUXXBCM\n",
513 513 "ukRE5CzKDO927dqxceNGOnTowLp16+jUqVMw6hIRkbM4pzHv+Ph4ANatW0eHDh0CWpCIiJTtnMI7\n",
514 514 "KSmJ999/nw0bNlC/fv1A1yQiImUoM7znzZtH165dufLKKxkwYMAZ3/fEE0/4sy4RETkLW1lLwi5f\n",
515 515 "vhyXy8Xx48cZPnw4UVGl573NZkOry4qIBEeZ4X3OF1J4i4gEjR7SEREJQwpvEZEwpPAWEQlDCm8R\n",
516 516 "kTCk8BYRCUMKbxGRMKTwFhGxSmFhhU9VeIuIWCEnBxITK3y6wltExArz5kFmZoVP1xOWIiLB5vFA\n",
517 517 "8+Zw6BBUMDfV8xYRCbYlS8zgbtGiwpdQeIuIBNsLL5gfx46t8CU0bCIiEkzffAPt20NCAqSnw3nn\n",
518 518 "Vegy6nmLiATTiy+aH0eOrHBwg3reIiLBk54OzZqZxwcOaKqgiEhYeOkl8Hqhf/9KBTeo5y0iEhyn\n",
519 519 "TpmBnZ1tjnu3a1epy6nnLSISDG++aQZ3x46VDm5QeIuIBJ7PBzNmmMfjxvnlkgpvEZFA++QT2LMH\n",
520 520 "mjSBvn39ckmFt4hIoBU/lDNmDERH++WSumEpIhJImzbBVVeZc7ozMqBmTb9cVj1vEZFAKn4oZ/hw\n",
521 521 "vwU3qOctIhI4GRnm6oFutznm3by53y6tnreISKA89xy4XHDzzX4NblDPW0QkME6cgKZNza3ONm2C\n",
522 522 "K6/06+XV8xYRCYQXXjCD+49/9Htwg3reIiL+l5VlzunOy4N16+Daa/3ehHreIiL+NmuWGdzXXx+Q\n",
523 523 "4Ab1vEVE/Csvz+x1Z2XBqlXQpUtAmlHPW0TEn+bMMYO7Uye47rqANaOet4iIvxQWmjNMTpyA//4X\n",
524 524 "/vCHgDWlnreIiL/Mm2cGd9u20LNnQJtSz1tExB9cLvNBnIwMWLwY+vULaHPqeYuI+MNbb5nB3bo1\n",
525 525 "9OkT8OYU3iIileXxwLRp5vHEiRAV+GhVeIuIVNaiRbB/P7RoAQMGBKVJhbeISGV4PDB1qnn8yCN+\n",
526 526 "22yhLApvEZHKmD8fvvsOmjWDwYOD1qxmm4iIVFRREbRsCenpsGABDBoUtKbV8xYRqajZs83gvuIK\n",
527 527 "uPXWoDatnreISEXk5kJyMmRmwscfQ69eQW1ePW8RkYqYPt0M7k6d4H//N+jNq+ctIlJeJ06Yve78\n",
528 528 "fPjyS+jcOeglqOctIlJeTz9tBnevXpYEN6jnLSJSPgcPQqtW5o7wmzaZNystoJ63iEh5PPGEuQjV\n",
529 529 "bbdZFtygnreIyLnbts0MbLsddu0yx70top63iMi5mjQJDANGjbI0uEE9bxGRc7N2LXTsCPHxsG8f\n",
530 530 "NGhgaTnqeYuIlMUwYPx483jcOMuDG9TzFhEp29tvm4tO1asHu3dDzZpWV6Set4jIWeXlwYMPmsd/\n",
531 531 "+1tIBDcovEVEzu6pp+DoUWjXDoYOtbqaEho2ERE5kz17zD0p3W745hszwEOEet4iImcybpwZ3MOG\n",
532 532 "hVRwg3reIiKl++QT6N0batQwb1LWr291RadRz1tE5NecThg71jx+4omQC25QeIuI/NaLL8LevXDJ\n",
533 533 "JXDvvVZXUyoNm4iI/NLhw+aqgfn5sGIFdO9udUWlUs9bROSXJkwwg7tfv5ANblDPW0TkZ199Bb/7\n",
534 534 "HcTGws6d0KyZ1RWdkXreIiJg3qQcOdI8fuihkA5uUHiLiJimTDF72y1bwsSJVldTJg2biIhs2gTX\n",
535 535 "XAM+H6xebdm+lOWhnreIVG1uNwwfDl4v/PnPYRHcoPAWkaruuecgLQ2aNIFp06yu5pxp2EREqq7v\n",
536 536 "voM2bcyblcuXQ48eVld0ztTzFpGqyeuFO+80g3vYsLAKblB4i0hV9fLL8PXX5pZm06dbXU25adhE\n",
537 537 "RKqeAwfgssugoACWLIG+fa2uqNzU8xaRqsUwcA8bZgb3gAFhGdyg8BaRKsb3j3/g+OILCqtXh1mz\n",
538 538 "rC6nwhTeIlJ1bN2KMW4cAKsHDjR3gw9TCm8RqRoKCnDdeCN2t5uTf/oT+9q2tbqiSlF4i0iV4Bkz\n",
539 539 "hpi9eyls0oQTjz5qdTmVpvAWkcj3/vtEv/YaXoeDU/PmYcTHW11RpSm8RSSyHTyI9847AcidPBlP\n",
540 540 "69YWF+QfCm8RiVxuN+4BA7Dn5ZHTrRtFP4V4JFB4i0jE8k6ejCM1laK6dSmcNQtsNqtL8huFt4hE\n",
541 541 "JOPTT4l69ll8Nhun5szBqF3b6pL8SuEtIpHn2DHct9yCzTDIGzMGd8eOVlfkdwpvEYksTieu3r2J\n",
542 542 "+eEHCtq2peCBB6yuKCAU3iISOQwDz4gRxGzYgLNePfL++U+Ijra6qoBQeItIxPC98ALRCxbgiYkh\n",
543 543 "d/58fBdcYHVJAaPwFpHIsHw5tgcfBCBnxgw8l19ucUGBpfAWkfC3axeem2/G5vORdd99uPr0sbqi\n",
544 544 "gFN4i0h4y87GfcMNRJ86Re7111M0YYLVFQWFwltEwpfXi+umm3AcOEBBixYUzJ4NUVUj1qrG71JE\n",
545 545 "IpLn/vuJ+ewzXDVrcurttzGqV7e6pKBReItIWPI++yzRM2fis9vJe/11vImJVpcUVApvEQk7vldf\n",
546 546 "xf7T2Hb288/jat/e4oqCT+EtImHFWLQI2913A5A1ZQrO/v0trsgaCm8RCR/LlmEMHozNMMi+//6I\n",
547 547 "WuK1vBTeIhIevvoKb9++RHk8ZA8fTmGErllyrhTeIhL6Nm3Ce8MN2J1Ocm68kcIpUyJqbe6KUHiL\n",
548 548 "SGjbvRv373+P/dQpcrt3p+DFF6t8cIPCW0RC2Y4duDp3xpGVxamOHcl/9dWIXSWwvBTeIhKaUlPx\n",
549 549 "dOxIzMmTFLRty6k334TYWKurChkKbxEJPatW4e3aleicHE5ddx05ixZVqacnz4XCW0RCy0cf4evZ\n",
550 550 "E3tBATm9epE3fz7Ex1tdVchReItIyDDmz8fXty9RLhfZt95KwZw54HBYXVZIUniLSEjwzZqFbehQ\n",
551 551 "onw+skePpvC558But7qskKXbtiJiLZ8Pz6RJRE+bBkD2xIkU3nuvxUWFPoW3iFgnNxf3rbfiWLoU\n",
552 552 "n81GzjPPUDRkiNVVhQWFt4hYY9cu3L164di3D/d555H7yiu4unWzuqqwofAWkeD75BO8AwfiyM+n\n",
553 553 "oHlzTs2fj7dpU6urCiu6YSkiwWMY+KZMwfjjH7Hn55PbvTu5y5YpuCtAPW8RCY68PNyDB+P48EMM\n",
554 554 "m42s8eMpGjdO65RUkMJbRAJv9WpcgwYRk5GBOz6e3NmzcXXvbnVVYU3DJiISOEVFeMeOxejalZiM\n",
555 555 "DAouvpisZcsU3H6gnreIBMa33+K+7TYce/bgi4oi5777zA0U9MSkXyi8RcS/3G68f/0rtmnTcPh8\n",
556 556 "FCQlUTBnDu42bayuLKIovEXEf9avx3nnncRu24Zhs5E9bBiFkyZBtWpWVxZxFN4iUnmHD+N56CGi\n",
557 557 "33mHWKCoYUPyZ83C1bGj1ZVFLIW3iFRcQQG+v/8d45lniC4qwhsdzakRIyi8/36M886zurqIpvAW\n",
558 558 "kfIzDIyFC/GMH4/j6FEAcrt3p+jJJ/E2aWJxcVWDwltEzp3PB0uX4nzsMWLT0nAA+S1bUjRtGq4O\n",
559 559 "HayurkpReItI2dxuePddXFOnErN7N7GAs1YtCiZOpOiWW7TutgUU3iJyZvn5GPPm4Xn2WRxHjhAD\n",
560 560 "OOvWpWj0aAqHDNG4toUU3lIxPh94PObL7f752G6HuDhzl+/oaK1bEa727sXz2msYs2fjyMnBARQk\n",
561 561 "JuIcO5aim26CmBirK6zyFN5icrng4EHYvx/278fIyMB94gTekycxfvgBW1YWUdnZ2HNysBcVYfP5\n",
562 562 "yrykYbPhi4nB+OnlO/98fAkJkJCArU4d7HXqYK9bl6i6daF+fWjQABo2ND8mJCj4gy0nB957D9e8\n",
563 563 "ecSsX18SDqcuuwzXuHE4e/aEKK2oESoU3lVNQQGkpWGkpuLesAHvnj1Eff89McePYzOMkrfZgLL6\n",
564 564 "Vj67HSM6GsNuL3nh9RLldhPlchHl82F3OsHpNE/IzDznMn0OB566dfE1aIAtMRF7cjLRzZpBUpL5\n",
565 565 "SkyEunUV8JXl9cLKlbjnziXqo4+wu1zEAJ7YWAr+8Afct9+O69pr9eccghTekczrNYN6/Xqca9Zg\n",
566 566 "pKYSt28fNp/vN+FsREVR1KAB7sREjKZNISkJo3ZtfAkJ+BISMGrVwlerlnkcH28Oj5T1A+3xYHO5\n",
567 567 "wOnEVlREVF4etuxsonJyiMrJwZadjS0nxwz1Y8ewnThB9IkTOH78keiCAmKOHoWjRyEtrfTfXlwc\n",
568 568 "7saNoWlT7BddRHSLFtiSk6FZM0hOhho1/PUnGVmOH4fly3F9+CFR//d/ROfmUrzaSF7btngGDcLZ\n",
569 569 "u7fGs0OcwjvSHD2KsWwZRUuW4Fi1iui8PGxA3E9f9kVFUXDRRXjbtMHXpg3eZs3wNmmC98IL/b9g\n",
570 570 "UHQ0RnQ0xMdjAL6GDc/5VFtBAVEnTmA/doyoI0ewZ2RAejqkp2M/fJiYY8dw5Odj37cP9u2DTz/9\n",
571 571 "zTXcNWviTUrC1rw5jlatiGrRwgz1Zs3Mnnt0Ffn2d7lg/Xp8S5fi+egjYrZtA37+x7vwwgtxDRyI\n",
572 572 "c8AAvImJ1tUp5VJFvnsjmM8Ha9bg/egj3B9/TNzOndiA4pUkCho3xp2SAm3b4r7yStyXXgrx8VZW\n",
573 573 "fE6M+Hi8TZuedYcVW04O9vR07OnpRB86BAcOwIEDRKenE3v0qHmjbetW2Lr1t9ePisLVoAFGkyZE\n",
574 574 "NW+Oo2VLs9fepIk5LNOoUXiGu8cDO3dCaire9evxrF2LY+dOcygLM7C9MTGcSknB6NED1//8D97k\n",
575 575 "ZKurlgoIw+9OAWDPHjyvvYbvrbeIOXoUO2AHvLGxFLZvj7dHD5zdukX09lJGzZp4atbEc9llOH/z\n",
576 576 "RYOokyexf/890YcOEXXwIMb+/UQdOIAjI4PYzExijxyBI0dg7drfXjsqCne9evgaN8aWlER0s2bY\n",
577 577 "ExPNm6m/vLFao0bwx4MNA06eNP/HsX8/xr59eHbvxrtjB44dO8z7DFDyPQFQ2KQJ7m7d8HTvjrN9\n",
578 578 "ey0UFQEU3uEkOxvfwoU4586lWlpayV9eUYMGuHr1wn399ebNpbi4s16mSrDZ8NWrh69ePfN/Hr/m\n",
579 579 "dGLPyCjptdsOHoQDB4jKyMBx7BgxP/5IzLFjcOwYbNhwxma8sbF46tTBKJ5FU7s2UT/NpImqUwdq\n",
580 580 "1jSnTRZPn/zlR5vt9KmWv/yYmws//oiRmYn35MmSWT9kZuI4cgR7YeHPv1XA8dMLoLBhQ5xXXAHX\n",
581 581 "XIO3TRvcl1+OofH/iKPwDgcbNuB+5hmi/vMf7G431QBPXByFvXrhuvVWXO3bawpXecXG4m3eHG/z\n",
582 582 "5rhK+7rLhf3YMeyHD2M/fJiow4cxjh2Do0eJOn4c+w8/EJOZSXRREfbiHnwA2DB/SH/9g+o+7zyc\n",
583 583 "jRvjadIEW3IyRnIy3iZNcLdujVG7dkBqkdCi8A5VhoGxciVFf/0r1daswYE5b/pU+/Z4bruNohtu\n",
584 584 "wKhe3eoqI1dMDN6kJLxJSWd9my0/n6iTJ0tmz5w2kyY7GyM3F6OoCKOoyJx143JhczqxOZ3m33F0\n",
585 585 "NNjtGA6HOYMnOhqbw2H2lGvXxla7Nr7atTF+mvXjS0jA27ix2dOXKk3hHWq8Xox//Qvnk08St327\n",
586 586 "2cuuVo38wYNx3nWXOStEQoZRvTre6tXxWl2IVDkK71Dh9WK88QbuJ58k5tAh4gBXQgJFo0ZRcPvt\n",
587 587 "6mmJyGkU3qHg889xjh5N7K5dxABFjRpRdO+9FA4cqFkBIlIqhbeV9u7FOWYMsf/9r7nEZv36FEya\n",
588 588 "RFGfPuE5x1hEgkYJYYWcHFxPPEH0Sy8R6/HgiYsjf8wYCkaNUk9bRM6JwjuYDAPjjTfwPPAAMVlZ\n",
589 589 "AOTddBMFjz6Kr0EDi4sTkXCi8A6Wo0dx3XEHMStWmFtHXX01hU89hfvKK62uTETCkMI7CHzvvot3\n",
590 590 "1ChicnNxn3ceeVOn4uzfX8tsikiFKbwD6ccfcY4YQeySJUQB+Z07c+rFF/E1amR1ZSIS5hTeAWIs\n",
591 591 "XYrn9tuJ/eEHPHFxnHr8cQqHDlVvW0T8QuHtb243nr/8hejZs82x7auuIv/llyN6dT8RCT6Ftz+d\n",
592 592 "OIGrTx9i1q3DGx1N3kMPUTh6tLlmhYiIHym8/WXDBujXj5j0dApr1SL/rbdwt21rdVUiEqG0jqg/\n",
593 593 "LFgAnTtDejrZl1zC2lmzFNwiElDqeVeGxwMTJsDzz5u/HjGC1D598GiYREQCTD3vivrxR/jDH8zg\n",
594 594 "jo6G2bPh1VcxYmLKPldEpJLU866II0egRw/Yvh3q14cPPjCHTUREgkThXV779kH37uZO5ZdeCsuW\n",
595 595 "QWKi1VWJSBWjYZPy2LrV7GEfOAApKbB6tYJbRCyh8D5X69ZBly7mbuLdusGnn0KdOlZXJSJVlML7\n",
596 596 "XKxcCddfD1lZ0KcPLF0K559vdVUiUoUpvMuyeDH06gX5+TBkiHlzMi7O6qpEpIpTeJ/N++9D//7g\n",
597 597 "csF998Ebb2h7MhEJCQrvM1m2DAYNAp8PHn0UZsyAKP1xhaLXX3+dli1bsnHjRqtLEQkapVFpvvoK\n",
598 598 "brwR3G4YNw6mTNFSriGsf//+xMXFcdVVV1ldikjQKLx/bdMm6N0bCgth2DCYPl3BHeLWrFlD+/bt\n",
599 599 "senvSaoQhfcv7d5tPjmZk2P2vF99VcEdBr744gtsNhuLFy9mwoQJ7Ny50+qSRAJO4V0sPd2cDnjy\n",
600 600 "pPkE5Tvv6OZkCJo3bx6tW7emZ8+e7Nu3D4Avv/ySkSNHcuONN9K9e3f+9re/WVylSOApvAFOnDAD\n",
601 601 "Oz0dOnSAJUsgNtbqquRX1qxZw5NPPslbb73FqVOneOCBBzh8+DCGYdD2pyV4T5w4QWZmpsWVigSe\n",
602 602 "wvvUKbjhBti1C664Aj75BKpXt7oqKcVTTz1F165dad26NYZh0KhRI7Zs2UK7du1K3vPFF1/w+9//\n",
603 603 "3sIqRYKjao8L+HzmgzcbN0Lz5rB8OdSqZXVVUoqNGzeyefNmZsyYQVxcHF9//TVgDpnUrFkTgP37\n",
604 604 "9/Pdd9/xwgsvWFmqSFBU7Z7344/Dv/8NNWuaj7w3aGB1RXIGH3zwAQDdunU77fOdO3fGZrPx3nvv\n",
605 605 "MXfuXN5//33i4+OtKFEkqKpuz3vRIpg61Xzw5r33oGVLqyuSs1ixYgWtWrWizq8WA7PZbDz22GMA\n",
606 606 "DBgwwIrSRCxRNXveGzeac7jBnMfdo4e19chZ7d+/n6NHj542ti1S1VW98D52zFwZsPghnL/8xeqK\n",
607 607 "pAxr1qwB0BOUIr9QtcLb6TQfvsnIgI4dzX0n9RBOyCsO7yuuuMLiSkRCR9UJb8OAu++GtWvN3W8W\n",
608 608 "L9Zc7jCxbt06YmNjaan7EiIlqk54z5hhLularRr85z/mxsES8vbt28fJkye5+OKLsdvtVpcjEjKq\n",
609 609 "Rnh//TWMH28ev/kmaOw0bKxbtw6A1q1bW1yJSGiJ/PDOyoJbbwWvFx580NxcQcLGN998A8All1xi\n",
610 610 "cSUioSWyw9sw4K674NAhc7f3qVOtrkjKacOGDUBohLfX663wuR6Px4+ViER6eM+dC//6l7lZ8Lvv\n",
611 611 "QkyM1RVJOWRmZnLw4EFsNhutWrWytJalS5eWPOVZETNnziQ1NdWPFUlVF7nhvX37z3O4X3kFkpOt\n",
612 612 "rUfK7dtvvwWgbt261K5dO+DtHThwgKFDhzJ16lQefvhhDMMAYO3ataxbt46BAwdW+Npjxoxh5syZ\n",
613 613 "7Nmz55zeP3z4cHr06EFKSkqF25TIFpnhXVgIAwdCURHccYc55i1hpzi8L7744oC35XK5uO222+jV\n",
614 614 "qxcnT55k4cKF5OXlkZeXx9SpU5k4cWKlrh8dHc20adMYM2bMOQ2hzJ07l/bt23PkyJFKtSuRKzLD\n",
615 615 "+/77zZ53q1Ywa5bV1UgFFW8oHIzx7lWrVnHo0CE6dOjAsGHDWLBgATVq1GDmzJn069ePuLi4Srdx\n",
616 616 "4YUX0qpVKxYtWlTme+12u2bYyFlF3sJUixfDnDnm+PbChXDeeVZXJBXg9XrZvHkzAJdeemnA21u7\n",
617 617 "di116tQhKSmJpKQkAAoKCnjnnXdKnvD0h+HDhzN69GgGDRrkt2tK1RRZPe9Dh+DOO83jZ5/VfO4w\n",
618 618 "tnfvXgoLC7HZbEEJ77S0NNq0aXPa51auXEliYiIJCQl+a+eyyy4jKyuLrVu3+u2aUjVFTs+7eGOF\n",
619 619 "7Gxz9/cxY6yuSCph06ZNgDlWHMjH4seOHcvJkydJTU2lRYsWDBo0iKSkJKZNm8bq1au55pprznju\n",
620 620 "li1b+OCDD7Db7aSnp/Pcc88xf/58cnNzOXbsGOPHj6dJkyannRMVFUVKSgqrVq3i8ssvL/n8rl27\n",
621 621 "mDlzJgkJCcTFxREbG3vWm7QVaVsiS+SE9+zZsHq1+dj7669rwakwVxzeF110EQ6HI2DtvPjiiyVj\n",
622 622 "3Q8//DA33HBDyde2b9/O4MGDSz3v+++/59133+Xpp58GzH8EevfuzYwZM/D5fPTr14/LL7+ckSNH\n",
623 623 "/ubc5ORkduzYUfLr1NRUhgwZwhtvvEH79u0ByM/PZ+DAgdhK+T6uTNsSOSJj2OT77+Hhh83jl1+G\n",
624 624 "unWtrUcqbcuWLQCn9U4DZdu2bYA5pPFL6enp1KhRo9Rz5syZw6RJk0p+XVBQQK1atWjbti2NGzdm\n",
625 625 "1KhRZ9wcIiEhgfT0dAB8Ph9jx46lU6dOJcENUL16dfr06VMyXdFfbUvkCP/wNgwYOdLcSPimm8yX\n",
626 626 "hDWv18vOnTuB4CwDu23bNmrUqEFiYuJpn8/LyztjeN9zzz2nbbe2YcMGfve73wHQqFEjJk+efMax\n",
627 627 "8lq1apGbmwuY0yEPHjxYrvnclWlbIkf4h/ebb8KKFebGwS+9ZHU14gd79+7F6XRis9m48sorA97e\n",
628 628 "9u3bS52WZ7PZSu35AqcF/d69ezl27BgdO3Y8p/Z8Pl/JdYvncZcnbCvTtkSO8A7vo0dh3DjzeMYM\n",
629 629 "bSAcIbZv3w6Aw+EIylznHTt2lNpOjRo1yMrKKvP8NWvWEBMTc9rNze+///6M78/Ozi7Z8b5hw4YA\n",
630 630 "FBYWlrfsCrUtkSN8w9sw4M9/NmeX3HADnOHGkoSf4vC++OKLiQnwejRZWVkcOXKk1OmISUlJpYZ3\n",
631 631 "YWEhU6ZM4bvvvgNg9erVXHrppSUP8vh8PmbPnn3GNrOzs0vmkl9zzTU0btyYtLS037yvtCcxK9u2\n",
632 632 "RI7wDe8PPoAlS8xFp155RbNLIkhxMAVjz8rim5WlhXdKSkqpa5F89tlnzJkzh127drFnzx4OHjx4\n",
633 633 "2j8yM2bMOOsNw927d5eM5dvtdp5//nlWrlx52gyU48ePlzyJeejQIb+1LZEjPKcKZmbCvfeax88+\n",
634 634 "a25rJhEjmOG9detWatasWeqwSbdu3Xj88cd/8/kOHTowYMAAtmzZwrZt2/joo4+YOHEiEyZMwOFw\n",
635 635 "0LNnT66++upS2/N4PHz77benzRbp3Lkzb7/9Ni+88AIXXngh8fHxxMTEcPPNN/OPf/yDIUOGMHLk\n",
636 636 "SAYNGlSptiWy2Iwz3ZEp74XOcnPH74YMgQULoEsX+OwziAqd/0CsWLECr9f7m6f15Nzk5ORw6aWX\n",
637 637 "YrPZWLVqFS1atAhoe6NHj8br9fLqq6/+5mtOp5Orr76aTz/9lAZ+up+SmprKQw89xOeff+6X60nF\n",
638 638 "ZGZmsnr1au655x6rS6mw0Em9c7V0qRnc1arBvHkhFdxSebt27QLM2ReBCu6XXnqJW265BYDNmzfT\n",
639 639 "q1evUt8XGxvLsGHDmDdvnt/anjt3LqNGjfLb9aTqCq/kKyw0b1ICTJkCAe6VSfDt3r0bgHbt2gWs\n",
640 640 "jcWLFxMTE8OOHTtwOBz07t37jO+95557+Pzzz8nOzq50u3v37uXw4cOVWhdcpFh4hff06XDwIFx+\n",
641 641 "+c8bLUhEKe55//JpQ3+7++67adCgATNnzmTevHln3ZU+Pj6e6dOn8+CDD1ZqWLCoqIhJkybx8ssv\n",
642 642 "l/rIu0h5hc8Ny/R0+GktB2bOhOjwKV3OXfGMi0D2vAcMGFCuGRlt2rRh8ODBvPbaa4wYMaJCbc6c\n",
643 643 "OZNHHnmEpk2bVuh8kV8LnwQcP94cNhkwALp2tboaCZCdO3cSHx8flDVNyqNLly506dKlwuc/9NBD\n",
644 644 "fqxGJFyGTVatgvfeM29S/v3vVlcjAZKRkUFOTg5XXXXVWYcyRCQcwtvj+Xlt7kcegZ+eTJPIU7yS\n",
645 645 "YKdOnSyuRCT0hX54v/IKbN0KzZrBgw9aXY0EUPEj4p07d7a4EpHQF9rh/cMPMHmyefz88+CHTWAl\n",
646 646 "dG3cuJHzzz8/KE9WioS70A7vSZMgKwu6d4c+fayuRgKosLCQtLQ0rrvuOqL04JVImUL3pyQtDV59\n",
647 647 "1ZwSOGOGFp6KcGvWrMHpdNKzZ0+rSxEJC6EZ3oYB991nfhwzBi65xOqKxM8mT57M9ddfX7Ls6ZIl\n",
648 648 "S0hISDjjo+oicrrQDO9334U1a6BePXjsMaurkQD48ssvKSwsxOv1cvjwYZYuXcpdd91Vsi61iJxd\n",
649 649 "6D2k43LBo4+ax08/DT/tOCKRJSUlhQsuuIDs7GzGjRtHcnIyfy5et0ZEyhR6Pe+5c+HAAXOo5Pbb\n",
650 650 "ra5GAuSRRx4hLS2Njh07EhcXx9tvv43D4Sj1vR6Ph2effZa33nqL1157jaFDh2qrL6nyQqvnfeqU\n",
651 651 "uVogwFNPaf2SCFa7dm0WLlx4Tu+dMGECl1xyCUOHDuXHH39k+vTpNGnSJMAVioS20Op5z5gBx49D\n",
652 652 "u3bQt6/V1UgI2LFjBx9++CFDhgwBzLVPArnioEi4CJ3wzsw0tzQDeOYZTQ0UwLyxee211xIbGwvA\n",
653 653 "V199RaeMRggBAAADwUlEQVROncjJybG4MhFrhU54P/MM5OZCjx7QrZvV1UiISEhI4IILLgAgPz+f\n",
654 654 "pUuXkpKSwuLFiy2uTMRaoTGonJEBs2aZx8VrdosAffv2Zf369fz73//G6XTSr18/Pvvss5BbMlYk\n",
655 655 "2EIjvP/6V3A6zbW627a1uhoJIbGxsUyfPt3qMkRCjvXDJt99B//8J9jtP880ERGRs7I+vCdPBp8P\n",
656 656 "7rwTWra0uhoRkbBgbXinpsIHH5hLveoxeBGRc2ZteE+caH4cMwYaN7a0FBGRcGJdeH/+Oaxcaa5d\n",
657 657 "MmGCZWWIiIQj68K7+Obk+PFQu7ZlZYiIhCNrwvvrr82ed40acO+9lpQgIhLOrAnvp54yP953HyQk\n",
658 658 "WFKCiEg4C354b9wIS5dCfDyMHRv05oNhy5YtVpcgImXYvXu31SVUSvDDu/jx97vvhrp1g958MCi8\n",
659 659 "RULfnj17rC6hUoIb3tu3w7/+BbGx8MADQW1aRCSSBHdtk2nTzI/Dh0OjRkFtOpiKioq004tICMvL\n",
660 660 "y7O6hMoz/KRLly4GoJdeeumlVzlejz/+eIUy12YYhoGIiIQV6xemEhGRclN4i4iEIYW3iEgYUniL\n",
661 661 "iIQhhbeIVClFRUXcfPPNzJ8/3+pSKiU09rCMEAsXLsTtdpORkUG9evUYMWKE1SWJyK/ExcVx4YUX\n",
662 662 "kpKSYnUplaKet5/s2rWL5cuXM3ToUOx2O5dddpnVJYnIGezcuZNWrVpZXUalKLz9ZMGCBfzpT38C\n",
663 663 "YPPmzVx11VUWVyQipXG73Rw6dIhPPvmEhx9+GJ/PZ3VJFaLw9pPs7GxatWqFy+UiLy+Pb7/91uqS\n",
664 664 "RKQUW7ZsoW/fvvTu3Ruv18vWrVutLqlCNObtJ0OHDmXFihXs2LGD5s2bc/ToUatLEpFSpKWl0aVL\n",
665 665 "FwB27NhB7TDdyUvh7ScpKSklN0D69+9vcTUicibZ2dlcd911ZGVlYbfbSUxMtLqkCtHaJiJSpezb\n",
666 666 "t4+PP/6Y7OxsRo0aRYMGDawuqUIU3iIiYUg3LEVEwpDCW0QkDOmGpYiIxbxeL4sWLWL//v0kJiay\n",
667 667 "fv16HnjgAZKTk894jnreIiIW27x5MzfddBPJycn4fD769+9Pw4YNz3qOwltExGJXX301sbGxrF27\n",
668 668 "lq5du9K1a1eqVat21nMU3iIiFktNTeWHH35g27ZtNGvWjC+//LLMczTmLSJisWXLllG/fn06derE\n",
669 669 "kiVLqFu3bpnnaJ63iEgY0rCJiEgYUniLiIQhhbeISBhSeIuIhCGFt4hIGFJ4i4iEIYW3iEgYUniL\n",
670 670 "iISh/weZPyRnS1m/IAAAAABJRU5ErkJggg==\n"
671 671 ],
672 672 "text/plain": [
673 673 "<matplotlib.figure.Figure at 0x10848fb10>"
674 674 ]
675 675 },
676 676 "metadata": {},
677 677 "output_type": "display_data"
678 678 }
679 679 ],
680 680 "source": [
681 681 "\"\"\"\n",
682 682 "Plot demonstrating the integral as the area under a curve.\n",
683 683 "\n",
684 684 "Although this is a simple example, it demonstrates some important tweaks:\n",
685 685 "\n",
686 686 " * A simple line plot with custom color and line width.\n",
687 687 " * A shaded region created using a Polygon patch.\n",
688 688 " * A text label with mathtext rendering.\n",
689 689 " * figtext calls to label the x- and y-axes.\n",
690 690 " * Use of axis spines to hide the top and right spines.\n",
691 691 " * Custom tick placement and labels.\n",
692 692 "\"\"\"\n",
693 693 "import numpy as np\n",
694 694 "import matplotlib.pyplot as plt\n",
695 695 "from matplotlib.patches import Polygon\n",
696 696 "\n",
697 697 "\n",
698 698 "def func(x):\n",
699 699 " return (x - 3) * (x - 5) * (x - 7) + 85\n",
700 700 "\n",
701 701 "\n",
702 702 "a, b = 2, 9 # integral limits\n",
703 703 "x = np.linspace(0, 10)\n",
704 704 "y = func(x)\n",
705 705 "\n",
706 706 "fig, ax = plt.subplots()\n",
707 707 "plt.plot(x, y, 'r', linewidth=2)\n",
708 708 "plt.ylim(ymin=0)\n",
709 709 "\n",
710 710 "# Make the shaded region\n",
711 711 "ix = np.linspace(a, b)\n",
712 712 "iy = func(ix)\n",
713 713 "verts = [(a, 0)] + list(zip(ix, iy)) + [(b, 0)]\n",
714 714 "poly = Polygon(verts, facecolor='0.9', edgecolor='0.5')\n",
715 715 "ax.add_patch(poly)\n",
716 716 "\n",
717 717 "plt.text(0.5 * (a + b), 30, r\"$\\int_a^b f(x)\\mathrm{d}x$\",\n",
718 718 " horizontalalignment='center', fontsize=20)\n",
719 719 "\n",
720 720 "plt.figtext(0.9, 0.05, '$x$')\n",
721 721 "plt.figtext(0.1, 0.9, '$y$')\n",
722 722 "\n",
723 723 "ax.spines['right'].set_visible(False)\n",
724 724 "ax.spines['top'].set_visible(False)\n",
725 725 "ax.xaxis.set_ticks_position('bottom')\n",
726 726 "\n",
727 727 "ax.set_xticks((a, b))\n",
728 728 "ax.set_xticklabels(('$a$', '$b$'))\n",
729 729 "ax.set_yticks([])\n",
730 730 "\n",
731 731 "plt.show()\n"
732 732 ]
733 733 }
734 734 ],
735 "metadata": {},
735 "metadata": {
736 "kernelspec": {
737 "display_name": "Python 3",
738 "language": "python",
739 "name": "python3"
740 },
741 "language_info": {
742 "codemirror_mode": {
743 "name": "ipython",
744 "version": 3
745 },
746 "file_extension": ".py",
747 "mimetype": "text/x-python",
748 "name": "python",
749 "nbconvert_exporter": "python",
750 "pygments_lexer": "ipython3",
751 "version": "3.4.2"
752 }
753 },
736 754 "nbformat": 4,
737 755 "nbformat_minor": 0
738 } No newline at end of file
756 }
@@ -1,156 +1,174 b''
1 1 {
2 2 "cells": [
3 3 {
4 4 "cell_type": "markdown",
5 5 "metadata": {},
6 6 "source": [
7 7 "# Using `raw_input` and `%debug` in the Notebook"
8 8 ]
9 9 },
10 10 {
11 11 "cell_type": "markdown",
12 12 "metadata": {},
13 13 "source": [
14 14 "The Notebook has added support for `raw_input` and `%debug`, as of 1.0."
15 15 ]
16 16 },
17 17 {
18 18 "cell_type": "code",
19 19 "execution_count": 1,
20 20 "metadata": {
21 21 "collapsed": false
22 22 },
23 23 "outputs": [],
24 24 "source": [
25 25 "# Python 3 compat\n",
26 26 "import sys\n",
27 27 "if sys.version_info[0] >= 3:\n",
28 28 " raw_input = input"
29 29 ]
30 30 },
31 31 {
32 32 "cell_type": "code",
33 33 "execution_count": 2,
34 34 "metadata": {
35 35 "collapsed": false
36 36 },
37 37 "outputs": [
38 38 {
39 39 "name": "stdout",
40 40 "output_type": "stream",
41 41 "text": [
42 42 "What is your name? Sir Robin\n"
43 43 ]
44 44 },
45 45 {
46 46 "data": {
47 47 "text/plain": [
48 48 "'Sir Robin'"
49 49 ]
50 50 },
51 51 "execution_count": 2,
52 52 "metadata": {},
53 53 "output_type": "execute_result"
54 54 }
55 55 ],
56 56 "source": [
57 57 "name = raw_input(\"What is your name? \")\n",
58 58 "name"
59 59 ]
60 60 },
61 61 {
62 62 "cell_type": "markdown",
63 63 "metadata": {},
64 64 "source": [
65 65 "**Python 2-only**: the eval input works as well (`input` is just `eval(raw_input(prompt))`)"
66 66 ]
67 67 },
68 68 {
69 69 "cell_type": "code",
70 70 "execution_count": 3,
71 71 "metadata": {
72 72 "collapsed": false
73 73 },
74 74 "outputs": [
75 75 {
76 76 "name": "stdout",
77 77 "output_type": "stream",
78 78 "text": [
79 79 "How many fingers? 4\n"
80 80 ]
81 81 },
82 82 {
83 83 "data": {
84 84 "text/plain": [
85 85 "(4, int)"
86 86 ]
87 87 },
88 88 "execution_count": 3,
89 89 "metadata": {},
90 90 "output_type": "execute_result"
91 91 }
92 92 ],
93 93 "source": [
94 94 "fingers = input(\"How many fingers? \")\n",
95 95 "fingers, type(fingers)"
96 96 ]
97 97 },
98 98 {
99 99 "cell_type": "code",
100 100 "execution_count": 4,
101 101 "metadata": {
102 102 "collapsed": false
103 103 },
104 104 "outputs": [
105 105 {
106 106 "ename": "ZeroDivisionError",
107 107 "evalue": "integer division or modulo by zero",
108 108 "output_type": "error",
109 109 "traceback": [
110 110 "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)",
111 111 "\u001b[1;32m<ipython-input-4-a5097cc0c0c5>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mdiv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
112 112 "\u001b[1;32m<ipython-input-4-a5097cc0c0c5>\u001b[0m in \u001b[0;36mdiv\u001b[1;34m(x, y)\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdiv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mdiv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
113 113 "\u001b[1;31mZeroDivisionError\u001b[0m: integer division or modulo by zero"
114 114 ]
115 115 }
116 116 ],
117 117 "source": [
118 118 "def div(x, y):\n",
119 119 " return x/y\n",
120 120 "\n",
121 121 "div(1,0)"
122 122 ]
123 123 },
124 124 {
125 125 "cell_type": "code",
126 126 "execution_count": 5,
127 127 "metadata": {
128 128 "collapsed": false
129 129 },
130 130 "outputs": [
131 131 {
132 132 "name": "stdout",
133 133 "output_type": "stream",
134 134 "text": [
135 135 "> \u001b[1;32m<ipython-input-4-a5097cc0c0c5>\u001b[0m(2)\u001b[0;36mdiv\u001b[1;34m()\u001b[0m\n",
136 136 "\u001b[1;32m 1 \u001b[1;33m\u001b[1;32mdef\u001b[0m \u001b[0mdiv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
137 137 "\u001b[0m\u001b[1;32m----> 2 \u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
138 138 "\u001b[0m\u001b[1;32m 3 \u001b[1;33m\u001b[1;33m\u001b[0m\u001b[0m\n",
139 139 "\u001b[0m\n",
140 140 "ipdb> x\n",
141 141 "1\n",
142 142 "ipdb> y\n",
143 143 "0\n",
144 144 "ipdb> exit\n"
145 145 ]
146 146 }
147 147 ],
148 148 "source": [
149 149 "%debug"
150 150 ]
151 151 }
152 152 ],
153 "metadata": {},
153 "metadata": {
154 "kernelspec": {
155 "display_name": "Python 3",
156 "language": "python",
157 "name": "python3"
158 },
159 "language_info": {
160 "codemirror_mode": {
161 "name": "ipython",
162 "version": 3
163 },
164 "file_extension": ".py",
165 "mimetype": "text/x-python",
166 "name": "python",
167 "nbconvert_exporter": "python",
168 "pygments_lexer": "ipython3",
169 "version": "3.4.2"
170 }
171 },
154 172 "nbformat": 4,
155 173 "nbformat_minor": 0
156 } No newline at end of file
174 }
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
General Comments 0
You need to be logged in to leave comments. Login now